summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: e1ddc97)
raw | patch | inline | side by side (parent: e1ddc97)
author | Junio C Hamano <junkio@cox.net> | |
Tue, 28 Jun 2005 23:58:27 +0000 (16:58 -0700) | ||
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Wed, 29 Jun 2005 00:13:32 +0000 (17:13 -0700) |
The diff_delta() interface was extended to reject generating too big a
delta while we were working on the packed GIT archive format.
Take advantage of that when generating delta in the similarity estimator
used in diffcore-rename.c
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
delta while we were working on the packed GIT archive format.
Take advantage of that when generating delta in the similarity estimator
used in diffcore-rename.c
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
diffcore-rename.c | patch | blob | history |
diff --git a/diffcore-rename.c b/diffcore-rename.c
index 29609c74b6f312b59b7dde798ca5fc517c4a8bbb..6a52699f732c76540d71ce1500bd8d838ee8a265 100644 (file)
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
*/
void *delta;
unsigned long delta_size, base_size, src_copied, literal_added;
+ unsigned long delta_limit;
int score;
/* We deal only with regular files. Symlink renames are handled
if (diff_populate_filespec(src, 0) || diff_populate_filespec(dst, 0))
return 0; /* error but caught downstream */
+ delta_limit = base_size * (MAX_SCORE-minimum_score) / MAX_SCORE;
delta = diff_delta(src->data, src->size,
dst->data, dst->size,
- &delta_size, ~0UL);
+ &delta_size, delta_limit);
+ if (!delta)
+ /* If delta_limit is exceeded, we have too much differences */
+ return 0;
/* A delta that has a lot of literal additions would have
* big delta_size no matter what else it does.