Как я могу узнать, есть ли в репозитории исходящие изменения из сценария оболочки, и безопасно ли обнаруживать реальные ошибки? - PullRequest
0 голосов
/ 01 июня 2018
$ hg outgoing -q
$ echo $?
1

Похоже, что Mercurial использует код выхода 1, чтобы указать, что нет исходящих наборов изменений.Мне, как составителю сценария, трудно сказать, есть ли исходящие наборы изменений или есть общая ошибка.Например, если машина отключена от Интернета, я хочу обнаружить ошибку.Рассмотрим следующий сценарий:

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

Оба возвращают коды ошибок.Могу ли я рассчитывать, что Mercurial вернет 0, если есть исходящие наборы изменений, 1, если их нет, и 255, если есть фактическая ошибка?

В документация для hg outgoing, единственное, что я могу найти:

Возвращает 0, если есть исходящие изменения, в противном случае - 1.

Я не видел никакого очевидного обсуждения вдокументация о кодах возврата в целом.Документы вообще не говорят об этом коде возврата 255.

Могу ли я верить, что hg outgoing будет использовать что-то отличное от 0 и 1 в реальном случае и гдеэто документация для этого?

1 Ответ

0 голосов
/ 23 февраля 2019

В большинстве случаев (не только outgoing), hg возвращает один из трех кодов выхода:

  • 0: успех
  • 1: можетне выполнить команду (в вашем случае нечего было показать)
  • 255: катастрофическая ошибка (в вашем случае недоступен удаленный)

Хотя hg help scripting может оказатьсяинтересно и полезно для будущих проектов, проверка, если $? меньше 2, вероятно, даст вам то, что вы хотите, если ваша цель просто «не провалилась» (или, наоборот, больше 1 в случае сбоя).

Есть и другие случаи, когда он выйдет с 1, кроме исходящих наборов изменений, но я серьезно сомневаюсь, что вы столкнетесь с любым из них с outgoing -q в сценарии, который вы, похоже, намекаете.(И действительно, я редко видел 1 из outgoing -q в любой другой ситуации в реальном мире; единственный момент, о котором я могу сразу подумать, - это сценарий, в котором его все равно следует рассматривать программно как «нет исходящих».Изменения».)

...