編輯 | Just
出品 | AI 科技大本營(ID:rgznai100)
【導讀】2017 年,在當時微軟的一篇官方博客中,時任微軟雲開發服務副總裁的 Brian Harry 表示微軟內部代碼開始向 Git 遷移,宣布推出針對大規模 repo 的“Git虛擬文件係統”GVFS(後更名為 VFS For Git)。他激動地分享了微軟公司 4000 名工程師采用這個代碼管理倉庫後三個月的運行良好狀況,稱其解決了很多 Git 存在的問題。
時隔兩年之後,這篇文章中對 VFS For Git 代碼管理技術思路的介紹仍然值得借鑒。
大型科技公司本身擁有龐大的代碼數據,並且每天都在產生數量巨大的新代碼,如何管理代碼和版本成為備受關注的問題。很多公司會選擇將代碼托管於 Git 等第三方代碼托管平台,但近年來,將代碼管理交給公司自己開發的統一倉庫成為一種趨勢。如微軟的 VFS For Git 就是一個典型案例。
大公司應該如何進行代碼管理?微軟研發並采用 VFS For Git 的過程和這個係統本身有哪些可以借鑒的地方?為了更深入了解 VFS For Git 和代碼管理相關問題,AI科技大本營(ID:rgznai100)采訪了微軟亞洲研究院首席研發經理鄒欣,他對這些問題進行了解答。
為什麼要做 VFS For Git?
鄒欣回憶,在將代碼遷移到 GVFS 前,微軟曾使用多個主要的代碼管理平台,包括 SLM, Source Depot (上世紀 90 年代開始)、TFS 的源代碼控製 TFVC (2006 年開始)。直到 2017 年,微軟用三個月的時間完成代碼遷移到 Git,並推出了 Git 的變種,針對特大 repo 的 GVFS,並沿用至今。
GVFS 是一個 Git 虛擬文件係統,全稱為 Git Virtual File System,允許 Git 處理 TB 規模的代碼庫,比如 270 GB 的 Windows 代碼庫。GVFS 的 V 就是 Virtual(虛擬),它解決了Git 原來的設計缺陷(每個客戶端都有所有版本的代碼),而是用虛擬文件來代替那些本地用不著的文件, 大大減少了文件傳輸和本地機器存儲的壓力,讓微軟內部技術人員可以進行高效協作。
一段小插曲是,GVFS 從發布之初就引起了爭議,原因是 GNOME 項目的虛擬文件係統也叫 GVfs,而 GNOME 的 GVfs 最早發布於 2006 年,之後的教程、文檔、論壇都沿用這個名字。在微軟的 GVfs 項目發布後,很快超過了 Gnome GVfs 項目的搜索排名,且由於二者都與虛擬文件係統有關,導致用戶在查找信息時容易出現混淆。於是,很多開發者要求微軟改名,經過一番周折後,微軟終於在 2018 年將 "GVFS" 項目的名字改為 "VFS For Git"。
鄒欣表示,當時微軟將代碼遷移到 Git 主要是為了統一微軟百花齊放的內部工具,並沒有一個絕對好的選擇,領導團隊選擇了 Git, 但從現在的結果來看,這是一個比較好的選擇。如今,微軟仍然在對 Git 係列的工具做改進,也把改進回饋到 Git 社區。
現在,VFS For Git 已經是微軟內部統一的工具,同時被其他大型企業采用:https://vfsforgit.org/
VFS For Git 在 GitHub 上也已開源:
GitHub開源地址:https://github.com/microsoft/VFSForGit
單一自研代碼管理倉庫是最好的選擇嗎?除了微軟,我們發現,很多大公司的代碼托管已經向自己內部開發的版本控製係統遷移,比如 Google 就把使用不同語言編寫的超過 10 億文件,近百 TB 源代碼都存放在自行開發的版本管理係統 Piper 中,隻當項目開源且需要外部協作時,才會使用業界流行的 Git。(詳見文章《為何Google將幾十億行源代碼放在一個倉庫?》)
再如華為的內源(Inner Source)平台,承載著華為 1100 億源代碼、60 萬+ 代碼倉庫、每天 60 T 的下載容量、1 萬次/秒的高峰並發下載。
這是否說明在大公司中流行的單一倉庫就是最好的做法?這些公司在選擇采用代碼托管方式時需要考慮哪些不同的問題?
鄒欣對 AI科技大本營進行解釋,在他看來,用 GVFS 也可以創建各種獨立的倉庫。用一套工具有利於公司內部進行代碼共享,讓人員流動、代碼複審、改進工具變得更簡單,效率提高。
其次,大公司有很大量的代碼,很長的曆史和很多工具,如果貿然選擇一個新工具就會出現以下問題:
a) 一些市麵上的工具並不是為大規模代碼設計的,處理不了大量代碼, 我們以前用第三方的代碼分析工具, 結果處理 Office 的代碼的時候,自己崩潰了,因為 Office 的代碼量太大,這個工具的開發者沒有為如此大的代碼設計軟件。
b) 很多工具在曆史中不斷演化, 有自己獨特的特點,很多和企業內部的某些特殊需求有關,外部工具很難都實現這樣的功能。
很多工具聯合在一起,會形成了一個工具的生態,但如果隻改變一個工具,讓其他的工具變得不兼容, 那整個團隊的很多工作流就會出現問題。
此外,鄒欣表示,代碼托管與 AI 結合是未來發展方向。例如,這種結合會告訴你昨天晚上簽入代碼有問題, 或者簽入代碼和某個其他團隊的代碼相似,建議重用。或者告訴你簽入的代碼是從網上拷貝來的, 而且把原來代碼中的 bug 也拷貝過來了。
最後,AI 科技大本營引用此前微軟雲開發服務副總裁 Brian Harry 於 2017 年發表的一篇博文內容,在微軟推出 VFS For Git 三個月後,他分享了該平台的更多細節及其未來目標,包括擴大開放源代碼並改善其在 Microsoft 上的運行表現,想要了解 VFS For Git 更詳細的信息,不妨仔細研讀一下這篇文章:


標題為 每日檢出量


相關鏈接:
https://devblogs.microsoft.com/bharry/the-largest-git-repo-on-the-planet/
(*本文為 AI科技大本營整理文章,轉載請微信聯係 1092722531)
◆
◆
2019 中國大數據技術大會(BDTC)再度來襲!豪華主席陣容及百位技術專家齊聚,15 場精選專題技術和行業論壇,超強幹貨+技術剖析+行業實踐立體解讀,深入解析熱門技術在行業中的實踐落地。
相關資訊
最新熱門應用
比特牛交易所官網app蘋果版
其它軟件26.64MB
下載
火bi交易所
其它軟件175MB
下載
比特兒交易平台app安卓手機
其它軟件292.97MB
下載
歐意交易所官網安卓版
其它軟件397.1MB
下載
歐意app官網
其它軟件397.1MB
下載
bitcoke交易所
其它軟件287.27 MB
下載
比特兒交易所app安卓版
其它軟件292.97MB
下載
幣咖交易所官網
其它軟件86.26MB
下載
bafeex交易所app
其它軟件28.5MB
下載
必勝交易所
其它軟件52.2 MB
下載