From: Zbigniew Jędrzejewski-Szmek Date: Tue, 1 May 2012 17:10:15 +0000 (+0200) Subject: diff --stat: do not run diff on indentical files X-Git-Tag: v1.7.11-rc0~53^2~1 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=352ca4e105e6fb37cad97b80f2640d28b133ca9d;p=git.git diff --stat: do not run diff on indentical files If two objects are known to be equal, there is no point running the diff. Signed-off-by: Zbigniew Jędrzejewski-Szmek Signed-off-by: Junio C Hamano --- diff --git a/diff.c b/diff.c index e61ccd112..8e61f4bf8 100644 --- a/diff.c +++ b/diff.c @@ -2370,6 +2370,7 @@ static void builtin_diffstat(const char *name_a, const char *name_b, { mmfile_t mf1, mf2; struct diffstat_file *data; + int same_contents; data = diffstat_add(diffstat, name_a, name_b); @@ -2378,9 +2379,11 @@ static void builtin_diffstat(const char *name_a, const char *name_b, return; } + same_contents = !hashcmp(one->sha1, two->sha1); + if (diff_filespec_is_binary(one) || diff_filespec_is_binary(two)) { data->is_binary = 1; - if (!hashcmp(one->sha1, two->sha1)) { + if (same_contents) { data->added = 0; data->deleted = 0; } else { @@ -2396,7 +2399,7 @@ static void builtin_diffstat(const char *name_a, const char *name_b, data->added = count_lines(two->data, two->size); } - else { + else if (!same_contents) { /* Crazy xdl interfaces.. */ xpparam_t xpp; xdemitconf_t xecfg;