簡體   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