Monorepo(monolithic repository)是一种项目架构,简单来说就是,将多个项目或包文件放到一个git仓库来管理,很多前端项目vue3、element都是采用的这种架构模式。 之所以应用monorepo
,主要是解决以下问题:
- 代码复用的问题 。
- 开发流程统一 。
- 高效管理多项目/包。
随着.NET 8 Preview 1发布的临近, 今天要给各位介绍一下 dotnet的一个Monorepo存储库:https://github.com/dotnet/dotnet 。 这个仓库早在2022年的12月份就发布了 ,具体可以参见:https://github.com/dotnet/arcade/issues/11584。
这个新存储库是虚拟整体式存储库 (VMR)。它包括生成 .NET SDK 所需的所有代码,这些代码是从各个产品存储库(如 dotnet/roslyn 或 dotnet/runtime)镜像的。也包括用于构建Linux上 .NET 的全产品构建系统 https://github.com/dotnet/source-build。
VMR 具有以下主要特征:
- 整体式 - 存储库是整体式的,因此单个提交即可完全标识生成 .NET SDK 所需的整个源代码
- 虚拟 - 它是构成整个产品的单个产品存储库的镜像(而不是替代品),并排放置在一个存储库中。对基础单个产品存储库所做的更改将同步到 VMR。
- 实验性 - 目前,存储库是简化发布过程的计划的一部分,并不意味着依赖于此。我们预计该存储库将在计划于2023年 2 月发布的 .NET 8.0 预览版 1 首次使用。
存储库是一个正在进行的工作,有很多限制,按照路线图 https://github.com/dotnet/dotnet/blob/main/src/arcade/Documentation/UnifiedBuild/Roadmap.md ,这是我们在 .NET 历史上开发、构建和交付产品的方式上的最大变化。需要两个版本(.NET 8 和.NET 9)才能完成交付。