我们需要托管一系列 Mercurial 存储库。为了安全起见,我们将在 Apache 中使用 SSL 加密和 htpasswd 访问(必需)。我测试了一个存储库,并使用hgwebdir.cgi
和hgweb.config
来定义存储库路径以及allow_push
和deny_push
指令,但这种测试设置只会导致更多问题:
我看不出有任何方法可以为每个单独的存储库创建不同的允许/拒绝推送组?更重要的是,我看不出有任何方法可以这样做allow_pull
deny_pull
— 这非常重要,因为每个存储库都有一组不同的用户,这些用户应该被允许读取或写入。我们希望htpasswd
为所有用户保留一个文件。
答案1
我认为您可能忽略的是,在每个存储库内创建一个.hg/hgrc
文件是完全允许的,并且这些文件可以包含allow_push
和allow_read
条目。
答案2
Mercurial 服务器是托管多个 Mercurial 存储库的绝佳方式,每个存储库具有不同的访问要求。
如果你认为这不适合你,那么你应该看看访问控制列表Mercurial 的扩展。
答案3
我认为最好的方法allow_pull
是deny_pull
使用 htpasswd 文件设置 httpd 身份验证。您可以使用mod_auth
此处的任何机制来允许每个用户拉取或推送。
您可能还考虑使用 SSH 传输进行托管,因为这将使您能够更细粒度地控制访问,但设置会稍微复杂一些。
更多信息请见在 Mercurial wiki 中。