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

问题描述 投票:2回答:1
$ hg outgoing -q
$ echo $?
1

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

$ hg outgoing -q
abort: no suitable response from remote hg!
$ echo $?
255

两者都返回错误代码。我是否可以依赖Mercurial返回0,如果有外向变更集,1如果没有,255如果有实际错误?

the documentation for hg outgoing,我唯一能找到的是:

如果有外向更改,则返回0,否则返回1。

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

我是否可以相信hg outgoing将在实际案例中使用除01之外的其他内容,以及此处的文档在哪里?

mercurial sh
1个回答
1
投票

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

  • 0:成功
  • 1:无法完成命令(在您的情况下,没有任何显示)
  • 255:灾难性错误(在您的情况下,无法访问远程)

虽然hg help scripting可能对未来的项目有用且有用,但检查$?是否小于2可能会得到你想要的,如果你的目标只是“没有失败”(或相反,失败大于1)。

还有其他情况下它会退出1除了没有外向变更集,但我严重怀疑你会遇到任何来自outgoing -q的情况,你似乎暗示。 (而且,事实上,在现实世界的任何其他情况下,我很少看到来自1outgoing -q;我唯一能够立即想到的情况是它仍然应该以编程方式处理为“没有外向变更集”。)

© www.soinside.com 2019 - 2024. All rights reserved.