开始处理一个新项目,我需要为私人和公共项目组合运行“迦太基更新”,其中一些项目有子模块。无论我做什么,迦太基都没有说明原因。我该怎么做才能确定挂起,然后如何解决这些问题?
答案 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命令,然后将该行粘贴到终端并运行命令(可能通过编辑它来删除多余的选项),看看会发生什么。幸运的是,您发现的内容可以帮助您解决问题。