在Xcode 8 Build Phase脚本中签出一个git子模块

时间:2017-03-28 10:34:08

标签: xcode git bash macos ssh

我在BitBucket上有一个实用程序项目的git repo,我在其他项目中将它用作git子模块。我编写了一个Xcode Build Phase脚本来克隆,初始化和更新子模块,但它无法克隆此错误:

Cloning into '[Location of my working copy]'...
ssh_askpass: exec(/usr/X11R6/bin/ssh-askpass): No such file or directory
Permission denied (publickey).
fatal: Could not read from remote repository.

我可以从Xcode的界面结帐,我可以从命令行进行结账,我甚至可以自己从命令行运行相同的脚本,一切正常,我得到提示我的密码短语。除非脚本由Xcode运行。

我联系了BitBucket支持,他们指出根据错误,Xcode试图使用/usr/X11R6/bin/ssh-askpass提示我输入私钥的密码,但它无法找到该文件(我也是发现/ usr / X11R6只是/ opt / X11的符号链接。他们建议我查看以下链接:

我使用Homebrew从最后一个链接安装了缺少的二进制文件,将其符号链接到Xcode需要它的位置,并得到一个看似破坏的对话框:

Screenshot of pop-up box

我也尝试过复制二进制文件而不是复制符号,但它没有什么区别。

有什么想法吗?

只是为了确保我运行此测试以查看我的SSH配置是否存在问题......

$ ssh -vT git@bitbucket.org

...但根据结果一切正常。

1 个答案:

答案 0 :(得分:0)

https://github.com/theseal/ssh-askpass/的那些人帮我解决了这个问题。

我必须安装缺少的ssh-askpass,然后在启动Xcode之前使用ssh-add -c 将我的SSH密钥添加到代理。在Xcode运行时添加密钥会导致Build Phase脚本始终返回错误:

sign_and_send_pubkey: signing failed: agent refused operation

您可以阅读问题排查详情here