博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git 2.18版本已支持Git协议v2
阅读量:6995 次
发布时间:2019-06-27

本文共 1301 字,大约阅读时间需要 4 分钟。

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

\\

在 Git 的核心团队成员 前几周, 刚刚合并至 Git 的 master 主干分支。Git 定义了 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 协议可达到三倍速以上。此外,通过使用新版本协议,更便于实现某些新的特性,例如,以及 等等。

\\

支持协议 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 中的另一个新特性是通过 改善性能。简单来说,就是新版本的 Git 可以将 commit graph 的结构保存在某个文件中,并附加一些额外的元数据,以加速图形的加载。在进行获取列表,对提交历史进行过滤,以及计算合并的 base 等操作时,会表现得非常高效。这项功能是由微软的团队所实现的,该团队的成员  表示,。Git 的 commit graph 仍然是一项处于实验性阶段的功能,因为某些 Git 特性无法很好地与 commit graph 相配合,例如浅克隆、对象替换,以及 commit graft 等等。如果不打算使用这些特性,可以通过运行 git config core.commitGraph true 命令启用 commit graph。

\\

读者可在中了解 Git 2.18 的完整特性。

\\

查看英文原文:

转载地址:http://ebdvl.baihongyu.com/

你可能感兴趣的文章
3000本IT书籍下载地址
查看>>
VS2017 WinFrom打包设置与教程
查看>>
Cannot change version of project facet Dynamic Web Module to 3.0 requires Java 1.6 or newer 解决方案...
查看>>
数据库修改一个表中的字段值等于另一个表字段值
查看>>
mongodb pymongo.errors.CursorNotFound: Cursor not found, cursor id: 82792803897
查看>>
《Spring Security3》第四章第三部分翻译下(密码加salt)
查看>>
用户管理 之 用户(User)和用户组(Group)配置文件详解
查看>>
ubuntu 下安装查看pdf的工具
查看>>
UIApplication深入研究
查看>>
解决Ubuntu 12.04更新后 ”系统的网络服务与此版本的网络管理器不兼容“问题
查看>>
display inline inline-block block区别
查看>>
数据库触发器
查看>>
OpenWrt资料汇总
查看>>
cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)
查看>>
python变量
查看>>
牛顿迭代法
查看>>
mac os 中类似于Linux的yum工具,或ubuntu的apt-get工具Homebrew
查看>>
一种美-无法言语
查看>>
Unity场景渲染相关实现的猜想
查看>>
面向对象编程(十四)——面向对象三大特性之多态①
查看>>