【问题标题】:How to recursively clone repo for Github App如何递归地克隆 Github App 的 repo
【发布时间】:2021-04-06 22:09:27
【问题描述】:

我正在开发一个 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 应用程序时,执行递归子模块克隆/获取的正确方法是什么?

【问题讨论】:

    标签: git github github-app


    【解决方案1】:

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

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

    对于具有 GitHub SSH URL 的任何子模块,将使用 HTTPS URL(使用您的访问令牌)。

    【讨论】:

    • 不可思议的想法!它完美无缺(除了我认为url 之前的' 是多余的。谢谢!
    • @PaymahnMoghadasian 太棒了!我已经编辑了答案并删除了无关的'
    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 2014-03-03
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    相关资源
    最近更新 更多