Как использовать p4merge в качестве инструмента слияния / различий для Mercurial?

Кто-нибудь знает, как настроить Mercurial для использования p4merge в качестве инструмента слияния / различий на OS X 10.5?

6 ответов

Это будет работать для слияния:

Поместите это в свой ~/.hgrc (или, опционально, ваш Mercurial.ini в Windows):

[merge-tools]
p4.priority = 100
p4.premerge = True  # change this to False if you're don't trust hg's internal merge
p4.executable = /Applications/p4merge.app/Contents/MacOS/p4merge
p4.gui = True
p4.args = $base $local $other $output

Требуется Mercurial 1.0 или новее. Ясно, что вам нужно обновить путь к этому исполняемому файлу, чтобы отразить, где вы установили p4merge.


Вы не можете изменить то, что hg diff использует; но вы можете использовать extdiff расширение для создания новых команд сравнения, которые используют дисплей, который вы хотите.

Так hg pdiff может запустить слияние p4 и т. д.

Я использую TortoiseHg версии 1.0.1 и p4merge работает из коробки.

Просто зайдите в Глобальные настройки -> TortoiseHg и выберите следующие параметры:

  • Трехсторонний инструмент слияния: p4merge
  • Visual Diff Tool: p4merge

Скриншот

Я нашел ответ Ry4an хорошим решением, за исключением незначительной проблемы, из-за которой p4merge (под mac os) перепутал ввод команд. Сделайте все, что описано в его ответе, и добавьте следующую строку в раздел [merge-tools]:

p4.args=$base $local $other $output

Эта строка сообщает Mercurial, в каком порядке p4merge принимает свои аргументы.

Возможно, потому что я работаю на Windows, но предложенное решение не сработало для меня. Вместо этого следующее работает.

В вашем ~/.hgrc/ / Mercurial.iniЯ применил следующие изменения:

Включено расширение "ExtDiff":

[extensions]
hgext.extdiff =

Добавлена ​​команда P4 extdiff:

[extdiff]
cmd.p4diff = p4merge

Сконфигурировал его как инструмент визуального различия по умолчанию:

[tortoisehg]
vdiff = p4diff

Я предполагаю, что есть инструмент CLI для p4merge (о котором я ничего не знаю).

Я написал сообщение в блоге об использовании Changes.app и некоторых других инструментов GUI с Mercurial: Использование Mercurial с инструментами GUI.

По сути, вам нужно знать ожидания вызова инструмента CLI, который загружает инструмент сравнения. IE, как заставить его загружать данные из определенного файла, и как заставить его ждать выхода. На посте должно быть достаточно информации, чтобы дать вам несколько идей.

Я использую следующий бит Python для запуска p4merge и использую его с git:

#!/usr/bin/python
import sys
import os

os.system('/Applications/p4merge.app/Contents/MacOS/p4merge "%s" "%s"' % (sys.argv[2], sys.argv[5]))

Я не уверен, как выглядит Mercurial для запуска внешнего инструмента сравнения? Надеюсь, это так же просто, как настроить 2 и 5 в приведенной выше строке, чтобы они были индексом аргументов для "зарегистрированного" и "текущей рабочей копии".

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