diffcore-rename: limit dir_rename_counts computation to relevant dirs
We are using dir_rename_counts to count the number of other directories that files within a directory moved to. We only need this information for directories that disappeared, though, so we can return early from update_dir_rename_counts() for other paths. If dirs_removed is passed to diffcore_rename_extended(), then it provides the relevant bits of information for us to limit this counting to relevant dirs. If dirs_removed is not passed, we would need to compute some replacement in order to do this limiting. Introduce a new info->relevant_source_dirs variable for this purpose, even though at this stage we will only set it to dirs_removed for simplicity. 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
parent
1ad69eb0dc
commit
333899e1e3
|
@ -371,6 +371,7 @@ struct dir_rename_info {
|
|||
struct strintmap idx_map;
|
||||
struct strmap dir_rename_guess;
|
||||
struct strmap *dir_rename_count;
|
||||
struct strset *relevant_source_dirs;
|
||||
unsigned setup;
|
||||
};
|
||||
|
||||
|
@ -442,7 +443,13 @@ static void update_dir_rename_counts(struct dir_rename_info *info,
|
|||
return;
|
||||
|
||||
while (1) {
|
||||
/* Get old_dir, skip if its directory isn't relevant. */
|
||||
dirname_munge(old_dir);
|
||||
if (info->relevant_source_dirs &&
|
||||
!strset_contains(info->relevant_source_dirs, old_dir))
|
||||
break;
|
||||
|
||||
/* Get new_dir */
|
||||
dirname_munge(new_dir);
|
||||
|
||||
/*
|
||||
|
@ -521,6 +528,9 @@ static void initialize_dir_rename_info(struct dir_rename_info *info,
|
|||
strintmap_init_with_options(&info->idx_map, -1, NULL, 0);
|
||||
strmap_init_with_options(&info->dir_rename_guess, NULL, 0);
|
||||
|
||||
/* Setup info->relevant_source_dirs */
|
||||
info->relevant_source_dirs = dirs_removed;
|
||||
|
||||
/*
|
||||
* Loop setting up both info->idx_map, and doing setup of
|
||||
* info->dir_rename_count.
|
||||
|
|
Loading…
Reference in New Issue