Как заставить diffmerge выполнить трехстороннее слияние с Mercurial? - PullRequest
5 голосов
/ 20 сентября 2010

В настоящее время я использую команду hg diffmerge -r 32 -r 30 myfile, но при этом отображаются только два окна, а не три.Как я могу заставить это сделать трехстороннее слияние?

.hgrc

[ui]
merge=diffmerge

[extensions]
collapse=~/.hgext/collapse.py
hgext.purge=
hgext.extdiff=
hgext.graphlog=

[extdiff]
cmd.diffmerge=/usr/bin/diffmerge

[merge-tools]
diffmerge.executable=/usr/bin/diffmerge
diffmerge.args= --result=$output -t1="Local Version" -t2=$output -t3="Other Version" --caption=$output $local $base $other
diffmerge.binary=False
diffmerge.symlinks=False
diffmerge.gui=True
diffmerge.premerge=True 

1 Ответ

3 голосов
/ 20 сентября 2010

Полагаю, вы имеете в виду, что используете SourceGear DiffMerge в качестве внешнего инструмента слияния. Какой у тебя .hgrc? Это основано на образце с сайта hg ?

Я думаю, что ваш diffmerge.args проблематичен. Вы можете попробовать запустить diffmerge вручную с этими аргументами, чтобы убедиться, что он работает.


С вашим .hgrc теперь все ясно. Ваша команда hg diffmerge -r 32 -r 30 myfile НЕ является командой слияния, вместо этого вы просите hg использовать diffmerge в качестве внешнего инструмента сравнения (указан в разделе [extdiff]) для сравнения myfile между версиями 32 и 30. Третья версия не используется .

Для слияния вы запускаете hg merge [-r<the other head>], и поскольку ваш .hgrc говорит hg использовать diffmerge в качестве инструмента слияния (указан в разделе [ui]), hg будет использовать diffmerge для 3-стороннего слияния. Я проверил, что это работает в моей установке Windows с идентичным hgrc.

...