克隆git子模块的任何方法?

时间:2011-07-21 03:08:13

标签: git hudson jenkins

我在一个开源项目上工作。我们将生产配置文件保存在一个单独的git存储库中,仅供我们团队的一些成员使用。这个仓库是我们大型项目的一个子模块,它允许人们抓住并编译项目,而不会看到我们的产品信誉。

问题是Hudson试图拉下子模块,而Hudson用户对该repo没有拉取权限。

hudson.plugins.git.GitException: Error performing command: git submodule update
Command "git submodule update" returned status code 1: Initialized empty Git repository in <http://athenadev.fracturedatlas.org:5904/job/ATHENA/ws/assembly/.git/>
ERROR: Permission to fracturedatlas/assembly.git denied to fracturedatlas/artful.ly.
fatal: The remote end hung up unexpectedly
Clone of 'git@github.com:fracturedatlas/assembly.git' into submodule path 'assembly' failed

       at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:691)

是否有一种良好的“git”方式,或者我们是否需要重新考虑我们的策略,以保持生产凭据远离恶人?

1 个答案:

答案 0 :(得分:1)

如果那个秘密仓库是一个更大的仓库的子模块,那么...... Hudson应该试图从那个更大的仓库中撤出;)

它应该从“另一个更大的回购”中拉出来,与第一个回复相同,但是是否存在该子模块。

在以下情况下很容易做到:

  • 父回购是空的,只声明子模块(一个用于“大项目”,一个用于“秘密回购”)
  • “较大的项目”包括一个秘密仓库的符号链接(这样,你不必直接在较大的项目中声明秘密的repo子模块,你可以在准空的父仓库中声明它)

当存在这样的父存储库(内容仅限于两个子模块)时,很容易复制这样的父存储库以获得仅包含一个子模块的存储库(“更大”项目“),没有其他(”秘密回购“) 这将是第二个父母回购哈德森能够从中拉出来的。