hg命令列出子库

时间:2016-12-08 13:38:13

标签: mercurial

是否有可以构建的命令列出Mercurial存储库的所有子存储库?像git submodule命令那样的东西? (我试图以编程方式处理它们。)

据我所知,当前最好的选择是编写一个处理.hgsub的解析器(处理各种可选部分,如[subpaths]),这似乎不如依赖{{1}解析文件。但我找不到一个能做到这一点的命令。

有吗?

2 个答案:

答案 0 :(得分:1)

您可以使用onsub扩展程序。 Mercurial wiki中链接的存储库消失了,但我发现https://bitbucket.org/kvaster/onsub看起来很难维护。

我创建了一个带有两个子版本的迷你仓库,如下所示:

$ find . -type d -name '.hg'
.hg              <== outer repo
nested/.hg       <== subrepo
nested2/.hg      <== subrepo

相应的.hgsub非常简单:

nested = nested
nested2 = nested2

示例1:

$ hg --config extensions.onsub=~/src/onsub/onsub.py onsub --verbose "hg status"
executing 'hg status' in nested
executing 'hg status' in nested2

示例2:

$ hg --config extensions.onsub=~/src/onsub/onsub.py onsub "hg root"
/Users/hello/tmp/foo/nested
/Users/hello/tmp/foo/nested2

示例3:使用onsub提供的环境变量:

$ hg --config extensions.onsub=~/src/onsub/onsub.py onsub "echo; set | grep HG_"

HG_REPO=/Users/hello/tmp/foo
HG_SUBPATH=nested
HG_SUBURL=nested

HG_REPO=/Users/hello/tmp/foo
HG_SUBPATH=nested2
HG_SUBURL=nested2

像往常一样,您可以获得以下帮助:

hg --config extensions.onsub=~/src/onsub/onsub.py help onsub

命令行上的--config ...显示如何在不修改$HOME/.hgrc的情况下启用扩展程序。

答案 1 :(得分:0)

而不是解析.hgsub而不是解析.hgsubstate - 它保证每个子存储库有一行:

for i in $(cat .hgsubstate | cut -d\  -f2); do echo $i; done