Mercurial文件协议

时间:2011-02-19 05:22:07

标签: http file mercurial protocols bitbucket

Mercurial是否有HTTP协议我们可以浏览文件/文件夹/分支而不是克隆/拉动变更集?

我看过使用TortoiseHG WebServer并使用浏览器访问http://localhost:8080/的内容,但是当您在https://bitbucket.org/上使用项目时,会提供完全不同的HTML(至少我找不到相同的表示)。

更新 HttpCommandProtocol文档仅描述更改集,但不描述文件/文件夹。因此,任务是仅下载仅用于特定修订的少数文件(例如,使用提示'稳定')和文件列表。但是,我不想为此下载完整的存储库。

欢迎使用非HTTP协议,但条件相同:请勿下载完整的存储库。

更新2 hgweb提供静态HTML和文件。对于不同的hgweb版本,它总是相同的HTML fromat吗?那么bitbucket.org呢?有没有共同的协议?

3 个答案:

答案 0 :(得分:3)

正如您已经注意到的,HttpCommandProtocol定义了存储库信息和变更集的交换 - 它确保您可以克隆/推送/拉取HTTP服务的任何存储库。但AFAIK没有关于如何浏览回购的标准(例如,获取某个版本的单个文件)。

您必须适应您选择的托管系统使用的任何URL方案(您还注意到, hgweb bitbucket 有不同的方案)。根据您的使用情况,您可以定义自己的文件访问协议并将其提供给转换器。

例如,您可能希望使用此方案访问文件:

<repo-url>/<rev>/<path>

其中<repo-url>是您用于克隆/推/拉的网址。在实践中,您将使用这样的URL:

https://bitbucket.org/user/repo/<rev>/<path>
https://hgwebhost.org/.../repo/<rev>/<path>

显然,这些是不存在的虚拟URL。这就是您的转换器的用武之地:检查托管系统类型并相应地转换URL:

https://bitbucket.org/user/repo/raw/<rev>/<path>
https://hgwebhost.org/.../repo/raw-file/<rev>/<path>

如果您的转换器知道 bitbucket hgweb ,那么它已经可以使用大量的存储库。

答案 1 :(得分:2)

Mercurial有hgweb。它可以通过任何wsgi容器部署,我认为它甚至有CGI支持。

答案 2 :(得分:2)

如果您只是去任何hg回购并输入

hg serve

您将有一个网络服务器正在侦听您可以指向浏览器的网址。 hg生成的网页格式可以通过模板更改。 bitbucket.org很可能拥有自己的发烧友模板,因此他们拥有更漂亮的网页。

此外,使用hg可以使用收听网址进行推送和拉取。这实际上是通过hgweb.cgi引导的同一网站,也是通过SSH进行推/拉的基础机制。