这可能看起来像一个愚蠢的想法,但无论如何都要通过http服务一个mercurial存储库,而没有捆绑在hgweb.cgi中的任何webinterface功能。
我希望用户能够通过http://克隆/推送存储库,但我不希望他们能够通过Web界面查看存储库或文件。
静态HTTP是一个选项,但官方的mercurial文档声称这非常慢。
如果这不是微不足道的,是否有人知道通过http为hg存储库提供服务的示例代码,而不支持浏览器接口?
提前致谢。
答案 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 clone
和hg pull
,但未检查hg push
。
答案 1 :(得分:0)
我不知道您为什么要限制对UI部分的访问,因为如果他们可以访问文件,则可以访问此处提供的任何信息,但也可以这样:P
如果您想要一些干净的解决方案,我认为使用hgweb.cgi的代码并重写它并不会太困难,但我认为您也可以更快地做一些事情:hg serve -t /dev/null
这将使用/dev/null
作为UI部分的模板,因此用户在连接到服务器时将收到“内部服务器错误”页面,但是能够通过{{1 }}
只有缺点,如果通过浏览器访问,日志将会出现错误字段。
PS:如果你不在Unix系统上,只需使用任何空目录作为模板的源。