微軟釋出一個能加速Git工作流程的專案Scalar,Scalar是一個.NET Core應用程式,無論開發者使用的儲存庫大小,都能有效提升Git指令執行效率。Scalar中許多技術源自於微軟VFS for Git專案,未來微軟計畫要把Scalar中的功能,直接貢獻進Git專案。

Git是一個分散式版本控制系統,因此在預設情況下,每個Git儲存庫都具有歷史紀錄的完整檔案副本。微軟提到,即便是中等規模的團隊,可能也產生了數千次的提交,儲存庫每個月增加數百MB的檔案,而隨著儲存庫容量增加,Git運作可能越來越不順暢。

而等待git status以回報修改的文件,或是用git fetch取得最新的資料,都變成浪費時間的事,微軟表示,當這些指令執行速度越來越慢,開發者就不會想等待,並且開始切換上下文,而上下文切換會傷害開發者的生產力。

微軟內部有像是Windows作業系統這種超大型的儲存庫,為了克服這個問題,微軟開發了VFS for Git,能夠以虛擬化檔案系統,繞過許多儲存庫大小的假設,使得Windows開發人員能以極具規模的方式使用Git。

在開發VFS for Git的時候,微軟發現了一些效能瓶頸,因此對Git客戶端做了一些改進,包括提交圖(Commit-graph)檔案、改進Git推送和稀疏簽出(Sparse Checkout)等,基於這些貢獻,微軟進一步開發了新專案Scalar,在不需要虛擬檔案系統下,就能支援非常大型的儲存庫。

Scalar本身是一個.NET Core應用程式,可以安裝於Windows和macOS,Scalar透過設定建議配置值以及執行背景維護,以最大化Git指令的效能,無論開發者使用什麼服務來託管儲存庫,Scalar都能有效的加速Git指令。微軟提到,只要在Scalar中註冊最大的儲存庫,就能馬上感受到Git執行速度大幅提升。

微軟接下來的計畫,是要把Scalar中加速Git的方法,直接搬到Git專案中,最終目的是讓開發者不需要Scalar,光使用Git客戶端就能獲得這些效能改進。不過,要達成這個目標,仍然有一大段路要走,微軟提到,目前稀疏簽出是Scalar用來應付規模擴張的方法,儘管Git最近更新稀疏簽出功能,使得該功能更容易使用,但是要達完整功能的階段,還有一段距離。

Scalar目前使用稀疏簽出而非虛擬檔案系統,因而在執行Git命令上存在瓶頸,特別是git checkout的速度不及VFS for Git,微軟正在研究平行化git checkout,以提高執行效能。微軟提到,要真正擴展Git規模服務數萬名開發者,並且建置與中央伺服器互動的機器,這需要類似快取伺服器的概念,微軟很快就會在Git社群提出這個概念。

另外,目前Git客戶端儲存庫之所以能順暢的執行,是仰賴定期執行的前臺垃圾回收器,但微軟提到,對於大型儲存庫來說,這是不可行的方法,因此微軟計畫要在Git客戶端中加入某種形式的後臺維護功能,以類似git maintenance start指令,提供像是Scalar註冊器般的功能。


Advertisement

更多 iThome相關內容