运行更新时如何解决macOS Carthage挂起?

时间:2017-03-21 18:10:30

标签: github carthage passphrase two-step-verification

开始处理一个新项目,我需要为私人和公共项目组合运行“迦太基更新”,其中一些项目有子模块。无论我做什么,迦太基都没有说明原因。我该怎么做才能确定挂起,然后如何解决这些问题?

1 个答案:

答案 0 :(得分:10)

我为解决问题所做的大部分工作都可以在其他地方找到,但没有一个网站拥有这一切。最后,我使用了一种我没有找到但却猜到的技术。

我遇到的根本问题是为我的github帐户采用了建议的安全保护:两阶段身份验证和ssh的密码短语。这两个都可以解决,但遗憾的是Cathage没有提供“详细”选项让用户确定它正在执行的git命令 - 这个选项可以在用户挂起时真正帮助它。在我的情况下(可能还有其他大多数)根本问题是Carthage运行的git命令想要提示用户输入某些内容,而Carthage已关闭或重定向标准输出。

1)Sierra和Git帐户/密码

最近的Sierra版本似乎改变了缓存git凭据的方式。现在正确的方法是使用Keychain。找到了如何指导git使用Keychain的过程here。请注意,此技术仅适用于纯“帐户/密码”身份验证。

在尝试迦太基之前,确保您可以使用终端的git clone来确保一切正常。

2)两步验证

在这种情况下,您需要使用authentication token。该令牌用于代替git密码。再次确保您可以在尝试使用Carthage之前克隆适当的存储库。

3)ssh访问的密码短语

如果git使用ssh(就像它可能与子模块一样),那么git将尝试提示输入密码,并且当Carthage抑制你将被挂起。通过在~/.ssh/config文件中添加一行(并在文件的BOTTOM处执行此操作)

Host *
    UseKeychain yes

git也会使用saving and retrieving the passphrase的钥匙串。您需要通过终端执行此操作以将其输入钥匙串。

4)仍然坚持?

如果上述技术无法帮助您,当Carthage挂起时会打开一个新的终端窗口并运行ps -aef | grep git;你会看到的是一些git命令。希望你会像我一样看到git clone命令;将该命令复制到剪贴板。

杀死Carthage命令,然后将该行粘贴到终端并运行命令(可能通过编辑它来删除多余的选项),看看会发生什么。幸运的是,您发现的内容可以帮助您解决问题。