Что такое код возврата 1 для git-rebase? Какие другие ценности он мог бы вернуть?

У меня есть сценарий, который принимает изменения от мастера и применяет их ко всем ветвям. Сценарий работает хорошо для нас, потому что мы отмечаем наши выпуски и используем dev-ветви. Мы не поддерживаем отдельную ветвь для каждой версии.

Недавно git-rebase начала сбой с кодом возврата 1. Вот как он выглядит при отладке:

 $ bash -x ./master-merge.sh ++ git rev-parse HEAD + [[ -z 66dc925f94c15f92d0a2f16a03d8776df33e9144 ]] + ret_code=0 ++ git rev-parse --abbrev-ref HEAD + current=master + git fetch --all + [[ 0 -eq 0 ]] ++ git branch -vv ++ grep -v ': gone]' ++ awk '{print $1}' + for branch in '$(git branch -vv | grep -v ": gone]" | awk '\''{print $1}'\'')' + '[' -e detsig ']' + echo 'Merging detsig' Merging detsig + git checkout detsig + [[ 0 -ne 0 ]] + git rebase origin/detsig + [[ 1 -ne 0 ]] + echo 'Rebase failed for detsig' Rebase failed for detsig + ret_code=1 + continue + for branch in '$(git branch -vv | grep -v ": gone]" | awk '\''{print $1}'\'')' + '[' -e ecies ']' + echo 'Merging ecies' Merging ecies + git checkout ecies + [[ 0 -ne 0 ]] + git rebase origin/ecies + [[ 1 -ne 0 ]] + echo 'Rebase failed for ecies' Rebase failed for ecies + ret_code=1 + continue + for branch in '$(git branch -vv | grep -v ": gone]" | awk '\''{print $1}'\'')' + '[' -e hmqv ']' + echo 'Merging hmqv' Merging hmqv + git checkout hmqv + [[ 0 -ne 0 ]] + git rebase origin/hmqv + [[ 1 -ne 0 ]] + echo 'Rebase failed for hmqv' Rebase failed for hmqv + ret_code=1 + continue 

Страница man git-rebase не обсуждает коды возврата, поэтому я не уверен, что это значит. Я также не уверен в других значениях, которые команда может вернуть.

Что означает код возврата git-rebase из 1? Есть ли у git-rebase коды с «жестким сбоем» и «мягким сбоем», так что я должен ослабить тест против 0 ?


 $ git --version git version 1.8.5.2 (Apple Git-48) $ cat master-merge.sh #!/usr/bin/env bash # make sure this is a Git directory if [[ (-z $(git rev-parse HEAD 2>/dev/null)) ]]; then echo "$PWD is not a Git repository" [[ "$0" = "$BASH_SOURCE" ]] && exit 2 || return 2 fi ret_code=0 current=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) git fetch --all &>/dev/null if [[ ("$?" -eq "0") ]]; then for branch in $(git branch -vv | grep -v ": gone]" | awk '{print $1}'); do # For some reason, this picks up all files if [ -e "$branch" ]; then continue fi echo "Merging $branch" git checkout "$branch" &>/dev/null if [[ ("$?" -ne "0") ]]; then echo "Checkout failed for $branch" ret_code=1 continue fi git rebase "origin/$branch" &>/dev/null if [[ ("$?" -ne "0") ]]; then echo "Rebase failed for $branch" ret_code=1 continue fi git merge master -m "Merge 'master' into '$branch'" if [[ ("$?" -ne "0") ]]; then echo "Merge failed for $branch" ret_code=1 continue fi git push if [[ ("$?" -ne "0") ]]; then echo "Push failed for $branch" ret_code=1 continue fi done fi if [[ (! -z "$current") ]]; then echo "Switching to $current" git checkout "$current" &>/dev/null fi [[ "$0" = "$BASH_SOURCE" ]] && exit "$ret_code" || return "$ret_code" 

Linux и Unix - лучшая ОС в мире.