[PATCH v3 0/3] add merge.renames config setting
This is a complete rewrite based on the feedback from earlier patches. Update the documentation to better indicate command line options that override various config settings related to merge. Add a new config merge.renames setting to to control the rename detection behavior of merge. This setting will default to the value of diff.renames. Also adds logic so that when rename detection is turned off, the aggressive flag is passed to read_tree() so that it can auto resolve more cases that would have been handled by rename detection. For the repro that I have been using this drops the merge time from ~1 hour to ~5 minutes and the unmerged entries goes down from ~40,000 to 1. Helped-by: Kevin Willford Reviewed-by: Johannes Schindelin Signed-off-by: Ben Peart Base Ref: master Web-Diff: https://github.com/benpeart/git/commit/6a8372d517 Checkout: git fetch https://github.com/benpeart/git merge-options-v3 && git checkout 6a8372d517 ### Patches Ben Peart (3): merge: update documentation for {merge,diff}.renameLimit merge: Add merge.renames config setting merge: pass aggressive when rename detection is turned off Documentation/diff-config.txt | 3 ++- Documentation/merge-config.txt| 9 +++- Documentation/merge-strategies.txt| 6 +++-- diff.c| 2 +- diff.h| 2 ++ merge-recursive.c | 27 +-- merge-recursive.h | 8 ++- t/t3034-merge-recursive-rename-options.sh | 18 +++ 8 files changed, 62 insertions(+), 13 deletions(-) base-commit: 1f1cddd558b54bb0ce19c8ace353fd07b758510d -- 2.17.0.windows.1
Re: [PATCH v3 0/3] add merge.renames config setting
Hi Ben, On Thu, Apr 26, 2018 at 1:52 PM, Ben Peart wrote: > This is a complete rewrite based on the feedback from earlier patches. Thanks for pushing forward on this. > Update the documentation to better indicate command line options that override > various config settings related to merge. > > Add a new config merge.renames setting to to control the rename detection > behavior of merge. This setting will default to the value of diff.renames. > > Also adds logic so that when rename detection is turned off, the aggressive > flag is passed to read_tree() so that it can auto resolve more cases that > would > have been handled by rename detection. > > For the repro that I have been using this drops the merge time from ~1 hour to > ~5 minutes and the unmerged entries goes down from ~40,000 to 1. > > Helped-by: Kevin Willford > Reviewed-by: Johannes Schindelin > Signed-off-by: Ben Peart > > Base Ref: master We may need to figure out how to coordinate amongst a few topics. Looking over your patches, there are going to be a few conflicts with en/rename-directory-detection-reboot, so this won't apply to pu. Martin's series to introduce clear_unpack_trees_porcelain()[1], which he was waiting to submit until mine went through, will also conflict with this, if he uses the changes I suggested for the handling in merge-recursive[2]. These aren't major conflicts, but I'm just flagging it. [1] https://public-inbox.org/git/cover.1524545557.git.martin.ag...@gmail.com/ [2] https://public-inbox.org/git/20180424162939.20956-1-new...@gmail.com/