Подтвердить что ты не робот

Настройка Mercurial - FileMerge для Apple Mac OS X

Как настроить программу Apple FileMerge для работы в качестве инструмента Merurial merge? У меня есть моя установка файла .hgrc в моем домашнем каталоге, и я просто хочу настроить FileMerge как программу слияния.

4b9b3361

Ответ 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".

enter image description here

Надеюсь, что это поможет.