Как использовать WinMerge в качестве инструмента Diff для Mercurial

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

hg diff

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

3 ответа

Решение

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

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

[расширения]
extdiff =

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

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

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

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

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

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

Вот как это работает для меня - чисто ртутная командная строка, кроме 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 ..."

Ну, ответы, данные ранее, не дают мне желаемого эффекта. Они не позволяют вносить изменения и редактировать на месте (я имею в виду ту же функциональность, которая доступна для 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

Другие вопросы по тегам