[英]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協議 ”(例如ssh
和git
使用的協議 )。 因此,先發送一個GET
,然后發送一個POST
(取決於GET
的結果)是保持對舊的和新的支持的一種優雅方法。 如Git SCM章節“智能HTTP傳輸”所述:
新的客戶端現在將發送帶有額外GET參數的請求,舊服務器將簡單地忽略該請求,但是運行智能CGI的服務器將識別並切換到類似於git協議上進行的對話的multi-POST模式。 完成這一系列的POST之后,服務器便知道客戶端需要哪些對象,並可以構建自定義的packfile並將其流回。
另外,您可以在Pro-Git書的第9章“ 傳輸協議 ”部分中找到詳細描述的啞協議和智能協議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.