diff options
author | Patrick Steinhardt <ps@pks.im> | 2015-11-20 13:04:40 +0100 |
---|---|---|
committer | Jeff King <peff@peff.net> | 2015-11-24 18:47:42 -0500 |
commit | 7753adf31881c710ee93ddcbabc3aa07e4fdbd7b (patch) | |
tree | c35cdf835c9c060e02625fce2307cab33f73e69b | |
parent | a6ddec04f5ef0b1dd3b7abd417d10a428b523d31 (diff) | |
download | git-ps/rebase-keep-empty.tar.gz |
rebase: fix preserving commits with --keep-emptyps/rebase-keep-empty
When rebasing commits where one or several commits are redundant
to commits on the branch that is being rebased upon we error out.
This is due to the usage of `--allow-empty` for the invoked
cherry-pick command, which will only cause _empty_ commits to be
picked instead of also allowing redundant commits. As
git-rebase(1) mentions, though, we also want to keep commits that
do not change anything from its parents, that is also redundant
commits.
Fix this by invoking `git cherry-pick --keep-redundant-commits`
instead, which will cause redundant commits to be rebased
correctly.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Jeff King <peff@peff.net>
-rw-r--r-- | git-rebase--am.sh | 2 | ||||
-rwxr-xr-x | t/t3400-rebase.sh | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/git-rebase--am.sh b/git-rebase--am.sh index 9ae898bc1d..ea7b8973a4 100644 --- a/git-rebase--am.sh +++ b/git-rebase--am.sh @@ -44,7 +44,7 @@ then # empty commits and even if it didn't the format doesn't really lend # itself well to recording empty patches. fortunately, cherry-pick # makes this easy - git cherry-pick ${gpg_sign_opt:+"$gpg_sign_opt"} --allow-empty \ + git cherry-pick ${gpg_sign_opt:+"$gpg_sign_opt"} --keep-redundant-commits \ --right-only "$revisions" \ ${restrict_revision+^$restrict_revision} ret=$? diff --git a/t/t3400-rebase.sh b/t/t3400-rebase.sh index e8e998849b..5ed4012e60 100755 --- a/t/t3400-rebase.sh +++ b/t/t3400-rebase.sh @@ -255,7 +255,7 @@ test_expect_success 'rebase commit with an ancient timestamp' ' grep "author .* 34567 +0600$" actual ' -test_expect_failure 'rebase duplicated commit with --keep-empty' ' +test_expect_success 'rebase duplicated commit with --keep-empty' ' git reset --hard && git checkout master && |