Как использовать p4merge в качестве инструмента слияния / различий для Mercurial?
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 в приведенной выше строке, чтобы они были индексом аргументов для "зарегистрированного" и "текущей рабочей копии".