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

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

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

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

2 ответа

Решение

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

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

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

$ 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.
Другие вопросы по тегам