Fourth batch
[gitweb.git] / t / t3402-rebase-merge.sh
index be8c1d5ef9fd650c128a9fe7126cbcd8db6c5a95..a1ec501a872b9ae4087c93a5736fcd297bda7fc8 100755 (executable)
@@ -25,7 +25,7 @@ test_expect_success setup '
        git commit -a -m"master updates a bit more." &&
 
        git checkout side &&
-       (echo "0 $T" ; cat original) >renamed &&
+       (echo "0 $T" && cat original) >renamed &&
        git add renamed &&
        git update-index --force-remove original &&
        git commit -a -m"side renames and edits." &&
@@ -33,6 +33,7 @@ test_expect_success setup '
        tr "[a-z]" "[A-Z]" <original >newfile &&
        git add newfile &&
        git commit -a -m"side edits further." &&
+       git branch second-side &&
 
        tr "[a-m]" "[A-M]" <original >newfile &&
        rm -f original &&
@@ -41,11 +42,12 @@ test_expect_success setup '
        git branch test-rebase side &&
        git branch test-rebase-pick side &&
        git branch test-reference-pick side &&
+       git branch test-conflicts side &&
        git checkout -b test-merge side
 '
 
 test_expect_success 'reference merge' '
-       git merge -s recursive "reference merge" HEAD master
+       git merge -s recursive -m "reference merge" master
 '
 
 PRE_REBASE=$(git rev-parse test-rebase)
@@ -83,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
@@ -132,10 +143,23 @@ test_expect_success 'rebase -s funny -Xopt' '
        git checkout -b test-funny master^ &&
        test_commit funny &&
        (
-               PATH=./test-bin:$PATH
+               PATH=./test-bin:$PATH &&
                git rebase -s funny -Xopt master
        ) &&
        test -f funny.was.run
 '
 
+test_expect_success 'rebase --skip works with two conflicts in a row' '
+       git checkout second-side  &&
+       tr "[A-Z]" "[a-z]" <newfile >tmp &&
+       mv tmp newfile &&
+       git commit -a -m"edit conflicting with side" &&
+       tr "[d-f]" "[D-F]" <newfile >tmp &&
+       mv tmp newfile &&
+       git commit -a -m"another edit conflicting with side" &&
+       test_must_fail git rebase --merge test-conflicts &&
+       test_must_fail git rebase --skip &&
+       git rebase --skip
+'
+
 test_done