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

FileMerge завершает работу сразу после запуска из SourceTree

Я регулярно использую Atlassian SourceTree (в Mac OS X) для запуска FileMerge для разрешения конфликтов конфликтов git. Исключительно он перестает работать: когда я нажимаю правой кнопкой мыши и выбираю Resolve Conflicts > Launch External Merge Tool, FileMerge запускает, создает свои промежуточные файлы, а затем немедленно выходит. SourceTree интерпретирует это как завершение процесса слияния.

Какая проблема и как я могу ее отладить/исправить?

Я отмечаю, что предыдущий вопрос 'FileTree filemerge немедленно завершает работу и создает 4 файла. Как это исправить? "не рассматривает этот конкретный сценарий (например, он говорит, что FileMerge завершает работу в заголовке, но в теле говорит, что FileMerge отображает /dev/null как одну из панелей. Кроме того, мое слияние конфликт не связан с удаленным файлом.)

4b9b3361

Ответ 1

Если Xcode недавно обновил себя, возможно, вам придется согласиться с новыми условиями лицензии. Если вы не согласны с условиями лицензии, FileMerge (при запуске из SourceTree) немедленно закроется.

Чтобы проверить это, откройте оболочку и запустите ее как обычный пользователь:

$ opendiff

Если проблема связана с лицензией, она скажет вам. Чтобы согласиться с новыми условиями лицензии, вам нужно запустить open diff с помощью sudo:

$ sudo opendiff

Соглашаясь с условиями лицензии, вы можете повторно запустить FileMerge из SourceTree с помощью Resolve Conflicts > Launch External Merge Tool. FileMerge должен запускаться и вести себя нормально.

Ответ 2

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

xcode-select: ошибка: для инструмента "opendiff" требуется Xcode, но активный каталог разработчика "Библиотека/Разработчик/CommandLineTools" - это экземпляр инструмента командной строки

Чтобы решить:

  • Открыть Xcode > Предпочтения > Местоположение
  • Нажмите на раскрывающийся список рядом с Инструменты командной строки и выберите текущую версию Xcode. (Это было пусто для меня, потому что я недавно установил Xcode на новом Mac.)

Инструменты командной строки

  1. Запустите opendiff в терминале еще раз, и указанная выше ошибка больше не будет отображаться.

Теперь FileMerge правильно откроется из SourceTree, когда вы нажмете Запустить инструмент внешней слияния.

Ответ 3

Для меня SourceTree даже не запускал FileMerge. При нажатии Запустить инструмент внешней слияния ничего не произошло.

Кроме того, запуск opendiff в терминале работал как ожидалось:

$ opendiff
opendiff[64176:5561154] too few arguments
opendiff[64176:5561154] usage: opendiff file1 file2 [-ancestor ancestorFile] [-merge mergeFile]

Что помогло мне: вручную настроить SourceTree, чтобы использовать FileMerge с помощью команды opendiff со следующими аргументами: $LOCAL $REMOTE -ancestor $BASE -merge $MERGED

SourceTree вручную настроить использование opendiff

Таким образом, SourceTree открывает FileMerge, как ожидалось.

Ответ 4

Это также работает, чтобы разрешить сообщение "xcode-select: error: инструмент 'opendiff' требует Xcode, но активный каталог разработчика '/Library/Developer/CommandLineTools' является экземпляром инструмента командной строки

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer