我可以禁用Mercurial克隆/拉过HTTP吗?

时间:2010-10-19 09:40:30

标签: security http mercurial clone

我们在生产服务器上使用Mercurial来处理一些较小的Web项目,以便通过SSH将更改推送到服务器来轻松部署应用程序。存储库位于各自帐户的public_html文件夹中。

现在,如果我做了

hg clone http://www.domain.com

我得到了

real URL is http://www.domain.com/
requesting all changes
adding changesets
adding manifests
transaction abort!
rollback completed
abort: empty or missing revlog for .htaccess

幸运的是,如果没有身份验证,克隆似乎是不可能的,但我宁愿不让任何人知道首先有一个hg存储库。

是否有人知道如何从公众中完全隐藏Mercurial存储库,即使它位于公共场所,如webserver上的public_html / htdocs?我找不到任何有关如何实现这一目标的信息。

ETA:显然,我还没有足够的声誉来投票给任何答案。但是,非常感谢你们两位有用的答案。 :)

2 个答案:

答案 0 :(得分:3)

在repo的.hg/hgrc中添加:

[web]
allowpull = false

在获取任何数据之前,这将在过程的早期出现错误(目前,如果他们在回滚之前需要大量数据,则会获得大量数据)。请注意,allowpull没有下划线,与大多数其他多词mercurial设置不同。

这完全阻止他们通过mercurial获取内容,但他们仍然可以使用wget,curl或webbrowser手动选择http://www.domain.com/.hg/

为避免您在网络服务器级别阻止包含/.hg/的任何网址。在Apache中看起来像:

<Directory "/your/doc/root/.hg">
  Order deny,allow
  deny from all
</Directory>

答案 1 :(得分:1)

你可以

  • 使您的网络服务器无法访问.hg目录
  • 使.htacces魔法看不到.hg(假设你使用apache httpd)
  • 将存储库放在public_html之外,并使用hg archive
  • 填充public_html
相关问题