12
幾天前我開始試用Mercurial,並且一切都很順利,直到我決定嘗試寫一個小程序,該程序獲取每個存儲庫的存儲庫列表和變更集ID列表從遠程服務器,允許用戶選擇存儲庫和變更集,克隆它並更新到選定的修訂版。這導致了兩個問題:Mercurial:獲取有關存儲庫的信息而不克隆它們
- 有沒有辦法從服務器獲取存儲庫列表(除了解析HTML)?
- 有沒有一種方法可以獲取關於某個存儲庫的信息,如標籤,分支等等,而不需要首先克隆它?
幾天前我開始試用Mercurial,並且一切都很順利,直到我決定嘗試寫一個小程序,該程序獲取每個存儲庫的存儲庫列表和變更集ID列表從遠程服務器,允許用戶選擇存儲庫和變更集,克隆它並更新到選定的修訂版。這導致了兩個問題:Mercurial:獲取有關存儲庫的信息而不克隆它們
沒有,水銀被設計成你需要的幾乎所有命令的本地庫。唯一的內置命令會給你一個遠程倉庫信息hg id
:
$ hg id https://bitbucket.org/aragost/javahg/
3b2711b26dbd
要獲得更多的信息,保持你有時可以利用爲hgweb
的raw
模板:
$ 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/'不是本地的'。 – 2012-02-15 12:54:39
@ChrisMorgan:是的,幾乎所有的命令都會像這樣失敗,當你將一個遠程repo傳遞給'--repository'標誌。它只是'hg id'和'hg outgoing',用於查詢遠程存儲庫(以非常有限的方式)。 – 2012-02-15 13:32:15
謝謝你明確的答案:) – 2012-02-15 14:57:31