如何将Git子模块添加到Forked Repository中

时间:2017-11-12 22:17:06

标签: git gitlab git-submodules

我正在查看关于在GIT中使用子模块的这个解释(在我的例子中,我使用Gitlab来存储代码而不是github)。

我正在审核此处提到的说明: 链接1:Working With Submodules

我也在看这个项目: 链接2:Gitlab Submodules

在LINK 1中,似乎主要存储库(父级)和子存储库(子模块)只是Git系统中的常规存储库。

在下图中,我希望(作为一个例子)拥有每个存储库的分支(用于开发,测试和生产)。

enter image description here

每个级别都是(对于父级:TEST是PROD的FORK,DEVL是TEST的FORK):

testme.com:DEVL/restapi-field.git
testme.com:TEST/restapi-field.git
testme.com:PROD/restapi-field.git

每个级别都是(对于子模块:TEST是PROD的FORK,DEVL是TEST的FORK):

testme.com:DEVL/submoduleOne.git
testme.com:TEST/submoduleOne.git
testme.com:PROD/submoduleOne.git

根据LINK 2,应该使用名为.gitmodules

的文件

问题是,.gitmodules将在父级中以不同的方式定义(基于它所在的组)。再看看图片。

如何实现这个?

我见过一些人只需要定义所有需要的文件(例子):

.gitmodules.development
.gitmodules.test
.gitmodules.production

然后每个级别(即开发,测试,生产)都适用于最适合它的文件。

詹金斯也在这种情况下使用。我应该在詹金斯做以下工作:

  1. Jenkins提取正确的父存储库(开发,测试或生产)
  2. 将正确的相应.gitmodules复制到存储库中 (例如:cp .gitmodules.development /.gitmodules)
  3. 运行更新以获取最新版本(例如类似)
    • git submodule sync --recursive
    • git submodule update --init --recursive
  4. 使用代码进行Contiue处理(即编译,创建lib等)
  5. 人们可以考虑的其他选择吗?

    TIA

0 个答案:

没有答案