wiki:MercurialExtKdiff3

Подключение программы kdiff3 (с целью сравнения файлов) (под Windows)

Для того, чтобы hg мог вызывать kdiff3, в папке, в которой находится hg.exe, создаем файл kdiff3.cmd и помещаем в него сценарий

@echo off
setlocal
:: Look in the registry for KDiff3 location
for /f "skip=2 tokens=3*" %%A in (
    '"reg query "HKEY_CURRENT_USER\SOFTWARE\KDiff3" /ve 2> nul"' ) do set KDiff3Path=%%B
if "%KDiff3Path%"=="" (goto :notfound) else (goto :kdiff3)

:kdiff3
rem "%KDiff3Path%\kdiff3.exe" --auto --L1 Base --L2 Local --L3 Other %2 %1 %3 -o %1
"%KDiff3Path%\kdiff3.exe" %1 %2
if not errorlevel 0 (exit /b 1) else (exit /b 0)

:notfound
echo hgmerge: cannot find KDiff3 location in the registry.
exit /b 1

Дальше нужно решить, выполнять настройку для всех пользователей, или только для текущего пользователя. Если настраиваем для всех пользователей, нужно отредактировать файл Mercurial.ini в папке, в которую установлен Mercurial. Если хотим сделать настройку только для пользователя pupkin, редактируем файл

c:\Documents and Settings\pupkin\Mercurial.ini

При этом мы добавляем к hg новые команды через механизм расширений:

http://www.selenic.com/mercurial/wiki/index.cgi/UsingExtensions

Добавляем в файл Mercurial.ini следующее:

[extensions]
hgext.extdiff =

[extdiff]
cmd.kdiff3 = kdiff3

Это означает, что мы, во-первых, подключаем к Mercurial расширение extdiff

http://www.selenic.com/mercurial/wiki/index.cgi/ExtdiffExtension

в результате чего hg начинает понимать новую команду extdiff. Можно посмотреть ее описание, выполнив

hg extdiff -h

Во-вторых, мы определяем для hg команду extdiff, которая эквивалентна

hg extdiff -p kdiff3

После этого мы можем сравнить рабочую копию с последней ревизией в репозитории командой

hg kdiff3

или сравнить ревизию 3 с ревизией 7 с помощью команды

hg kdiff3 -r 3 -r 7
Last modified 13 years ago Last modified on Sep 17, 2007, 11:20:59 PM