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 <kewillf@xxxxxxxxxxxxx> Reviewed-by: Johannes Schindelin <johannes.schindelin@xxxxxx> Signed-off-by: Ben Peart <Ben.Peart@xxxxxxxxxxxxx> 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