Git - 啞HTTP協議



Git 啞HTTP 協議也稱為 舊版HTTP協議。它是透過HTTP提供Git倉庫的較舊且更簡單的方法。

Git被視為檔案的集合,這些檔案以靜態方式提供。

主要特性

1. 基於檔案系統 - 在啞HTTP中,檔案以靜態方式提供。提交、blob、樹等物件是透過一個接一個地從伺服器下載來檢索的。

2. 缺少Git特定邏輯 - 伺服器上不需要任何Git特定服務或命令。任何可用的Web伺服器,例如Apache,都可以將git目錄作為一組檔案提供。

3. 效率低下 - 由於伺服器不需要任何Git特定命令,使用者必須一次一個地執行克隆、拉取、獲取等操作。這使得整個過程相當緩慢。

4. 缺少智慧協商 - 會發生冗餘和不必要的物件下載,因為啞HTTP不會與客戶端協商。

5. 只讀 - 啞HTTP是隻讀的。它允許你克隆、拉取和獲取倉庫,但你不能向伺服器推送任何內容。

  • 在啞HTTP中,Web伺服器直接將原始Git倉庫作為檔案提供。

  • 為了設定啞HTTP,必須在HTTP文件根目錄下安裝一個裸Git倉庫,並且必須設定一個post-update鉤子來處理倉庫更新。

  • 啟用後,任何有權訪問託管它的Web伺服器的使用者都可以使用啞HTTP克隆倉庫。

  • 雖然它缺乏智慧HTTP的複雜功能,但啞HTTP使透過HTTP進行的Git操作更簡單、更易於訪問。

工作原理?

克隆或獲取倉庫時,會發出一系列HTTP請求。

  • 來自.git/objects/目錄的單個物件。

  • 來自.git/refs的引用資訊。

  • 來自.git/objects/pack的Pack檔案。

由於啞HTTP中的每個物件都被視為並下載為單獨的HTTP請求,因此整體效能較慢。

要透過HTTP啟用對我們的Git倉庫的讀取訪問,請按照以下步驟操作

cd /var/www/htdocs/
git clone --bare /path/to/git_project gitproject.git
cd gitproject.git
mv hooks/post-update.sample hooks/post-update
chmod a+x hooks/post-update

Git的預設post-update鉤子執行git update-server-info以保持HTTP獲取和克隆正常工作。

  • 當更改被推送到倉庫時,包括透過SSH,此鉤子會自動觸發。

  • 推送倉庫後,其他使用者可以透過執行類似git clone http://example.com/path/to/repo.git的命令來克隆它。

  • 透過檢索倉庫的完整副本,此命令確保所有相關元資料都是最新的,並且可以透過HTTP訪問。

廣告