我目前正在尝试设置一个 GIT 存储库服务器,以便我们可以从 SVN 切换到 GIT。我已经涵盖了几乎所有内容,但留下了一个问题。
当前设置如下:
- 所有开发人员(和非开发人员)都有一个用户帐户和正确的组,因为服务器是 NIS 客户端
- 所有回购都在 /var/git/
- 所有拉/推都是通过 ssh 完成的
到目前为止,这工作得很好,并且消除了对 gitosis 或 gitolite 的需要。
因为我想对我设置的 gitweb 包括 pathinfo 的存储库有一个可浏览的概述。因为存储库是私有的,所以我已经通过 Perl AuthenNIS 设置了身份验证并且这可以工作,但是在这里我遇到了一个问题。
不希望所有开发人员都可以访问所有存储库,但 gitweb 只显示它(apache 用户)可以读取的每个存储库。
所以我的问题是:是否可以让 gitweb 只显示当前登录用户可以访问的 GIT 存储库?
可能的解决方案:
- 通过 .htaccess 进行进一步的访问控制。pathinfo 将启用此功能,但不会阻止通过非路径信息 URL 访问 repo(例如 /repo.git/ 不起作用,但 /gitweb.cgi?p=repo.git 会)
- 设置完整的 gitosis/gitolite 环境并将其集成到 gitweb(本质上是this)。我想防止这种情况,因为开销是不可取的
- 使 gitweb 以经过身份验证的 HTTP 用户身份运行。这将解决所有访问控制问题,但我不知道该怎么做
- gitweb 的
$export_auth_hook
结合$cgi->remote_user
似乎很有希望,但我对 perl 的理解太有限而无法使用它(钩子需要在显示/导出之前验证用户是否有权访问 repo 目录)
有没有人知道如何使 3 或 4 工作或有其他解决方案?