2

Мой обычный рабочий процесс git для развертывания следующий:

[пока на главной ветке]

git pull
git push
git checkout production
git pull
git merge master
git push

Можно ли создать функцию для выполнения всех этих команд, но если одна из них возвращает ошибку (т. Е. Конфликт слияния), она тут же останавливается?

3 ответа3

6

Используйте &&, которая будет выполнять следующую команду только в случае успешного выполнения предыдущей команды. $? возвращает команду статуса самой последней команды.

function git_checkout()
{
 git pull && git push && git checkout production && git pull && git merge master && git push
 return $?
}
2

Установка -e в bash приведет к его выходу, если он увидит ненулевой код завершения в последней команде в цепочке команд.

#!/bin/bash -e
# or `set -e`
false
echo 'I will never run!'
1

Используйте ERR_EXIT который заставит ваш скрипт завершиться при любой ошибке:

emulate -L zsh # do not change the environment outside the script

# If a command has a non-zero exit status, execute the ZERR  trap,
# if set, and exit.
setopt ERR_EXIT

cd /jhkljhlk   # <-- file does not exit and ls gives an error
echo "this will not run"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .