在不同的存储库中拆分git存储库以减小大小

时间:2016-01-17 09:24:48

标签: git jenkins

我对git的熟练程度超出了通常的commit/pull/push/branch等命令,所以我不知道找到我想要做的事情需要的正确单词。

我正在寻找有关如何获得我想要的建议和指向URL的建议,以便提供更多解释。

随着时间的推移,项目已从单一产品发展为用于构建最终产品的多个子产品。每个子产品都有自己的子目录树,但是构建子产品的Jenkins作业和最终产品仍然会拉入整个存储库,只是为了构建它应该做的一个产品。

这需要相当长的构建时间,即使是随着时间的推移不会发生很大变化的小型产品。所以我想把每个项目拆分成自己的存储库。同时,它们都遵循几个文件的类似模式,因此我想将其移动到所有人使用的公共代码中。这是一个示意图布局

/project
  /subproject1
    /common
    /src
    /test
  /subproject2
    /common
    /src
    /test
  /common # main project
  /src    # main project
  /test   # main project

到目前为止,我认为最好的办法是将所有子项目和主项目分成不同的存储库。保留历史记录会很好,但是过去提交过多个子项目并且没有使用分支,因此可能不可行。

此外,当我将公共代码移到自己的存储库中时,如何将文件返回到公共目录中,以便将公共代码的更改推送到自己的存储库?我已经读过可以解决问题的git-subtree,但我从未使用过它。

这是最好的前进方式还是有更简单的替代方案?

1 个答案:

答案 0 :(得分:0)

  

随着时间的推移,一个项目已经从单一产品发展成为用于构建最终产品的几个子产品   ...
  所以我想把每个项目拆分成自己的存储库

你应该是子模块。

enter image description here

子模块是另一个项目中的独立项目,它在自己的文件夹中自我管理。

在您的情况下,因为您已经将代码放在一个大的存储库中,所以您必须将其分解为小块。

要执行此操作,请使用此文件夹bfc。在您的情况下,只需清除您要更改为subfolders的{​​{1}}。

enter image description here