|
|
|
@ -96,6 +96,7 @@ chmod a+x fake-editor.sh
@@ -96,6 +96,7 @@ chmod a+x fake-editor.sh
|
|
|
|
|
|
|
|
|
|
test_expect_success 'no changes are a nop' ' |
|
|
|
|
git rebase -i F && |
|
|
|
|
test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch2" && |
|
|
|
|
test $(git rev-parse I) = $(git rev-parse HEAD) |
|
|
|
|
' |
|
|
|
|
|
|
|
|
@ -104,14 +105,26 @@ test_expect_success 'test the [branch] option' '
@@ -104,14 +105,26 @@ test_expect_success 'test the [branch] option' '
|
|
|
|
|
git rm file6 && |
|
|
|
|
git commit -m "stop here" && |
|
|
|
|
git rebase -i F branch2 && |
|
|
|
|
test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch2" && |
|
|
|
|
test $(git rev-parse I) = $(git rev-parse branch2) && |
|
|
|
|
test $(git rev-parse I) = $(git rev-parse HEAD) |
|
|
|
|
' |
|
|
|
|
|
|
|
|
|
test_expect_success 'test --onto <branch>' ' |
|
|
|
|
git checkout -b test-onto branch2 && |
|
|
|
|
git rebase -i --onto branch1 F && |
|
|
|
|
test "$(git symbolic-ref -q HEAD)" = "refs/heads/test-onto" && |
|
|
|
|
test $(git rev-parse HEAD^) = $(git rev-parse branch1) && |
|
|
|
|
test $(git rev-parse I) = $(git rev-parse branch2) |
|
|
|
|
' |
|
|
|
|
|
|
|
|
|
test_expect_success 'rebase on top of a non-conflicting commit' ' |
|
|
|
|
git checkout branch1 && |
|
|
|
|
git tag original-branch1 && |
|
|
|
|
git rebase -i branch2 && |
|
|
|
|
test file6 = $(git diff --name-only original-branch1) && |
|
|
|
|
test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch1" && |
|
|
|
|
test $(git rev-parse I) = $(git rev-parse branch2) && |
|
|
|
|
test $(git rev-parse I) = $(git rev-parse HEAD~2) |
|
|
|
|
' |
|
|
|
|
|
|
|
|
@ -144,9 +157,12 @@ EOF
@@ -144,9 +157,12 @@ EOF
|
|
|
|
|
|
|
|
|
|
test_expect_success 'stop on conflicting pick' ' |
|
|
|
|
git tag new-branch1 && |
|
|
|
|
! git rebase -i master && |
|
|
|
|
test_must_fail git rebase -i master && |
|
|
|
|
test "$(git rev-parse HEAD~3)" = "$(git rev-parse master)" && |
|
|
|
|
test_cmp expect .git/.dotest-merge/patch && |
|
|
|
|
test_cmp expect2 file1 && |
|
|
|
|
test "$(git-diff --name-status | |
|
|
|
|
sed -n -e "/^U/s/^U[^a-z]*//p")" = file1 && |
|
|
|
|
test 4 = $(grep -v "^#" < .git/.dotest-merge/done | wc -l) && |
|
|
|
|
test 0 = $(grep -c "^[^#]" < .git/.dotest-merge/git-rebase-todo) |
|
|
|
|
' |
|
|
|
@ -154,6 +170,7 @@ test_expect_success 'stop on conflicting pick' '
@@ -154,6 +170,7 @@ test_expect_success 'stop on conflicting pick' '
|
|
|
|
|
test_expect_success 'abort' ' |
|
|
|
|
git rebase --abort && |
|
|
|
|
test $(git rev-parse new-branch1) = $(git rev-parse HEAD) && |
|
|
|
|
test "$(git symbolic-ref -q HEAD)" = "refs/heads/branch1" && |
|
|
|
|
! test -d .git/.dotest-merge |
|
|
|
|
' |
|
|
|
|
|
|
|
|
@ -213,7 +230,7 @@ test_expect_success 'preserve merges with -p' '
@@ -213,7 +230,7 @@ test_expect_success 'preserve merges with -p' '
|
|
|
|
|
|
|
|
|
|
test_expect_success '--continue tries to commit' ' |
|
|
|
|
test_tick && |
|
|
|
|
! git rebase -i --onto new-branch1 HEAD^ && |
|
|
|
|
test_must_fail git rebase -i --onto new-branch1 HEAD^ && |
|
|
|
|
echo resolved > file1 && |
|
|
|
|
git add file1 && |
|
|
|
|
FAKE_COMMIT_MESSAGE="chouette!" git rebase --continue && |
|
|
|
@ -224,7 +241,7 @@ test_expect_success '--continue tries to commit' '
@@ -224,7 +241,7 @@ test_expect_success '--continue tries to commit' '
|
|
|
|
|
test_expect_success 'verbose flag is heeded, even after --continue' ' |
|
|
|
|
git reset --hard HEAD@{1} && |
|
|
|
|
test_tick && |
|
|
|
|
! git rebase -v -i --onto new-branch1 HEAD^ && |
|
|
|
|
test_must_fail git rebase -v -i --onto new-branch1 HEAD^ && |
|
|
|
|
echo resolved > file1 && |
|
|
|
|
git add file1 && |
|
|
|
|
git rebase --continue > output && |
|
|
|
@ -259,10 +276,14 @@ test_expect_success 'interrupted squash works as expected' '
@@ -259,10 +276,14 @@ test_expect_success 'interrupted squash works as expected' '
|
|
|
|
|
git commit -m $n |
|
|
|
|
done && |
|
|
|
|
one=$(git rev-parse HEAD~3) && |
|
|
|
|
! FAKE_LINES="1 squash 3 2" git rebase -i HEAD~3 && |
|
|
|
|
( |
|
|
|
|
FAKE_LINES="1 squash 3 2" && |
|
|
|
|
export FAKE_LINES && |
|
|
|
|
test_must_fail git rebase -i HEAD~3 |
|
|
|
|
) && |
|
|
|
|
(echo one; echo two; echo four) > conflict && |
|
|
|
|
git add conflict && |
|
|
|
|
! git rebase --continue && |
|
|
|
|
test_must_fail git rebase --continue && |
|
|
|
|
echo resolved > conflict && |
|
|
|
|
git add conflict && |
|
|
|
|
git rebase --continue && |
|
|
|
@ -277,13 +298,17 @@ test_expect_success 'interrupted squash works as expected (case 2)' '
@@ -277,13 +298,17 @@ test_expect_success 'interrupted squash works as expected (case 2)' '
|
|
|
|
|
git commit -m $n |
|
|
|
|
done && |
|
|
|
|
one=$(git rev-parse HEAD~3) && |
|
|
|
|
! FAKE_LINES="3 squash 1 2" git rebase -i HEAD~3 && |
|
|
|
|
( |
|
|
|
|
FAKE_LINES="3 squash 1 2" && |
|
|
|
|
export FAKE_LINES && |
|
|
|
|
test_must_fail git rebase -i HEAD~3 |
|
|
|
|
) && |
|
|
|
|
(echo one; echo four) > conflict && |
|
|
|
|
git add conflict && |
|
|
|
|
! git rebase --continue && |
|
|
|
|
test_must_fail git rebase --continue && |
|
|
|
|
(echo one; echo two; echo four) > conflict && |
|
|
|
|
git add conflict && |
|
|
|
|
! git rebase --continue && |
|
|
|
|
test_must_fail git rebase --continue && |
|
|
|
|
echo resolved > conflict && |
|
|
|
|
git add conflict && |
|
|
|
|
git rebase --continue && |
|
|
|
@ -331,7 +356,7 @@ test_expect_success 'rebase a commit violating pre-commit' '
@@ -331,7 +356,7 @@ test_expect_success 'rebase a commit violating pre-commit' '
|
|
|
|
|
chmod a+x $PRE_COMMIT && |
|
|
|
|
echo "monde! " >> file1 && |
|
|
|
|
test_tick && |
|
|
|
|
! git commit -m doesnt-verify file1 && |
|
|
|
|
test_must_fail git commit -m doesnt-verify file1 && |
|
|
|
|
git commit -m doesnt-verify --no-verify file1 && |
|
|
|
|
test_tick && |
|
|
|
|
FAKE_LINES=2 git rebase -i HEAD~2 |
|
|
|
|