Предупреждение GIT: слишком много файлов пропускает неточное обнаружение переименования - PullRequest
51 голосов
/ 03 марта 2011

Знаю, что предел переименования по умолчанию равен 100, и может увеличить это значение, используя config "diff.renamelimit config"

Что беспокоит, если этот конфиг не настроен, будет ли неправильное слияние, какой-либо отсутствующий код? Пытаюсь слить (git merge) 2 ветки с огромными изменениями.

Может кто-нибудь пролить больше света на этот параметр конфигурации?

Ответы [ 2 ]

33 голосов
/ 03 марта 2011

Ваш контент в безопасности.

Насколько я понимаю, git на самом деле не имеет понятия о первоклассной rename операции (только у bzr, у больших 3 DVCS): mv - это сахар на вершине базовый механизм, который в основном является add и rm. Поскольку git может отслеживать контент, который изменяется во время таких операций, он может использовать эвристику, чтобы угадать, когда add и rm на самом деле mv. Поскольку это требует гораздо больше работы, чем просто отображение того, что на самом деле записано git, документы для git-diff объясняют, что это "... требует O (n ^ 2) времени обработки, где n - это число потенциальных целей переименования / копирования" - git не будет пробовать, когда задействовано слишком много файлов. Упомянутая вами настройка просто контролирует этот порог.

21 голосов
/ 21 марта 2018

На случай, если это кому-нибудь поможет, у меня было много файлов (сотни, если не тысячи) в одной ветке, которых еще не было в другой.При запуске

$ git config merge.renamelimit 15345

при слиянии произошла ошибка, указанная ниже

$ 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.
...