From: Johannes Schindelin Date: Mon, 22 Dec 2008 21:16:51 +0000 (+0100) Subject: rebase -i -p: leave a --cc patch when a merge could not be redone X-Git-Tag: v1.6.1~1^2 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=4fb1a19d502f4a2ca47bfb75cce605f3447819e6;p=git.git rebase -i -p: leave a --cc patch when a merge could not be redone The result is easier to review this way, and the merge resolution has to be done inside the work tree, not by adjusting "the patch" anyway. --- diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 89c39ebc9..c8b0861c0 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -115,9 +115,18 @@ mark_action_done () { } make_patch () { - parent_sha1=$(git rev-parse --verify "$1"^) || - die "Cannot get patch for $1^" - git diff-tree -p "$parent_sha1".."$1" > "$DOTEST"/patch + sha1_and_parents="$(git rev-list --parents -1 "$1")" + case "$sha1_and_parents" in + ?*' '?*' '?*) + git diff --cc $sha1_and_parents + ;; + ?*' '?*) + git diff-tree -p "$1^!" + ;; + *) + echo "Root commit" + ;; + esac > "$DOTEST"/patch test -f "$DOTEST"/message || git cat-file commit "$1" | sed "1,/^$/d" > "$DOTEST"/message test -f "$DOTEST"/author-script || diff --git a/t/t3409-rebase-preserve-merges.sh b/t/t3409-rebase-preserve-merges.sh index 820e0105d..e6c832780 100755 --- a/t/t3409-rebase-preserve-merges.sh +++ b/t/t3409-rebase-preserve-merges.sh @@ -83,6 +83,7 @@ test_expect_success '--continue works after a conflict' ' test 2 = $(git ls-files B | wc -l) && echo Resolved again > B && test_must_fail git rebase --continue && + grep "^@@@ " .git/rebase-merge/patch && git add B && git rebase --continue && test 1 = $(git rev-list --all --pretty=oneline | grep "Modify A" | wc -l) &&