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 如何判断存储库是否有来自shell脚本的传出更改,并安全地检测真正的错误?_Mercurial_Sh - Fatal编程技术网

Mercurial 如何判断存储库是否有来自shell脚本的传出更改,并安全地检测真正的错误?

Mercurial 如何判断存储库是否有来自shell脚本的传出更改,并安全地检测真正的错误?,mercurial,sh,Mercurial,Sh,Mercurial似乎使用退出代码1来表示没有传出变更集。这使得作为脚本编写者,我很难判断是否存在传出的变更集或是否存在一般性错误。例如,如果机器与Internet断开连接,我想检测错误。考虑这种情况: $ hg outgoing -q $ echo $? 1 两者都返回错误代码。如果有传出的变更集,我可以依靠Mercurial返回0,如果没有,我可以依靠1,如果有实际错误,我可以依靠Mercurial返回255 在中,我唯一能找到的是: 如果有传出更改,则返回0,否则返回1 我在文档中没有看

Mercurial似乎使用退出代码
1
来表示没有传出变更集。这使得作为脚本编写者,我很难判断是否存在传出的变更集或是否存在一般性错误。例如,如果机器与Internet断开连接,我想检测错误。考虑这种情况:

$ hg outgoing -q
$ echo $?
1
两者都返回错误代码。如果有传出的变更集,我可以依靠Mercurial返回
0
,如果没有,我可以依靠
1
,如果有实际错误,我可以依靠Mercurial返回
255

在中,我唯一能找到的是:

如果有传出更改,则返回0,否则返回1

我在文档中没有看到任何关于返回代码的明显讨论。这些文档似乎根本没有提到这个返回代码
255

我可以相信
hg outgoing
在实际情况下会使用
0
1
以外的东西吗?这方面的文档在哪里?

在大多数情况下(不仅仅是
outgoing
),
hg
会返回三个退出代码中的一个:

  • 0
    :成功
  • 1
    :无法执行命令(在您的情况下,没有显示内容)
  • 255
    :灾难性错误(在您的情况下,无法访问远程)
虽然
hg help scripting
可能对未来的项目很有意思,也很有用,但如果您的目标只是“没有失败”(或者相反,失败大于1),那么检查
$?
是否小于2可能会得到您想要的结果


除了没有传出的变更集之外,还有其他情况下它将以
1
退出,但我严重怀疑在您似乎暗示的场景中,您是否会在
outgoing-q
中遇到它们。(事实上,在现实世界的任何其他情况下,我很少看到来自
outgoing-q
1
;我唯一能立即想到的是一个场景,在编程中它仍然被视为“没有传出变更集”。)

您能具体指出记录
255
返回代码的地方吗?我在
hg help scripting
下没有看到它。不幸的是,hg的返回值没有得到充分的说明。如果您查看源,您将看到它在许多地方发出-1的返回值。这相当于大多数现代系统上的255。我没有现成的这个特定实例的退出路径,但应该不太难找到。如果你真的需要它,我以后会帮你找到的。不幸的是,这并不是我能真正理解的,因为源文件和行号可能会随着时间的推移而改变。
$ hg outgoing -q
abort: no suitable response from remote hg!
$ echo $?
255