github是否支持git wire protocol v2?

时间:2018-07-22 04:39:01

标签: git github

2 个答案:

答案 0 :(得分:5)

尚未是自2018年11月以来(请参阅下面的最后一节)。
我在How does Git's transfer protocol work中介绍的“ commit 9bfa0f9”中介绍了协议v2。

但是此新实现仅可追溯到2018年7月发布的Git 2.18。
在OP提出问题时,GitHub支持它还为时过早。

您可以使用以下方法进行检查:

# Linux
GIT_CURL_VERBOSE=2 git -c protocol.version=2 ls-remote --heads https://github.com/bower/bower.git

# Windows:
cmd /v /c "set GIT_CURL_VERBOSE=2&& git -c protocol.version=2 ls-remote --heads https://github.com/bower/bower.git"

第2版服务器将答复:

S: 200 OK
S: <Some headers>
S: ...
S:
S: 000eversion 2\n
S: <capability-advertisement>

7月,我看到了:

< HTTP/1.1 200 OK
< Server: GitHub Babel 2.0
< Content-Type: application/x-git-upload-pack-advertisement
< Transfer-Encoding: chunked
< Expires: Fri, 01 Jan 1980 00:00:00 GMT
< Pragma: no-cache
< Cache-Control: no-cache, max-age=0, must-revalidate
< Vary: Accept-Encoding
< X-GitHub-Request-Id: F361:7598:2BF8FEF:518E5FB:5B541C22
< X-Frame-Options: DENY

还没有000eversion 2\n


注意:({2018年7月),direction page of GitLab明确提到了适用于GitLab 11.2的“ Support Git协议版本2”(2018年8月22日):请参阅issue 46555

  

为了使GitLab服务器开始使用v2协议进行应答,我们需要做一些事情:

     
      
  • (必需)在gitlab-omnibus中的Gitaly服务器上安装Git 2.18
  •   
  • (必需)在工作马中传播Git-Protocol HTTP标头-> gitaly-> git:请参见gitlab-org/gitaly-proto merge request 208
  •   
  • (必需)在sshd中传播Git-Protocol环境变量-> gitlab-shell-> gitaly-> git
  •   
  • (可选)使用功能标记来控制v2广告,以便我们阻止它达到正常状态。这样,我们就可以控制v2协议是否处于活动状态。
  •   

谁将是第一个?


... From this comment,GitLab可能是第一个( GitLab 11.4,2018年11月

  

看来,我们是第一个支持此功能的大型Git主机!如果我们确认确实如此,我们应该确保在发布博客中提到:)

但目前仅HTTPS,尚未使用SSH(issue 46555

  

默认情况下,也不会启用通过SSH的Git v2(需要对SSHD进行更改,这需要我们进行记录)。

Issue 5244确认:

  

我可以在GitLab.com上通过HTTP看到它正在工作

# Original Git wire protocol
GIT_TRACE_PACKET=1 git -c protocol.version=0 ls-remote https://gitlab.com/gitlab-org/gitlab-ce.git master

# New Git wire protocol v2
GIT_TRACE_PACKET=1 git -c protocol.version=2 ls-remote https://gitlab.com/gitlab-org/gitlab-ce.git master

文档应遵循(gitlab-org/gitlab-ce merge-request 22227


...但是GitLab到GitHub的时间很晚:

11月。第八名:“ Git Wire Protocol v2 Support on GitHub”:

  

GitHub现在支持Git Wire协议的版本2。

     

新协议的直接好处是,它可以在服务器端启用引用过滤,这可以减少在大型存储库上完成** git fetch 之类的操作所需的字节数** 。 (sourcesourcesource,...)

     

要使用新协议,您的git客户端必须为2018年6月发布的2.18版或更高版本,并且必须在git客户端配置中指定协议版本:

git config --global protocol.version 2

有关更多信息,请参见“ Documentation/technical/protocol-v2.txt”。

答案 1 :(得分:1)