時間:2019-10-20 來源:互聯網 瀏覽量:
編輯 | 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 場精選專題技術和行業論壇,超強幹貨+技術剖析+行業實踐立體解讀,深入解析熱門技術在行業中的實踐落地。