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.