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)
} }
} }


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)

2
diffcore.h

@ -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,

12
merge-ort.c

@ -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);
} }

Loading…
Cancel
Save