diff options
author | Ben Woosley <ben.woosley@gmail.com> | 2016-04-20 18:20:56 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-04-24 12:05:08 -0700 |
commit | 79f43447d2b542d1e521987287822ff376d43e93 (patch) | |
tree | 177184ad1892016739134ff51c2e8748d217c00e /t/t3402-rebase-merge.sh | |
parent | 6a6636270fbaf74609cd3e1bd207dd2c420d640a (diff) | |
download | git-79f43447d2b542d1e521987287822ff376d43e93.tar.gz git-79f43447d2b542d1e521987287822ff376d43e93.tar.xz |
git-rebase--merge: don't include absent parent as a base
Absent this fix, attempts to rebase an orphan branch using "rebase -m"
fails with:
$ git rebase -m ORPHAN_TARGET_BASE
First, rewinding head to replay your work on top of it...
fatal: Could not parse object 'ORPHAN_ROOT_SHA^'
Unknown exit code (128) from command: git-merge-recursive ORPHAN_ROOT_SHA^ -- HEAD ORPHAN_ROOT_SHA
To fix, this will only include the rebase root's parent as a base if it exists,
so that in cases of rebasing an orphan branch, it is a simple two-way merge.
Note the default rebase behavior does not fail:
$ git rebase ORPHAN_TARGET_BASE
First, rewinding head to replay your work on top of it...
Applying: ORPHAN_ROOT_COMMIT_MSG
Using index info to reconstruct a base tree...
A few tests were expecting the old behaviour to forbid rebasing such
a history with "rebase -m", which now need to expect them to succeed.
Signed-off-by: Ben Woosley <ben.woosley@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t3402-rebase-merge.sh')
-rwxr-xr-x | t/t3402-rebase-merge.sh | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/t/t3402-rebase-merge.sh b/t/t3402-rebase-merge.sh index 8f64505e4..488945e00 100755 --- a/t/t3402-rebase-merge.sh +++ b/t/t3402-rebase-merge.sh @@ -85,6 +85,15 @@ test_expect_success 'rebase -Xtheirs' ' ! grep 11 original ' +test_expect_success 'rebase -Xtheirs from orphan' ' + git checkout --orphan orphan-conflicting master~2 && + echo "AB $T" >> original && + git commit -morphan-conflicting original && + git rebase -Xtheirs master && + grep AB original && + ! grep 11 original +' + test_expect_success 'merge and rebase should match' ' git diff-tree -r test-rebase test-merge >difference && if test -s difference |