Можно ли изменить инструмент сравнения по умолчанию в Mercurial?

Каждый раз, когда я выполняю hg diff file.ext, я использую консольное приложение сравнения. Я хотел бы использовать Kdiff3 или WinMerge (я использую Windows).

Есть ли способ изменить это? Я не могу найти ссылку в документации Mercurial (я не говорю о слиянии!).


person Tute    schedule 26.10.2008    source источник


Ответы (4)


Я решил это с помощью встроенного расширения Mercurial... Мне просто нужно добавить следующие строки в Mercurial.ini (в папке Mercurial):

[extensions]
hgext.extdiff=

[extdiff]
cmd.vdiff = kdiff3

Когда я хочу использовать kdiff3 вместо diff, мне нужно использовать только:

hg vdiff file.ext
person Tute    schedule 27.10.2008
comment
Кроме того, вы можете передавать параметры в difftool, например. [extdiff] opts.vdiff = 2> /dev/null - person ACyclic; 07.08.2012
comment
Этот ответ (и другие ниже) делает доступным другой инструмент сравнения, но не изменяет инструмент сравнения по умолчанию. То есть это не меняет того, какой инструмент используется, когда вы вызываете hg diff — или, что более важно, когда вы используете hg log -p для просмотра всей коллекции наборов изменений. Я хотел бы найти способ действительно изменить значение по умолчанию? (например, чтобы иметь возможность иногда использовать diff на основе слов при просмотре ветки.) - person Joshua Goldberg; 03.01.2018

С этой конфигурацией

[extdiff]
cmd.kdiff3 =

Я использую эту команду для просмотра различий:

hg kdiff

Это показывает дерево каталогов со всеми файлами, которые были изменены. Вы щелкаете файл, чтобы увидеть различия только для этого файла. Вы можете добавить параметр файла в команду, чтобы увидеть только один файл.

Подробнее здесь.

person Marcus Leon    schedule 18.09.2009

Если вы ищете что-то вроде git difftool, где вам не нужно вводить имена файлов и видеть различия для всех измененных файлов, добавьте их в свой ~/.hgrc и запустите hg difftool.

[extensions]
extdiff =

[extdiff]
cmd.vimdiff = vimdiff

[alias]
difftool = !for file in $(hg status -n); do hg vimdiff $file; done

или для окон:

[alias]
difftool = !FOR /f %F IN ('hg status -nmar') DO hg vimdiff %F
person musa    schedule 07.09.2016

У меня была эта проблема несколько минут назад; Я только что установил его и добавил его путь (по умолчанию c:\program files\kdiff3) в системный PATH e.v. Перезапустил мое окно, чтобы выбрать новый путь, и «hg kdiff3» просто сработало. Как оказалось, в моем базовом файле «mercurial.ini» есть следующее: это позволяет kdiff3 работать со всеми репозиториями hg в системе.

[extensions]  
hgext.extdiff =  

[extdiff]  
cmd.kdiff3 =

[merge-tools]  
kdiff3.args = $base $local $other -o $output
person Ken    schedule 23.12.2010