我正在尝试使用 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