Как использовать opendiff по умолчанию mergetool

Привет, Я пытаюсь использовать opendiff как git mergetool, но когда я запускаю mergetool, я получаю это сообщение об ошибке:

Инструмент opendiff слияния недоступен как "opendiff"

Что я делаю неправильно? Раньше он работал нормально, но поскольку я установил новый жесткий диск, он больше не работает: (

Ответ 1

Вам нужно настроить opendiff как ваш глобальный merge.tool:

# locate xcode utilities
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

# set "opendiff" as the default mergetool globally
git config --global merge.tool opendiff

Если вы получаете Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo, открытие XCode и принятие лицензии устраняет проблему

Ответ 2

Убедитесь, что у вас установлен XCode. (Если вы используете git, то вы, вероятно, используете brew, в этом случае вы, вероятно, уже установили XCode.)

Одноразовое решение - сообщить git, какой инструмент вы хотите использовать:

$ git mergetool -t opendiff

Что касается настройки opendiff в качестве инструмента по умолчанию, вам нужно установить переменную "merge.tool" в конфигурационный файл git.

Ответ 3

git поддерживает --dir-diff (-d) для выполнения diff каталога, который хорошо выглядит в FileMerge. Однако есть несколько незначительных проблем с использованием opendiff с --dir-diff. opendiff не имеет предустановленного целевого пресета, и git слишком быстро сбросит временные файлы, чтобы сохранить изменения. Моя работа - использовать немного bash script для вызова FileMerge. Я назвал его gdiff.

#!/bin/bash
# find top level of git project
dir=$PWD
until [ -e "$dir/.git" ]; do
  if [ "$dir" == "/" ]; then
    echo "Not a git repository" >&2
    exit 1;
  fi
  dir=`dirname "$dir"`
done
# open fresh FileMerge and wait for termination
open -a FileMerge -n -W --args -left "$1" -right "$2" -merge "$dir"

https://gist.github.com/miner/e73fc98a83a8fe05d9ef000d46d68a9f

Назовите его следующим образом:

git difftool -d -x gdiff