Как сделать обновление hg или клонировать в одну строку bash?

Я ищу вариант, чтобы сделать обновление hg в хранилище или клонировать его, если он не существует. Таким образом, команда должна завершиться ошибкой, только если что-то пошло не так (клонирование или обновление).

Это должно работать вbashжелательно, если у вас естьset -e уже настроен.

 Helgi18 мая 2012 г., 23:07
Я не понимаю вопроса, не могли бы вы объяснить?hg update являетсяобычн выполненоизнутр репо, например~/src/myproj$ hg up. hg clone, с другой стороны, выполняется, когда нет реп, as in ~ / src $ hg клон Сервер / MYPROJ myproj`. Как вы представляете свою объединенную команду для вызова? Где
 Amadan19 мая 2012 г., 04:31
На самом деле согласен с @Helgi здесь ...
 sorin18 мая 2012 г., 14:34
Сделай ответ! Тем не менее, я хотел бы не видеть никаких ошибок в выводе, когда команда выполнена успешно. Тем не менее, видеть их, когда это терпит неудачу, очень желательно.
 Amadan18 мая 2012 г., 14:21
Неhg конкретный, но ... зачем тебе это в одной команде?A || B должен поступить правильно и потерпеть неудачу, только если обаA а такжеB провал. (чтобы уточнить, что-то вродеhg update || hg clone <source>)

Ответы на вопрос(2)

cd <directory> && hg update || hg clone <source>

потому что каталог не существует, то клон hg запускается с правильного уровня каталога.

Решение Вопроса

Оператор дизъюнкции в bash,||, может выполнить этот сценарий: попробуйте первую команду, если не получится, попробуйте вторую команду, есличт не возвращает код ошибки. Специфично для этого вопроса,

hg update || hg clone <source>

попробуем обновить; если это не удастся, он попытается клонировать. В случае сбоя клонирования вся строка завершается с кодом ошибки клона.

Я бы не хотел видеть никаких ошибок в выводе при успешном выполнении команды.

Почему при успешном выполнении команды возникают ошибки?

Вы можете убить вывод с помощью>/dev/null; Вы можете убить ошибки с помощью2>/dev/null; либо для каждого компонента в отдельности, либо заключив целую строку в скобки и поместив перенаправление после.

Ваш ответ на вопрос