BT

您是否属于早期采用者或者创新人士?InfoQ正在努力为您设计更多新功能。了解更多

微软将所有的Windows代码库迁移到Git

| 作者 Abel Avram ,译者 薛命灯 发布于 2017年5月27日. 估计阅读时间: 不到一分钟 |

微软已经将他们的Windows代码库从Source Depot迁移到GVFS上。根据微软公司副总裁Brian Harry的描述,微软在多年前就决定要对他们的工程系统进行改造。虽然有些工具在整个公司里被大范围使用,但也有些工具对于个别团队来说很陌生,这导致了团队合作的困难以及工具和流程之间的差别,给他们带来了负面影响。大规模的微软工程团队覆盖了很多领域——版本控制、构建、发布、测试、遥测、静态分析、安全,等等。一下子解决这么多问题是非常困难的,所以他们决定先解决工作计划、代码控制和构建问题。

首先,让整个公司使用Visual Studio团队提供的服务,该团队提供所有必要的工具。在代码控制方面,公司的大部分团队在使用TFS,除了Windows和Office这两个大团队,他们仍然在使用Source Depot,这个版本控制系统是微软在二十一世纪早期引入的。将这两个团队迁移到一个完全不一样的系统,需要付出高昂的代价,没有人愿意卷入到这个漩涡中。

经过了几番讨论之后——TFVC、Source Depot、Git和Mercurial——微软决定尝试一下Git,看看它是否可能成为合适的解决方案。将小型或中型的代码仓库迁移到Git是没有问题的,但是在迁移大型代码仓库时遇到了严重的伸缩问题:

很少有公司能够有我们这么大规模的代码库。特别是Windows和Office的代码(当然还有其他的),它们占据了相当大的比例。数千名工程师,数百万个文件,数千台机器每天在做构建工作。说实话,这真的让人难以置信。说得更清楚一点,我这里所说的Windows,包括了PC、移动手机、服务器、HoloLens、Xbox和物联网等系统。Git是一种分布式版本控制系统(DVCS),它会将整个代码库和历史下载到本地。对于Windows代码库来说,这么做是很可笑的(如果这么做,我们也会被别人嘲笑)。TFVC和Source Depot已经针对大型代码库和团队做过优化,而Git从来没有被用于解决这样的问题(或者用在比这要大一个数量级的情况),很多人断定这么做是不可行的。

从数字方面来看,Windows代码库的大小有300GB左右,350万个文件,4000名工程师,每天在440个分支上有差不多1700次的构建。如果有人要克隆Git仓库,他必须把所有的东西都下载下来,整个过程非常缓慢。微软的解决方案是使用虚拟化技术,并引入了Git虚拟文件系统(GVFS)。GVFS会让人感觉所有的东西都在本地,但实际上,系统会监视用户的操作,只是在必要的时候才会通过网络将需要的文件下载到本地。使用虚拟文件系统驱动器需要对git.exe做一些更改,但他们不想对Git做出太多改动:

我们当然不想为Git创建一个分支,这样会带来灾难性的后果。我们也不希望我们所做出的改动会让社区无法从中获益。所以,我们尽可能地在Git的“庇护”下使用虚拟文件系统驱动器。

在三个月的时间内,微软将整个Windows团队从Source Depot迁移到由VS团队搭建的Git上。Harry说,它是目前世界上最大的Git代码仓库,而且非常的成功。在一开始,他们遇到了一些性能问题,经过调整之后解决了这些问题。内部的问卷调查结果显示,超过70%的工程师表示对Git“很满意”或者“比较满意”。

微软已经将GVFS开源,并邀请其他对它感兴趣的公司来使用它,并加入到贡献行列,将它作为超大型Git代码仓库的解决方案。

查看英文原文: Microsoft Has Moved the Windows Code Repo to Git

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT