《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 業(yè)界動(dòng)態(tài) > 微軟開源Scalar,提升操作巨型Git倉(cāng)庫(kù)的速度

微軟開源Scalar,,提升操作巨型Git倉(cāng)庫(kù)的速度

2020-02-19
來(lái)源:中國(guó)電子網(wǎng)
關(guān)鍵詞: 軟件 開源 微軟

  Git屬于分布式版本控制系統(tǒng),,默認(rèn)情況下,每個(gè)Git倉(cāng)庫(kù)都具有整個(gè)歷史記錄的完整文件副本,。即便是中等規(guī)模的開發(fā)團(tuán)隊(duì)也會(huì)產(chǎn)生數(shù)千個(gè)提交,,每個(gè)月向倉(cāng)庫(kù)添加幾百兆的數(shù)據(jù)。而隨著倉(cāng)庫(kù)的占用空間增加,,Git難以管理所有數(shù)據(jù),,導(dǎo)致其運(yùn)行越來(lái)越不順暢。如此一來(lái),,開發(fā)者的時(shí)間就會(huì)被浪費(fèi)在執(zhí)行命令后等待反饋的操作上,,如使用git status獲取被修改的文件,或者使用git fetch將代碼拉取至本地。由于等待的時(shí)間過長(zhǎng),,開發(fā)者大多會(huì)傾向于切換至完成另外的任務(wù),,待命令執(zhí)行完成后再切換回來(lái)。而這種來(lái)回切換任務(wù)的工作方式常常會(huì)降低開發(fā)者的生產(chǎn)力,。

  對(duì)于處理巨型Git倉(cāng)庫(kù)的問題,,微軟顯然是頗有經(jīng)驗(yàn)。畢竟Windows操作系統(tǒng)的代碼就是使用Git進(jìn)行管理,,為了克服上述的問題,,微軟開發(fā)了VFS for Git(以前稱為GVFS),此項(xiàng)目使用虛擬文件系統(tǒng)繞過了許多倉(cāng)庫(kù)大小的限制,,所以Windows開發(fā)者在如此龐大的項(xiàng)目前也能正常使用Git,。

8ff47954c88e6244e8c1c1ce2260a400.jpg

  在開發(fā)Vit for Git的同時(shí),微軟通過使用自定義跟蹤系統(tǒng)和收集用戶反饋來(lái)確定性能瓶頸,。在此期間,,微軟也為Git客戶端貢獻(xiàn)了一些代碼,包括提交樹(Commit-Graph)功能以及對(duì)git push和稀疏檢出的改進(jìn),?;谶@些貢獻(xiàn)以及其他許多對(duì)Git的近期改進(jìn),微軟啟動(dòng)了一個(gè)項(xiàng)目——無(wú)需虛擬文件系統(tǒng)即可支持巨型 Git倉(cāng)庫(kù),。這就是Scalar的誕生背景,。

  Scalar 是一個(gè)使用C#編寫的.NET Core應(yīng)用程序,僅支持在Windows和macOS平臺(tái)中運(yùn)行,。Scalar通過設(shè)置所建議的配置值和運(yùn)行后臺(tái)維護(hù)來(lái)最大程度優(yōu)化Git命令的性能,。無(wú)論開發(fā)者使用什么服務(wù)來(lái)托管代碼倉(cāng)庫(kù),Scalar都能有效地加速Git指令,。微軟提到,,只要使用 Scalar為體積最大的代碼倉(cāng)庫(kù)進(jìn)行注冊(cè),就能馬上感受到Git執(zhí)行速度大的幅提升,。

10fc8439b67b676545de0608a7c9cad0.jpg

  對(duì)于Scalar的未來(lái),,微軟希望將其貢獻(xiàn)給Git。微軟計(jì)劃把Scalar中加速Git的方法直接合并到Git項(xiàng)目中,,最終實(shí)現(xiàn)讓開發(fā)者不需要Scalar,,僅使用Git客戶端就能獲得這些性能改進(jìn)。不過要達(dá)成這個(gè)目標(biāo),,仍然有很長(zhǎng)的路要走。微軟提到,,目前稀疏檢出是Scalar用來(lái)解決倉(cāng)庫(kù)規(guī)模擴(kuò)大的方法,,盡管Git最近更新了稀疏檢出功能,使得該功能更容易使用,但是要達(dá)到提供完整功能的階段,,還有一段距離,。

  Scalar目前使用稀疏檢出而非虛擬文件系統(tǒng),因此在執(zhí)行Git命令時(shí)會(huì)存在瓶頸,,特別是git checkout 的速度不及VFS for Git,,微軟正在研究并行版本的git checkout,以提高執(zhí)行性能,。微軟提到,,為了真正地?cái)U(kuò)展Git服務(wù)以滿足成千上萬(wàn)的工程師的需求,并構(gòu)建與中央服務(wù)器交互的機(jī)器,,Git需要提供類似于GVFS緩存服務(wù)器的概念,。他們也表示計(jì)劃很快在郵件列表中提出這個(gè)想法。

  另外,,目前Git客戶端倉(cāng)庫(kù)之所以能順暢地執(zhí)行,,是依賴定期執(zhí)行的前臺(tái)垃圾回收器,但微軟提到,,對(duì)于巨型倉(cāng)庫(kù)來(lái)說(shuō),,這是不可行的方法。因此微軟計(jì)劃在Git客戶端中加入某種形式的后臺(tái)維護(hù)功能,,類似git maintenance start命令,,并像scalar register一樣容易使用。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。