Re: [PATCH 2/2] rebase -i -p: Fix --continue after a merge could not be redone
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Dec 22, 2008, 21:16 UTC
- Message-ID
- <alpine.DEB.1.00.0812222215170.30769@pacific.mpi-cbg.de>
- In-Reply-To
- <alpine.DEB.1.00.0812222139340.30769@pacific.mpi-cbg.de>
Hi,
On Mon, 22 Dec 2008, Johannes Schindelin wrote:
Show 5 quoted lines
> I'll leave the commit message fixing to you, but the --cc patch probably > looks something like this -- feel free to squash in: > > --- > [... a patch ...]
Ooops. Scratch that. I tested without running the test suite, and sure enough, it failed. Take that instead.
--
git-rebase--interactive.sh | 18 +++++++++++++++--- 1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 89c39eb..f08409c 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -115,9 +115,21 @@ 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 + *' '*' '*' '*) + echo "Octopus merge" + ;; + *' '*' '*) + 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 ||