rename detection with -M100 means "exact renames only".
When the user is interested in pure renames, there is no point doing the similarity scores. This changes the score argument parsing to special case -M100 (otherwise, it is a precision scaled value 0 <= v < 1 and would mean 0.1, not 1.0 --- if you do mean 0.1, you can say -M1), and optimizes the diffcore_rename transformation to only look at pure renames in that case. Signed-off-by: Junio C Hamano <junkio@cox.net>maint
parent
88b5a74883
commit
9f70b80692
4
diff.c
4
diff.c
|
@ -853,6 +853,10 @@ static int parse_num(const char **cp_p)
|
|||
}
|
||||
*cp_p = cp;
|
||||
|
||||
/* special case: -M100 would mean 1.0 not 0.1 */
|
||||
if (num == 100 && scale == 1000)
|
||||
return MAX_SCORE;
|
||||
|
||||
/* user says num divided by scale and we say internally that
|
||||
* is MAX_SCORE * num / scale.
|
||||
*/
|
||||
|
|
|
@ -307,6 +307,9 @@ void diffcore_rename(struct diff_options *options)
|
|||
if (rename_count == rename_dst_nr)
|
||||
goto cleanup;
|
||||
|
||||
if (minimum_score == MAX_SCORE)
|
||||
goto cleanup;
|
||||
|
||||
num_create = (rename_dst_nr - rename_count);
|
||||
num_src = rename_src_nr;
|
||||
mx = xmalloc(sizeof(*mx) * num_create * num_src);
|
||||
|
|
Loading…
Reference in New Issue