summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Stephen Boyd <bebarino@gmail.com>2009-12-11 16:38:58 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2009-12-13 23:40:24 -0800
commit85bf49f9a55fd9ded396460d245a55b651d7bdaa (patch)
treef7927bdd30d780307a963ddf63a71f5543ebe09e
parentoctopus: make merge process simpler to follow (diff)
downloadtgif-85bf49f9a55fd9ded396460d245a55b651d7bdaa.tar.xz
octopus: reenable fast-forward merges
The fast-forward logic is never being triggered because $common and $MRC are never equivalent. $common is initialized to a commit id by merge-base and MRC is initialized to HEAD. Fix this by initializing $MRC to the commit id for HEAD so that its possible for $MRC and $common to be equal. Signed-off-by: Stephen Boyd <bebarino@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-merge-octopus.sh2
-rwxr-xr-xt/t7602-merge-octopus-many.sh18
2 files changed, 19 insertions, 1 deletions
diff --git a/git-merge-octopus.sh b/git-merge-octopus.sh
index 3bb1acd527..3d1a29ecd2 100755
--- a/git-merge-octopus.sh
+++ b/git-merge-octopus.sh
@@ -44,7 +44,7 @@ esac
# MRC is the current "merge reference commit"
# MRT is the current "merge result tree"
-MRC=$head MSG= PARENT="-p $head"
+MRC=$(git rev-parse --verify -q $head) MSG= PARENT="-p $head"
MRT=$(git write-tree)
CNT=1 ;# counting our head
NON_FF_MERGE=0
diff --git a/t/t7602-merge-octopus-many.sh b/t/t7602-merge-octopus-many.sh
index 7377033226..2746169514 100755
--- a/t/t7602-merge-octopus-many.sh
+++ b/t/t7602-merge-octopus-many.sh
@@ -82,4 +82,22 @@ test_expect_success 'merge up-to-date output uses pretty names' '
git merge c4 c5 >actual &&
test_cmp actual expected
'
+
+cat >expected <<\EOF
+Fast-forwarding to: c1
+Trying simple merge with c2
+Merge made by octopus.
+ c1.c | 1 +
+ c2.c | 1 +
+ 2 files changed, 2 insertions(+), 0 deletions(-)
+ create mode 100644 c1.c
+ create mode 100644 c2.c
+EOF
+
+test_expect_success 'merge fast-forward output uses pretty names' '
+ git reset --hard c0 &&
+ git merge c1 c2 >actual &&
+ test_cmp actual expected
+'
+
test_done