Gitweb 忽略
SetEnv GIT_PROJECT_ROOT /path/to/user/git
即使它适用于git。我可以克隆并推送到我的存储库。如果我启用 gitweb,每个用户都可以看到所有用户存储库以及里面的代码。
如何为我的每个用户制作单独的 Gitweb“页面”?
这里的答案在于 gitweb.conf 文件中的 $per_request_config 变量(通常位于 /etc/gitweb.conf 中)
假设 /git/ 是您的 git 存储库的根目录,并且每个用户在该文件夹中都有一个目录,这将适用于您:
our $per_request_config = sub {
$projectroot = "/git/" . $cgi->remote_user;
};
您的 apache Vhost 配置可能如下所示:
<VirtualHost *:443>
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
SSLCertificateFile /ssl/mydomain.com.crt
SSLCertificateKeyFile /ssl/mydomain.com.key
DocumentRoot /git/user
ServerName user.mydomain.com
SetEnv GIT_PROJECT_ROOT /git/user
SetEnv GIT_HTTP_EXPORT_ALL
<Directory />
Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AuthType Basic
AuthName "Private Git Access"
AuthUserFile "/git/git-auth"
Require valid-user
AddHandler cgi-script .cgi
DirectoryIndex gitweb.cgi
</Directory>
# This pattern matches git operations and passes them to http-backend
ScriptAliasMatch "(?x)^/(.*/(HEAD | info/refs | objects/(info/[^/]+ | [0-9a-f]{2}/[0-9a-f]{38} | pack/pack-[0-9a-f]{40}\.(pack|idx)) | git-(upload|receive)-pack))$" /usr/libexec/git-core/git-http-backend/$1
</VirtualHost>
我发现这是我管理 git 和用户的最简单方法。
但是,如果您遵循更传统的模型,则可以链接到每个用户主目录中的文件夹“git”。
our $per_request_config = sub {
$projectroot = "/home/" . $cgi->remote_user . "/git/";
};