在同一 URL 下拥有静态 Web 内容和 Mercurial 服务器

在同一 URL 下拥有静态 Web 内容和 Mercurial 服务器

我正在寻找一种方法来使用 Apache 2 网络服务器显示静态 HTML 内容,同时在同一 URL 下拥有 Mercurial 存储库。例如,http://www.myserver.org/projectname如果使用普通网络浏览器浏览,则应该可以看到项目 HTML,但应该可以使用 克隆项目的 Mercurial 存储库hg clone http://www.myserver.org/projectname。基本上就是这样http://bitbucket.org有。我思考可以通过配置 Apache 以hgweb.cgi仅将脚本用于 Mercurial 请求而不用于普通 HTML GET 请求来实现这一点。但是,我不知道 Mercurial 使用哪些请求(希望不是 GET),以及如何相应地配置 Apache。

再补充一点背景知识:
需要为多个存储库/项目(目前约 2400 个)提供此功能。到目前为止,我已hgweb 按照说明进行了尝试发布存储库这对于存储库的 Web 视图来说很好,但不允许我显示除作者、名称和描述(来自.hg/hgrc [web]部分)之外的任何其他信息。变量替换hgweb非常有限,因此不允许提供任意变量。我知道我可以简单地拥有静态 HTML 页面和hgweb不同的 URL,但这不符合给我的限制。

答案1

要了解 mercurial 发送了什么样的请求——我们有完美的 tcpdump。

我启动 tcpdump,执行 hg clonehttp://selenic.com/hg

并看到 hg 执行 GET 请求 /hg?cmd=capabilities , /hg?cmd=getbundle , /hg?cmd=batch

我认为,您可以收集 hg 所需的所有请求,并配置 apache(或 nginx 或其他代理)将这些请求转发到 hgweb.cgi

相关内容