[PATCH v3 0/2] Optimization batch 6: make full use of exact renames
- From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Feb 14, 2021, 07:34 UTC
- Message-ID
- <pull.842.v3.git.1613288101.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.842.v2.git.1612382628.gitgitgadget@gmail.com>
This series makes full use of exact renames; removing not only a destination pair, but a source pair as well when an exact rename is found and copy detection is not turned on.
Changes since v2:
* Fix a comment typo, and fix a multi-line comment that didn't need to be a multi-line comment
Elijah Newren (2): diffcore-rename: no point trying to find a match better than exact diffcore-rename: filter rename_src list when possible
diffcore-rename.c | 71 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 61 insertions(+), 10 deletions(-)
base-commit: f0117958910fbc734457a83a9f8ecc3c62463417 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-842%2Fnewren%2Fort-perf-batch-6-v3 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-842/newren/ort-perf-batch-6-v3 Pull-Request: https://github.com/gitgitgadget/git/pull/842
Range-diff vs v2:
1: 770e894b4abd = 1: a59c1960f614 diffcore-rename: no point trying to find a match better than exact
2: 7ae9460d3dba ! 2: dd6595b45640 diffcore-rename: filter rename_src list when possible
@@ diffcore-rename.c: static int find_renames(struct diff_score *mx, int dst_cnt, i
+ if (detecting_copies)
+ return; /* nothing to remove */
+ if (break_idx)
-+ return; /* culling incompatbile with break detection */
++ return; /* culling incompatible with break detection */
+
+ /*
+ * Note on reasons why we cull unneeded sources but not destinations:
@@ diffcore-rename.c: static int find_renames(struct diff_score *mx, int dst_cnt, i
{
int detect_rename = options->detect_rename;
@@ diffcore-rename.c: void diffcore_rename(struct diff_options *options)
+ if (minimum_score == MAX_SCORE)
goto cleanup;
- /*
+- /*
- * Calculate how many renames are left (but all the source
- * files still remain as options for rename/copies!)
-+ * Calculate how many renames are left
- */
+- */
++ /* Calculate how many renames are left */
num_destinations = (rename_dst_nr - rename_count);
+ remove_unneeded_paths_from_src(want_copies);
num_sources = rename_src_nr;-- gitgitgadget