Files
git/builtin
Elijah Newren 40d71940b6 builtin/merge.c: fix a bug with trivial merges
If read_tree_trivial() succeeds and produces a tree that is already
in the object store, then the index is not written to disk, leaving
it out-of-sync with both HEAD and the working tree.

In order to write the index back out to disk after a merge,
write_index_locked() needs to be called.  For most merge strategies, this
is done from try_merge_strategy().  For fast forward updates, this is
done from checkout_fast_forward().  When trivial merges work, the call to
write_index_locked() is buried a little deeper:

  merge_trivial()
  -> write_tree_trivial()
     -> write_cache_as_tree()
        -> write_index_as_tree()
           -> write_locked_index()

However, it is only called when !cache_tree_fully_valid(), which is how
this bug is triggered.  But that also shows why this bug doesn't affect
any other merge strategies or cases.

Add a direct call to write_index_locked() from merge_trivial() to fix
this issue.  Since the indirect call to write_locked_index() was
conditional on cache_tree_fully_valid(), it won't be written twice.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2016-04-12 18:33:59 -07:00
..
2016-03-10 11:13:41 -08:00
2016-02-26 13:37:16 -08:00
2016-04-06 11:39:10 -07:00
2016-04-03 10:29:26 -07:00
2015-11-20 08:02:05 -05:00
2015-11-20 08:02:05 -05:00
2016-02-25 11:31:02 -08:00
2015-11-20 08:02:05 -05:00
2016-04-03 10:29:31 -07:00
2016-02-25 11:31:02 -08:00
2016-02-10 14:20:08 -08:00
2015-10-21 15:59:34 -07:00
2016-02-26 13:37:16 -08:00
2015-11-20 08:02:05 -05:00
2016-01-28 16:10:14 -08:00
2016-02-26 13:37:25 -08:00
2016-02-26 13:37:19 -08:00
2015-11-20 08:02:05 -05:00
2015-10-05 13:20:08 -07:00
2015-11-20 08:02:05 -05:00
2016-02-22 13:10:21 -08:00
2016-01-28 16:10:14 -08:00
2015-11-20 08:02:05 -05:00
2016-02-26 13:37:16 -08:00