diff options
author | Junio C Hamano <junkio@cox.net> | 2006-02-28 20:19:47 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-02-28 20:19:47 -0800 |
commit | aeecd23ae2785a0462d42191974e9d9a8e439fbe (patch) | |
tree | 896d1112a041f1c9eda2b5157d253399d0d3a12f | |
parent | e3601e8bb76e46745d4919c3f30b1dddae040eb2 (diff) | |
download | git-aeecd23ae2785a0462d42191974e9d9a8e439fbe.tar.gz |
diffcore-break: micro-optimize by avoiding delta between identical files.
We did not check if we have the same file on both sides when
computing break score. This is usually not a problem, but if
the user said --find-copies-harde with -B, we ended up trying a
delta between the same data even when we know the SHA1 hash of
both sides match.
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | diffcore-break.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/diffcore-break.c b/diffcore-break.c index c57513a4fa..95b5eb492e 100644 --- a/diffcore-break.c +++ b/diffcore-break.c @@ -58,6 +58,10 @@ static int should_break(struct diff_filespec *src, if (!S_ISREG(src->mode) || !S_ISREG(dst->mode)) return 0; /* leave symlink rename alone */ + if (src->sha1_valid && dst->sha1_valid && + !memcmp(src->sha1, dst->sha1, 20)) + return 0; /* they are the same */ + if (diff_populate_filespec(src, 0) || diff_populate_filespec(dst, 0)) return 0; /* error but caught downstream */ |