Signed-off-by: Greg Price <price@xxxxxxx> --- t/t3420-rebase-ref.sh | 75 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 75 insertions(+), 0 deletions(-) create mode 100644 t/t3420-rebase-ref.sh diff --git a/t/t3420-rebase-ref.sh b/t/t3420-rebase-ref.sh new file mode 100644 index 0000000..601a434 --- /dev/null +++ b/t/t3420-rebase-ref.sh @@ -0,0 +1,75 @@ +#!/bin/sh + +test_description='git rebase --rewrite-refs' + +. ./test-lib.sh +. "$TEST_DIRECTORY/lib-rebase.sh" +set_fake_editor + +# part1 part2 topic +# | | | +# v v v +# A-----C------D-----E +# \ +# B <--master + +test_expect_success setup ' + test_commit A && + git branch topic && + test_commit B && + git checkout topic && + test_commit C && + git branch part1 && + test_commit D + git branch part2 && + test_commit E +' + +test_expect_success 'rebase --rewrite-heads' ' + git reset --hard && + git checkout topic && + git reset --hard E && + + git rebase --rewrite-heads master && + git rev-parse part1 >actual && + git rev-parse HEAD~2 >expected && + test_cmp expected actual && + git rev-parse part2 >actual && + git rev-parse HEAD~1 >expected && + test_cmp expected actual +' + +test_expect_success 'rebase --rewrite-refs' ' + git reset --hard && + git update-ref refs/heads/part1 C && + git update-ref refs/heads/part2 D && + git checkout topic && + git reset --hard E && + + git rebase --rewrite-refs=refs/heads/part2 master && + git rev-parse part1 >actual && + git rev-parse C >expected && + test_cmp expected actual && + git rev-parse part2 >actual && + git rev-parse HEAD~1 >expected && + test_cmp expected actual +' + +test_expect_success 'ref in TODO followed by rebase --abort' ' + git reset --hard && + git update-ref refs/heads/part1 C && + git update-ref refs/heads/part2 D && + git checkout topic && + git reset --hard E && + + FAKE_LINES="1 2 edit 3 4 5" git rebase -i --rewrite-heads master && + git rev-parse part1 >actual && + git rev-parse HEAD^ >expected && + test_cmp expected actual && + git rebase --abort && + git rev-parse part1 >actual && + git rev-parse C >expected && + test_cmp expected actual +' + +test_done -- 1.7.5.4 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html