【问题标题】:Mercurial: get information about repositories without cloning themMercurial:无需克隆即可获取有关存储库的信息
【发布时间】:2012-02-15 12:08:36
【问题描述】:

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

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

【问题讨论】:

    标签: mercurial repository


    【解决方案1】:

    不,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 这样的网站,您需要使用 their API

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

    【讨论】:

    • 只是为了更清楚地说明它确实不能在非本地工作,像hg tip --repository https://bitbucket.org/aragost/javahg/ 这样的东西会失败; abort: repository 'https://bitbucket.org/aragost/javahg/' is not local.
    • @ChrisMorgan:是的,当您将远程仓库传递给--repository 标志时,几乎所有命令都会失败。只有hg idhg outgoing 会查询远程存储库(以非常有限的方式)。
    • @MartinGeisler: hg incoming and hg push and hg pull 我相信也可以在远程存储库上操作。
    猜你喜欢
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 2011-11-16
    • 2012-02-05
    • 2012-08-16
    • 2011-05-24
    • 1970-01-01
    • 2018-05-21
    相关资源
    最近更新 更多