diff --git a/git-rebase.sh b/git-rebase.sh index ab4afa7dee..386be43d99 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -543,7 +543,7 @@ fi if test -z "$do_merge" then git format-patch -k --stdout --full-index --ignore-if-in-upstream \ - $root_flag "$revisions" | + --no-renames $root_flag "$revisions" | git am $git_am_opt --rebasing --resolvemsg="$RESOLVEMSG" && move_to_original_branch ret=$? diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh index 083d76814d..a19aeb6441 100755 --- a/t/t3400-rebase.sh +++ b/t/t3400-rebase.sh @@ -19,7 +19,16 @@ test_expect_success 'prepare repository with topic branches' ' echo First >A && git update-index --add A && git commit -m "Add A." && - git checkout -b my-topic-branch && + git checkout -b force-3way && + echo Dummy >Y && + git update-index --add Y && + git commit -m "Add Y." && + git checkout -b filemove && + git reset --soft master && + mkdir D && + git mv A D/A && + git commit -m "Move A." && + git checkout -b my-topic-branch master && echo Second >B && git update-index --add B && git commit -m "Add B." && @@ -128,6 +137,19 @@ test_expect_success 'rebase a single mode change' ' GIT_TRACE=1 git rebase master ' +test_expect_success 'rebase is not broken by diff.renames' ' + git config diff.renames copies && + test_when_finished "git config --unset diff.renames" && + git checkout filemove && + GIT_TRACE=1 git rebase force-3way +' + +test_expect_success 'setup: recover' ' + test_might_fail git rebase --abort && + git reset --hard && + git checkout modechange +' + test_expect_success 'Show verbose error when HEAD could not be detached' ' >B && test_must_fail git rebase topic 2>output.err >output.out &&