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

Re: Behaviour of 'git stash show' when a stash has untracked files

From
Jeff King <peff@peff.net>
Date
Sep 21, 2017, 03:31 UTC
Message-ID
<20170921033152.4hbkctzxraww5rqo@sigill.intra.peff.net>
In-Reply-To
<xmqqpoakn8tj.fsf@gitster.mtv.corp.google.com>
On Thu, Sep 21, 2017 at 10:23:36AM +0900, Junio C Hamano wrote:
Show 13 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > I sketched out a possible solution in:
> >
> >   https://public-inbox.org/git/20170317141417.g2oenl67k74nlqrq@sigill.intra.peff.net/
> >
> > though I share your concerns over whether people would be annoyed to see
> > the existing "stash show" output changed.
> 
> Forgot about that one.  I sometimes do "stash show -p | apply", so
> changing what is included without any option would be annoying, and
> not having an option to restore the original behaviour would be
> doubly irritating.

I think it would mostly Just Work for your case. git-apply should ignore the subject cruft at the top of the patch. And if you didn't create a stash with "-u" or with bits in the index, then those would be absent from the diff.

And if you _did_ create such a stash, I actually suspect that "apply" barfing on the resulting patch may be a better outcome than silently ignoring the changes.

I dunno. I do not use either of those features ("-u" or stashing the index state) myself. But I have always been bothered how the saved state is a bit hidden from the user. It seems like a recipe for user confusion when they save something with "git stash" but then "stash show" doesn't even mention it.

Show 8 quoted lines
> Perhaps "stash show [--[untracked|index|worktree]]" to show only
> one, without the "==> I am this variant <==" label, would be
> workable, and with no option we would do --worktree that is the
> traditional output.
> 
> In addition "stash show --all" could be the output in your earlier
> patch.  I like the way it uses the '.' pathspec to squelch the
> entire thing when there is no change ;-)

Those all seem like sane interface proposals. As I said above, I have a vague feeling that the default _ought_ to tell about everything. But I don't care all that much myself, and I agree that we should avoid creating headaches for existing users (it's just not clear to me how big the headaches would be).

I guess the nuclear option there is introducing "git stash info" or something, and marking "git stash show" as an alias for "git stash info --worktree". It is too bad, though, as "show" is really the perfect name.

Anyway. I don't have plans to work on this anytime soon, but I'd be happy to review if anybody picked up the topic.

-Peff
Previous: Junio C HamanoNext: Kaartic Sivaraam
Message 5 of 8 in “Behaviour of 'git stash show' when a stash has untracked files”
  1. Kaartic SivaraamSep 17, 2017
  2. Junio C HamanoSep 20, 2017
  3. Jeff KingSep 20, 2017
  4. Junio C HamanoSep 21, 2017
  5. Jeff KingSep 21, 2017
  6. Kaartic SivaraamSep 23, 2017
  7. Junio C HamanoSep 24, 2017
  8. Kaartic SivaraamSep 23, 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.