我们有一个独特的设置,我们正试图在一个公共平台上容纳一组项目。基本上,所有需要拥有自己的回购的项目都有一个共同的环境。里面是一个包含该平台所有核心代码的目录。这也需要自己的回购。在核心仓库中的子目录中,有一些兄弟目录对应于项目可能使用的主题。每个都需要自己的回购。然后,对于特定项目,所选主题内的子目录包含特定项目的配置和其他自定义代码。这是我们最常工作的回购。上游的一切都是依赖。它看起来像这样:
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)
| | | | ------------------------------------------------------
| | | ---------------------------------------------------------
| | ------------------------------------------------------------
| ---------------------------------------------------------------
------------------------------------------------------------------
有没有办法设置它,以便开发人员可以下拉项目存储库,它会拉出所有依赖存储库吗?我们一直在研究子模块和子树,但我们一直遇到障碍(我承认我们可能只是遗漏了一些东西)。我非常感谢任何人提出的任何指示或指导。
谢谢!
答案 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
)来抓取所有上游依赖项。