再加上在孩子成长的项目在Git仓库中除了混帐子模块或子树合并方法基地项目(Combine a bas

2019-08-03 03:44发布

有一些子项目:“项目1”,“项目2”等的未来。

此外,有一个名为项目:“基地项目”和它的其他项目的基础。 “基地项目”是一个内容管理系统(CMS)。

所有项目都有自己的git仓库。

“项目1”,“项目2”和其他人使用“基地项目”的发展和壮大。

有像子模块或subtreemerge git的一些方法。 但似乎并不适合这里。 “基地项目”不应该克隆到一个子目录。 这是在根目录下。 它的增长在“项目1”或“项目2” ...

当我的孩子项目的工作,我必须能够单独推“基地项目”变为它自己的存储库中其他孩子去取。

我能做什么?

Answer 1:

子树合并或子是一个基于组件的开发 :两个不同但相关设置文件组合在一起的。
每套文件是在自己的目录,因为它们可以支或标记的独立(子模块),或一起(子树合并,同时保持找回自己的历史的能力)。
两者都需要,虽然一个单独的目录。

但是,你所描述(“ Base Project ‘是在根目录下,在’成长project 1 ‘或’ project 2 ”)是关于基于系统的方法 :所有组件合并成一个大的组件:一个大的文件组这将总是演变一起,作为一个单元。
所以,你可以为每个项目的一个分支: branch1CMS-projet1branch2CMS-project2 ,依此类推。

但是,如果你需要报告projectx特异性修改或特定CMS-修改回原来的(独立的)回购,然后做出表示,专用支路的具体变化,然后再结合这些变化

  • branchp1将成为影响变化project1
  • branchc1将成为影响变化CMS
  • branch1是从合并的结果branchp1branchc1

(对于同样的事情branch2

然后,您可以导出这些变化补丁

  • branchp1project1回购
  • branchc1CMS回购

在不方便的是,Git会不记得是什么已经被合并回原来的回购,但将允许您在报告的编制的共同历史CMS-projectx的文件集回到原来的CMSprojectx回购。


注意:如果你不希望管理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