unset __CURRENT_GIT_BRANCH unset __CURRENT_GIT_BRANCH_STATUS unset __CURRENT_GIT_BRANCH_IS_DIRTY local st="$(git status 2>/dev/null)" local st2="$(git log -1 --pretty=%h 2>/dev/null)" if [[ -n "$st" ]]; then local -a arr arr=(${(f)st}) if [[ $arr[1] =~ 'Not currently on any branch.' ]]; then __CURRENT_GIT_BRANCH="$st2" else __CURRENT_GIT_BRANCH="${arr[1][(w)4]}"; fi if [[ $arr[2] =~ 'Your branch is' ]]; then if [[ $arr[2] =~ 'ahead' ]]; then __CURRENT_GIT_BRANCH_STATUS='ahead' elif [[ $arr[2] =~ 'diverged' ]]; then __CURRENT_GIT_BRANCH_STATUS='diverged' else __CURRENT_GIT_BRANCH_STATUS='behind' fi fi if [[ ! $st =~ 'nothing to commit' ]]; then __CURRENT_GIT_BRANCH_IS_DIRTY='1' fi fi