微软开源 Scalar,提升操作巨型 Git 仓库的速度

局长
 局长
发布于 2020年02月18日
收藏 32

拥抱开源,微软做了哪些努力?一大波开源技术成果将亮相微软在线技术峰会>>>

Git 属于分布式版本控制系统,默认情况下,每个 Git 仓库都具有整个历史记录的完整文件副本。即便是中等规模的开发团队也会产生数千个提交,每个月向仓库添加几百兆的数据。而随着仓库的占用空间增加,Git 难以管理所有数据,导致其运行越来越不顺畅。如此一来,开发者的时间就会被浪费在执行命令后等待反馈的操作上,如使用git status获取被修改的文件,或者使用git fetch将代码拉取至本地。由于等待的时间过长,开发者大多会倾向于切换至完成另外的任务,待命令执行完成后再切换回来。而这种来回切换任务的工作方式常常会降低开发者的生产力

对于处理巨型 Git 仓库的问题,微软显然是颇有经验。毕竟 Windows 操作系统的代码就是使用 Git 进行管理,为了克服上述的问题,微软开发了 VFS for Git(以前称为 GVFS),此项目使用虚拟文件系统绕过了许多仓库大小的限制,所以 Windows 开发者在如此庞大的项目前也能正常使用 Git。

114355_qm1b_2720166.jpg

在开发 Vit for Git 的同时,微软通过使用自定义跟踪系统和收集用户反馈来确定性能瓶颈。在此期间,微软也为 Git 客户端贡献了一些代码,包括提交树(Commit-Graph)功能以及对git push稀疏检出的改进。基于这些贡献以及其他许多对 Git 的近期改进,微软启动了一个项目 —— 无需虚拟文件系统即可支持巨型 Git 仓库。这就是 Scalar 的诞生背景。

Scalar 是一个使用 C# 编写的 .NET Core 应用程序,仅支持在 Windows 和 macOS 平台中运行。Scalar 通过设置所建议的配置值和运行后台维护来最大程度优化 Git 命令的性能。无论开发者使用什么服务来托管代码仓库,Scalar 都能有效地加速 Git 指令。微软提到,只要使用 Scalar 为体积最大的代码仓库进行注册,就能马上感受到 Git 执行速度大的幅提升。

对于 Scalar 的未来,微软希望将其贡献给 Git。微软计划把 Scalar 中加速 Git 的方法直接合并到 Git 项目中,最终实现让开发者不需要 Scalar,仅使用 Git 客户端就能获得这些性能改进。不过要达成这个目标,仍然有很长的路要走。微软提到,目前稀疏检出是 Scalar 用来解决仓库规模扩大的方法,尽管 Git 最近更新了稀疏检出功能,使得该功能更容易使用,但是要达到提供完整功能的阶段,还有一段距离。

Scalar 目前使用稀疏检出而非虚拟文件系统,因此在执行 Git 命令时会存在瓶颈,特别是git checkout 的速度不及 VFS for Git,微软正在研究并行版本的git checkout,以提高执行性能。微软提到,为了真正地扩展 Git 服务以满足成千上万的工程师的需求,并构建与中央服务器交互的机器,Git 需要提供类似于 GVFS 缓存服务器的概念。他们也表示计划很快在邮件列表中提出这个想法。

另外,目前 Git 客户端仓库之所以能顺畅地执行,是依赖定期执行的前台垃圾回收器,但微软提到,对于巨型仓库来说,这是不可行的方法。因此微软计划在 Git 客户端中加入某种形式的后台维护功能,类似git maintenance start命令,并像scalar register一样容易使用。

详细的使用说明请查看 https://devblogs.microsoft.com/devops/introducing-scalar

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:微软开源 Scalar,提升操作巨型 Git 仓库的速度
加载中

精彩评论

红薯片
红薯片
估计就弄了个原型版本,所以支持不完全。.net core本身是跨平台,除非用了什么linux不支持的技术,否则没有障碍
宇润-黑鬼sima
宇润-黑鬼sima
微软牛逼!牛逼!牛牛逼!
dhssingle
dhssingle
看一下 issue 不就知道了 https://github.com/microsoft/scalar/issues/323
dwingo
dwingo
那为什么mac能支持winform?
ori
ori
为啥不支持Linux

最新评论(13

我本无邪
我本无邪
好吧scala表示不认识它
开源中国首席罗纳尔多
开源中国首席罗纳尔多
请问阿里云好用还是腾讯云好用?性价比方面?
lightenvoy
lightenvoy
老多错误
dhssingle
dhssingle
看一下 issue 不就知道了 https://github.com/microsoft/scalar/issues/323
dwingo
dwingo
"Scalar 是一个使用 C# 编写的 .NET Core 应用程序,仅支持在 Windows 和 macOS 平台中运行。"
说明.Net Core的跨平台还不完善?
阿爆g
阿爆g
因为用的 winform啊 linux的UI 又没法和windows的UI通用
如果真实现了 linux写桌面程序 就可以很方便了 估计微软是不想弄 而不是做不到
dwingo
dwingo
那为什么mac能支持winform?
吾运昌隆
为什么要猜呢, 这个文章底下就有这个项目的主页, 主页里显眼的位置就有为什么没做linux版本. 简单的说就是工作量的问题, 团队需要评估有多少linux用户对这个项目有需求. 跟.net core跨平台完不完善没有一毛钱关系.
mymbrooks
mymbrooks
大家一起合作开发项目不是挺愉快的 不用搞那么对立
ori
ori
为啥不支持Linux
红薯片
红薯片
估计就弄了个原型版本,所以支持不完全。.net core本身是跨平台,除非用了什么linux不支持的技术,否则没有障碍
欧阳春晖
欧阳春晖
谁告诉你net是跨平台的,linux上net的实现都是基于mono的逆向解决方案
宇润-黑鬼sima
宇润-黑鬼sima
微软牛逼!牛逼!牛牛逼!
返回顶部
顶部