Browse Source

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>
maint
Elijah Newren 4 years ago committed by Junio C Hamano
parent
commit
cd52e0050f
  1. 12
      diffcore-rename.c
  2. 2
      diffcore.h
  3. 12
      merge-ort.c

12
diffcore-rename.c

@ -528,6 +528,18 @@ static void initialize_dir_rename_info(struct dir_rename_info *info) @@ -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)
{
if (!info->setup)

2
diffcore.h

@ -161,6 +161,8 @@ struct diff_filepair *diff_queue(struct diff_queue_struct *, @@ -161,6 +161,8 @@ struct diff_filepair *diff_queue(struct diff_queue_struct *,
struct diff_filespec *);
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_rename(struct diff_options *);
void diffcore_rename_extended(struct diff_options *options,

12
merge-ort.c

@ -351,17 +351,11 @@ static void clear_or_reinit_internal_opts(struct merge_options_internal *opti, @@ -351,17 +351,11 @@ static void clear_or_reinit_internal_opts(struct merge_options_internal *opti,

/* Free memory used by various renames maps */
for (i = MERGE_SIDE1; i <= MERGE_SIDE2; ++i) {
struct hashmap_iter iter;
struct strmap_entry *entry;

strset_func(&renames->dirs_removed[i]);

strmap_for_each_entry(&renames->dir_rename_count[i],
&iter, entry) {
struct strintmap *counts = entry->value;
strintmap_clear(counts);
}
strmap_func(&renames->dir_rename_count[i], 1);
partial_clear_dir_rename_count(&renames->dir_rename_count[i]);
if (!reinitialize)
strmap_clear(&renames->dir_rename_count[i], 1);

strmap_func(&renames->dir_renames[i], 0);
}

Loading…
Cancel
Save