19

Я использую распределенную систему контроля версий Mercurial, и мне интересно, как я могу настроить ее для использования WinMerge вместо ее собственного внутреннего инструмента сравнения. У меня уже есть WinMerge в качестве инструмента слияния, но я хочу, чтобы Mercurial использовал WinMerge при вводе:

hg diff

Есть ли способ сделать это, или я застрял с внутренним инструментом сравнения Mercurial?

3 ответа3

24

Из FAQ ЧерепахиHg:

Добавьте эти строки в ваш личный файл Mercurial.ini

[extensions]
extdiff =

[extdiff]
cmd.winmerge = C:\Program Files\WinMerge\WinMergeU.exe
opts.winmerge = /e /x /u /wl

Теперь запустите инструмент глобальных настроек. На вкладке TortoiseHg вы должны увидеть winmerge, доступный в выпадающем списке для Visual Diff Command. Выберите winmerge, примените, затем закройте.

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

Джоэл также предоставил решение здесь в случае , если вы запускаете Mercurial под Cygwin.

Объяснение аргументов командной строки WinMerge здесь. Резюме:

  • /e позволяет закрыть WinMerge одним нажатием клавиши Esc
  • /x закрывает WinMerge (после отображения информационного диалога), когда вы начинаете сравнение идентичных файлов
  • /u запрещает WinMerge добавлять любой путь (левый или правый) в список «Последние использованные» (MRU)
  • /wl открывает левую сторону только для чтения
7

Вот как это работает для меня - чисто ртутная командная строка, кроме tortoisehg

Сначала отредактируйте файл (под 64-битными окнами)

C:\Program Files (x86)\Mercurial\Mercurial.ini

[extensions]
; must uncomment this line
extdiff =

[extdiff]
; i'm using winmerge unicode version
cmd.winmerge = C:\Program Files (x86)\WinMerge\WinMergeU.exe
; it explains winmerge command line parameters here: http://winmerge.org/docs/manual/CommandLine.html
opts.winmerge = /r /e /x /u /wl

Затем вы можете использовать «hg winmerge ...» вместо «hg diff ...»

3

Ну, ответы, данные ранее, не дают мне желаемого эффекта. Они не позволяют вносить изменения в редакцию и редактировать на месте (я имею в виду ту же функциональность, которая доступна для TortoiseSVN из коробки). Для этого я добавил в mercurial.ini этот раздел:

[merge-tools]
winmerge.regkey=Software\Thingamahoochie\WinMerge\
winmerge.regname=Executable
winmerge.priority=-10
winmerge.args=/e /x /wl /ub /dl other /dr local $other $local $output
winmerge.fixeol=True
winmerge.checkchanged=True
winmerge.gui=True
winmerge.diffargs=/r /e /x /ub /wl /dl '$plabel1' /dr '$clabel' $parent $child
winmerge.diff3args=
winmerge.dirdiff=True

Это взято из http://blog.stevehorn.cc/blog/easy-mercurial-visual-diff-between-two.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .