Инструменты слияния могут использовать любой исполняемый файл. Чтобы настроить инструмент слияния, который всегда перезаписывает $base
с помощью $other
, вы можете использовать следующее:
[merge-tools]
clobbermerge.priority = 100
clobbermerge.premerge = False
clobbermerge.args = $other $output
clobbermerge.executable = <copy executable>
При использовании этой стратегии в Windows возникает одна проблема. Вы не можете просто заменить <copy executable>
командой оболочки copy
. По какой-то причине Mercurial не удается найти команды оболочки в этом контексте. Я не пробовал это на * nix.
Чтобы обойти эту проблему, вы можете создать дистрибутив пакетного файла, который выполняет копирование. Просто нужно запустить: copy %1 %2
. После размещения на вашем PATH вы можете установить clobbermerge.executable=clobber.bat
.
Если у вас установлен kdiff3 (поставляется с TortoiseHg в Windows), вы можете получить те же результаты без внешнего командного файла, используя такую конфигурацию:
[merge-tools]
clobbermerge.priority = 100
clobbermerge.premerge = False
clobbermerge.args = --auto $base $other $other -o $output
clobbermerge.executable = kdiff3
Ключом к этой конфигурации является поле args
:
--auto
: говорит kdiff3 не открывать графический интерфейс, если нет конфликтов
$base $other $other
: приказывает kdiff3 использовать только $other
$output
: сообщает kdiff3 имя выходного файла