當前位置:
首頁 > 科技 > 微軟和GitHub聯合,共同將Git虛擬文件系統引入到macOS和Linux

微軟和GitHub聯合,共同將Git虛擬文件系統引入到macOS和Linux

並非只有微軟這一家公司有興趣擴展Git。

去年軟體界傳出了一則令人比較驚訝的新聞:微軟宣布將使用Git版本控制系統用於Windows開發。微軟不得不修改Git來滿足Windows開發的需求,不過它表示希望這些修改得到上游開發人員的接受,並整合到標準的Git客戶軟體中。

這項計劃似乎進展順利。昨天,微軟宣布GitHub在採用其修改;雙方將攜手,把合適的客戶軟體引入到MacOS和Linux。

微軟之所以想要改用Git,是由於Git具有出色的功能特性(比如易於分支),而且它在開發人員當中大受歡迎。不過這種改弦易轍面臨三個問題。Git當初不是為廣大開發人員設計的,現在有3000多人在積極開發代碼庫。另外,Git不是為如此龐大的代碼庫而設計的:無論從文件數量和每個文件的版本歷史來看,還是從絕對規模(大小超過300GB)來看,代碼庫都太過龐大。如果使用標準的Git,處理源代碼庫的速度會慢得令人無法接受。常見操作(比如檢查哪些文件已經過修改)就要花好幾分鐘。

該公司的解決方案就是開發Git虛擬文件系統(GVFS)。有了GVFS,Git代碼庫的本地副本經過虛擬化,那樣它包含元數據以及之前顯式檢索的源代碼文件。由於不需要複製每一個文件(因而不需要檢查每一個文件有無修改),代碼庫的磁碟佔用空間和處理代碼庫的速度都得到了大幅優化。微軟修改Git來處理這個虛擬文件系統。客戶軟體經過了改動,那樣它不會毫無必要地試圖訪問本地不可用的文件,還添加了一種新的傳輸協議,以便從遠程代碼庫選擇性地檢索單個文件。

在內部,這個解決方案證明很成功,今年5月Windows開發大規模遷移到了Git。但是更廣泛的Git社區的情況又怎樣呢?

微軟表示,到目前為止,大約一半的修改已被上游接受,上游的Git開發人員普遍贊同該公司為改進軟體的擴展性而採取的做法。微軟還表示,它一直願意改變做法,以滿足上游Git的需求。最複雜的問題在於,Git對兼容性採取的態度非常保守,要求代碼庫在各版本之間保持兼容性。

GitHub之所以有興趣,並且積极參与,是由於該公司渴望滿足企業客戶的需求。開源免費的GitHub託管不需要微軟所做的擴展工作――很顯然,如果有人使用標準的Git,那麼標準的Git對於其開發流程來說必須足夠好。不過在付費的企業方面,情況可能略有不同。某些行業有龐大代碼庫,這給Git帶來了問題;比如說,遊戲代碼庫常常體形龐大,倒不是由於它們有數百萬個文件、數十年的歷史,而是由於它們有大量的圖形及其他資源。微軟對Git所做的擴展方面的改進對於這種龐大代碼庫也很有用。正因為如此,GitHub中擁有同樣的一系列改進將使該公司能夠更好地服務於這些社區。

微軟本身也有類似的企業需求;該公司告訴我們,西門子希望由Team Foundation Server(TFS)版本控制系統改而使用Git。但是只有在擴展方面做出改進後,才能夠做到這一點。現在,TFS版本控制擴展起來更好。

顧名思義,GVFS需要一個文件系統驅動程序才能工作。Windows部門與工程團隊合作,為Windows添加了使這方面很高效的功能特性。目的是最終將這項功能做入到一套受支持、可擴展的API,並在將來某個時候促使OneDrive佔位符之類的系統使用同樣的API。

微軟和GitHub還在努力將類似的功能引入到其他平台上,先是macOS,然後是Linux。要在這兩個系統上做到這一點,一種明顯的方法就是使用FUSE,這種基礎架構用來構建在用戶模式下,而不是在內核模式下運行的文件系統(因為用戶模式開發比內核模式開發來得更簡單、更安全)。然而,這兩家公司發現FUSE在這方面的速度不夠快――Dropbox在開發一項類似的功能Project Infinite時對此也深有體會。目前,這兩家公司認為採用一種名為Kauth(或KAuth)的macOS可擴展性機制是最好的出路。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲頭條 的精彩文章:

虛擬機比容器來得更輕盈,還更安全!
從一張圖見美國十大公司的百年變遷
波士頓動力機器人後空翻的視頻你看了,前趴的呢?
美國政府利用軟體指出移民是潛在的犯罪分子?科研人員稱,這愚蠢透頂!

TAG:雲頭條 |