如何为每个用户制作单独的 Gitweb "页面"?



giitweb忽略

SetEnv GIT_PROJECT_ROOT /path/to/user/git

即使它对git有效。我可以克隆并推送到我的存储库。如果我启用giitweb,每个用户都可以看到所有的用户存储库,以及里面的代码。

如何为我的每个用户制作单独的giweb"页面"?

答案在gitweb.conf文件(通常位于/etc/gitweb.conf)中的$per_request_config变量

假设/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/";
};

最新更新