有一些子项目:“项目1”,“项目2”等的未来。
此外,有一个名为项目:“基地项目”和它的其他项目的基础。 “基地项目”是一个内容管理系统(CMS)。
所有项目都有自己的git仓库。
“项目1”,“项目2”和其他人使用“基地项目”的发展和壮大。
有像子模块或subtreemerge git的一些方法。 但似乎并不适合这里。 “基地项目”不应该克隆到一个子目录。 这是在根目录下。 它的增长在“项目1”或“项目2” ...
当我的孩子项目的工作,我必须能够单独推“基地项目”变为它自己的存储库中其他孩子去取。
我能做什么?
子树合并或子是一个基于组件的开发 :两个不同但相关设置文件组合在一起的。
每套文件是在自己的目录,因为它们可以支或标记的独立(子模块),或一起(子树合并,同时保持找回自己的历史的能力)。
两者都需要,虽然一个单独的目录。
但是,你所描述(“ Base Project
‘是在根目录下,在’成长project 1
‘或’ project 2
”)是关于基于系统的方法 :所有组件合并成一个大的组件:一个大的文件组这将总是演变一起,作为一个单元。
所以,你可以为每个项目的一个分支: branch1
的CMS-projet1
, branch2
的CMS-project2
,依此类推。
但是,如果你需要报告projectx
特异性修改或特定CMS-修改回原来的(独立的)回购,然后做出表示,专用支路的具体变化,然后再结合这些变化 :
-
branchp1
将成为影响变化project1
-
branchc1
将成为影响变化CMS
-
branch1
是从合并的结果branchp1
和branchc1
(对于同样的事情branch2
)
然后,您可以导出这些变化补丁 :
- 从
branchp1
到project1
回购 - 从
branchc1
到CMS
回购
在不方便的是,Git会不记得是什么已经被合并回原来的回购,但将允许您在报告的编制的共同历史CMS-projectx
的文件集回到原来的CMS
和projectx
回购。
注意:如果你不希望管理2个额外的分支,另一种解决方案是:
- 确保每个只提交包括CMS修改或变更项目
- 离开提交信息有助于区分它们(“
[CMS] my CMS modification comment...
”,或‘ [Project1] my project1 modification comment...
’ - 使用脚本
git-extract-patches
导出为补丁只有正确的提交。
文章来源: Combine a base project that is growing in child projects in git repository except git submodule or subtree merge methods