Py学习  »  Git

又一神器来了!微软开源Scalar,有效地加速Git指令

开源最前线 • 4 年前 • 420 次点击  


开源最前线(ID:OpenSourceTop) 猿妹编译

链接:https://devblogs.microsoft.com/devops/introducing-scalar/


Git是一个分布式版本控制系统,因此默认情况下,每个Git存储库都具有整个历史记录中所有文件的副本。即使是中等规模的团队也可以创建数千个提交,每个月向存储库添加数百兆字节的数据。随着存储库的增长,Git可能难以管理所有数据。等待git status报告修改文件或git fetch获取最新数据就需要花费大量时间,开发人员的工作效率也会大大降低。

处理此类相关问题,微软使用的是使用VFS for Git(以前称为GVFS),Vit for Git使用虚拟化的文件系统来绕过许多有关存储库大小的限制,从而使Windows开发人员即使在存储库大规模的情况下也能正常使用Git。

在支持Vit for Git的同时,微软使用自定义跟踪系统并收集用户反馈,为Git客户端做出了一些贡献,包括提交图文件以及对git push等改进。

基于这些贡献以及对Git的其他近期改进,微软开发了一个项目,无需虚拟文件系统即可支持非常大的存储库——Scalar,无论存储库的大小如何,Scalar均可加速您的Git工作流程。



Scalar是一个.NET Core应用程序,支持Windows和macOS平台。Scalar通过设置建议的配置值和运行后台维护来最大化Git命令性能。如果你的存储库由Azure Repos托管,则可以使用GVFS协议克隆存储库。只要使用 Scalar 为体积最大的代码仓库进行注册,就能马上感受到 Git 执行速度大的幅提升。


Scalar快速入门

无论你使用什么服务来托管这些存储库,Scalar都会在现有存储库中加快Git命令运行速度,不信,你可以先体验一下,首先,请下载并安装最新的Scalar版本:


$ git version
git version 2.25.0.vfs.1.1

scalar version
scalar 20.01.165.7


在Git存储库的工作目录中,运行scalar register


scalar register
Successfully registered repo at '/Users/stolee/_git/git'


通过在Scalar中注册您的存储库,它将设置一些本地Git配置选项,然后开始运行后台维护。你可以通过检查.git/logs目录中的日志文件来查看Scalar的功能。例如,以下是微软某位工程师的存储库中包含Git源代码的日志部分:


[


    
2020-02-05 11:24:00.9711 -05:00] run (Start) {"Version":"20.01.165.7","EnlistmentRoot":"/Users/stolee/_git/git","Remote":"https://github.com/git/git","ObjectsEndpoint":"https://github.com/git/git","MaintenanceTask":"commit-graph","PackfileMaintenanceBatchSize":"","EnlistmentRootPathParameter":"/Users/stolee/_git/git","StartedByService":true,"Area":"run_Verb","Verb":"run"}
[2020-02-05 11:24:00.9797 -05:00] TryWriteGitCommitGraph (Start)
[2020-02-05 11:24:00.9806 -05:00] RunGitCommand (Start) {"Area":"CommitGraphStep","gitCommand":"WriteCommitGraph"}
[2020-02-05 11:24:01.2120 -05:00] RunGitCommand (Stop) {"DurationMs":229}
[2020-02-05 11:24:01.2297 -05:00] Information {"Message":"commit-graph list after write: graph-6928d994cab880ad7e30fa9f406d01bd0c7bbe6c.graph;graph-cf5d2151c2cfac0451686fafdd6de8bb9111d0d9.graph;commit-graph-chain;graph-0c676dd4d1ff904528c8563a39de8c0e3928ba01.graph;"}
[2020-02-05 11:24:01.2298 -05:00] RunGitCommand (Start) {"Area":"CommitGraphStep","gitCommand":"VerifyCommitGraph"}
[2020-02-05 11:24:01.2518 -05:00] RunGitCommand (Stop) {"DurationMs":21}
[2020-02-05 11:24:01.2518 -05:00] TryWriteGitCommitGraph (Stop) {"DurationMs":272}
[2020-02-05 11:24:01.2522 -05:00 ] run (Stop) {"DurationMs":333}


这些日志显示了在后台更新Git提交图的详细信息,你可以通过scalar run commit-graph命令查看。

你也可以使用scalar run命令,让Scalar在前台运行维护:


scalar run all
Setting recommended config settings...Succeeded
Fetching from remotes...Succeeded
Updating commit-graph...Succeeded
Cleaning up loose objects...Succeeded
Cleaning up pack-files...Succeeded


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

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



目前,Scalar在Github上标星140,仅有6个Fork(Github地址:https://github.com/microsoft/scalar



●编号920,输入编号直达本文

●输入m获取文章目录

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54983
 
420 次点击