When a commit is already present in the branch that is being rebased upon we get an empty commit. Usually we just drop this commit, but with `--keep-empty` we want to preserve the commit's message. Instead of simply applying the empty commit, though, we erroneously end up in cherry-picking mode without any ability to get back to the previous rebase. The same error happens when we try to rebase a commit with `--keep-empty` that causes a conflict. Add tests that document this breakage. Signed-off-by: Patrick Steinhardt <ps@xxxxxx> --- t/t3400-rebase.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh index 47b5682..6cca319 100755 --- a/t/t3400-rebase.sh +++ b/t/t3400-rebase.sh @@ -255,4 +255,30 @@ test_expect_success 'rebase commit with an ancient timestamp' ' grep "author .* 34567 +0600$" actual ' +test_expect_failure 'rebase duplicated commit with --keep-empty' ' + git reset --hard && + git checkout master && + + >x && git add x && git commit x -mx && + echo x > x && git commit x -mx1 && + + git checkout -b duplicated HEAD~ && + echo x > x && git commit x -mx2 && + git rebase --keep-empty master +' + +test_expect_failure 'rebase conflicting commit with --keep-empty' ' + git reset --hard && + git checkout master && + + echo y > x && git commit x -my && + + git checkout -b conflict HEAD~ && + echo z > x && git commit x -mz && + test_must_fail git rebase --keep-empty master && + + git add x && + git rebase --continue +' + test_done -- 2.6.3 -- 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