Git diff с opendiff дает ошибку "Не удалось запустить FileMerge"

У меня есть git, который настроен на использование ~/bin/opendiff- git.sh в качестве внешнего инструмента сравнения. Что script выглядит так:

opendiff $2 $5

Когда я пытаюсь выполнить git diff из командной строки, я получаю это сообщение:

2011-02-18 13:58:55.532 opendiff[27959:60f] exception raised trying to run FileMerge: launch path not accessible
2011-02-18 13:58:55.535 opendiff[27959:60f] Couldn't launch FileMerge
external diff died, stopping at source/some_file.m.

Что происходит? Это работает много месяцев, но в последнее время перестало работать.

Ответы

Ответ 1

Итак, ПОСЛЕ того, как я удалил бета-версию программы разработчика, чтобы попробовать и решить эту проблему (не удалось заставить исправление работать с инструментом объединения), я наткнулся на это в командной строке:

Error: No developer directory found at /Developer Beta. Run /usr/bin/xcode-select to update the developer directory path.

Оказывается, вы можете указать путь разработчика, который вам нужно использовать:

Usage: xcode-select -print-path
   or: xcode-select -switch <xcode_folder_path>
   or: xcode-select -version
Arguments:
   -print-path                     Prints the path of the current Xcode folder
   -switch <xcode_folder_path>     Sets the path for the current Xcode folder
   -version  

Похоже, что установка бета-версии автоматически установила этот путь для бета-тестирования. Чтобы исправить это, запустите это:

sudo /usr/bin/xcode-select -switch /Developer

Это исправило это для меня.

Update

Комментарий Ying был достаточно важен для включения в ответ. Начиная с Xcode 4.3, местоположение папки было изменено внутри пакета приложения:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/

Ответ 2

Если у вас установлено два SDK, а в последней версии (предположительно бета-версии) нет установленных средств системы, некоторые инструменты, такие как opendiff, могут сломаться. Вы можете установить только один набор системных инструментов за один раз, поэтому вам нужно выбрать, какой SDK/установка имеет его. Я исправил эту проблему, используя путь opendiff, который находится в папке разработчика, в которой установлены системные инструменты.

В моем случае у меня есть следующие установки Xcode:

Текущая стабильная версия (с установленными системными инструментами)

/Developer

Последняя бета-версия (без установленных средств системы)

/Developer (iOS SDK XXX beta)

Мой ~/bin/opendiff-git.sh script теперь выглядит следующим образом:

"/Developer/usr/bin/opendiff" $2 $5

Ответ 3

Сначала причина в том, что путь установки xcode изменен с 4.3, поэтому необходимо повторно выбрать путь xcode

полное руководство находится в ссылке ниже: http://useyourloaf.com/blog/2012/2/17/updating-to-xcode-43.html