Git 2.18版本发布:支持Git协议v2,提升性能
2019独角兽企业重金招聘Python工程师标准>>>
Git 2.18版本发布:支持Git协议v2,提升性能Git 2.18版本发布:支持Git协议v2,提升性能 新版本协议的主要驱动力是使 Git 服务端能够对各种 ref(分支与 tag)进行过滤操作。
这就意味着,Git 服务器无需将代码库中所有的 ref 一次性发送给客户端,再由客户端进行过滤。在大型的代码库中可能会存在不计其数的 ref,即使某些 ref 是客户端无需使用的,也不得不加载多达数个 MB 的 ref 数据。在使用 v2 协议之后,Git 服务器将根据客户端所需的操作类型,对 ref 进行过滤之后再将列表发送至客户端。Williams 举了一个例子,如果开发者所更新的分支仅比其远程分支落后几个提交,或是仅仅检查本地分支是否已更新,则完全没有必要在服务端传递整个 ref 列表,这对于时间和带宽都是一种浪费。Williams 表示,基于 Google 内部对协议 v2的使用,在访问例如 Chrome 这种包含了超过50万个分支和 tag 的大型仓库时,比起使用 v1 协议可达到三倍速以上。此外,通过使用新版本协议,更便于实现某些新的特性,例如按需选取 ref,以及拉取和推送 symref 等等。
支持协议 v2 的 Git 客户端仍然可以与尚未支持 v2 的旧版本服务端进行通信。这要感谢当初在设计时决定通过一个独立的通道发送 v2 所必须的额外信息。旧版本的服务端会直接忽略这个额外的通道,并返回 ref 的完整列表。
为了让开发者能够自行选择协议的版本,Git 现在添加了一个新的 -c 命令行选项,如以下示例:
git -c protocol.version=2 ls-remote 如果希望默认使用 v2 协议,可以修改 Git 的配置:
git config --global protocol.version=2 Git 2.18 中的另一个新特性是通过序列化的 commit graph 改善性能。简单来说,就是新版本的 Git 可以将 commit graph 的结构保存在某个文件中,并附加一些额外的元数据,以加速图形的加载。在进行获取列表,对提交历史进行过滤,以及计算合并的 base 等操作时,会表现得非常高效。这项功能是由微软的团队所实现的,该团队的成员 Derrick Stole 表示,对于大型代码库,例如 Linux kernel 或 Git 本身的代码库进行这类操作时,速度可提升 75–99%。Git 的 commit graph 仍然是一项处于实验性阶段的功能,因为某些 Git 特性无法很好地与 commit graph 相配合,例如浅克隆、对象替换,以及 commit graft 等等。如果不打算使用这些特性,可以通过运行 git config core.commitGraph true 命令启用 commit graph。
读者可在官方发布说明中了解 Git 2.18 的完整特性。
查看英文原文:Git 2.18 Adds Support for Git Protocol Version 2
原文来自:https://www.linuxidc.com/Linux/2018-07/153075.htm
本文地址:https://www.linuxprobe.com/git-2-18-git-v2.html编辑:周晓雪,审核员:逄增宝
转载于:https://my.oschina.net/u/3308739/blog/1860919
Git 2.18版本发布:支持Git协议v2,提升性能相关推荐
- 罗永浩回应做主播赚钱还债;360 否认裁员;Kubernetes 1.18 版本发布| 极客头条
整理 | 屠敏 头图 | CSDN 下载自视觉中国 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦, ...
- 【Git】Git 基础命令 ( 添加暂存文件 git add | 提交文件至版本库 git commit | 查看版本库状态 git status | 查询文件修改 git diff )
文章目录 一.添加暂存文件 git add 二.提交文件至版本库 git commit 三.查看版本库状态 git status 四.查询文件修改 git diff 一.添加暂存文件 git add ...
- CAP 2.3版本发布,支持 MongoDB
前言 经过2个月的调整及测试,CAP 2.3 版本终于发布了,这个版本最大的特性就是对于 MongoDB 的支持,感谢博客园团队的keke同学对于 MongoDB 支持所提供的 PR,相信随着博客园的 ...
- git gui 历史版本_这些Git命令都不会,还是不要去面试了
前言 以下,项目中经常使用的Git命令,汇总到这里以便与你能快速的学习和掌握Git命令,在文章最后有惊喜哟,一定要看到最后啊! 使用的 Git版本:git version 2.24.0 命令 git ...
- CTF之路:git项目本地版本库(.git文件夹)漏洞利用
1.题目 BP监听数据包里有一个flag,base64试了一下,假的. 试试扫描后台目录,用御剑后台扫描珍藏版OK 题干提示用linux,kali linux平台有gobuster(但是扯淡的是202 ...
- OpenStack JUNO版本发布——支持Spark和NFV
JUNO版本的重点更新内容: 包含了OpenStack Swift 2.0.0, 2.1.0, 2.2.0三个版本 存储策略 Keystone v3支持 服务器端账户到账户(account-to-ac ...
- 深蓝词库转换1.2版本发布——支持紫光拼音和拼音加加
之前推出了深蓝词库转换工具,受到大家的欢迎,有朋友陆陆续续来信,希望增加一些实用的功能,于是乎今天深蓝词库转换1.2推出.该版本主要实现了3个新功能: 1.支持紫光拼音输入法的词库导入导出. 紫光拼音 ...
- OpenStack Juno 版本发布——支持Spark和NFV[转]
作者:郑晨,OpenStack中国社区,转载请注明出处 美国时间2014年10月16日,OpenStack Juno版本正式发布,这是OpenStack开源云计算项目自2010年创立以来的第10个版本 ...
- git支持的协议大全
1git协议 git可以使用四种主要的协议来传输资料:本地协议.HTTP协议.SSH协议以及Git协议.在此,将讨论不同协议的使用场景. 1.1本地协议 1.1.1基本知识 最基本的就是 本地协议(L ...
最新文章
- 用基于模型和接口的T4来生成RESTful服务
- php long2ip,php ip2long和long2ip函数实现
- JavaScript由哪三部分组成呢?
- SAP CRM调查问卷的评分和图表显示功能介绍 1
- 过防火墙一句话php2017,dedeCMS友情链接getshell漏洞利用
- SpringBoot | 用 IDEA构建第一个SpringBoot工程
- 西瓜视频 iOS 播放器技术重构
- 对 粒子滤波算法原理 的介绍,通俗易懂
- SketchUp 7 linux,SketchUp各版本有哪些兼容性更改?
- 移动端H5上传图片裁剪
- 系统登录页面短信验证码方式登录实现
- 如何在未越狱iOS设备上安装IPA
- Android内核的编译和调试
- 电脑故障维修大全 [3]
- 黑暗堵神传服务器维护是什么意思,神域之光8月8日停服维护公告
- 云计算模型 按需自助服务_数据中心云计算的安全策略
- internet协议服务器在哪,网络协议在哪设置
- 生态系统服务(InVEST模型)土壤保持、水源涵养、氮磷输出、生态保护、生物多样性、碳固
- STM32F103C8T6、FreeModbus从站的设计与测试(2)——硬件设计
- 曲线运动与万有引力公式_高中物理概念+公式大全