写点什么

Git 2.18 版本已支持 Git 协议 v2

  • 2018-07-06
  • 本文字数:1202 字

    阅读完需:约 4 分钟

在最新的官方 Git 客户端正式版 2.18 中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。

在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周, Git 协议 v2 刚刚合并至 Git 的 master 主干分支。Git wire 协议定义了 Git 客户端与服务端如何对于 clone、fetch 和 push 等操作进行通信。按 Williams 所说,新版本协议的目标是提升性能,并使其能够更好的适应未来的改进。

新版本协议的主要驱动力是使 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 命令行选项,如以下示例:

复制代码
<pre data-anchor-id="67oe">

git -c protocol.version=2 ls-remote

复制代码

如果希望默认使用 v2 协议,可以修改 Git 的配置:

复制代码
<pre data-anchor-id="xad9">

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

2018-07-06 10:482485
用户头像

发布了 428 篇内容, 共 197.2 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

Redis 实现高效任务队列:异步队列与延迟队列详解

左诗右码

HyperWorks使用六面体和三棱柱单元进行实体网格剖分

智造软件

CAE软件 Hypermesh hyperworks

云消息队列 Kafka 版全面升级:经济、弹性、稳定,成本比自建最多降低 82%

阿里巴巴云原生

kafka 阿里云 云原生

大数据行业数据多样性体现在哪里?用堡垒机可以保障大数据安全吗?

行云管家

大数据 数据安全 数据运维

大模型时代,云原生数据底座的创新和实践

百度Geek说

大数据 百度 智能云

Domino 流计算快速上手 - 1. 扩维

YMatrix 超融合数据库

数据库 数据仓库 YMatrix

速卖通商品详情API实战应用:调用实例与解析

代码忍者

API 接口 pinduoduo API

软件项目中的合作伙伴和供应商:应对挑战的策略

易成研发中心

项目管理 程序员 软件项目管理

如何利用1688API:通过商品ID与URL一键接入,高效采集商品详情页实时数据指南

代码忍者

API 接口 pinduoduo API

缓存之美——如何选择合适的本地缓存?

京东科技开发者

【CAP评测有奖】邀您共探 AI 应用开发新趋势,赢取多重好礼!

阿里巴巴云原生

阿里云 云原生 CAP

字节豆包发布新模型,AI 一句话 P 图;Google 正式推出 Vids,简单提示即可生成视频演示丨 RTE 开发者日报

声网

数据资产入表,如何接住这“泼天的富贵”?

奇点云

《Django 5 By Example》阅读笔记:p17-p53

codists

Python django

探索微店API接口:如何获取并解析商品详情数据的Json格式指南

代码忍者

API 接口 pinduoduo API

万界星空科技轮胎行业MES系统数字化解决方案

万界星空科技

mes 万界星空科技mes 汽车轮胎行业 轮胎mes

CST教程——如何理解CMA中计算MWC时的MS

思茂信息

cst cst使用教程 CST软件

数据湖系列之四 | 数据湖存储加速方案的发展和对比分析

Baidu AICLOUD

分布式缓存 数据湖加速 云原生文件系统

UML软件建模器 StarUML for Mac v6.3.0 激活版

Rose

GitLab 升级如何查看升级路径?

极狐GitLab

Java定时任务大盘点:发工资也能“指日可待”

京东科技开发者

脑机接口、嵌入式 AI 、工业级 MR、空间视频和下一代 XR 浏览器丨RTE2024 空间计算和新硬件专场回顾

声网

常德等保测评机构有哪些?电话多少?

行云管家

等保 等保测评 常德

RAG三件套运行的新选择 - GPUStack

SEAL安全

大模型 LLM GenAI dify GPU 集群

数据资产入表,如何接住这“泼天的富贵”?

奇点云

数据资产入表

数据资产入表、全面激活数据要素潜能,赋能企业发掘崭新价值!

奇点云

B端体验深耕-洞察用户需求,打造心有灵犀的使用体验

京东科技开发者

云真机测试

测试人

软件测试

火山引擎数据飞轮模式下的线上营销:内容产出更智能、人群触达更精准

字节跳动数据平台

大模型 数据飞轮

从0到1的突破,用户如何借助我们的软件实现企业增长?

天津汇柏科技有限公司

低代码 企业

Git 2.18版本已支持Git协议v2_Git_Sergio De Simone_InfoQ精选文章