我正试图想出一个相当干净的方式来代表Git中的以下内容:
一个基础项目,包含许多项目中使用的公共代码。
使用基础项目的多个子目录中的附加文件扩展基础项目的多个项目。
扩展项目通常对基础项目进行项目特定的修改。我们希望能够将这些修改推回到上游,而不是推动扩展特定的东西。
我目前的想法是:
基础项目和每个扩展项目的单独回购。
对于每个扩展项目,fork基础项目并为特定于扩展的内容创建子模块。子模块的Symlink子目录到超级项目目录结构中的预期位置。
有更好的方法吗?
答案 0 :(得分:1)
公共项目的代码是否真的独立于项目,是的,子模块是一个不错的选择。
但是如果更改项目也涉及几乎总是更改公共代码,并且如果扩展项目不代表那么多文件......那么每个扩展项目有一个分支的一个repo和一个专用于公共代码的分支可能是够了。
然后,这可能需要对公共代码分支中想要的项目特定提交进行一些挑选。