Як використовувати WinMerge як інструмент Diff для Mercurial


19

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

hg diff

Чи є якийсь спосіб зробити це, або я застряг у внутрішньому інструменті різниці Mercurial?

Відповіді:


24

Із FAQ щодо TortoiseHg :

Додайте ці рядки до вашого особистого файлу Mercurial.ini

[розширення]
extdiff =

[extdiff]
cmd.winmerge = C: \ програмні файли \ WinMerge \ WinMergeU.exe
opts.winmerge = / e / x / u / wl

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

Цей самий підхід можна використовувати для додавання майже будь-якого візуального розрізненого інструменту, але пам’ятайте, що ваш інструмент diff повинен бути в змозі підтримувати каталог diff, якщо він буде використовуватися TortoiseHg, якщо ви не використовуєте версію 0.8 або пізнішої версії.

Джоел також надав рішення тут в разі , якщо ви запускаєте Mercurial під Cygwin.

Пояснення аргументів командного рядка WinMerge тут . Підсумок:

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

Я не використовую TortoiseHG, а також не використовую Mercurial під Cygwin. Я використовую командний рядок встановлення Mercurial за замовчуванням від mercurial.berkwood.com . Ваше рішення спрацювало, в тому сенсі, що я можу набрати 'hg winmerge <file>', щоб побачити різницю між нею та попередньою версією, але 'hg diff <file>' все одно викликає таку саму (досить потворну) diff інструмент. Все-таки краще, ніж нічого.
кількість

Я думаю, що ця відповідь передбачає, що ви будете редагувати Mercurial.ini в каталозі TortoiseHg (наприклад, C: \ Program Files \ TortoiseHg). Якщо ви відредагуєте його в каталозі Mercurial (наприклад, C: \ Program Files \ Mercurial), це не працюватиме (принаймні, для мене це не було).
Ешлі Девіс

також c: \ Program Files (x86) \ WinMerge \ WinMergeU.exe
Аврам

Переконайтеся, що ви не ставите лапки навколо шляху до WinMerge у конфігураційному файлі, інакше він не працюватиме.
Дрелмер

7

Ось як це працює для мене - чистий меркурійський командний рядок, крім tortoisehg

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

C: \ програмні файли (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 ..."


Мені корисно запускати winmerge у фоновому режимі, щоб я міг переглянути зміни під час встановлення повідомлення про фіксацію, а також відобразити статистику, які файли мають зміни в командному рядку. Для цього помістіть пакетний файл у каталог mercurial, який містить start / b hg winmerge <NEWLINE> hg diff --stat
danio

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.