patches/merge-tree-regression/v1
tagbb0092d2feaad0150290a7d02e1b88256d0ccaa5
object 645875f209b597aad88815ad6bb678b862e5f566
authorWill Palmer <wmpalmer@gmail.com>
Sat, 10 Jul 2010 00:29:35 +0000 (10 01:29 +0100)
From 645875f209b597aad88815ad6bb678b862e5f566 Mon Sep 17 00:00:00 2001
From: Will Palmer <wmpalmer@gmail.com>
Date: Sat, 10 Jul 2010 01:29:35 +0100
Subject: [PATCH 0/2] merge-tree: fix (merge-base a b) b a

This series notes, then fixes, a regression introduced by
15b4f7a68d8c3c8ee28424415b203f61202d65d1 /
merge-tree: use ll_merge() not xdl_merge()

I don't know the proper terminology to describe what's being fixed here.
This seems to most-easily be triggered by (for example):
git merge-tree $(git merge-base HEAD @{u}) HEAD @{u}

In the git repository at the moment, this could be triggered with:
git merge-tree $(git merge-base origin/next origin/master) \
origin/next origin/master

Though as I write this, next has only just been merged with master, so
that is not the case. For an example which is less likely to go away,
try:
git merge-tree c9eaaab4165d8f402930d12899ec097495b599e6 \
be16ac8cc8ce693c6adf37b80db65d10a41b4eb9 \
9918285fb10d81af9021dae99c5f4de88ded497c

It's actually very trivial to reproduce this, to the point where I
can't help but wonder how much merge-tree is actually being used. As
I narrowed the test-case more and more, I was surprised by how little
it took to trigger it. The first patch in this series includes some
very basic tests for merge-tree, the last of which demonstrates the
regression.

The second patch implements the trivial fix for it.

Will Palmer (2):
  add basic tests for merge-tree
  fix merge-tree where two branches share no changes

 builtin/merge-tree.c  |    3 ++-
 t/t4300-merge-tree.sh |   43 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 45 insertions(+), 1 deletions(-)
 create mode 100755 t/t4300-merge-tree.sh

--
1.7.1.703.g42c01