时间: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 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。