summaryrefslogtreecommitdiff
path: root/builtin/diff.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2017-05-19 12:59:34 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-05-24 01:59:27 (GMT)
commit30d005c02014680403b5d35ef274047ab91fa5bd (patch)
tree9e815f072822563da73f47a438e0c601d13d5008 /builtin/diff.c
parent158b06caee5f9ea2987f444b8e49bd2d678b187d (diff)
downloadgit-30d005c02014680403b5d35ef274047ab91fa5bd.zip
git-30d005c02014680403b5d35ef274047ab91fa5bd.tar.gz
git-30d005c02014680403b5d35ef274047ab91fa5bd.tar.bz2
diff: use blob path for blob/file diffs
When we diff a blob against a working tree file like: git diff HEAD:Makefile Makefile we always use the working tree filename for both sides of the diff. In most cases that's fine, as the two would be the same anyway, as above. And until recently, we used the "name" for the blob, not the path, which would have the messy "HEAD:" on the beginning. But when they don't match, like: git diff HEAD:old_path new_path it makes sense to show both names. This patch uses the blob's path field if it's available, and otherwise falls back to using the filename (in preference to the blob's name, which is likely to be garbage like a raw sha1). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/diff.c')
-rw-r--r--builtin/diff.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/builtin/diff.c b/builtin/diff.c
index 1a1149e..5e7c642 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -90,7 +90,8 @@ static int builtin_diff_b_f(struct rev_info *revs,
blob[0]->mode, canon_mode(st.st_mode),
&blob[0]->item->oid, &null_oid,
1, 0,
- path, path);
+ blob[0]->path ? blob[0]->path : path,
+ path);
diffcore_std(&revs->diffopt);
diff_flush(&revs->diffopt);
return 0;