stash: make sure to write refreshed cache
authorThomas Gummerer <t.gummerer@gmail.com>
Wed, 11 Sep 2019 18:20:27 +0000 (19:20 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 20 Sep 2019 16:58:22 +0000 (09:58 -0700)
commit34933d0eff5d4c91fae6ad6f71a6e6a69a496ced
tree4e101712a6452418d6878b11189a488a0c56afe6
parente080b34540296e4671b4d1110ba3c71b5224884a
stash: make sure to write refreshed cache

When converting stash into C, calls to 'git update-index --refresh'
were replaced with the 'refresh_cache()' function.  That is fine as
long as the index is only needed in-core, and not re-read from disk.

However in many cases we do actually need the refreshed index to be
written to disk, for example 'merge_recursive_generic()' discards the
in-core index before re-reading it from disk, and in the case of 'apply
--quiet', the 'refresh_cache()' we currently have is pointless without
writing the index to disk.

Always write the index after refreshing it to ensure there are no
regressions in this compared to the scripted stash.  In the future we
can consider avoiding the write where possible after making sure none
of the subsequent calls actually need the refreshed cache, and it is
not expected to be refreshed after stash exits or it is written
somewhere else already.

Reported-by: Jeff King <peff@peff.net>
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/stash.c
t/t3903-stash.sh