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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word List 41

word List41 如果存在什么问题,欢迎批评指正!谢谢!

b树与b+树的区别_面试必考:B树、B树、B+树、B*树图文详解

B树B树又叫做二叉搜索树,倒状的树形结构。如下图所示特点:所有的非子夜节点最多拥有两个子节点树(左子树和右子树)。所有结点存储一个关键字。节点的左右儿子,左边是比该节点小的,右边是比该节点大的。缺点:因为二叉搜…

[蓝桥杯2016初赛]煤球数目-找规律

题目描述 有一堆煤球,堆成三角棱锥形。具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形)&…

.NET Core开发实战(第6课:作用域与对象释放行为)--学习笔记(上)

06 | 作用域与对象释放行为作用域主要由 IServiceScope 这个接口来承载对于实现 IDisposable 类的实例的对象,容器会负责对其生命周期进行管理,使用完毕之后,他会释放这些对象实现 IDisposable 接口类型的释放:1、容器只会负责由其…

python调试_Python调试坑

写python的人一般都不太看重调试, 因为这是一门解释性语言, 在哪出错会立马在解释器里提示出来。但是, 以上观点只适用于小的脚本或者项目。因为我在接触目前项目之前, 我一直都是这么做的。 对于一个大的项目来说, 调…

[蓝桥杯]字符串对比-模拟

题目描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:   1:两个字符串长度不等。比如 Beijing 和 Hebei   2:两个字符串不仅长度相等,而且相应位置上的字符…

word List 42

word List 42 如果存在什么问题,欢迎批评指正!谢谢!

利用AppMetrics对Web进行监控教程

一、基础准备1. 安装依赖这里可以通过nuget或使用命令行进行安装,具体需要安装的类库如下(注意版本):Install-Package App.Metrics.AspNetCore.Mvc -Version 2.0.0由于我们需要兼容Prometheus进行监控,所以我们还需要安…

matlab贝叶斯优化工具箱_经济学人的神器——BEAR(贝叶斯估计、分析和回归工具包)...

武林至尊,宝刀屠龙,号令天下,莫敢不从,倚天不出,谁与争锋。——金庸《倚天屠龙记》Bayesian Estimation, Analysis and Regression(简写为BEAR) Toolbox是欧央行(ECB)发布的一个综合 (面板)VAR工具箱,通过图…

[蓝桥杯2017决赛]平方十位数-枚举+set去重

题目描述 由0~9这10个数字不重复、不遗漏,可以组成很多10位数字。 这其中也有很多恰好是平方数(是某个数的平方)。 比如:1026753849,就是其中最小的一个平方数。 请你找出其中最大的一个平方数是多少? 输出…

计算机网络----wireshark抓包

计算机网络----wireshark抓包 抓包截图: 先了解,后期将细讲!!! 如果存在什么问题,欢迎批评指正!谢谢!

如何为.NETCore安装汉化包智能感知

引言具体不记得是在群里还是什么地方有人问过,.NETCore有没有汉化包,答案是有,目前微软已经为我们提供了.NETCore多种语言的语言包。下面看看如何安装与使用吧。本文介绍:如何安装这些下载的本地化版本。如何修改Visual Studio安装…

python对浏览器的常用操作_selenium+python基本操作(02)

前言 前一章节已经完成环境搭建,下面简单介绍下对浏览器的基本操作,让大家先了解一些简单的操作。这节主要介绍浏览器打开、刷新、前进、后退、截图、退出等功能。 1)打开浏览器 from selenium import webdriver #导入webdriver模块 driver …

[召集令]-Dijkstra的单源最短路径算法

2021.3.10 题目背景 墨家家主发出召集令&#xff0c;所有弟子得迅速到指定地点集合。 题目描述 给定一张地图&#xff0c;含有n个地点(n<10000)&#xff0c;地点从1开始编号&#xff0c;地图上还含有m条单向路(m<100000)连接着这些地点&#xff0c;墨家家主在1号位置&am…

word List 43

word List 43 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

小微技术团队的DevOps体系折腾之路(顺带发布52ABP新版本)

加个“星标★”&#xff0c;好文必达&#xff01;本想纯粹说下52ABP新版本发布&#xff0c;但是写着写着,过去的时间更多折腾的是DevOps体系的建设。这篇同样适用于小公司或者个人开发者脱离人肉运维的方法。说下52ABP&#xff0c;我们发布了新版本&#xff0c;版本号3.1.0&…

python递归创建目录_Node.js和Python使用递归查看目录文件和创建目录

1. 查看目录文件: 1.1 Node实现&#xff1a; let fs require(fs); let path require(path); let filePath path.resolve(D:); fileDisplay(filePath); function fileDisplay(filePath){ //根据文件路径读取文件&#xff0c;返回文件列表 fs.readdir(filePath,function(err,f…

管理学定律--彼得原理

彼得原理由美国管理学家劳伦斯彼得&#xff08;Laurence&#xff0e;J&#xff0e;Peter&#xff09;根据千百个有关组织中不能胜任的失败实例的分析而归纳出来&#xff0c;于1960年的一次研习会上提出。其具体内容是&#xff1a;“在一个等级制度中&#xff0c;每个员工趋向于…

word List44

word List44 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

C++用Prim算法实现无向图最小生成树

#include <iostream> using namespace std; #define INFINE 99999999//假装自己是无穷大 const int N 1010; int graph[N][N]; int vertexnum, arcnum; //lowcost[i]:表示以i为终点的边的最小权值, //当lowcost[i]0说明以i为终点的边的最小权值0, //也就是表示i点加入了…