Git回购大型项目

时间:2017-07-20 09:01:43

标签: git

我已经开始研究新的大型项目了。它包含许多Web门户和微服务。

我在考虑如何构建git repo。 此刻我有这个:

Main Folder(one repo)
     Portals(folder)
          Portal 1(folder)
          Portal 2(folder)
     Services(folder)
          Service 1(folder)
          Service 2(folder)

第二个选项是:

    Main Folder(folder)
     Portals(repo)
          Portal 1(folder)
          Portal 2(folder)
     Services(repo)
          Service 1(folder)
          Service 2(folder)

最后一个选项我在想:

 Main Folder(folder)
         Portals(folder)
              Portal 1(repo)
              Portal 2(repo)
         Services(folder)
              Service 1(repo)
              Service 2(repo)
你怎么看?这样做有什么标准吗?

2 个答案:

答案 0 :(得分:2)

这个问题没有客观的答案。您应该考虑除了SVN和其他早期版本控制系统之外,Git确实在努力寻找小型,模块化和包含的存储库。这使得分支更容易,这是Git工作流程不可或缺的一部分。

在考虑项目的两个部分是否应位于不同的存储库中时,请问自己以下问题:

  • 零件可以单独使用吗? (是吗?那么你应该使用单独的存储库。)
  • 对一个部件的更改几乎总是需要更改另一部件吗? (不是吗?那么你很可能应该使用单独的存储库。)
  • 所有部分是否都遵循相同的发布计划? (不是吗?那么你应该使用单独的存储库。)

请注意,实践中的最后一个问题很重要。即使是一部分依赖于另一部分,但发布没有集成,您应该/可以将这些部分拆分到不同的存储库中。要解决依赖关系,您可以使用Git submodules;这允许您将依赖关系存储库锁定在特定版本。

答案 1 :(得分:1)

对于这种特殊情况,我会选择 git子模块

Main Folder(repo)
     Portals(folder)
          Portal 1(submodule)
          Portal 2(submodule)
     Services(folder)
          Service 1(submodule)
          Service 2(submodule)

这样,您的所有子项目(门户/服务)都是隔离的,但集中在一个单独的仓库下。您可以轻松删除子模块,并继续使用主仓库,而删除的模块仍然可以存活并用于其他项目,如果需要可以在以后添加。

在此处阅读 git子模块