Browse Source

"git diff <tree>{3,}": do not reverse order of arguments

According to the message of commit 0fe7c1de16,
"git diff" with three or more trees expects the merged tree first followed by
the parents, in order.  However, this command reversed the order of its
arguments, resulting in confusing diffs.  A comment /* Again, the revs are all
reverse */ suggested there was a reason for this, but I can't figure out the
reason, so I removed the reversal of the arguments.  Test case included.

Signed-off-by: Matt McCutchen <matt@mattmccutchen.net>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
maint
Matt McCutchen 17 years ago committed by Junio C Hamano
parent
commit
dbc2fb6b84
  1. 4
      builtin-diff.c
  2. 1
      t/t4013-diff-various.sh
  3. 29
      t/t4013/diff.diff_master_master^_side

4
builtin-diff.c

@ -175,10 +175,8 @@ static int builtin_diff_combined(struct rev_info *revs, @@ -175,10 +175,8 @@ static int builtin_diff_combined(struct rev_info *revs,
if (!revs->dense_combined_merges && !revs->combine_merges)
revs->dense_combined_merges = revs->combine_merges = 1;
parent = xmalloc(ents * sizeof(*parent));
/* Again, the revs are all reverse */
for (i = 0; i < ents; i++)
hashcpy((unsigned char *)(parent + i),
ent[ents - 1 - i].item->sha1);
hashcpy((unsigned char *)(parent + i), ent[i].item->sha1);
diff_tree_combined(parent[0], parent + 1, ents - 1,
revs->dense_combined_merges, revs);
return 0;

1
t/t4013-diff-various.sh

@ -258,6 +258,7 @@ diff --patch-with-stat -r initial..side @@ -258,6 +258,7 @@ diff --patch-with-stat -r initial..side
diff --patch-with-raw -r initial..side
diff --name-status dir2 dir
diff --no-index --name-status dir2 dir
diff master master^ side
EOF

test_done

29
t/t4013/diff.diff_master_master^_side

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
$ git diff master master^ side
diff --cc dir/sub
index cead32e,7289e35..992913c
--- a/dir/sub
+++ b/dir/sub
@@@ -1,6 -1,4 +1,8 @@@
A
B
+C
+D
+E
+F
+ 1
+ 2
diff --cc file0
index b414108,f4615da..10a8a9f
--- a/file0
+++ b/file0
@@@ -1,6 -1,6 +1,9 @@@
1
2
3
+4
+5
+6
+ A
+ B
+ C
$
Loading…
Cancel
Save