如何解决macOS Carthage在运行更新时卡住的问题?

9

我开始着手一个新项目,需要运行"Carthage update"命令来更新一些私有和公共的项目,其中有些项目还包含子模块。但无论我怎么做,Carthage都会卡住,没有任何提示。我该怎么办才能查明原因,并解决这些问题呢?

1个回答

11
我解决问题所用的大部分技术都可以在其他地方找到,但没有一个网站包含所有信息。最终,我使用了一种猜测出来的技巧。
我的根本问题是为我的github账户采用推荐的安全保护措施:两步验证和ssh的密码短语。这两个都可以被规避,但不幸的是,Carthage没有“详细”选项,让用户确定它正在执行哪些git命令——这是一个真正帮助用户解决卡顿问题的选项。在我的情况下(也可能是大多数其他情况),根本问题是由Carthage运行的git命令想要提示用户输入某些内容,而Carthage已经关闭或重定向了标准输出。
1)Sierra和Git账户/密码
似乎最近的Sierra更新改变了git凭据的缓存方式。现在正确的方法是使用Keychain。如何指导git使用Keychain的过程可以在这里找到。请注意,此技术仅适用于纯“账户/密码”认证。
在尝试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命令,然后将该行粘贴到终端中并运行该命令(也许通过编辑它以删除多余的选项),看看会发生什么。幸运的是,您找到的内容将有助于解决问题。


@Lizza 这就是我发布它的原因!我花了很多很多小时才让Carthage工作起来(为了我正在做的一个合同)。很高兴它对你有用! - David H

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接