Re: [PATCH v2 01/10] Move computation of dir_rename_count from merge-ort to diffcore-rename
flat view
From: Derrick Stolee <hidden>
Date: 2021-02-24 15:55:35
On 2/23/2021 6:43 PM, Elijah Newren via GitGitGadget wrote:
... While the diffstat looks large, viewing this commit with --color-moved makes it clear that only about 20 lines changed. With this patch, the computation of dir_rename_count is still only done after inexact rename detection, but subsequent commits will add a preliminary computation of dir_rename_count after exact rename detection, followed by some updates after inexact rename detection.
The --color-moved recommendation is a good one. Everything seems to be pretty standard, except this function:
quoted hunk ↗ jump to hunk
+static void compute_dir_rename_counts(struct strmap *dir_rename_count, + struct strset *dirs_removed) +{ + int i; + + /* Set up dir_rename_count */ + for (i = 0; i < rename_dst_nr; ++i) { + /* + * Make dir_rename_count contain a map of a map: + * old_directory -> {new_directory -> count} + * In other words, for every pair look at the directories for + * the old filename and the new filename and count how many + * times that pairing occurs. + */ + update_dir_rename_counts(dir_rename_count, dirs_removed, + rename_dst[i].p->one->path, + rename_dst[i].p->two->path); + } +}
is very similar to this:
-static void compute_rename_counts(struct diff_queue_struct *pairs,
- struct strmap *dir_rename_count,
- struct strset *dirs_removed)
-{
- int i;
-
- for (i = 0; i < pairs->nr; ++i) {
- struct diff_filepair *pair = pairs->queue[i];
-
- /* File not part of directory rename if it wasn't renamed */
- if (pair->status != 'R')
- continue;
-
- /*
- * Make dir_rename_count contain a map of a map:
- * old_directory -> {new_directory -> count}
- * In other words, for every pair look at the directories for
- * the old filename and the new filename and count how many
- * times that pairing occurs.
- */
- update_dir_rename_counts(dir_rename_count, dirs_removed,
- pair->one->path,
- pair->two->path);
- }
-}
-but we dropped that "File not part of directory rename" check. It seems that is no longer possible to use with the new data structure, but I wonder if this will cause a slowdown in the directory renames when merging? Or, has the data already been filtered before calling compute_dir_rename_counts()? Thanks, -Stolee