如何使用git存储库跨项目组织共享代码/资产

Ram*_*h N 7 git

我有一个场景,其中基础项目包括Java代码和网站文件(jsp/html/javascript,模板,CSS,图像等).

由于以下原因,创建了此基础项目的变体:

a)白色标签+定制

b)基于该项目的新项目,但附加功能(包括java和Web文件)

基础项目
java

  • SRC /核心

卷筒纸

  • 模板

  • CSS

  • JavaScript的

  • 图片

项目A(基于基础)
java

  • SRC /核心

  • src/projectA特定文件夹

卷筒纸

  • 模板

  • CSS

  • JavaScript的

  • 图片

  • projectA特定文件夹

项目B(基于基础)
java

  • SRC /核心

  • src/projectB特定文件夹

卷筒纸

  • 模板

  • CSS

  • JavaScript的

  • 图片

  • projectB特定文件夹

重要的限制

a)projectA和projectB都从基础项目中分享了相当多的代码

b)除了拥有自己的文件和代码外,ProjectA和ProjectB还可以添加,修改或删除web/templates,web/css,web/image文件夹中的文件 - 用于自定义和白色标签

c)将来可以创建更多项目,如projectA和projectB

d)当基础项目发生变化时,应该可以将更改反映在子项目中

e)有时,projectA/projectB对公共文件所做的更改应折叠回基础项目.

最初,我认为我将为基础项目和项目A,B等各自提供单独的git存储库.但是特别注意上述约束,我认为git子树或子模块方法都不起作用(明显的限制)

因此,我倾向于拥有一个单独的存储库并使用"分支"方法,其中projectA和projectB将成为分支,base将成为"主".约束(e)在这种方法中的效果如何?

有没有更好的方法来管理这个git?

Sim*_*mon 1

base您为每个子项目设立一个分支和一个分支的方法听起来很合理。

然后您可以从子项目中签出basecherry-pick需要合并的提交(约束 e)。