Как использовать p4merge в качестве инструмента слияния / различий для Mercurial? - PullRequest
37 голосов
/ 04 сентября 2008

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

Ответы [ 6 ]

40 голосов
/ 04 октября 2008

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

Поместите это в ~/.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 и т. Д.

15 голосов
/ 30 декабря 2008

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

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

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

14 голосов
/ 23 сентября 2010

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

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

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

Screenshot

3 голосов
/ 22 февраля 2010

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

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

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

[extensions]
hgext.extdiff =

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

[extdiff]
cmd.p4diff = p4merge

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

[tortoisehg]
vdiff = p4diff
0 голосов
/ 10 сентября 2008

Я использую следующий бит 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 в приведенной выше строке, чтобы они были индексом аргументов для «зарегистрированного» и «текущей рабочей копии».

0 голосов
/ 04 сентября 2008

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

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

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

...