2016-02-01 2 views
9

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

Проблема заключается в том, что если я использую рекурсивную стратегию по умолчанию, я не могу отключить обнаружение переименования, и если я использую стратегию решения (не идеальную, но достаточно хорошую), драйвер слияния игнорируется.

Обратите внимание, что я хотел бы избежать обнаружения переименования, даже если содержимое файла идеально соответствует.

.git/конфигурации:

[merge "my"] 
    name = my merge 
    driver = my_merge_driver %A %O %B 
[merge] 
    default = my 

Попытки:

$ git merge -X rename-threshold=200% # Equivalent to 100% 
$ git merge -s resolve    # Custom driver ignored 
$ git --version      # git version 2.2.0-rc0 
+0

ли она по-прежнему игнорировать с git 2.7.0? – VonC

+1

Я догадываюсь, что он по-прежнему игнорируется, прочитав мой старый ответ http://stackoverflow.com/a/22579625/6309 – VonC

+0

Действительно, @VonC, я могу подтвердить то же самое поведение с git версии 2.7.0. – filipos

ответ

2

С Git 2.8.0.rc0, алгоритм слияния-рекурсивная теперь принимает опцию «без переименовывает» (совершить 4ce064d), так что моя проблема сейчас решается

$ git merge -X no-renames 
1

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

+0

Я нахожу это немного уродливым, и для его обработки репозитория потребуются некоторые (простые) изменения, но, ну, это работает. Истекает щедрость. Я подожду еще некоторое время, чтобы увидеть, есть ли другие ответы, прежде чем принимать их. – filipos

Смежные вопросы