2

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

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

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

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

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

4

3 回答 3

3

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

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

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

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

<repo-url>您用于克隆/推送/拉取的 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>

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

于 2011-02-27T21:53:53.997 回答
2

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

于 2011-02-19T05:44:09.717 回答
2

如果你只是去任何 hg repo 并输入

hg serve

您将有一个网络服务器在一个可以指向浏览器的 url 上侦听。hg 生成的网页的格式可以通过模板进行更改。很可能 bitbucket.org 有自己的更高级的模板,因此他们有更漂亮的网页。

此外,监听 url 也可用于使用 hg 进行推送和拉取。这实际上是通过 hgweb.cgi 引导的同一个网站,也是通过 SSH 进行推/拉的底层机制。

于 2011-03-02T06:10:43.233 回答