Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mercurial:获取存储库名称的任何命令或python api_Mercurial - Fatal编程技术网

mercurial:获取存储库名称的任何命令或python api

mercurial:获取存储库名称的任何命令或python api,mercurial,Mercurial,是否有任何Mercurial命令或Python API可以生成repo名称?这将有助于开发跨回购脚本 我找到的唯一相关解决方案是解析.hg/hgrc[path]部分的“default”配置选项 [paths] default = ssh://server//path/tools 我想一定有更优雅的解决办法 如果您想获取远程default别名的最后一段路径,那么处理hg path default的输出将是更好的选择 如果您想获得mercurial存储库的本地目录名,我没有好的解决方案,除了检查N

是否有任何Mercurial命令或Python API可以生成repo名称?这将有助于开发跨回购脚本

我找到的唯一相关解决方案是解析
.hg/hgrc[path]
部分的“default”配置选项

[paths]
default = ssh://server//path/tools

我想一定有更优雅的解决办法

如果您想获取远程
default
别名的最后一段路径,那么处理
hg path default
的输出将是更好的选择


如果您想获得mercurial存储库的本地目录名,我没有好的解决方案,除了检查Notify扩展的代码(在其中,经过一些技巧后,)

mercurial中没有真正的“存储库名”概念(存储库不“知道”或关心自己的名称)。我想你的意思是“默认拉路径的最后一个过去组件”

如果是这样,那么解析
hgpath 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路径默认值
不会比使用
basename$(hg root)
可靠得多-两者都可能与最初克隆的存储库的(基本)名称完全不同

如果您真正想要的是获得存储库的“标识”,那么您应该使用

$ hg log -r 0 --template "{node}"

存储库中的第一个变更集散列通常会唯一标识存储库,即使克隆更改名称,它也会保持稳定。(如果存储库有两个或多个根,那么第0个变更集原则上可以在克隆之间有所不同。不过,人们必须积极尝试使其有所不同。)

您可以使用
hg root
命令返回本地目录名,并使用
basename
提取最后一个组件。因此,如果您的项目位于
/Users/jrh/code/halo7
中,这将产生
halo7
。hg root返回本地路径/dir,这可能与回购名称完全不同。@gavinb-Winboys怎么办,它在板上没有basename?@frankc正如Martin所指出的,对于唯一的回购名称本身没有规范定义;它只是按照惯例,通常是repo名称。@Lazybagger您可以安装CygWin,在Windows上获得完整的命令行工具套件*nix。否则,您可能可以使用DOS shell中的一些功能(请参阅)。这解释了为什么它看起来如此基本,但我找不到明显的解决方案。谢谢超级答案!