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 显示子回购的修订版本是否已更改,或者它们是否脏_Mercurial_Mercurial Subrepos - Fatal编程技术网

Mercurial 显示子回购的修订版本是否已更改,或者它们是否脏

Mercurial 显示子回购的修订版本是否已更改,或者它们是否脏,mercurial,mercurial-subrepos,Mercurial,Mercurial Subrepos,我有一个mercurial存储库(主repo)和几个子存储库 我需要一个mercurial命令来显示子回购的修订是否在工作副本中发生了更改(包括关于旧版本和新版本的信息),或者子回购状态是否为脏 如何执行此操作?大多数mercurial命令都接受-S或--subrepos标志。因此,通过调用hg st-S可以获得所有已更改文件的列表,其中包括子回购中的文件,如果这些文件的状态与.hgsubstate文件中记录的状态不同: $ cd opengfx/ $ hg st $ hg id 1006554

我有一个mercurial存储库(主repo)和几个子存储库

我需要一个mercurial命令来显示子回购的修订是否在工作副本中发生了更改(包括关于旧版本和新版本的信息),或者子回购状态是否为脏


如何执行此操作?

大多数mercurial命令都接受
-S
--subrepos
标志。因此,通过调用
hg st-S
可以获得所有已更改文件的列表,其中包括子回购中的文件,如果这些文件的状态与.hgsubstate文件中记录的状态不同:

$ 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
至于您希望获得实际修订版,一个命令恐怕不可能实现。但是,您可以随时检查上述单个次级回购的状态,也可以通过为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

检查状态是否被修改,您所说的“子回购的修订已更改”是什么意思?如果添加了新的修订,或者只有当有效修订发生变化时(这对于母回购协议来说很重要,因为它只记录了子回购协议的修订版本,这取决于该版本),我尝试描述用例:我更新到某个主回购协议修订版本,从而导致每个子回购协议都有某个修订版本。之后,我可以将一些次级回购更新为不同的修订版(与主回购修订版中固定的次级回购修订版不同)。最后,我想生成一个报告,其中列出了这些更改。这对你有帮助吗?