diffcore-rename: add function for clearing dir_rename_count

As we adjust the usage of dir_rename_count we want to have a function
for clearing, or partially clearing it out.  Add a
partial_clear_dir_rename_count() function for this purpose.

Reviewed-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Elijah Newren 2021-02-27 00:30:43 +00:00 коммит произвёл Junio C Hamano
Родитель 0c4fd732f0
Коммит cd52e0050f
3 изменённых файлов: 17 добавлений и 9 удалений

Просмотреть файл

@ -528,6 +528,18 @@ static void initialize_dir_rename_info(struct dir_rename_info *info)
} }
} }
void partial_clear_dir_rename_count(struct strmap *dir_rename_count)
{
struct hashmap_iter iter;
struct strmap_entry *entry;
strmap_for_each_entry(dir_rename_count, &iter, entry) {
struct strintmap *counts = entry->value;
strintmap_clear(counts);
}
strmap_partial_clear(dir_rename_count, 1);
}
static void cleanup_dir_rename_info(struct dir_rename_info *info) static void cleanup_dir_rename_info(struct dir_rename_info *info)
{ {
if (!info->setup) if (!info->setup)

Просмотреть файл

@ -161,6 +161,8 @@ struct diff_filepair *diff_queue(struct diff_queue_struct *,
struct diff_filespec *); struct diff_filespec *);
void diff_q(struct diff_queue_struct *, struct diff_filepair *); void diff_q(struct diff_queue_struct *, struct diff_filepair *);
void partial_clear_dir_rename_count(struct strmap *dir_rename_count);
void diffcore_break(struct repository *, int); void diffcore_break(struct repository *, int);
void diffcore_rename(struct diff_options *); void diffcore_rename(struct diff_options *);
void diffcore_rename_extended(struct diff_options *options, void diffcore_rename_extended(struct diff_options *options,

Просмотреть файл

@ -351,17 +351,11 @@ static void clear_or_reinit_internal_opts(struct merge_options_internal *opti,
/* Free memory used by various renames maps */ /* Free memory used by various renames maps */
for (i = MERGE_SIDE1; i <= MERGE_SIDE2; ++i) { for (i = MERGE_SIDE1; i <= MERGE_SIDE2; ++i) {
struct hashmap_iter iter;
struct strmap_entry *entry;
strset_func(&renames->dirs_removed[i]); strset_func(&renames->dirs_removed[i]);
strmap_for_each_entry(&renames->dir_rename_count[i], partial_clear_dir_rename_count(&renames->dir_rename_count[i]);
&iter, entry) { if (!reinitialize)
struct strintmap *counts = entry->value; strmap_clear(&renames->dir_rename_count[i], 1);
strintmap_clear(counts);
}
strmap_func(&renames->dir_rename_count[i], 1);
strmap_func(&renames->dir_renames[i], 0); strmap_func(&renames->dir_renames[i], 0);
} }