微软不仅仅是已经成为了开放源代码的热心用户,而且正在使用Git版本控制系统来构建Windows。专有软件开发的一个典型的例子就是依靠开放源代码创建其Windows操作系统。
几乎所有的微软Windows工程师现在都在使用开源程序Git来构建Windows
其实,早在2013年,微软就已经宣布了其向Visual Studio开发工具套件和Team Foundation应用程序生命周期管理技术添加Git支持的路径图。同年晚些时候,微软技术研究员和TFS领导者Brian Harry宣布,微软将支持Git作为其分布式源代码控制平台。
但如同Harry在当时的博客文章中所说的,“我们越多地注视它,它看起来就越像是正确的事情。”
随着岁月的流逝,微软甚至对Git作出了重要的开放源代码贡献。在2017年,微软根据MIT License开放了Git Virtual File System(Git虚拟文件系统)。 GVFS使微软的产品团队能够扩展Git客户端来处理其庞大的源代码回收。
从那时起,微软开始移植所有的Windows代码到Git和GVFS。这项工作现在已经基本完成了,而微软正在享受其开放源代码创造的这个星球上最大的Git repo成果。
Harry写道:“在过去的3个月中,我们已经基本上完成了向微软的Windows团队推出Git / GVFS。”这可不是一件小事。“Windows代码库大约是3.5M的文件,当进入Git repo时,结果就变成了约300GB的备份。”
并且写道,“Windows团队约有4000名工程师,440个分支机构每天在工程系统中平均产生1760‘实验室’,还有成千上万个拖拽请求认证。所有三个维度(文件数、repo大小和活动)独立来看,都面临着令人生畏的规模方面的挑战,这些因素结合在一起让创造一个伟大体验变成令人难以置信的挑战。”
Harry承认这是一个可怕的经历。“第一次也是最大的一次跳跃发生在3月22日,当时我们面向约2000名工程师的Windows OneCore团队推出,这个2000名工程师星期五在Source Depot上工作,周末回到了家,周一早上回来上班的时候就要面对基于Git的新体验了。我的团队中的员工整个周末都在提心吊胆,祈祷这些工程师不会到星期一发现自己无法完成任何工作,因而将一腔怒火发泄到我们头上。坦率地说,令我吃惊的是,工作进展非常顺利,工程师们从第一天开始就卓有成效。”
事情并不是一帆风顺的。“我们发现第一周我们的UI提取请求和合并冲突解决方案根本没有扩展到这么大的变化,我们不得不争夺虚拟化列表并逐步获取数据,所以UI不会挂起。我们在几天内解决了这个问题,整体而言,这一周的情绪好于我们预期。”
今天,几乎所有的Windows开发人员都在使用Git。在接下来的几个月中,最后的500位程序员将迁至Git。Harry表示,“系统运行的规模真的很棒,让我们来看一些数字吧。”
- Ÿ 在过去4个月中,该repo的历史上有超过25万次可达成的Git承诺。
- Ÿ 每天8421次(平均)推送
- Ÿ 每个工作日(平均)有2500份拖拽请求,有6600名评论者
- Ÿ 4352个活跃主题分支
- Ÿ 每天有1760个官方构建
微软继续调整GVFS供远程使用。Harry解释说:“Windows Team Services帐户位于美国西海岸的Azure数据中心……80%的Windows工程师克隆时间为127秒。由于Windows的工程师有很大比例来自雷德蒙德,所以这个数字是由他们主宰的。”
“我们从北卡罗莱纳州的办公室(这个地点更远而且网络的带宽要低得多)进行了测试。从北卡罗莱纳州不使用代理服务器进行了一次克隆差不多用了25分钟。配置了一个代理的情况下,用了70秒(比在雷德蒙德快,因为雷德蒙德的团队不使用代理,而且他们必须通过互联网去到数百英里外的Azure数据中心)。70秒和几乎25分钟对比改善了95%。”
毕竟,GVFS是一个开放源代码项目,欢迎你的试用。您所需要做的只是下载并安装它,创建一个具有Git repo的Visual Studio Team Services帐户,这对你是件好事。其他Git程序包含了Atlassian SourceTree和Git Tower。
具有讽刺意味的是,目前还没有支持GVFS的Linux Git客户端,但是内部微软支持Linux和Mac支持。微软程序员经理Saeed Noursalehi在GVFS错误列表中写道:“是的,我们绝对希望支持Mac和Linux,而且我们正在寻找具有这些平台上的文件系统专业技能的人。”
Linux和Git的创造者Linus Torvalds曾经说过:“如果微软曾经为Linux提供应用程序,那就意味着我赢了”。我认为微软使用Git创建Windows可以被视作是一种胜利。
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。