merge(3p/git): Merge git upstream at v2.26.2
This commit is contained in:
commit
5229c9b232
1006 changed files with 149006 additions and 60819 deletions
21
third_party/git/diffcore-rename.c
vendored
21
third_party/git/diffcore-rename.c
vendored
|
@ -263,8 +263,8 @@ static unsigned int hash_filespec(struct repository *r,
|
|||
if (!filespec->oid_valid) {
|
||||
if (diff_populate_filespec(r, filespec, 0))
|
||||
return 0;
|
||||
hash_object_file(filespec->data, filespec->size, "blob",
|
||||
&filespec->oid);
|
||||
hash_object_file(r->hash_algo, filespec->data, filespec->size,
|
||||
"blob", &filespec->oid);
|
||||
}
|
||||
return oidhash(&filespec->oid);
|
||||
}
|
||||
|
@ -274,18 +274,17 @@ static int find_identical_files(struct hashmap *srcs,
|
|||
struct diff_options *options)
|
||||
{
|
||||
int renames = 0;
|
||||
|
||||
struct diff_filespec *target = rename_dst[dst_index].two;
|
||||
struct file_similarity *p, *best = NULL;
|
||||
int i = 100, best_score = -1;
|
||||
unsigned int hash = hash_filespec(options->repo, target);
|
||||
|
||||
/*
|
||||
* Find the best source match for specified destination.
|
||||
*/
|
||||
p = hashmap_get_from_hash(srcs,
|
||||
hash_filespec(options->repo, target),
|
||||
NULL);
|
||||
for (; p; p = hashmap_get_next(srcs, p)) {
|
||||
p = hashmap_get_entry_from_hash(srcs, hash, NULL,
|
||||
struct file_similarity, entry);
|
||||
hashmap_for_each_entry_from(srcs, p, entry) {
|
||||
int score;
|
||||
struct diff_filespec *source = p->filespec;
|
||||
|
||||
|
@ -329,8 +328,8 @@ static void insert_file_table(struct repository *r,
|
|||
entry->index = index;
|
||||
entry->filespec = filespec;
|
||||
|
||||
hashmap_entry_init(entry, hash_filespec(r, filespec));
|
||||
hashmap_add(table, entry);
|
||||
hashmap_entry_init(&entry->entry, hash_filespec(r, filespec));
|
||||
hashmap_add(table, &entry->entry);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -359,7 +358,7 @@ static int find_exact_renames(struct diff_options *options)
|
|||
renames += find_identical_files(&file_table, i, options);
|
||||
|
||||
/* Free the hash data structure and entries */
|
||||
hashmap_free(&file_table, 1);
|
||||
hashmap_free_entries(&file_table, struct file_similarity, entry);
|
||||
|
||||
return renames;
|
||||
}
|
||||
|
@ -585,7 +584,7 @@ void diffcore_rename(struct diff_options *options)
|
|||
stop_progress(&progress);
|
||||
|
||||
/* cost matrix sorted by most to least similar pair */
|
||||
QSORT(mx, dst_cnt * NUM_CANDIDATE_PER_DST, score_compare);
|
||||
STABLE_QSORT(mx, dst_cnt * NUM_CANDIDATE_PER_DST, score_compare);
|
||||
|
||||
rename_count += find_renames(mx, dst_cnt, minimum_score, 0);
|
||||
if (detect_rename == DIFF_DETECT_COPY)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue