我们最近决定从tfvc转向git,我正试图找到设计新git架构的最佳方法。
我们的代码由独立但紧密耦合的模块组成,让我们看看以下项目:CommonLib1
CommonLib2
ApplicationA
(使用CommonLib1
)ApplicationB
(使用CommonLib1
&CommonLib2
)
尽管CommonLib1
/CommonLib2
是完全独立的,但几乎每个ApplicationA
/ApplicationB
的新功能都需要修改CommonLib1
/CommonLib2
。
此外,在添加新功能时,我们希望创建一个分支,该分支将跨越所有项目。
据我所知,我还有两个主要选择:
为每个项目创建一个repo,并在CommonLib1
/CommonLib2
中添加ApplicationA
/ApplicationB
作为子树。
为所有项目创建一个monorepo。
对于我的情况,什么是最好的git实践?
最佳答案
因为CommonLib1/CommonLib2
与ApplicationA/ApplicationB
密切相关,所以最好使用option2(为所有项目创建单个monorepo)。分支结构如下:Lib1
分支:管理/开发/更新此分支中的CommonLib1
。更新后,您可以将其合并到appA
和appB
分支中。Lib2
分支:管理/开发/更新此分支中的CommonLib2
。更新后,您可以将其合并到appB
分支中。
分公司:管理/开发项目。
分公司:管理/开发项目。