Как я могу сказать, что Git получил неверные ходы / переименования (ложные срабатывания) - PullRequest
11 голосов
/ 14 апреля 2011

Я объединяю две ветки в git, каждый из которых занимает неделю работы, а некоторые файлы были перемещены, переименованы и изменены.

Похоже, что в некоторых случаях Git делает все неправильно, и говорит, что файл a был перемещен в файл b, когда на самом деле они совершенно не связаны.

У меня довольно много таких ложных срабатываний (примерно 25%). Я хотел бы повлиять на алгоритм, который Git использует, чтобы выяснить, был ли файл перемещен, переименован или является новым.

  • Я бы хотел присвоить более высокий приоритет именам. (файл a был перемещен из папки foo в папку b), но git настаивает на том, что он был переименован в файл b в папке foo - совершенно не связан)
  • Я бы хотел увеличить индекс сходства, выше которого Git считает файл переименованным / перемещенным

Я знаю, что где-то читал, я могу сделать последнее, и я надеюсь, что я могу сделать первое тоже, но мои навыки поиска в Google подводят меня сегодня.

1 Ответ

5 голосов
/ 14 апреля 2011

Я тоже это заметил. Я думаю, что "--find-renames = 90" будет строже, чем значение по умолчанию.

Из документации git diff http://git -scm.com / Docs / ГИТ-Diff

-M [п] --find-переименовывает [= п] Определить переименования. Если указано n, это пороговое значение индекса сходства (т. Е. Количество добавлений / удалений по сравнению с размером файла). Например, -M90% означает, что git должен считать пару «удалить / добавить» переименованием, если более 90% файла не изменилось.

-C [N] --find-копии [= п] Обнаруживать копии, а также переименовывает. Смотрите также --find-copy-harder. Если указано n, оно имеет то же значение, что и для -Mn.

...