Git 儲存庫伺服器 GIT_PROJECT_ROOT
我正在嘗試使用 Git SmartHTTP 和 Apache2 配置我自己的 git 儲存庫伺服器。因此,請遵循官方 git 手冊中的這些說明。但是在配置過程中,我不清楚該
GIT_PROJECT_ROOT
變數究竟配置了什麼:它是否將路徑設置為網路伺服器上的一個儲存庫,或者您是否可以將其值設置為包含所有儲存庫的文件夾路徑。這個變數還會影響其他什麼?
問題是官方的 git 手冊中無論是 SmartHTTP 章節還是環境變數章節都沒有描述或解釋。
git-http-backend 手冊中有描述。變數
GIT_PROJECT_ROOT
設置為所有儲存庫的父路徑,類似於 ApacheDocumentRoot
指令,它用於將 URL 路徑轉換為文件系統:網址翻譯
為了確定儲存庫在磁碟上的位置,git http-backend連接環境變數
PATH_INFO
,由 Web 伺服器自動設置,GIT_PROJECT_ROOT
並且必須在 Web 伺服器配置中手動設置。如果GIT_PROJECT_ROOT
未設置,則git http-backend讀取PATH_TRANSLATED
,這也是由 Web 伺服器自動設置的。例子
以下所有範例都映射
http://$hostname/git/foo/bar.git
到/var/www/git/foo/bar.git
.阿帕奇 2.x
確保 mod_cgi、mod_alias 和 mod_env 已啟用,
GIT_PROJECT_ROOT
正確設置(或 DocumentRoot),並為 CGI 創建一個 ScriptAlias:SetEnv GIT_PROJECT_ROOT /var/www/git SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
因此,其中的
/git/
部分http://hostname/git/foo/bar.git
映射到 git-http-backend CGI 腳本,其餘部分foo/bar.git
附加到GIT_PROJECT_ROOT
應該與 Git 儲存庫匹配的(或 DocumentRoot)變數的路徑。