git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 0/5] stash: support pathspec argument

From
Jeff King <peff@peff.net>
Date
Feb 6, 2017, 16:14 UTC
Message-ID
<20170206161432.zvpsqegjspaa2l5l@sigill.intra.peff.net>
In-Reply-To
<20170205202642.14216-1-t.gummerer@gmail.com>
On Sun, Feb 05, 2017 at 08:26:37PM +0000, Thomas Gummerer wrote:
Show 11 quoted lines
> Thanks Junio for the review in the previous round.
> 
> Changes since v2:
> 
> - $IFS should now be supported by using "$@" everywhere instead of using
>   a $files variable.
> - Added a new patch showing the old behaviour of git stash create is
>   preserved.
> - Rephrased the documentation
> - Simplified the option parsing in save_stash, by leaving the
>   actual parsing to push_stash instead.

Overall, I like the direction this is heading. I raised a few issues, the most major of which is whether we want to allow the minor regression in "git stash create -m foo".

This also makes "git stash push -p <pathspec...>" work, which is good. I don't think "git stash -p <pathspec...>" does, though. I _think_ it would be trivial to do on top, since we already consider that case an error. That's somewhat outside the scope of your series, so I won't complain (too much :) ) if you don't dig into it, but it might just be trivial on top.

A few other random bits I noticed while playing with the new code:
  $ git init
  $ echo content >file && git add file && git commit -m file
  $ echo change >file
  $ git stash push -p not-file
  No changes.
  No changes selected
Probably only one of those is necessary. :)
Let's keep trying a few things:
  $ git stash push not-file
  Saved working directory and index state WIP on master: 5d5f951 file
  Unstaged changes after reset:
  M	file
  M	file

The unstaged change is mentioned twice, which is weird. But weirder still is that we created a stash at all, as it's empty. Why didn't we hit the "no changes selected" path?

And one more:
  $ echo foo >untracked
  $ git stash push untracked
  Saved working directory and index state WIP on master: 5d5f951 file
  Unstaged changes after reset:
  M	file
  M	file
  Removing untracked

We removed the untracked file, even though it wasn't actually stashed! I thought at first this was because it was mentioned as a pathspec, but it seems to happen even with a different name:

  $ echo foo >untracked
  $ git stash push does-not-exist
  ...
  Removing untracked
That seems dangerous.
-Peff
Previous: Thomas GummererNext: Thomas Gummerer
Message 45 of 57 in “stash: support filename argument”
  1. 0/3 stash: support filename argumentThomas Gummerer, Jan 21, 2017
  2. 1/3 Documentation/stash: remove mention of git reset --hardThomas Gummerer, Jan 21, 2017
  3. Øyvind A. HolmJan 22, 2017
  4. Jakub NarębskiJan 24, 2017
  5. Jeff KingJan 24, 2017
  6. Jakub NarębskiJan 25, 2017
  7. Junio C HamanoJan 25, 2017
  8. Junio C HamanoJan 25, 2017
  9. Thomas GummererJan 28, 2017
  10. Jeff KingJan 28, 2017
  11. 2/3 stash: introduce push verbThomas Gummerer, Jan 21, 2017
  12. Junio C HamanoJan 23, 2017
  13. Thomas GummererJan 29, 2017
  14. 3/3 stash: support filename argumentThomas Gummerer, Jan 21, 2017
  15. Junio C HamanoJan 23, 2017
  16. Thomas GummererJan 29, 2017
  17. Johannes SchindelinJan 24, 2017
  18. 0/4 stash: create filename argumentThomas Gummerer, Jan 29, 2017
  19. 3/4 introduce new format for git stash createThomas Gummerer, Jan 29, 2017
  20. Junio C HamanoJan 30, 2017
  21. 2/4 stash: introduce push verbThomas Gummerer, Jan 29, 2017
  22. Junio C HamanoJan 30, 2017
  23. 1/4 Documentation/stash: remove mention of git reset --hardThomas Gummerer, Jan 29, 2017
  24. Junio C HamanoJan 30, 2017
  25. Thomas GummererFeb 5, 2017
  26. 4/4 stash: support filename argumentThomas Gummerer, Jan 29, 2017
  27. Junio C HamanoJan 30, 2017
  28. Thomas GummererFeb 5, 2017
  29. 0/5 stash: support pathspec argumentThomas Gummerer, Feb 5, 2017
  30. 2/5 stash: introduce push verbThomas Gummerer, Feb 5, 2017
  31. Jeff KingFeb 6, 2017
  32. Thomas GummererFeb 11, 2017
  33. 4/5 stash: introduce new format createThomas Gummerer, Feb 5, 2017
  34. Jeff KingFeb 6, 2017
  35. Thomas GummererFeb 11, 2017
  36. Jeff KingFeb 13, 2017
  37. Jeff KingFeb 13, 2017
  38. Thomas GummererFeb 14, 2017
  39. 3/5 stash: add test for the create command line argumentsThomas Gummerer, Feb 5, 2017
  40. Jeff KingFeb 6, 2017
  41. Thomas GummererFeb 11, 2017
  42. 1/5 Documentation/stash: remove mention of git reset --hardThomas Gummerer, Feb 5, 2017
  43. Jeff KingFeb 6, 2017
  44. 5/5 stash: teach 'push' (and 'create') to honor pathspecThomas Gummerer, Feb 5, 2017
  45. Jeff KingFeb 6, 2017
  46. Thomas GummererFeb 12, 2017
  47. Thomas GummererFeb 4, 2017
  48. Thomas GummererFeb 4, 2017
  49. Jeff KingFeb 6, 2017
  50. Thomas GummererFeb 11, 2017
  51. Jeff KingFeb 13, 2017
  52. Jeff KingFeb 13, 2017
  53. Thomas GummererFeb 13, 2017
  54. Thomas GummererFeb 13, 2017
  55. Jeff KingFeb 14, 2017
  56. Jeff KingFeb 14, 2017
  57. Thomas GummererFeb 14, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.