2012-02-15 46 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

相關問題