如何递归克隆 Github 应用程序的存储库
How to recursively clone repo for Github App
我正在开发一个 Github 应用程序,它需要能够在发生推送事件时克隆 Github 存储库。
我已经成功设置了包括服务器在内的所有内容,并且可以 clone repositories using using access tokens 但是我在使用具有子模块的存储库时遇到了一些问题。
我发现如果 repo.git
的子模块配置了 SSH,那么使用 git clone --recurse-submodules https://x-access-token:<token>@github.com/owner/repo.git
是行不通的。有没有一种简单的方法可以使用访问令牌执行递归子模块提取?
我尝试了另一种方法,该方法涉及使用我的 github 应用程序的私钥 .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 应用程序时执行递归子模块 cloning/fetching 的正确方法是什么?
如果您认为子模块使用 HTTPS 会更容易,您可以添加到您的配置中:
git -c url."https://x-access-token:<token>@github.com/".insteadOf='git@github.com/' clone ...
对于具有 GitHub SSH URL 的任何子模块,将使用 HTTPS URL 代替(使用您的访问令牌)。
我正在开发一个 Github 应用程序,它需要能够在发生推送事件时克隆 Github 存储库。
我已经成功设置了包括服务器在内的所有内容,并且可以 clone repositories using using access tokens 但是我在使用具有子模块的存储库时遇到了一些问题。
我发现如果 repo.git
的子模块配置了 SSH,那么使用 git clone --recurse-submodules https://x-access-token:<token>@github.com/owner/repo.git
是行不通的。有没有一种简单的方法可以使用访问令牌执行递归子模块提取?
我尝试了另一种方法,该方法涉及使用我的 github 应用程序的私钥 .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 应用程序时执行递归子模块 cloning/fetching 的正确方法是什么?
如果您认为子模块使用 HTTPS 会更容易,您可以添加到您的配置中:
git -c url."https://x-access-token:<token>@github.com/".insteadOf='git@github.com/' clone ...
对于具有 GitHub SSH URL 的任何子模块,将使用 HTTPS URL 代替(使用您的访问令牌)。