探索 monorepo 与多个代码库的区别

已完成

存储库是存储工作历史记录的位置,通常存储在 git 子目录中。

应如何组织代码存储库? 开发团队旨在在其软件和存储库中分离关注点。 随着时间的流逝,代码存储库变得杂乱无章,充满了无关的代码和项目。

在组织存储库方面,有两个主要理念:使用单个存储库(Monorepo)或多个存储库。

  • Monorepos 是一种源代码管理模式,其中所有源代码都保存在一个存储库中。 让所有员工都能同时访问所有内容很容易。 克隆它就完成了。
  • 将项目组织到单独的存储库称为多个存储库。

单存储库和多个存储库理念之间的根本区别在于,团队能够更高效地协同工作。 在极端情况下,多个存储库视图建议每个子团队都可以在其存储库中工作。 它允许他们在各自的区域中使用库、工具和开发工作流来优化其工作效率。

使用给定存储库中未开发的任何内容的成本相当于使用第三方库或服务,即使它是由坐在附近的某人编写的。

如果遇到库中的 bug,则应在相应的存储库中对其进行处理。 发布新项目后,可以返回到存储库并进行必要的代码更改。 但是,如果 bug 位于不同的代码库或涉及不同的库、工具或工作流,则可能需要从该系统的所有者寻求帮助并等待其响应。

使用单存储库视图时,管理复杂的依赖项关系图可能会增加使用单个存储库的难度。 允许不同的团队独立工作的好处并不重要。 某些团队可能会找到一种有效的工作方式,但对于所有组来说,情况可能并非如此。 此外,其他团队可以选择一种不理想的方法,从而否定其他人获得的任何好处。 通过将所有工作整合到一个单一仓库中,可以专注于密切监控这个仓库。

在单一存储库中避免在其他存储库中进行更改或等待团队为你进行更改的麻烦,任何人都可以更改任何内容。

如果在库中发现 bug,修复它就像在自己的代码中查找 bug 一样简单。

注意

在 Azure DevOps 中,通常对项目中的每个关联解决方案使用单独的存储库。