Как использовать opendiff в качестве стандартного mergetool
Привет, я пытаюсь использовать opendiff в качестве git mergetool, но когда я запускаю mergetool, я получаю это сообщение об ошибке:
Opendiff инструмента слияния недоступен как 'opendiff'
Что я делаю неправильно? Раньше он работал нормально, но, поскольку я установил новый жесткий диск, он больше не работает:(
3 ответа
Вам нужно настроить 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 и принятие лицензии устраняет проблему
Убедитесь, что у вас установлен XCode. (Если вы используете git, то, вероятно, вы используете brew, в этом случае у вас, вероятно, уже установлен XCode.)
Единственное решение - сообщить git, какой инструмент вы хотите использовать:
$ git mergetool -t opendiff
Что касается настройки opendiff в качестве инструмента по умолчанию, вам необходимо установить переменную "merge.tool" в вашем файле конфигурации git.
git поддерживает --dir-diff (-d) для выполнения сравнения каталогов, что хорошо выглядит в FileMerge. Тем не менее, есть несколько небольших проблем с использованием opendiff с --dir-diff. У opendiff нет предустановки --merge target, и git слишком быстро удалит временные файлы, чтобы сохранить изменения. Мой обходной путь - использовать небольшой bash-скрипт для вызова 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