diff options
author | Stephen Boyd <bebarino@gmail.com> | 2009-12-11 16:38:58 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-12-13 23:40:24 -0800 |
commit | 85bf49f9a55fd9ded396460d245a55b651d7bdaa (patch) | |
tree | f7927bdd30d780307a963ddf63a71f5543ebe09e | |
parent | 81334502eed1c78f49fc74936b712b3cf32b682a (diff) | |
download | git-85bf49f9a55fd9ded396460d245a55b651d7bdaa.tar.gz git-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-x | git-merge-octopus.sh | 2 | ||||
-rwxr-xr-x | t/t7602-merge-octopus-many.sh | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/git-merge-octopus.sh b/git-merge-octopus.sh index 3bb1acd52..3d1a29ecd 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 737703322..274616951 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 |