Apache .htaccess:允许下载Mercurial存档,但仅限于此

Apache .htaccess:允许下载Mercurial存档,但仅限于此,apache,.htaccess,mercurial,Apache,.htaccess,Mercurial,到目前为止,我对我的Mercurial设置相当满意。我将其用于个人项目,并托管在OVH(法国托管提供商)的共享服务器上 目前,我有一个.htaccess来保护我的项目,只允许某些人从我的存储库中拉/推。但是,我想公开变更集档案 URL如下所示: http://domain/hg/projectname/archive/486e5be13c82.tar.bz2 http://domain/hg/projectname/archive/tip.tar.bz2 AuthUserFile /home/

到目前为止,我对我的Mercurial设置相当满意。我将其用于个人项目,并托管在OVH(法国托管提供商)的共享服务器上

目前,我有一个.htaccess来保护我的项目,只允许某些人从我的存储库中拉/推。但是,我想公开变更集档案

URL如下所示:

http://domain/hg/projectname/archive/486e5be13c82.tar.bz2
http://domain/hg/projectname/archive/tip.tar.bz2
AuthUserFile /home/******/.hgusers
AuthName "Mercurial"
AuthType Basic

Order allow,deny
Allow from all

Require valid-user
我的.htaccess如下所示:

http://domain/hg/projectname/archive/486e5be13c82.tar.bz2
http://domain/hg/projectname/archive/tip.tar.bz2
AuthUserFile /home/******/.hgusers
AuthName "Mercurial"
AuthType Basic

Order allow,deny
Allow from all

Require valid-user
我希望存档URL不要求用户名/密码。我不介意用mod_重写。谢谢


Remi Gillig.

如果您允许公共访问所有变更集tarball,那么我建议只将存储库公开(显然不允许推送)。这很简单:
hgpush
是通过
POST
HTTP请求完成的,因此您只需要
需要有效的用户
。另见

我的想法是,通过让人们访问tarball,您有效地让他们访问了整个存储库,但提交消息除外。因此,最干净的解决方案可能就是承认这一点,并且只限制hg-push


除此之外,如果您可以访问Apache的系统范围配置文件,我建议您查看和
指令(它们不能放在
.htaccess
文件中)。我不是一个伟大的Apache大师,很抱歉没有给你一个现成的规则,你可以插入。

如果你允许公众访问所有的变更集tarball,那么我建议只将存储库公开(显然不允许推送)。这很简单:
hgpush
是通过
POST
HTTP请求完成的,因此您只需要
需要有效的用户
。另见

我的想法是,通过让人们访问tarball,您有效地让他们访问了整个存储库,但提交消息除外。因此,最干净的解决方案可能就是承认这一点,并且只限制hg-push


除此之外,如果您可以访问Apache的系统范围配置文件,我建议您查看和
指令(它们不能放在
.htaccess
文件中)。我不是一个伟大的Apache大师,很抱歉没有给你一个现成的规则,你可以插入。

我也使用OVH!价格和质量都很好;)我也用OVH!价格和质量都很好;)好吧,我以前没有想过,但也许我可以制作另一个hgwebdir.cgi,它只显示特定的存储库,比如。我不希望任何人能够访问/hg/下提供的一些私人项目,因此将所有回购公开对我来说不是一个可行的解决方案。我将深入修改显示脚本并返回报告。好的,它就像一个符咒,我将我的公共回购移动到了另一个目录,并创建了一个不同的hgweb.config来只显示这些。我现在有两个URL:/hg用于我的私人回购,而/hg public用于我的公共回购。在/hg中,我甚至有公共回购的列表,这样我在推送时就不必修改hg中的推送URL。很酷,有两个URL听起来也是一个不错的解决方案(比只保护一些URL更不神奇)。嗯,我以前没有考虑过这个问题,但也许我可以制作另一个hgwebdir.cgi,它只在下面显示特定的存储库,比如。我不希望任何人能够访问/hg/下提供的一些私人项目,因此将所有回购公开对我来说不是一个可行的解决方案。我将深入修改显示脚本并返回报告。好的,它就像一个符咒,我将我的公共回购移动到了另一个目录,并创建了一个不同的hgweb.config来只显示这些。我现在有两个URL:/hg用于我的私人回购,而/hg public用于我的公共回购。在/hg中,我甚至有公共repo的列表,因此我在推送时不必修改hg中的推送URL。很酷,有两个URL听起来也是一个不错的解决方案(比只保护一些URL更不神奇)。