Apache-Httpd

Git 儲存庫伺服器 GIT_PROJECT_ROOT

  • June 7, 2021

我正在嘗試使用 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)變數的路徑。

引用自:https://unix.stackexchange.com/questions/549369