stash: make internal resets quiet and refresh index
commit4b8b0f6fa2778c1f9c373620e3f07787543914c6
authorVictoria Dye <vdye@github.com>
Tue, 15 Mar 2022 01:49:42 +0000 (15 01:49 +0000)
committerJunio C Hamano <gitster@pobox.com>
Tue, 15 Mar 2022 01:51:56 +0000 (14 18:51 -0700)
tree21128eb8abbfbc88122726b8ec7cfff34c469a1b
parentd492abb0ae4a00c5647189b22f7c130fb364e700
stash: make internal resets quiet and refresh index

Add the options '-q' and '--refresh' to the 'git reset' executed in
'reset_head()', and '--refresh' to the 'git reset -q' executed in
'do_push_stash(...)'.

'stash' is implemented such that git commands invoked  as part of it (e.g.,
'clean', 'read-tree', 'reset', etc.) have their informational output
silenced. However, the 'reset' in 'reset_head()' is *not* called with '-q',
leading to the potential for a misleading printout from 'git stash apply
--index' if the stash included a removed file:

Unstaged changes after reset: D      <deleted file>

Not only is this confusing in its own right (since, after the reset, 'git
stash' execution would stage the deletion in the index), it would be printed
even when the stash was applied with the '-q' option. As a result, the
messaging is removed entirely by calling 'git status' with '-q'.

Additionally, because the default behavior of 'git reset -q' is to skip
refreshing the index, but later operations in 'git stash' subcommands expect
a non-stale index, enable '--refresh' as well.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Victoria Dye <vdye@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/stash.c
t/t3903-stash.sh