2012-02-15 48 views
12

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

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

回答

11

没有,水银被设计成你需要的几乎所有命令的本地库。唯一的内置命令会给你一个远程仓库信息hg id

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

要获得更多的信息,保持你有时可以利用为hgwebraw模板:

$ 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作为演示。

+0

只是为了使它更清楚地表明它不能在非本地工作,像'hg tip --repository https:// bitbucket.org/aragost/javahg /'这样的东西将会失败; 'abort:repository'https://bitbucket.org/aragost/javahg/'不是本地的'。 – 2012-02-15 12:54:39

+0

@ChrisMorgan:是的,几乎所有的命令都会像这样失败,当你将一个远程repo传递给'--repository'标志。它只是'hg id'和'hg outgoing',用于查询远程存储库(以非常有限的方式)。 – 2012-02-15 13:32:15

+0

谢谢你明确的答案:) – 2012-02-15 14:57:31

相关问题