Git 2.18引入的Git wire协议版本2现在在Git最新版本2.2

人工智能 2020-04-19 09:13:22

在Git 2.18中引入的Git wire协议版本2现在在Git最新版本2.26中默认使用。Git 2.26还改进了配置选项处理和稀疏签出等功能。

Git的wire协议定义了Git客户机和服务器之间的通信方式。新的Git协议版本通过支持引用的服务器端过滤来提高性能,这些引用不仅包括分支和标记,还包括诸如拉请求头等。采用Git协议版本2的客户机将能够指定它们感兴趣的引用,从而减少服务器发回的数据量。这与Git原始的协议行为形成了对比,在原始的协议行为中,服务器首先返回存储库中所有引用的列表,这可能需要许多兆字节。

根据谷歌工程师Brandon Williams在发布Git协议版本2时提供的数据,新协议比旧协议要快得多,特别是像Chrome这样的大型存储库,它包含了超过500k的引用。此外,威廉姆斯提到的,

协议v2还使从googlesource.com服务器发送的开销字节(非包文件)减少了8倍。这一改进主要是由于过滤了服务器对客户端表示感兴趣的引用的广告。

Taylor Blau在GitHub博客上指出,延迟将Git协议版本2作为默认版本的原因是给了开发人员足够的时间来捕获协议实现中的任何bug。有趣的是,Git协议版本2的设计使得任何实现它的客户端仍然可以与只支持旧Git协议的Git服务器进行通信。

和往常一样,对于Git版本,Git 2.26包含了一长串的性能改进、修复和新特性。例如,git克隆——递归子模块——单分支现在也将——单分支选项应用于子模块。

另外,git 2.25中引入的git稀疏签出命令有一个新的add子命令,可以用来一次向稀疏签出添加一个新的目录。稀疏签出在大型存储库中非常有用,在大型存储库中,您对整个repo内容不感兴趣,而只对它的一些子目录感兴趣。在Git 2.25中,要向稀疏签出中已经包含的目录添加新目录,需要在使用set子命令时列出所有目录。

值得一提的是对diff命令家族的改进,这使得git可以添加-p来更好地处理空白问题。

最后一点需要注意的是,Git 2.26使用Git配置—show-origin,使您更容易知道在哪里定义了一个默认选项,不管是在存储库、用户还是系统级。

如果您对这个版本的完整细节感兴趣,请不要错过Git 2.26官方发布说明。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢