控制通过 hgwebdir.cgi 提供的多个 mercurial 存储库的克隆访问

控制通过 hgwebdir.cgi 提供的多个 mercurial 存储库的克隆访问

可能重复:
使用 Mercurial 和 Apache 进行读取访问控制

我正在尝试为我的客户托管多个 Mercurial 存储库。我需要分别控制对每个存储库的访问 — 不仅是推送访问,还有克隆访问。

我有一.htaccess组需要全局身份验证的内容:

AuthUserFile /path/to/hgweb.passwd
AuthGroupFile /dev/null
AuthName "Chris Lawlor Client Mercurial Repositories"
AuthType Basic
<Limit GET POST PUT>
    Require valid-user
</Limit>
<FilesMatch "\.(htaccess|passwd|config|bak)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

然后在每个存储库中,我都有一个.hg/hgrc需要有效用户的文件

[web]
allow_push = <comma seperated user list> 

这几乎满足了我的需求。问题是我需要添加全部我的客户hgweb.passwd,这让他们可以克隆访问全部的存储库。

我能想到的唯一解决方案是再提交.htaccess一份.passwd每个存储库。但我真的不想这样做,这似乎有点复杂。我已经可以使用该设置在存储库hgrc文件中为每个存储库指定授权用户列表allow_push。如果也有一个allow_clone设置就好了……

我找到的所有文档hgwebdir.cgi都不完整。我读过:

以及其他。我还没有找到完整的设置列表hgrc

我猜这更多的是一个 Apache 问题而不是 Mercurial 问题。

除非我能找到更好的方法,否则我将为每个 repo 使用单独的文件.htaccess.passwd

这是 Webfaction 上的虚拟主机(如果有必要的话)——设置大致如下在他们的文档中描述

编辑:看起来客户端存储库中的所有文件都将被忽略。我认为这是因为所有请求都由webroot.htaccess处理,因此只有webroot 中的才会生效。hgwebdir.cgi.htaccess

答案1

我在hgrc(5) 手册页

允许读取

如果用户尚未因 的内容而被拒绝访问存储库deny_read,则此列表将确定是否授予用户访问存储库的权限。如果此列表不为空,并且用户未经身份验证或不在列表中(以空格或 分隔,),则拒绝用户访问。如果列表为空或未设置,则默认允许所有用户访问。设置allow_read为特殊值相当于未设置(即允许所有用户访问)。列表之后将检查列表*的内容。allow_readdeny_read

相关内容