[PATCH 2/2] rebase -i -p: Fix --continue after a merge could not be redone
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Dec 15, 2008, 10:05 UTC
- Message-ID
- <1229335531-32707-2-git-send-email-j6t@kdbg.org>
- In-Reply-To
- <1229335531-32707-1-git-send-email-j6t@kdbg.org>
When a merge that has a conflict was rebased, then rebase stopped to let the user resolve the conflicts. However, thereafter --continue failed because the author-script was not saved. (This is rebase -i's way to preserve a commit's authorship.) This fixes it by doing taking the same failure route after a merge that is also taken after a normal cherry-pick.
Signed-off-by: Johannes Sixt <j6t@kdbg.org> --- This is an attempt at fixing the failure. I don't know whether it is problematic to leave a "patch" behind if there was actually a merge. Nevertheless, all rebase tests pass.
-- Hannes git-rebase--interactive.sh | 3 +-- t/t3409-rebase-preserve-merges.sh | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 1172e47..89c39eb 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -253,15 +253,14 @@ pick_one_preserving_merges () { if ! GIT_AUTHOR_NAME="$GIT_AUTHOR_NAME" \ GIT_AUTHOR_EMAIL="$GIT_AUTHOR_EMAIL" \ GIT_AUTHOR_DATE="$GIT_AUTHOR_DATE" \ output git merge $STRATEGY -m "$msg" \ $new_parents then - git rerere printf "%s\n" "$msg" > "$GIT_DIR"/MERGE_MSG - die Error redoing merge $sha1 + die_with_patch $sha1 "Error redoing merge $sha1" fi ;; *) output git cherry-pick "$@" || die_with_patch $sha1 "Could not pick $sha1" ;; diff --git a/t/t3409-rebase-preserve-merges.sh b/t/t3409-rebase-preserve-merges.sh index 5ddd1d1..820e010 100755 --- a/t/t3409-rebase-preserve-merges.sh +++ b/t/t3409-rebase-preserve-merges.sh @@ -72,13 +72,13 @@ test_expect_success 'rebase -p fakes interactive rebase' ' git rebase -p origin/topic && test 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) && test 1 = $(git rev-list --all --pretty=oneline | grep "Merge commit" | wc -l) ) ' -test_expect_failure '--continue works after a conflict' ' +test_expect_success '--continue works after a conflict' ' ( cd clone2 && git fetch && test_must_fail git rebase -p origin/topic && test 2 = $(git ls-files B | wc -l) && echo Resolved again > B &&
-- 1.6.1.rc2.22.gf3bf84