Code

rebase -i: use diff plumbing instead of porcelain
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Tue, 9 Oct 2007 12:59:43 +0000 (13:59 +0100)
committerShawn O. Pearce <spearce@spearce.org>
Tue, 16 Oct 2007 01:16:08 +0000 (21:16 -0400)
When diff drivers are installed, calling "git diff <tree1>..<tree2>"
calls those drivers.  This borks the patch generation of rebase -i.
So use "git diff-tree -p" instead, which does not call diff drivers.

Noticed by Johannes Sixt.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-rebase--interactive.sh

index 653393d8c992a6d61e0b4443e3d106b32c718033..50b79ff8ff289f43ca92738656e37bc2545c5bc6 100755 (executable)
@@ -78,7 +78,7 @@ mark_action_done () {
 
 make_patch () {
        parent_sha1=$(git rev-parse --verify "$1"^ 2> /dev/null)
-       git diff "$parent_sha1".."$1" > "$DOTEST"/patch
+       git diff-tree -p "$parent_sha1".."$1" > "$DOTEST"/patch
 }
 
 die_with_patch () {
@@ -302,7 +302,7 @@ do_next () {
        git update-ref -m "$message" $HEADNAME $NEWHEAD $OLDHEAD &&
        git symbolic-ref HEAD $HEADNAME && {
                test ! -f "$DOTEST"/verbose ||
-                       git diff --stat $(cat "$DOTEST"/head)..HEAD
+                       git diff-tree --stat $(cat "$DOTEST"/head)..HEAD
        } &&
        rm -rf "$DOTEST" &&
        warn "Successfully rebased and updated $HEADNAME."