繁体   English   中英

通过HTTP的Git克隆

[英]Git clone over HTTP

我对通过HTTP协议执行clone命令时Git客户端执行的分步工作流感兴趣。

假设您的Git存储库位于http://gitserver.com/gitrepo

当您通过HTTP协议进行Git克隆git clone http://gitserver.com/gitrepo ,客户端将访问以下URL:

GET  http://gitserver.com/gitrepo/info/refs?service=git-upload-pack
POST http://gitserver.com/gitrepo/git-upload-pack

为什么要提出这些要求? 接下来会做什么? 如何获取存储库中文件的完整列表?

git的旧版本不支持“ 智能HTTP协议 ”(例如sshgit使用的协议 )。 因此,先发送一个GET ,然后发送一个POST (取决于GET的结果)是保持对旧的和新的支持的一种优雅方法。 Git SCM章节“智能HTTP传输”所述:

新的客户端现在将发送带有额外GET参数的请求,旧服务器将简单地忽略该请求,但是运行智能CGI的服务器将识别并切换到类似于git协议上进行的对话的multi-POST模式。 完成这一系列的POST之后,服务器便知道客户端需要哪些对象,并可以构建自定义的packfile并将其流回。

另外,您可以在Pro-Git书的第9章“ 传输协议 ”部分中找到详细描述的哑协议和智能协议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM