2012-06-13 56 views
6

作为用户,我通常使用hg st来检查回购的状态,并验证它是否处于干净状态,且没有修改过的文件。如何检查mercurial repo是否处于清洁状态?

在这里,我想以编程方式做到这一点。我知道我也可以使用hg st,但输出不太理想,不适合用电脑程序进行消费。有没有更好的方法来检查mercurial repo是否处于清洁状态?

+1

我不明白为什么输出不太理想,不适合电脑程序使用。如果工作副本不干净,则会为每个不干净的文件输出状态字符,空间和文件路径。如果它是干净的,它不输出任何东西。这并不容易。 –

+0

@SteveKaye:一个布尔值将更好:)关于回滚的 –

+0

:我使用hg st,而不是“hg status”。它工作得很好,输入的字符也较少。新手学习这些缩写可能很有趣。 –

回答

6

如果您发出hg identify --id命令,则会在存储库修改了文件后为该ID添加+字符。 (注:此标志不报告未跟踪文件)

如果用grep命令为+字符输出,则可以使用退出状态,以确定是否有修改或无:

$ hg init 
$ hg identify --id | grep --quiet + ; echo $? 
1 
$ touch a 
$ hg identify --id | grep --quiet + ; echo $? 
1 
$ hg add a 
$ hg identify --id | grep --quiet + ; echo $? 
0 
+0

太棒了!我想知道这个'+'符号是什么。所以我猜想存储'hg id -i'的输出就足以对回购的状态有一个很好的了解。 –

3

你应该使用hg summary

$ hg init 
$ echo blablabla > test.txt 
$ hg summary 
parent: -1:000000000000 tip (empty repository) 
branch: default 
commit: 1 unknown (clean) 
update: (current) 
0

大多数主要编程语言都有,您可以访问HG的API。

相关问题