On Sat, Aug 17, 2019 at 11:41:24AM -0700, Elijah Newren wrote:

> In commit 7ca56aa07619 ("merge-recursive: add a label for ancestor",
> 2010-03-20), a label was added for the '||||||' line to make it have
> the more informative heading '|||||| merged common ancestors', with
> the statement:
> 
>     It would be nicer to use a more informative label.  Perhaps someone
>     will provide one some day.
> 
> This chosen label was perfectly reasonable when recursiveness kicks in,
> i.e. when there are multiple merge bases.  (I can't think of a better
> label in such cases.)  But it is actually somewhat misleading when there
> is a unique merge base or no merge base.  Change this based on the
> number of merge bases:
>     >=2: "merged common ancestors"
>     1:   <abbreviated commit hash>
>     0:   "<empty tree>"

I got a funny result from this today while rebasing some patches in
git.git, where the base is reported as "00000000". I didn't make a
minimal case, but you can easily reproduce it with:

  cd /your/git/clone
  git fetch https://github.com/peff/git odd-diff3-base
  git checkout -b odd-diff3-base FETCH_HEAD
  git -c merge.conflictstyle=diff3 rebase --onto origin/master HEAD~2

Maybe this has to do with "git apply --build-fake-ancestor" being used
under the hood?

-Peff

Reply via email to