只想知道github服务器是否支持git wire protocol-v2? -https://opensource.googleblog.com/2018/05/introducing-git-protocol-version-2.html -https://github.com/git/git/blob/master/Documentation/technical/protocol-v2.txt
答案 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 之类的操作所需的字节数** 。 (source,source,source,...)
要使用新协议,您的git客户端必须为2018年6月发布的2.18版或更高版本,并且必须在git客户端配置中指定协议版本:
git config --global protocol.version 2
有关更多信息,请参见“ Documentation/technical/protocol-v2.txt
”。
答案 1 :(得分:1)