如何递归地克隆Github应用程序的repo



我正在开发一个Github应用程序,该应用程序需要能够在推送事件发生时克隆Github存储库。

我已经成功地设置了包括服务器在内的所有内容,并且可以使用访问令牌克隆存储库,但我在使用具有子模块的存储库时遇到了一些问题。

我发现如果repo.git的子模块配置了SSH,那么使用git clone --recurse-submodules https://x-access-token:<token>@github.com/owner/repo.git是不起作用的。有没有一种简单的方法可以用访问令牌执行递归子模块获取?

我尝试了另一种方法,包括使用github应用程序的pivate密钥.pem文件作为SSH标识。这涉及到运行ssh-agent bash -c 'ssh-add /path/to/private-key.pem; git clone --recurse-submodules git@github.com:owner/repo.git',但最终出现了Permission denied (publickey)错误,这是有道理的,因为.pem文件并不意味着可以访问存储库,只是为了验证github应用程序。

在编写Github应用程序时,执行递归子模块克隆/获取的正确方法是什么?

如果您认为使用HTTPS对子模块更容易,您可以添加到您的配置中:

git -c url."https://x-access-token:<token>@github.com/".insteadOf='git@github.com/' clone ...

对于任何具有GitHub SSH URL的子模块,都会使用HTTPS URL(带有访问令牌(。