mirror of
https://github.com/git/git.git
synced 2024-11-18 06:54:55 +01:00
Merge branch 'jc/diff' into next
* jc/diff: diffcore-rename: similarity estimator fix.
This commit is contained in:
commit
d4c9982f8e
1 changed files with 8 additions and 12 deletions
|
@ -170,19 +170,15 @@ static int estimate_similarity(struct diff_filespec *src,
|
||||||
&src_copied, &literal_added))
|
&src_copied, &literal_added))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Extent of damage */
|
/* How similar are they?
|
||||||
if (src->size + literal_added < src_copied)
|
* what percentage of material in dst are from source?
|
||||||
delta_size = 0;
|
|
||||||
else
|
|
||||||
delta_size = (src->size - src_copied) + literal_added;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Now we will give some score to it. 100% edit gets 0 points
|
|
||||||
* and 0% edit gets MAX_SCORE points.
|
|
||||||
*/
|
*/
|
||||||
score = MAX_SCORE - (MAX_SCORE * delta_size / base_size);
|
if (dst->size < src_copied)
|
||||||
if (score < 0) return 0;
|
score = MAX_SCORE;
|
||||||
if (MAX_SCORE < score) return MAX_SCORE;
|
else if (!dst->size)
|
||||||
|
score = 0; /* should not happen */
|
||||||
|
else
|
||||||
|
score = src_copied * MAX_SCORE / dst->size;
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue