]> git.ipfire.org Git - thirdparty/git.git/commit
merge-recursive: fix the diff3 common ancestor label for virtual commits
authorElijah Newren <newren@gmail.com>
Tue, 1 Oct 2019 18:17:27 +0000 (11:17 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 2 Oct 2019 05:59:29 +0000 (14:59 +0900)
commit8e4ec3376e9d73bd471336cc7c11b35f5bc5dc87
tree10d45f8bffb53a03d8426d270a12839774d5ef58
parent4615a8cb5b3a8d4959c30338925b1fa3b948ae52
merge-recursive: fix the diff3 common ancestor label for virtual commits

In commit 743474cbfa8b ("merge-recursive: provide a better label for
diff3 common ancestor", 2019-08-17), the label for the common ancestor
was changed from always being

         "merged common ancestors"

to instead be based on the number of merge bases:

    >=2: "merged common ancestors"
      1: <abbreviated commit hash>
      0: "<empty tree>"

Unfortunately, this did not take into account that when we have a single
merge base, that merge base could be fake or constructed.  In such
cases, this resulted in a label of "00000000".  Of course, the previous
label of "merged common ancestors" was also misleading for this case.
Since we have an API that is explicitly about creating fake merge base
commits in merge_recursive_generic(), we should provide a better label
when using that API with one merge base.  So, when
merge_recursive_generic() is called with one merge base, set the label
to:

         "constructed merge base"

Note that callers of merge_recursive_generic() include the builtin
commands git-am (in combination with git apply --build-fake-ancestor),
git-merge-recursive, and git-stash.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
merge-recursive.c
t/t6047-diff3-conflict-markers.sh