Как устранить зависание macOS Carthage при запуске обновления?

Начал работать над новым проектом, где мне нужно запустить «обновление Carthage» для сочетания частных и общедоступных проектов, некоторые из которых имеют подмодули. Что бы я ни делал, Карфаген виснет без указания причины. Что я могу сделать, чтобы определить зависания, и как мне исправить эти проблемы?


person David H    schedule 21.03.2017    source источник


Ответы (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, затем вставьте строку в терминал и запустите команду (возможно, отредактировав ее для удаления посторонних параметров) и посмотрите, что произойдет. Если повезет, то, что вы найдете, поможет вам решить вашу проблему.

person David H    schedule 21.03.2017
comment
@Lizza Вот почему я опубликовал это! Мне потребовалось много-много часов, чтобы заставить Carthage работать (по контракту, который я выполнял). Рада, что вам пригодилась! - person David H; 10.07.2017