是否有任何Mercurial命令或Python API可以生成回購名稱?這將有助於開發交叉回購腳本。mercurial:任何獲取存儲庫名稱的命令或python api
我發現的唯一相關解決方案是解析.hg/hgrc [paths]
部分的「默認」配置選項。
[paths]
default = ssh://server//path/tools
我認爲必須有一個更優雅的解決方案。
是否有任何Mercurial命令或Python API可以生成回購名稱?這將有助於開發交叉回購腳本。mercurial:任何獲取存儲庫名稱的命令或python api
我發現的唯一相關解決方案是解析.hg/hgrc [paths]
部分的「默認」配置選項。
[paths]
default = ssh://server//path/tools
我認爲必須有一個更優雅的解決方案。
Mercurial中沒有「存儲庫名稱」的真正概念(存儲庫不知道或關心其自己的名稱)。我認爲你的意思是「默認拉回路徑的最後一部分」?
如果是這樣,那麼解析hg path default
的輸出將是獲取該信息的最直接方式。
然而,你應該注意的是,默認的路徑可以(而且經常是)改變:想克隆一個本地副本的時間進行測試的:
$ hg clone http://server/lib-foo
$ hg clone lib-foo lib-foo-test
$ hg clone lib-foo-test lib-foo-more-testing
的lib-foo-more-testing
克隆具有默認的普通路徑回lib-foo-test
。
這意味着解析hg paths default
不會比使用basename $(hg root)
更可靠 - 兩者可能與最初克隆的存儲庫的(基本)名稱完全不同。
如果你真的想要的是得到一個庫中的「身份」,那麼你就應該使用
$ hg log -r 0 --template "{node}"
在資源庫中的第一個變更散列通常會唯一識別庫,這將是穩定的即使克隆更改名稱也是如此。 (如果存儲庫有兩個或更多的根,那麼第零個變更集原則上可以在不同克隆之間有所不同,但人們將不得不主動嘗試使其不同。)
如果你想獲得遠程default
別名路徑的最後一段,處理hg path default
輸出將是更好的選擇
如果你想獲得本地目錄名的你 Mercurial庫,我也沒有好解決方案,除了檢查通知擴展的代碼(其中,一些技巧之後,you can get project-name)
這解釋了爲什麼它看起來如此基本,但我找不到明顯的解決方案。謝謝!超級回答! – frankc