我有一个汞存储库(主回购)和几个子存储库。
我需要一个mercurial命令,以显示子回购的修订是否更改了工作副本(包括旧版本和新版本的信息)或子回购状态是否脏。
我该怎么做?
发布于 2016-12-22 12:01:43
大多数mercurial命令都接受-S或--subrepos标志。因此,通过调用hg st -S,如果它们的状态与记录在.hgsubstate文件中的状态不同,则将得到所有已更改的文件的列表,其中包括子repos中的文件:
$ cd opengfx/
$ hg st
$ hg id
10065545725a tip
$ cd ..
$ hg st -S
M opengfx/.hgtags
M opengfx/Makefile
A opengfx/lang/japanese.lng
$ cat .hgsubstate
785bc42adf236f077333c55c58490cce16367e92 opengfx至于您希望获得的实际修订,这是AFAIK不可能用一个命令。但是,您可以像上面这样检查单个子回购的状态,也可以通过给mercurial另一条操作路径来从主回购中检查它们:
$ hg id -R opengfx
10065545725a tip为了获得每一次回购的状态,与父回购所需的情况相比,我会使用一些简单的bash:
for i in $(cat .hgsubstate | cut -d\ -f2); do echo $i is at $(hg id -R $i) but parent requires $(cat .hgsubstate | grep $i | cut -d\ -f1); done它提供的输出类似于
opengfx is at 10065545725a tip but parent requires 785bc42adf236f077333c55c58490cce16367e92以类似的方式,您还可以检查状态是否通过使用hg st而不是hg id进行修改。
https://stackoverflow.com/questions/41278063
复制相似问题