是否有任何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