Git 存储库服务器 GIT_PROJECT_ROOT

Git 存储库服务器 GIT_PROJECT_ROOT

我正在尝试使用 Git SmartHTTP 和 Apache2 配置我自己的 git 存储库服务器。于是就跟着这些官方 git 手册中的说明。但在配置过程中,我不清楚该GIT_PROJECT_ROOT变量到底配置了什么:它是否将路径设置为网络服务器上的一个存储库,或者您可以将其值设置为包含所有存储库的文件夹路径。
这个变量还影响哪些其他事情?
问题在于,git官方手册中无论是SmartHTTP章节还是环境变量章节都没有任何描述或解释。

答案1

里面有一段描述git-http-后端手册。变量GIT_PROJECT_ROOT设置为所有存储库的父路径,类似于 ApacheDocumentRoot指令,它用于将 URL 路径转换为文件系统:

网址翻译

要确定存储库在磁盘上的位置,git http 后端PATH_INFO连接由 Web 服务器自动设置的环境变量和GIT_PROJECT_ROOT必须在 Web 服务器配置中手动设置的环境变量。如果GIT_PROJECT_ROOT没有设置,git http 后端读取PATH_TRANSLATED,这也是由网络服务器自动设置的。

例子

以下所有示例都映射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 脚本,其余部分被附加到应与 Git 存储库匹配的(或 DocumentRoot)变量foo/bar.git的路径。GIT_PROJECT_ROOT

相关内容