GIT warning: too many files skipping inexact rename detection

GitGit MergeGit Config

Git Problem Overview


I am aware that the default rename limit is 100 and we can increase this value using the config diff.renamelimit config

What I am worried about is that, if this config is not setup, will there be a wrong merge or any missing code? I am trying to merge (git merge) 2 branches that have huge changes.

Can someone throw more light about this config setting?

Git Solutions


Solution 1 - Git

Your content is safe.

As I understand it, git doesn't actually have any concept of a first-class rename operation (only bzr does, of the big 3 DVCSs): the mv is sugar on top of the underlying machinery, which is basically an add and a rm. Since git can track the content that changes during such operations, though, it can use heuristics to guess when an add and a rm are actually a mv. Since that takes way more work than just displaying what git actually recorded—the docs for git-diffexplain that it "...require O(n^2) processing time where n is the number of potential rename/copy targets"—git won't try it when too many files are involved. The setting you mention just controls that threshold.

Solution 2 - Git

In case this helps anyone, I had a lot of files (hundreds, if not thousands) in one branch, which were not yet in the other branch. Running

$ git config merge.renamelimit 15345

made the below error when merging go away

$ git merge master
.
.
.
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your merge.renamelimit variable to at least 15345 and retry the command.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSenthil A KumarView Question on Stackoverflow
Solution 1 - GitHank GayView Answer on Stackoverflow
Solution 2 - GitM3RSView Answer on Stackoverflow