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
							parent
							
								
									eb46328e18
								
							
						
					
					
						commit
						1617fe9879
					
				|  | @ -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…
	
		Reference in New Issue
	
	 Alexander Gavrilov
						Alexander Gavrilov