可能重复:
使用Mercurial和Apache读取访问控制
我正在尝试为我的客户托pipe多个Mercurial存储库。 我需要单独控制对每个存储库的访问,而不仅仅是访问,而是克隆。
我有一个需要全局身份validation的.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 ,这使得他们可以克隆所有存储库。
我能想到的唯一解决scheme是在每个存储库中都有另一个.htaccess和.passwd文件。 我不想这样做,似乎有点复杂。 我可以使用allow_push设置hgrc仓库hgrc文件中的每个仓库指定一个授权用户列表。 如果只有一个allow_clone设置以及…
我为hgwebdir.cgifind的所有文档都不完整。 我读了:
和别的。 我还没有find一个完整的hgrc设置列表。
我猜这是一个Apache问题,而不是一个Mercurial问题。
除非我能find更好的方法,否则我将为每个回购单独提供一个.htaccess和.passwd文件。
这是一个Webfaction上的虚拟主机,如果它很重要的话 – 就像在他们的文档中描述的一样。
编辑:看起来像客户端回购任何.htaccess文件将被忽略。 我认为这是因为所有请求都由webroot中的hgwebdir.cgi提供,所以只有webroot中的.htaccess才会生效。
我在hgrc(5)手册页find了答案:
allow_read
如果由于
deny_read的内容,用户尚未被拒绝存储库访问,则此列表将确定是否将存储库访问权授予用户。 如果该列表不为空,且用户未经身份validation或者不在列表中(由空格或,分隔),则拒绝访问该用户。 如果列表为空或未设置,则默认情况下允许所有用户访问。 将allow_read设置为特殊值*相当于未设置(即允许所有用户访问)。allow_read列表的内容在deny_read列表之后被检查。