Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
diff --stat: do not run diff on indentical files
author
Zbigniew Jędrzejewski-Szmek
<zbyszek@in.waw.pl>
Tue, 1 May 2012 17:10:15 +0000
(19:10 +0200)
committer
Junio C Hamano
<gitster@pobox.com>
Wed, 2 May 2012 04:29:03 +0000
(21:29 -0700)
If two objects are known to be equal, there is no point running the diff.
Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
e18872b
)
diff --git
a/diff.c
b/diff.c
index e61ccd1123fcb909d72c002e61cd37c1ae5b49d7..8e61f4bf857eb80ec067336604fba2382eb4219c 100644
(file)
--- 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;
{
mmfile_t mf1, mf2;
struct diffstat_file *data;
+ int same_contents;
data = diffstat_add(diffstat, name_a, name_b);
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;
}
return;
}
+ same_contents = !hashcmp(one->sha1, two->sha1);
+
if (diff_filespec_is_binary(one) || diff_filespec_is_binary(two)) {
data->is_binary = 1;
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 {
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);
}
data->added = count_lines(two->data, two->size);
}
- else {
+ else
if (!same_contents)
{
/* Crazy xdl interfaces.. */
xpparam_t xpp;
xdemitconf_t xecfg;
/* Crazy xdl interfaces.. */
xpparam_t xpp;
xdemitconf_t xecfg;