summaryrefslogtreecommitdiff
path: root/diffcore-rename.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-03-01 00:01:36 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-03-01 04:20:04 (GMT)
commit65416758cd83772f2f3c69f1bd1f501608e64745 (patch)
treef485bb85d2c949372344265842466669d0a167d0 /diffcore-rename.c
parentaeecd23ae2785a0462d42191974e9d9a8e439fbe (diff)
downloadgit-65416758cd83772f2f3c69f1bd1f501608e64745.zip
git-65416758cd83772f2f3c69f1bd1f501608e64745.tar.gz
git-65416758cd83772f2f3c69f1bd1f501608e64745.tar.bz2
diffcore-rename: split out the delta counting code.
This is to rework diffcore break/rename/copy detection code so that it does not affected when deltifier code gets improved. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'diffcore-rename.c')
-rw-r--r--diffcore-rename.c28
1 files changed, 5 insertions, 23 deletions
diff --git a/diffcore-rename.c b/diffcore-rename.c
index ffd126a..55cf1c3 100644
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
@@ -4,8 +4,6 @@
#include "cache.h"
#include "diff.h"
#include "diffcore.h"
-#include "delta.h"
-#include "count-delta.h"
/* Table of rename/copy destinations */
@@ -135,7 +133,6 @@ static int estimate_similarity(struct diff_filespec *src,
* match than anything else; the destination does not even
* call into this function in that case.
*/
- void *delta;
unsigned long delta_size, base_size, src_copied, literal_added;
unsigned long delta_limit;
int score;
@@ -165,28 +162,13 @@ static int estimate_similarity(struct diff_filespec *src,
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, 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.
- */
- if (base_size * (MAX_SCORE-minimum_score) < delta_size * MAX_SCORE) {
- free(delta);
- return 0;
- }
- /* Estimate the edit size by interpreting delta. */
- if (count_delta(delta, delta_size, &src_copied, &literal_added)) {
- free(delta);
+ delta_limit = base_size * (MAX_SCORE-minimum_score) / MAX_SCORE;
+ if (diffcore_count_changes(src->data, src->size,
+ dst->data, dst->size,
+ delta_limit,
+ &src_copied, &literal_added))
return 0;
- }
- free(delta);
/* Extent of damage */
if (src->size + literal_added < src_copied)