Git 子树与 Monorepo

Git Subtrees vs Monorepo

我们最近决定从 TFVC 迁移到 Git,我正在努力寻找设计新 Git 架构的最佳方法。

我们的代码由独立但紧密耦合的模块组成,让我们看看以下项目:

虽然 CommonLib1/CommonLib2 是完全独立的,但 ApplicationA/ApplicationB 的几乎每个新功能都需要修改 CommonLib1/CommonLib2.

此外,在添加新功能时,我们希望创建一个跨越所有项目的分支。

据我所知,我有两个主要选择:

  1. 为每个项目创建一个repo,并在ApplicationA/ApplicationB.

    中添加CommonLib1/CommonLib2作为子树
  2. 为所有项目创建一个 Monorepo。

最适合我的情况的 Git 做法是什么?

由于CommonLib1/CommonLib2ApplicationA/ApplicationB密切相关,所以你最好使用选项2为所有的人创建一个单一的Monorepo项目)。分支结构如下:

  • Lib1分支:manage/develop/updateCommonLib1在这个分支。更新后,您可以将其合并到 appAappB 分支。

  • Lib2分支:manage/develop/updateCommonLib2在这个分支。更新后可以合并到appB分支

  • appA 分支:manage/develop ApplicationA 项目。

  • appB 分支:manage/develop ApplicationB 项目。