Начал работать над новым проектом, где мне нужно запустить «обновление Carthage» для сочетания частных и общедоступных проектов, некоторые из которых имеют подмодули. Что бы я ни делал, Карфаген виснет без указания причины. Что я могу сделать, чтобы определить зависания, и как мне исправить эти проблемы?
Как устранить зависание macOS Carthage при запуске обновления?
Ответы (1)
Многое из того, что я сделал для решения своих проблем, можно найти где угодно, но ни на одном сайте этого всего не было. В итоге я использовал прием, о котором не нашел, а догадался.
Основная проблема, с которой я столкнулся, заключалась в том, чтобы принять рекомендуемую защиту для моей учетной записи github: двухэтапная аутентификация и парольная фраза для ssh. И то, и другое можно обойти, но, к сожалению, Catage не предлагает «подробных» опций, позволяющих пользователю определить, какие команды git он выполняет — опция, которая действительно помогла бы пользователю, когда он зависает. В моем случае (и, вероятно, в большинстве других) основная проблема заключается в том, что команда git, запускаемая Carthage, хочет что-то предложить пользователю, а Carthage закрыл или перенаправил стандартный вывод.
1) Учетная запись/пароли Sierra и Git
Похоже, что недавний выпуск Sierra Point изменил способ кэширования учетных данных git. Правильный способ сделать это сейчас — использовать связку ключей. Процедура того, как направить git на использование связки ключей, находится здесь. а> . Обратите внимание, что этот метод работает только для чистой аутентификации «учетная запись/пароль».
Прежде чем даже попробовать Carthage, убедитесь, что вы можете использовать git clone
из терминала, чтобы убедиться, что все в порядке.
2) Двухэтапная аутентификация
В этом случае вам нужно использовать токен аутентификации. Этот токен используется вместо пароля git. Опять же, убедитесь, что вы можете клонировать соответствующий репозиторий, прежде чем пробовать Carthage.
3) Парольная фраза для доступа по ssh
Если git использует ssh (как это может быть с подмодулями), то git попытается запросить парольную фразу, и, поскольку Carthage подавляет это, вы останетесь висящим. Добавив строку в ваш файл ~/.ssh/config
(и сделайте это в НИЖНЕЙ части файла)
Host *
UseKeychain yes
git также будет использовать связку ключей для сохранения и получение парольной фразы. Вам нужно сделать это один раз через терминал, чтобы ввести его в связку ключей.
4) Все еще застрял?
Если описанные выше методы вам не помогли, когда Carthage зависнет, откройте новое окно терминала и запустите ps -aef | grep git
; то, что вы увидите, это несколько команд git. Надеюсь, вы увидите команду git clone
, как и я; скопируйте эту команду в буфер обмена.
Убейте команду Carthage, затем вставьте строку в терминал и запустите команду (возможно, отредактировав ее для удаления посторонних параметров) и посмотрите, что произойдет. Если повезет, то, что вы найдете, поможет вам решить вашу проблему.