Git 子树与 Monorepo
Git Subtrees vs Monorepo
我们最近决定从 TFVC 迁移到 Git,我正在努力寻找设计新 Git 架构的最佳方法。
我们的代码由独立但紧密耦合的模块组成,让我们看看以下项目:
CommonLib1
CommonLib2
ApplicationA
(使用 CommonLib1
)
ApplicationB
(使用 CommonLib1
& CommonLib2
)
虽然 CommonLib1
/CommonLib2
是完全独立的,但 ApplicationA
/ApplicationB
的几乎每个新功能都需要修改 CommonLib1
/CommonLib2
.
此外,在添加新功能时,我们希望创建一个跨越所有项目的分支。
据我所知,我有两个主要选择:
为每个项目创建一个repo,并在ApplicationA
/ApplicationB
.
中添加CommonLib1
/CommonLib2
作为子树
为所有项目创建一个 Monorepo。
最适合我的情况的 Git 做法是什么?
由于CommonLib1/CommonLib2
与ApplicationA/ApplicationB
密切相关,所以你最好使用选项2(为所有的人创建一个单一的Monorepo项目)。分支结构如下:
Lib1
分支:manage/develop/updateCommonLib1
在这个分支。更新后,您可以将其合并到 appA
和 appB
分支。
Lib2
分支:manage/develop/updateCommonLib2
在这个分支。更新后可以合并到appB
分支
appA
分支:manage/develop ApplicationA
项目。
appB
分支:manage/develop ApplicationB
项目。
我们最近决定从 TFVC 迁移到 Git,我正在努力寻找设计新 Git 架构的最佳方法。
我们的代码由独立但紧密耦合的模块组成,让我们看看以下项目:
CommonLib1
CommonLib2
ApplicationA
(使用CommonLib1
)ApplicationB
(使用CommonLib1
&CommonLib2
)
虽然 CommonLib1
/CommonLib2
是完全独立的,但 ApplicationA
/ApplicationB
的几乎每个新功能都需要修改 CommonLib1
/CommonLib2
.
此外,在添加新功能时,我们希望创建一个跨越所有项目的分支。
据我所知,我有两个主要选择:
为每个项目创建一个repo,并在
中添加ApplicationA
/ApplicationB
.CommonLib1
/CommonLib2
作为子树为所有项目创建一个 Monorepo。
最适合我的情况的 Git 做法是什么?
由于CommonLib1/CommonLib2
与ApplicationA/ApplicationB
密切相关,所以你最好使用选项2(为所有的人创建一个单一的Monorepo项目)。分支结构如下:
Lib1
分支:manage/develop/updateCommonLib1
在这个分支。更新后,您可以将其合并到appA
和appB
分支。Lib2
分支:manage/develop/updateCommonLib2
在这个分支。更新后可以合并到appB
分支appA
分支:manage/developApplicationA
项目。appB
分支:manage/developApplicationB
项目。