Git回购策略

时间:2015-02-04 21:19:50

标签: git

我们有一个独特的设置,我们正试图在一个公共平台上容纳一组项目。基本上,所有需要拥有自己的回购的项目都有一个共同的环境。里面是一个包含该平台所有核心代码的目录。这也需要自己的回购。在核心仓库中的子目录中,有一些兄弟目录对应于项目可能使用的主题。每个都需要自己的回购。然后,对于特定项目,所选主题内的子目录包含特定项目的配置和其他自定义代码。这是我们最常工作的回购。上游的一切都是依赖。它看起来像这样:

Environment-------------------------------------------------------
|--(some code)
|--Core-----------------------------------------------------------
|  |--(some code and directories)
|  |--Themes directory
|  |  |--Theme1---------------------------------------------------
|  |  |--Theme2 (chosen)------------------------------------------
|  |  |  |--(some code and directories)
|  |  |  |--Project-----------------------------------------------
|  |  |  |  |--(This is the code that changes for every project)
|  |  |  |  ------------------------------------------------------
|  |  |  ---------------------------------------------------------
|  |  ------------------------------------------------------------
|  ---------------------------------------------------------------
------------------------------------------------------------------

有没有办法设置它,以便开发人员可以下拉项目存储库,它会拉出所有依赖存储库吗?我们一直在研究子模块和子树,但我们一直遇到障碍(我承认我们可能只是遗漏了一些东西)。我非常感谢任何人提出的任何指示或指导。

谢谢!

2 个答案:

答案 0 :(得分:1)

正如您所发现的,对所有这些使用单独的回购是一团糟。我建议使用分支机构。从最通用的部分(环境)开始,然后为下一级(Core)创建一个分支,然后为下一级(主题)创建一个分支,最后为每个Project创建一个分支。

A - B - C [Env]
     \
      D - E - F [Core]
           \
            G - H - I [Themes]
                 \   \
                  \   L - M [Project2]
                   \
                    J - K [Project1]

每个部分都可以通过与其上游分支合并来更新。开发人员可以使用--single-branch进行克隆,以获得他们需要的部分。

答案 1 :(得分:0)

一种选择是为每个模块创建一个单独的存储库(一个用于环境,核心,主题等),但包含一个package.json - esque文件,列出该repo的依赖项。< / p>

然后,您可以使用现有的依赖项管理工具(例如bower)或编写自己的脚本,只需git clone package.json中的每个依赖项并插入它以fake submodule进入当前回购。

最后,您可以使用git alias让开发人员轻松克隆存储库,然后执行git install(类似于bower install)来抓取所有上游依赖项。