Как настроить программу Apple FileMerge для работы в качестве инструмента Merurial merge? У меня есть моя установка файла .hgrc в моем домашнем каталоге, и я просто хочу настроить FileMerge как программу слияния.
Настройка Mercurial - FileMerge для Apple Mac OS X
Ответ 1
Как описано в hg wiki, это сработало для меня с различными версиями hg:
- Создайте script где-нибудь в
$PATH
, скажем в/usr/local/bin
:
$ vim /usr/local/bin/opendiff-w #!/bin/sh # opendiff returns immediately, without waiting for FileMerge to exit. # Piping the output makes opendiff wait for FileMerge. opendiff "[email protected]" | cat
- Добавьте следующие разделы в
~/.hgrc
:
[extdiff] cmd.interdiff = hg-interdiff cmd.opendiff = opendiff-w [merge-tools] filemerge.executable = opendiff-w filemerge.args = $local $other -ancestor $base -merge $output [extensions] extdiff =
Теперь вы можете использовать его как $hg opendiff
.
Ответ 2
Обновление: Mercurial вики имеет страница о FileMerge. Сначала прочтите это.
Я не пытался использовать FileMerge
, но общий обзор может помочь. Большинство из того, что вы хотите знать, описана в Mercurial вики MergeProgram стр. Короткий вариант - ваш типичный выбор:
Установите переменную среды HGMERGE
, чтобы указать инструмент слияния, который вы хотите.
или добавьте следующее к вашему .hgrc
:
[ui]
merge = /path/to/toolname
[merge-tools]
toolname.args = $base $local $other
Ключ состоит в том, что инструмент объединения должен принимать три аргумента: базовую ревизию, локальные изменения и изменения из другой ветки. Вы используете первую конфигурацию для указания инструмента, а вторую - для определения того, как она принимает аргументы.
Ответ 3
Ни одна из документации не работала для меня без изменений; в конечном итоге то, что я закончил, было комбинацией официальных инструкций и "Использование Vim в качестве файловой программы" из https://www.mercurial-scm.org/wiki/TipsAndTricks. Я создал opendiff-w script описанный в этот ответ (хотя я назвал его hgvdiff) и поместил следующее в мой .hgrc:
[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = /usr/local/bin/hgvdiff
[merge-patterns]
** = filemerge
[merge-tools]
filemerge.executable = /usr/local/bin/hgvdiff
filemerge.args = $local $other -ancestor $base -merge $output
filemerge.checkchanged = true
filemerge.gui = true
[extensions]
extdiff =
Это умеренно функциональный, хотя иногда он выполняет проверку того, был ли файл изменен досрочно, что привело к созданию группы:
output file wwwroot/zoomingo/website/protected/messages/en/z.php appears unchanged
was merge successful (yn)? n
при закрытии FileMerge.
Ответ 4
Я не пробовал, но, я уверен, вам нужно указать весь путь к исполняемому файлу FileMerge, а не только пакет приложений.
Итак:
[ui]
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge
Ответ 5
Вот как я его исправил:
Создано /usr/local/bin/opendiff-w
заполнено:
#!/bin/sh
# opendiff returns immediately, without waiting for FileMerge to exit.
# Piping the output makes opendiff wait for FileMerge.
opendiff "[email protected]" | cat
Затем выполнили команду: sudo chmod +x /usr/local/bin/opendiff-w
Затем отредактирован ~/.hgrc
со следующим дополнением:
[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = opendiff-w
[merge-tools]
filemerge.executable = /usr/local/bin/opendiff-w
filemerge.args = $local $other -ancestor $base -merge $output
[extensions]
extdiff =
Затем я выполнил следующую команду, чтобы проверить, работает ли она: hg opendiff
Однако, я получил следующую ошибку:
exception raised trying to run FileMerge: launch path not accessible
Чтобы исправить это, я выполнил следующую команду:
sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/
Теперь это должно работать и открывать FileMerge.
=============================================== =====================
Если вы используете TorsoiseHg для Mac, единственное, что вам нужно сделать сейчас, чтобы работать с FileMerge, - это выбрать filemerge из инструментов Detected merge/diff, когда появится окно Resolve Conflict и выберите "Tool Resolve".
Надеюсь, что это поможет.