Mercurial:获取有关存储库的信息而不克隆它们

发布于 2025-01-06 08:43:40 字数 220 浏览 1 评论 0原文

几天前,我开始尝试 Mercurial,一切都很顺利,直到我决定尝试编写一个小程序,该程序从远程服务器获取存储库列表和每个存储库的变更集 ID 列表,允许用户选择存储库并变更集,克隆它并更新到所选的修订版。这引发了两个问题:

  1. 有没有办法从服务器获取存储库列表(除了解析 HTML)?
  2. 有没有一种方法可以获取有关某个存储库的信息,例如标签、分支等,而无需先实际克隆它?

Few days ago I started experimenting with Mercurial, and everything went great, until I decided to try writting a small program, that gets the list of repositories and lists of changeset IDs for each repository from a remote server, allows the user to pick repository and changeset, clones it and updates to the chosen revision. This led to two questions:

  1. Is there a way to get a list of repositories from server (besides parsing HTML)?
  2. Is there a way to get information, such as tags, branches, etc. about one of the repositories, without actually cloning it first?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

阳光①夏 2025-01-13 08:43:40

不,Mercurial 的设计使您需要一个用于几乎所有命令的本地存储库。唯一能为您提供有关远程存储库信息的内置命令是 hg id

$ hg id https://bitbucket.org/aragost/javahg/
3b2711b26dbd

要获取更多信息,您有时可以利用 raw 模板hgweb

$ wget -q -O - 'https://www.mercurial-scm.org/repo/hg/tags?style=raw' | head 
tip     a3a36bcf122e2ea4edbbe4ac44da59446cf0ee07
4.2.1   c850f0ed54c1d42f9aa079ad528f8127e5775217
4.2     bb96d4a497432722623ae60d9bc734a1e360179e
4.2-rc  616e788321cc4ae9975b7f0c54c849f36d82182b
4.1.3   77eaf9539499a1b8be259ffe7ada787d07857f80
4.1.2   ed5b25874d998ababb181a939dd37a16ea644435
4.1.1   25703b624d27e3917d978af56d6ad59331e0464a
4.1     e1526da1e6d84e03146151c9b6e6950fe9a83d7d
4.1-rc  a1dd2c0c479e0550040542e392e87bc91262517e
4.0.2   e69874dc1f4e142746ff3df91e678a09c6fc208c

这要求主机运行 Mercurial 附带的 hgweb CGI 脚本。对于像 Bitbucket 这样的网站,您需要使用他们的 API

最后,如果您可以在远程存储库上启用扩展,那么就可以编写一个扩展,以可解析的格式公开您想要的信息。我曾经写过这样的扩展作为演示。

No, Mercurial is designed so that you need a local repository for almost all commands. The only built-in command that will give you information about a remote repository is hg id:

$ hg id https://bitbucket.org/aragost/javahg/
3b2711b26dbd

To get hold of more information you can sometimes exploit the raw template for hgweb:

$ wget -q -O - 'https://www.mercurial-scm.org/repo/hg/tags?style=raw' | head 
tip     a3a36bcf122e2ea4edbbe4ac44da59446cf0ee07
4.2.1   c850f0ed54c1d42f9aa079ad528f8127e5775217
4.2     bb96d4a497432722623ae60d9bc734a1e360179e
4.2-rc  616e788321cc4ae9975b7f0c54c849f36d82182b
4.1.3   77eaf9539499a1b8be259ffe7ada787d07857f80
4.1.2   ed5b25874d998ababb181a939dd37a16ea644435
4.1.1   25703b624d27e3917d978af56d6ad59331e0464a
4.1     e1526da1e6d84e03146151c9b6e6950fe9a83d7d
4.1-rc  a1dd2c0c479e0550040542e392e87bc91262517e
4.0.2   e69874dc1f4e142746ff3df91e678a09c6fc208c

That requires that the host is running the hgweb CGI script that comes with Mercurial. For a site like Bitbucket you would need to use their API.

Finally, if you can enable extensions on the remote repository, then it's possible to write an extension that exposes the information you want in a parsable format. I once wrote such an extension as a demo.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文