]> git.ipfire.org Git - thirdparty/git.git/commit - sequencer.c
write_locked_index(): add flag to avoid writing unchanged index
authorMartin Ågren <martin.agren@gmail.com>
Thu, 1 Mar 2018 20:40:20 +0000 (21:40 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 1 Mar 2018 21:28:01 +0000 (13:28 -0800)
commit610008146ed1647bb1da6a098e314b8929ff213e
tree373d4290af3644d7123a623133c6f10ca9dc4f78
parent350292a1efb38bbcd6255a424df6adbfe78910ac
write_locked_index(): add flag to avoid writing unchanged index

We have several callers like

if (active_cache_changed && write_locked_index(...))
handle_error();
rollback_lock_file(...);

where the final rollback is needed because "!active_cache_changed"
shortcuts the if-expression. There are also a few variants of this,
including some if-else constructs that make it more clear when the
explicit rollback is really needed.

Teach `write_locked_index()` to take a new flag SKIP_IF_UNCHANGED and
simplify the callers. Leave the most complicated of the callers (in
builtin/update-index.c) unchanged. Rewriting it to use this new flag
would end up duplicating logic.

We could have made the new flag behave the other way round
("FORCE_WRITE"), but that could break existing users behind their backs.
Let's take the more conservative approach. We can still migrate existing
callers to use our new flag. Later we might even be able to flip the
default, possibly without entirely ignoring the risk to in-flight or
out-of-tree topics.

Suggested-by: Jeff King <peff@peff.net>
Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/add.c
builtin/commit.c
builtin/merge.c
builtin/mv.c
builtin/rm.c
cache.h
merge-recursive.c
read-cache.c
rerere.c
sequencer.c