文档章节

Git 2.18版本发布:支持Git协议v2,提升性能

l
 linux-tao
发布于 07/22 14:42
字数 931
阅读 0
收藏 0
Git

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编辑:周晓雪,审核员:逄增宝

© 著作权归作者所有

共有 人打赏支持
l
粉丝 12
博文 624
码字总数 704076
作品 0
深圳
运维
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
07/22
0
0
Git 协议 v2 正式推出,带来显著的性能提升

分布式版本控制系统 Git 将迎来巨大的性能提升 —— Git 协议 v2 已正式推出。 来自 Git 团队的 Brandon Williams 今天在博客上宣布推出了 Git 协议的 v2 版本(Git protocol version 2),v2 ...

局长
05/19
0
41
Adata 1.1 发布,多语言的序列化库

Adata 1.1发布,调整lua的模块实现,大幅提升性能 http://git.oschina.net/lordoffox/adata AData是一个多语言的序列化库,和protocol buffer类似。 目前支持C++/Lua(5.1,5.2,5.3,jit)/...

lordoffox
2015/03/12
2.7K
5
reposurgeon 2.18 发布,版本控制历史记录编辑

reposurgeon 2.18 修复了 Subversion 资料库的符号链接翻译问题,repodiffer 增加一个有用的文档化的返回值,增加 --treediff 选项到 repodiffer。 reposurgeon是一种工具,用于编辑版本控制存...

oschina
2013/02/04
276
0
Git 1.8.0 发布,分布式版本控制系统

Git 1.8.0 发布了,在下一个版本中我们将修改 git push 命令的行为,这个版本还没有修改。该版本包含众多的改进,例如 git svn 命令支持 SVN 1.7,性能方面的提升等等,详细改进内容请看发行...

oschina
2012/10/22
6.6K
29

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue+element-ui操作删除(单行和批量删除)

页面展示: <template><!-- 表格内容 --><el-table :data="packData" border style="width: 100%" ref="multipleTable" @selection-change="handleSelectionChange"><el-tab......

琴妹
17分钟前
0
0
基于vue(element ui) + ssm + shiro 的权限框架

zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目,网上有句话说,语言框架...

DarrenHu_吴邪
24分钟前
2
1
数据库水平切分(MyCat分片)

范围分片 io.mycat.route.function.AutoPartitionByLong 自动范围分片 Function名称:rang-long(配置文件默认) 枚举分片 io.mycat.route.function.PartitionByFileMap 枚举分片 Funtion名称...

这很耳东先生
25分钟前
0
0
读《HeadFirst设计模式》笔记之外观模式

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 举个栗子: 建了一个家庭影院,但是每次享受家庭影院时,你发现需要执行 将灯...

suyain
26分钟前
0
0
MongoDB分片配置

简单注解: mongos 路由进程, 应用程序接入mongos再查询到具体分片,监听端口默认27017 config server 路由表服务, 每一台都具有全部chunk的路由信息 shard为数据存储分片, 每一片都可以是...

LUIS1983
34分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部