Git 属于分布式版本控制系统,默认情况下,每个 Git 仓库都具有整个历史记录的完整文件副本。即便是中等规模的开发团队也会产生数千个提交,每个月向仓库添加几百兆的数据。

而随着仓库的占用空间增加,Git 难以管理所有数据,导致其运行越来越不顺畅。如此一来,开发者的时间就会被浪费在执行命令后等待反馈的操作上,如使用git status获取被修改的文件,或者使用git fetch将代码拉取至本地。

由于等待的时间过长,开发者大多会倾向于切换至完成另外的任务,待命令执行完成后再切换回来。而这种来回切换任务的工作方式常常会降低开发者的生产力。

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

在开发 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

©著作权归作者所有:来自51CTO博客作者mob604756fb8908的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 微软推出全新的Windows 10系统图标
  2. 有人梦到国自然,我居然梦到看文献!
  3. winget install,微软开源Windows软件包管理器
  4. 微软开源其上古编程语言GW-BASIC
  5. 技术造成歧视?微软等巨头不为警方提供面部识别
  6. 慕尼黑们拥抱Linux,微软一直在被抛弃的路上
  7. 微软在ARM上成功移植OpenJDK for Windows 10
  8. 苹果Mac查看多张图片的方法
  9. React转微信小程序:构思

随机推荐

  1. 在XPath查询中指定轴(转自MSSQL手册)
  2. 使用XSLT将XML数据转换成HTML
  3. Google Sitemap原来支持普通Feed
  4. 使用带批注的 XDR 架构创建 XML 视图
  5. 利用xslt对xml进行缩进格式化处理
  6. 用XsltArgumentList实现xsl的参数调用
  7. 使用 XML 模板 (MSSQL手册)
  8. 多级联动下拉选择框,动态获取下一级
  9. 将一个图片以二进制值的形式存入Xml文件
  10. 新兴XML处理方法VTD-XML介绍