diff options
author | Junio C Hamano <junkio@cox.net> | 2006-07-17 00:34:44 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-07-17 01:10:03 -0700 |
commit | 9919f41c91e525fd813fd2cd006f8fdcf976a661 (patch) | |
tree | 9ceb718b96776fe367f36af447a3572c30ba8a14 /builtin-diff.c | |
parent | b9718d41c7e9c171e432bafac97a33be36f0e2bf (diff) | |
download | git-9919f41c91e525fd813fd2cd006f8fdcf976a661.tar.gz git-9919f41c91e525fd813fd2cd006f8fdcf976a661.tar.xz |
git-diff A...B to (usually) mean "git-diff `git-merge-base A B` B"
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>
Diffstat (limited to 'builtin-diff.c')
-rw-r--r-- | builtin-diff.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/builtin-diff.c b/builtin-diff.c index cb38f4456..efd315240 100644 --- a/builtin-diff.c +++ b/builtin-diff.c @@ -346,7 +346,15 @@ int cmd_diff(int argc, const char **argv, char **envp) 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); } |