微软发布Scalar加速开发者操作大规模Git存储库

微软发布一个能加速Git工作流程的项目Scalar,Scalar是一个.NET Core应用程序,无论开发者使用的存储库大小,都能有效提升Git指令执行效率。Scalar中许多技术源自于微软VFS for Git项目,未来微软计划要把Scalar中的功能,直接贡献进Git项目。

Git是一个分布式版本控制系统,因此在默认情况下,每个Git存储库都具有历史记录的完整文件副本。微软提到,即便是中等规模的团队,可能也产生了数千次的提交,存储库每个月增加数百MB的文件,而随着存储库容量增加,Git运行可能越来越不顺畅。

而等待git status以回应修改的文件,或是用git fetch取得最新的数据,都变成浪耗时间的事,微软表示,当这些指令执行速度越来越慢,开发者就不会想等待,并且开始切换上下文,而上下文切换会伤害开发者的生产力。

微软内部有像是Windows操作系统这种超大型的存储库,为了克服这个问题,微软开发了VFS for Git,能够以虚拟化文件系统,绕过许多存储库大小的假设,使得Windows开发人员能以极具规模的方式使用Git。

在开发VFS for Git的时候,微软发现了一些性能瓶颈,因此对Git客户端做了一些改进,包括提交图(Commit-graph)文件、改进Git推送和稀疏签出(Sparse Checkout)等,基于这些贡献,微软进一步开发了新项目Scalar,在不需要虚拟文件系统下,就能支持非常大型的存储库。

Scalar本身是一个.NET Core应用程序,可以安装于Windows和macOS,Scalar通过设置建议配置值以及执行背景维护,以最大化Git指令的性能,无论开发者使用什么服务来托管存储库,Scalar都能有效的加速Git指令。微软提到,只要在Scalar中注册最大的存储库,就能马上感受到Git执行速度大幅提升。

微软接下来的计划,是要把Scalar中加速Git的方法,直接搬到Git项目中,最终目的是让开发者不需要Scalar,光使用Git客户端就能获得这些性能改进。不过,要完成这个目标,仍然有一大段路要走,微软提到,目前稀疏签出是Scalar用来应对规模扩张的方法,尽管Git最近更新稀疏签出功能,使得该功能更容易使用,但是要达完整功能的阶段,还有一段距离。

Scalar目前使用稀疏签出而非虚拟文件系统,因而在执行Git命令上存在瓶颈,特别是git checkout的速度不及VFS for Git,微软正在研究平行化git checkout,以提高执行性能。微软提到,要真正扩展Git规模服务数万名开发者,并且构建与中央服务器交互的机器,这需要类似缓存服务器的概念,微软很快就会在Git社群提出这个概念。

另外,目前Git客户端存储库之所以能顺畅的执行,是依赖定期执行的前台垃圾回收器,但微软提到,对于大型存储库来说,这是不可行的方法,因此微软计划要在Git客户端中加入某种形式的后台维护功能,以类似git maintenance start指令,提供像是Scalar注册器般的功能。