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)才能完成交付。