没有Web界面的hgweb

时间:2011-11-15 03:42:53

标签: mercurial hgweb

这可能看起来像一个愚蠢的想法,但无论如何都要通过http服务一个mercurial存储库,而没有捆绑在hgweb.cgi中的任何webinterface功能。

我希望用户能够通过http://克隆/推送存储库,但我不希望他们能够通过Web界面查看存储库或文件。

静态HTTP是一个选项,但官方的mercurial文档声称这非常慢。

如果这不是微不足道的,是否有人知道通过http为hg存储库提供服务的示例代码,而不支持浏览器接口?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我快速检查了hgweb文件,发现了这个:

找到mercurial安装的hgweb/webcommands.py文件,然后在编辑器中打开它。更改文件顶部的以下代码:

__all__ = [
   'log', 'rawfile', 'file', 'changelog', 'shortlog', 'changeset', 'rev',
   'manifest', 'tags', 'bookmarks', 'branches', 'summary', 'filediff', 'diff',
   'annotate', 'filelog', 'archive', 'static', 'graph', 'help',
]

到此:

__all__ = [
]

这将禁用所有Web命令;您仍然可以查看回购列表,但不能再查看有关它们的信息。

我确实检查了hg clonehg pull,但未检查hg push

答案 1 :(得分:0)

我不知道您为什么要限制对UI部分的访问,因为如果他们可以访问文件,则可以访问此处提供的任何信息,但也可以这样:P

如果您想要一些干净的解决方案,我认为使用hgweb.cgi的代码并重写它并不会太困难,但我认为您也可以更快地做一些事情:hg serve -t /dev/null

这将使用/dev/null作为UI部分的模板,因此用户在连接到服务器时将收到“内部服务器错误”页面,但是能够通过{{1 }}

只有缺点,如果通过浏览器访问,日志将会出现错误字段。

PS:如果你不在Unix系统上,只需使用任何空目录作为模板的源。