微软开源 Scalar,提升操作巨型 Git 仓库的速度
Git 屬于分布式版本控制系統(tǒng),默認情況下,每個 Git 倉庫都具有整個歷史記錄的完整文件副本。即便是中等規(guī)模的開發(fā)團隊也會產(chǎn)生數(shù)千個提交,每個月向倉庫添加幾百兆的數(shù)據(jù)。而隨著倉庫的占用空間增加,Git 難以管理所有數(shù)據(jù),導(dǎo)致其運行越來越不順暢。如此一來,開發(fā)者的時間就會被浪費在執(zhí)行命令后等待反饋的操作上,如使用git status獲取被修改的文件,或者使用git fetch將代碼拉取至本地。由于等待的時間過長,開發(fā)者大多會傾向于切換至完成另外的任務(wù),待命令執(zhí)行完成后再切換回來。而這種來回切換任務(wù)的工作方式常常會降低開發(fā)者的生產(chǎn)力。
對于處理巨型 Git 倉庫的問題,微軟顯然是頗有經(jīng)驗。畢竟 Windows 操作系統(tǒng)的代碼就是使用 Git 進行管理,為了克服上述的問題,微軟開發(fā)了 VFS for Git(以前稱為 GVFS),此項目使用虛擬文件系統(tǒng)繞過了許多倉庫大小的限制,所以 Windows 開發(fā)者在如此龐大的項目前也能正常使用 Git。
在開發(fā) Vit for Git 的同時,微軟通過使用自定義跟蹤系統(tǒng)和收集用戶反饋來確定性能瓶頸。在此期間,微軟也為 Git 客戶端貢獻了一些代碼,包括提交樹(Commit-Graph)功能以及對git push和稀疏檢出的改進。基于這些貢獻以及其他許多對 Git 的近期改進,微軟啟動了一個項目 —— 無需虛擬文件系統(tǒng)即可支持巨型Git 倉庫。這就是 Scalar 的誕生背景。
Scalar是一個使用 C# 編寫的 .NET Core 應(yīng)用程序,僅支持在 Windows 和 macOS 平臺中運行。Scalar 通過設(shè)置所建議的配置值和運行后臺維護來最大程度優(yōu)化 Git 命令的性能。無論開發(fā)者使用什么服務(wù)來托管代碼倉庫,Scalar 都能有效地加速 Git 指令。微軟提到,只要使用Scalar 為體積最大的代碼倉庫進行注冊,就能馬上感受到 Git 執(zhí)行速度大的幅提升。
對于 Scalar 的未來,微軟希望將其貢獻給 Git。微軟計劃把 Scalar 中加速 Git 的方法直接合并到 Git 項目中,最終實現(xiàn)讓開發(fā)者不需要 Scalar,僅使用 Git 客戶端就能獲得這些性能改進。不過要達成這個目標,仍然有很長的路要走。微軟提到,目前稀疏檢出是 Scalar 用來解決倉庫規(guī)模擴大的方法,盡管 Git 最近更新了稀疏檢出功能,使得該功能更容易使用,但是要達到提供完整功能的階段,還有一段距離。
Scalar 目前使用稀疏檢出而非虛擬文件系統(tǒng),因此在執(zhí)行 Git 命令時會存在瓶頸,特別是git checkout的速度不及 VFS for Git,微軟正在研究并行版本的git checkout,以提高執(zhí)行性能。微軟提到,為了真正地擴展 Git 服務(wù)以滿足成千上萬的工程師的需求,并構(gòu)建與中央服務(wù)器交互的機器,Git 需要提供類似于 GVFS 緩存服務(wù)器的概念。他們也表示計劃很快在郵件列表中提出這個想法。
另外,目前 Git 客戶端倉庫之所以能順暢地執(zhí)行,是依賴定期執(zhí)行的前臺垃圾回收器,但微軟提到,對于巨型倉庫來說,這是不可行的方法。因此微軟計劃在 Git 客戶端中加入某種形式的后臺維護功能,類似git maintenance start命令,并像scalar register一樣容易使用。
詳細的使用說明請查看https://devblogs.microsoft.com/devops/introducing-scalar
總結(jié)
以上是生活随笔為你收集整理的微软开源 Scalar,提升操作巨型 Git 仓库的速度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络游戏名字大全
- 下一篇: 吃甜食会导致人记忆力下降吗?