diff options
author | Alexander Gavrilov <angavrilov@gmail.com> | 2008-07-16 02:00:58 +0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-07-15 16:38:33 -0700 |
commit | 1617fe9879c96659107b13cc4957a855e838702d (patch) | |
tree | ca34b5e11696594258047c97d5ffe11d11c2f4ba | |
parent | Avoid rescanning unchanged entries in search for copies. (diff) | |
download | tgif-1617fe9879c96659107b13cc4957a855e838702d.tar.xz |
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>
-rw-r--r-- | builtin-blame.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/builtin-blame.c b/builtin-blame.c index 7ac1a37671..8827f1e0c6 100644 --- a/builtin-blame.c +++ b/builtin-blame.c @@ -1012,7 +1012,8 @@ static int find_move_in_parent(struct scoreboard *sb, while (made_progress) { made_progress = 0; 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; find_copy_in_blob(sb, e, parent, split, &file_p); if (split[1].suspect && @@ -1037,6 +1038,7 @@ struct blame_list { */ static struct blame_list *setup_blame_list(struct scoreboard *sb, struct origin *target, + int min_score, int *num_ents_p) { struct blame_entry *e; @@ -1044,12 +1046,16 @@ static struct blame_list *setup_blame_list(struct scoreboard *sb, struct blame_list *blame_list = NULL; 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++; if (num_ents) { blame_list = xcalloc(num_ents, sizeof(struct blame_list)); 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; } *num_ents_p = num_ents; @@ -1084,7 +1090,7 @@ static int find_copy_in_parent(struct scoreboard *sb, struct blame_list *blame_list; 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) return 1; /* nothing remains for this target */ @@ -1166,7 +1172,7 @@ static int find_copy_in_parent(struct scoreboard *sb, if (!made_progress) 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) { retval = 1; break; |