Рекомендуемая конфигурация Mercurial для использования Beyond Compare в качестве программы слияния выглядит следующим образом:
[merge-tools]
bcomp.executable = C:\Program Files\Beyond Compare 3\BComp.exe
bcomp.args = $local $other $base $output
bcomp.priority = 1
bcomp.premerge = True
bcomp.gui = True
[ui]
merge = bcomp
Согласно Документам Mercurial по инструментам слияния , существует опция binary
, которая по умолчанию False
. Когда binary=True
, он сообщает Mercurial, что инструмент может объединять двоичные файлы. Однако, когда я включаю эту опцию, Mercurial по-прежнему не позволяет Beyond Compare объединять файлы XML.
Немного больше исследований поднимает опцию premerge
. Когда premerge=True
, Mercurial объединяется внутри сначала и использует инструмент слияния, только если существуют конфликты, которые необходимо разрешить. К сожалению, Mercurial всегда не удается объединить двоичный файл. При сбое предварительного слияния Mercurial останавливает слияние для этого файла и никогда не запускает инструмент слияния.
Казалось бы, решение состоит в том, чтобы также установить для опции premerge
значение False
. К сожалению, предварительное слияние очень полезно, потому что в 90% случаев нет никаких конфликтов, и вы никогда не увидите свой инструмент слияния. Если для premerge установлено значение False
, то при каждом слиянии открывается Beyond Compare. Это становится очень утомительным.
Чтобы решить эту проблему, Я создал вторую конфигурацию инструмента слияния Beyond Compare, которая используется для слияния двоичных файлов . Я установил его приоритет ниже, чем у инструмента bcomp
по умолчанию, поэтому он вызывается только при сбое основного инструмента bcomp
, который обычно используется только для двоичных файлов. Я добавил эти строки в раздел merge-tools
моего файла mercurial.ini:
bcompbin.executable = C:\Program Files (x86)\Beyond Compare 3\BCompare.exe
bcompbin.args = $local $other $base $output
bcompbin.gui = True
bcompbin.premerge = False
bcompbin.binary = True
Одним из побочных эффектов этого является запуск Beyond Compare для слияния двоичных файлов, которые он не может обработать. Я еще не сталкивался с такой ситуацией, поэтому не знаю, как с этим справиться. Я бы, вероятно, просто временно закомментировал мой bcompbin
инструмент слияния.