Browse Source

Do not try to detect move/copy for entries below threshold.

Splits for such entries are rejected anyway, so there is no
point even trying to compute them.

Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Alexander Gavrilov 17 years ago committed by Junio C Hamano
parent
commit
1617fe9879
  1. 16
      builtin-blame.c

16
builtin-blame.c

@ -1012,7 +1012,8 @@ static int find_move_in_parent(struct scoreboard *sb,
while (made_progress) { while (made_progress) {
made_progress = 0; made_progress = 0;
for (e = sb->ent; e; e = e->next) { for (e = sb->ent; e; e = e->next) {
if (e->guilty || !same_suspect(e->suspect, target)) if (e->guilty || !same_suspect(e->suspect, target) ||
ent_score(sb, e) < blame_move_score)
continue; continue;
find_copy_in_blob(sb, e, parent, split, &file_p); find_copy_in_blob(sb, e, parent, split, &file_p);
if (split[1].suspect && if (split[1].suspect &&
@ -1037,6 +1038,7 @@ struct blame_list {
*/ */
static struct blame_list *setup_blame_list(struct scoreboard *sb, static struct blame_list *setup_blame_list(struct scoreboard *sb,
struct origin *target, struct origin *target,
int min_score,
int *num_ents_p) int *num_ents_p)
{ {
struct blame_entry *e; struct blame_entry *e;
@ -1044,12 +1046,16 @@ static struct blame_list *setup_blame_list(struct scoreboard *sb,
struct blame_list *blame_list = NULL; struct blame_list *blame_list = NULL;


for (e = sb->ent, num_ents = 0; e; e = e->next) for (e = sb->ent, num_ents = 0; e; e = e->next)
if (!e->scanned && !e->guilty && same_suspect(e->suspect, target)) if (!e->scanned && !e->guilty &&
same_suspect(e->suspect, target) &&
min_score < ent_score(sb, e))
num_ents++; num_ents++;
if (num_ents) { if (num_ents) {
blame_list = xcalloc(num_ents, sizeof(struct blame_list)); blame_list = xcalloc(num_ents, sizeof(struct blame_list));
for (e = sb->ent, i = 0; e; e = e->next) for (e = sb->ent, i = 0; e; e = e->next)
if (!e->scanned && !e->guilty && same_suspect(e->suspect, target)) if (!e->scanned && !e->guilty &&
same_suspect(e->suspect, target) &&
min_score < ent_score(sb, e))
blame_list[i++].ent = e; blame_list[i++].ent = e;
} }
*num_ents_p = num_ents; *num_ents_p = num_ents;
@ -1084,7 +1090,7 @@ static int find_copy_in_parent(struct scoreboard *sb,
struct blame_list *blame_list; struct blame_list *blame_list;
int num_ents; int num_ents;


blame_list = setup_blame_list(sb, target, &num_ents); blame_list = setup_blame_list(sb, target, blame_copy_score, &num_ents);
if (!blame_list) if (!blame_list)
return 1; /* nothing remains for this target */ return 1; /* nothing remains for this target */


@ -1166,7 +1172,7 @@ static int find_copy_in_parent(struct scoreboard *sb,


if (!made_progress) if (!made_progress)
break; break;
blame_list = setup_blame_list(sb, target, &num_ents); blame_list = setup_blame_list(sb, target, blame_copy_score, &num_ents);
if (!blame_list) { if (!blame_list) {
retval = 1; retval = 1;
break; break;

Loading…
Cancel
Save