在跨存放庫共用時實作 Scalar 和跨存放庫

已完成

隨著軟體專案在複雜度和規模上成長,傳統 Git 工作流程可能會遇到阻礙效率和共同作業的挑戰。 這些挑戰可透過包含 Scalar 和跨存放庫共用等技術的完整存放庫管理策略來解決。

Scalar

Scalar 是由 Microsoft 開發的 Git 虛擬檔案系統延伸模組,可最佳化管理大型存放庫時的效能,進而加速複製和簽出作業。 這可藉由使用快取和背景維護的組合來完成。

當 Scalar 用來複製 Git 存放庫時,它會快取存放庫的中繼資料,並將其儲存在使用者的電腦上。 此中繼資料包含存放庫分支、標籤和認可歷程記錄的相關資訊。 藉由快取此資料,Scalar 可以大幅縮短複製存放庫所花費的時間。 後續的 Git 作業接著可以使用快取的資料,進一步改善效能。

Scalar 也會使用背景維護,讓快取的中繼資料保持在最新狀態。 這表示 Scalar 會定期擷取存放庫的任何變更,並據以更新快取的中繼資料。 如此一來,Scalar 可確保快取的資料一律是最新且精確的,這有助於進一步改善效能。

跨存放庫共用

跨存放庫共用是指在組織內的多個 Git 存放庫之間共用程式碼、相依性和資源的做法。 這可藉由跨專案利用共用元件和程式庫來促進程式碼重複使用、共同作業和可維護性。

調整和最佳化 Git 存放庫

設計支援調整和最佳化 Git 存放庫的組織策略時,您應該考慮數個主要考量事項。

實作適用於大型存放庫的 Scalar

評估組織中每個存放庫的大小和複雜度。 識別較大的大小,並包含大量歷程記錄資料。 請考慮實作 Scalar 以改善其效能並降低資源使用量。 遵循 Microsoft 設定 Scalar 以最佳化效能的方式預先擷取和快取資料的指導。

最佳化存放庫結構

評估 Git 存放庫目前的結構。 請考慮將大型整合型存放庫分解成更小、更容易管理的存放庫,每個存放庫都著重於特定元件或模組。 針對組織存放庫的方式採用模組化方法。 使用 Git 子模組或 Git 子存放庫來管理存放庫之間的相依性,同時促進跨專案重複使用和共用程式碼。

Git 子模組可讓您將 Git 存放庫作為另一個 Git 存放庫內的子目錄來包含。 當您想要在專案中包含外部程式碼或程式庫時,這會很有用。 當您新增 Git 子模組時,Git 會建立名為「gitmodules」的文字檔,其中包含子模組的相關資訊,包括其 URL 及其目前指向的認可。

Git 子存放庫代表將 Git 存放庫納入為另一個 Git 存放庫內子目錄的較新方法。 與子模組不同,子存放庫是由名為「git-subrepo」的個別工具所管理,而且不需要個別的「.gitmodules」檔案。 此外,子存放庫可以隨時分割成自己的獨立存放庫,而子模組一律會保留為主要存放庫的一部分。

促進跨存放庫共用

建立清楚的指導方針和最佳做法,以跨組織內的存放庫共用程式碼和資源。 鼓勵使用 Git 子模組或 Git 子存放庫來參考個別存放庫中裝載的共用元件或程式庫。

在設計中,請考慮集中式套件登錄或成品存放庫,以一致地在專案之間發佈及取用共用相依性。
請務必清楚傳達整個組織的策略。 促進小組之間的共同作業,以找出程式碼共用和重複使用的機會,並根據您的指導加以實作。