Skip to content

Commit

Permalink
rebase -i -p: leave a --cc patch when a merge could not be redone
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Johannes Schindelin authored and Junio C Hamano committed Dec 24, 2008
1 parent f5b49ea commit 4fb1a19
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
15 changes: 12 additions & 3 deletions git-rebase--interactive.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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 ||
Expand Down
1 change: 1 addition & 0 deletions t/t3409-rebase-preserve-merges.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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) &&
Expand Down

0 comments on commit 4fb1a19

Please sign in to comment.