summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: b9718d4)
raw | patch | inline | side by side (parent: b9718d4)
author | Junio C Hamano <junkio@cox.net> | |
Mon, 17 Jul 2006 07:34:44 +0000 (00:34 -0700) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Mon, 17 Jul 2006 08:10:03 +0000 (01:10 -0700) |
This tweaks the argument parser of "git diff" to allow "git-diff
A...B" to show diffs leading to B since their merge-base, when
there is only one sensible merge base between A and B.
Currently nonsense cases are thrown at combined-diff to produce
nonsense results, which would eventually need to be fixed.
Signed-off-by: Junio C Hamano <junkio@cox.net>
A...B" to show diffs leading to B since their merge-base, when
there is only one sensible merge base between A and B.
Currently nonsense cases are thrown at combined-diff to produce
nonsense results, which would eventually need to be fixed.
Signed-off-by: Junio C Hamano <junkio@cox.net>
builtin-diff.c | patch | blob | history |
diff --git a/builtin-diff.c b/builtin-diff.c
index cb38f445611735cff5bc9fbafb3189e6ccc6c2fd..efd315240f0d8434bc378bf43b866588f6f4e42e 100644 (file)
--- a/builtin-diff.c
+++ b/builtin-diff.c
return builtin_diff_index(&rev, argc, argv);
else if (ents == 2)
return builtin_diff_tree(&rev, argc, argv, ent);
+ else if ((ents == 3) && (ent[0].item->flags & UNINTERESTING)) {
+ /* diff A...B where there is one sane merge base between
+ * A and B. We have ent[0] == merge-base, ent[1] == A,
+ * and ent[2] == B. Show diff between the base and B.
+ */
+ return builtin_diff_tree(&rev, argc, argv, ent);
+ }
else
- return builtin_diff_combined(&rev, argc, argv, ent, ents);
+ return builtin_diff_combined(&rev, argc, argv,
+ ent, ents);
usage(builtin_diff_usage);
}