Использование WinMerge с Bazaar

Я много искал, обнаружил, что некоторые люди утверждали, что они это сделали, но я не могу заставить это работать.

Как использовать WinMerge, мой любимый инструмент сравнения различий в Windows, с Bazaar?

Я знаю, что плагин difftools (поставляемый с Bazaar) справляется с этим, но файл controller.py не перечисляет его, и я не вижу, где указать путь. Похоже, он выполняет поиск в переменной PATH и сообщает bzr: ERROR: Cannot find 'winmerge' in (long list of paths). Я попытался поместить файл .cmd, а затем ярлык на WinMergeU.exe в каталог Bazaar, соответственно переименовав (winmerge.cmd, winmerge.lnk) register_diff_tool параметр. Больше ошибок нет, но ничего не запускается ...

Итак, есть ли у кого-нибудь успех при использовании WinMerge (или, возможно, другого инструмента Windows) с Bazaar?

Мне было бы интересно использовать его и с плагином extmerge ...


ИЗМЕНИТЬ После первых двух ответов я попробовал несколько вариантов, которые я перечисляю здесь для справки. Ни один не работал:

# As suggested:
# Bad: bzr: ERROR: [Errno 22] Invalid argument: 'c:\\docume~1\\philho\\locals~1\\temp\\bzr_C:/Program Files/_Text/WinMerge/WinMergeU.exeh7angm.log'
wdiff = diff --using "C:/Program Files/_Text/WinMerge/WinMergeU.exe"
# Bad: bzr: ERROR: Cannot find 'C:Progra~1_TextWinMergeWinMergeU.exe' in <PATH>
wdiff = diff --using C:\Progra~1\_Text\WinMerge\WinMergeU.exe

# Variants:
# Bad: bzr: ERROR: [Errno 22] Invalid argument: 'c:\\docume~1\\philho\\locals~1\\temp\\bzr_C:/Progra~1/_Text/WinMerge/WinMergeU.exejuttft.log'
wdiff = diff --using C:/Progra~1/_Text/WinMerge/WinMergeU.exe
# Bad: bzr: ERROR: [Errno 22] Invalid argument: 'c:\\docume~1\\philho\\locals~1\\temp\\bzr_C:\\Program Files\\_Text\\WinMerge\\WinMergeU.exehpabjl.log'
wdiff = diff --using "C:\\Program Files\\_Text\\WinMerge\\WinMergeU.exe"
# Bad: bzr: ERROR: [Errno 22] Invalid argument: 'c:\\docume~1\\philho\\locals~1\\temp\\bzr_C:\\Progra~1\\_Text\\WinMerge\\WinMergeU.exe4gi5or.log'
wdiff = diff --using C:\\Progra~1\\_Text\\WinMerge\\WinMergeU.exe

С использованием:

Bazaar (bzr) 1.11
  Python interpreter: C:\Program Files\_Dev\Bazaar\python25.dll 2.5.2

На самом деле, ужасная (и смущающая) правда заключается в том, что похоже, что одна из моих предыдущих попыток сработала, но я ничего не увидел ... потому что я тестировал зафиксированный файл! Полагаю, я ожидал, что по умолчанию он сравнивает последние две версии или что-то в этом роде.

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

[ALIASES]
wdiff = diff --using winmerge.cmd

# winmerge.cmd contains:
"C:\Program Files\_Text\WinMerge\WinMergeU.exe" %1 %2

Может быть, мне стоит выложить это как решение в ветке, хотя ему не хватает элегантности.

Для записи, пока мы говорим о внешних инструментах, я также добавил в bazaar.conf:

editor = C:/Program Files/_Text/SciTE/SciTE.exe

Он используется, например, при фиксации (без опции -m).

Следующий шаг: extmerge. Если присмотреться, не похоже, что WinMerge можно использовать там без трехстороннего слияния. Я мог бы использовать слияние Perforce, это бесплатно, и я к нему привык.
Просто замечание для тех, кто запутался, как я: extmerge не является заменой графического интерфейса для слияния. Если вы запустите его, он не сообщит о конфликтах, даже если слияние сообщает о них. На самом деле вам нужно сначала запустить слияние, а затем extmerge, чтобы использовать сгенерированные / измененные файлы и выполнить задание ...
Если вы все равно хотите использовать WinMerge, возможно, чтобы сравнить ДРУГОЕ с ЭТОМ, вы можете использовать:

external_merge = "C:/Program Files/_Text/WinMerge/WinMergeU.exe %o %t %r"

Надеюсь, мои попытки / замечания будут полезны другим людям ... :-)

[ОБНОВЛЕНИЕ]
Oookaaay!
Вот я и запуталась! Сообщение в списке рассылки Bazaar просветило мою бедную душу: Вы знаете, что bzr также обеспечивает распространение, верно? Вы предпочитаете версию в difftools? » - Аарон Бентли, 3 апреля 2009 г. в Re: difftools, ' bzr diff - использование footool 'и' diffuse '

Ааааааааааааааааааааааа! Нет, я этого не знал.
Я удалил плагин difftools, отредактировал свою строку так:

wdiff = diff --using "C:/Program Files/_Text/WinMerge/WinMergeU.exe"

и он работал отлично, из коробки! Я не уверен, почему этот плагин difftools не помечен как устаревший.

Я оставляю этот вопрос в качестве справки на случай, если другие новички, такие как я, тоже запутаются. И я могу, по крайней мере, выбрать ответ. Спасибо!

Ответов (4)

Решение
bzr diff --using "C:/Program Files/WinMerge/WinMergeU.exe"

Вы можете добавить это к псевдонимам в bazaar.conf

Или, если у вас есть C: \ Program Files \ WinMerge в переменной среды PATH, вы можете использовать ее как:

bzr diff --using WinMergeU.exe

Базар черепах-> Настройки-> Общие параметры базара-> Различия-> Добавить у меня не работает. Я пытаюсь использовать ответы выше, но, к сожалению, они тоже не работают. Но я использовал ответы как основу, и я нахожу решение. Я редактировал

C:\Documents and Settings\*username*\Application Data\bazaar\2.0\qbazaar.conf (not bazaar.conf)

и добавил строку

[EXTDIFF]
WinMerge = "C:/Program Files/TC UP/PLUGINS/Media/WinMerge/WinMergeU.exe"

Он отлично работает, и я могу выбирать между встроенным diff и WinMerge.

Вы читали README файл, поставляемый с плагином difftools? Это объяснило --using вариант.

Кроме того, зайдя на базар, установленный на моем компьютере с Windows, который давно не обновлялся, вы найдете свой файл конфигурации в C: \ Documents and Settings \ username \ Application Data \ bazaar \ 2.0 \ bazaar.conf

Добавьте следующее под [ALIASES] раздел (добавив этот раздел, если он не существует):

[ALIASES]
gdiff = diff --using C:\Progra~1\WinMerge\WinMergeU.exe

Измените путь в соответствии с вашей установкой. Тогда ты можешь просто пойти

bazaar gdiff

вместо того

bazaar diff

Мне показалось, что это сработало:

bzr diff --using "C:\\program files\\winmerge\\winmergeu.exe"

Кроме того, если вы не можете заставить его работать, я бы предложил использовать инструменты q * UI, например:

bzr qdiff
bzr qlog
bzr qcommit

..так далее