|
幾家大型科技公司選擇了 monorepo 方法,而其他公司則決定使用 multirepo 方法。谷歌、Facebook、Twitter 和 Uber 都公開支援單一回購方法。 Microsoft 執行著全球最大的 Git monorepo 來託管 Windows 作業系統的原始碼。
反觀Netflix、亞馬遜、Lyft等都是採用多次補貨方式的知名公司。在混合多 西班牙電話號碼資料 單體方面,Android 更新多個儲存庫,這些儲存庫作為單一儲存庫進行管理。
在混合單多方面,Symfony 將其所有元件的程式碼保留在 monorepo 中。 他們將其分成單獨的儲存庫進行部署(如 symfony/dependency-injection 和 symfony/event-dispatcher)。
Monorepo 和 Multi-Repo 的示例
WordPress GitHub 帳戶託管 monorepo 和 multirepo 方法的示例。
Gutenberg 是 WordPress 塊編輯器,由數十個 JavaScript 包組成。 這些包全部託管在 WordPress/gutenberg monorepo 中,並通過 Lerna 進行管理,以幫助將它們釋出到 npm 儲存庫。
Openverse 是一個公開許可的媒體搜尋引擎,其主要部分託管在獨立的儲存庫中:前端、目錄和 API。
Monorepo 與 Multi-Repo:如何選擇?
與許多開發問題一樣,對於應該使用哪種方法沒有預定義的答案。 不同的公司和專案將根據其獨特的條件從一種或另一種策略中受益,例如:
程式碼庫有多大? 它包含千兆位元組的資料嗎?
有多少人會在程式碼庫上工作? 是 10、100 還是 1,000?
會有多少個包裹? 大約是 10 個、100 個還是 1,000 個?
團隊在任何給定時間必須處理多少個包?
這些包的耦合程度如何?

這些是不同的程式語言嗎? 是否需要安裝特定軟體或特殊硬體才能執行?
需要多少個部署工具以及配置它們的複雜程度如何?
公司文化是什麼? 是否鼓勵團隊合作?
團隊知道如何使用哪些工具和技術。
|
|