Thread (1 message) 1 message, 1 author, 2024-02-21

Re: [PATCH] builtin/stash: configs keepIndex, includeUntracked

From: Junio C Hamano <hidden>
Date: 2024-02-21 23:54:04

Junio C Hamano [off-list ref] writes:
Ricardo C [off-list ref] writes:
quoted
Permanently enabling keepIndex is mainly intended for people that like
to stash their unstaged changes before committing (e.g., for testing
them independently of other changes). The main issue with what you
recommend is that, if they forget to use `-k`, then the entire state
of the index is lost, which is especially problematic if the changes
were interactively staged.
Doesn't "git stash pop --index" meant to recover from such a
mistake, though?  If you stash, because your "git commit" notices
there is no change after you did "git stash" without "-k", your
recovery to "pop --index" would apply the changes to the index and
to the working tree on top of exactly the same commit, so there is
no risk of losing any changes by doing so, right?  IOW, such a pop
will always round-trip.
Actually, "git commit" gets into the picture of making and
recovering from such a mistake a bit more costly than I made it
sound in the above.  My bad.

The common sequence is

    $ edit edit edit
    $ git add -p
    $ git stash -k
    $ build what is in the index and test

and then when you are happy, conclude it with

    $ git commit [NO -o/-i/pathspec]

followed by

    $ git stash pop

to continue for the next commit.  So "git commit" should notice if
your earlier "stash -k" forgot to say "-k", but by that time, you
would have wasted the whole build and test cycle.  The HEAD wouldn't
have moved, so the conclusion that "pop --index" would be a good way
to recover from "stash" without "--keep" does not change, though.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help