shell bash do openSUSE para mostrar o status do branch git

Achei extremamente útil exibir no shell bash o status do branch git em vez de usar
git branch
git diff HEAD

Aqui está minha implementação para o shell bash do openSUSE (coloque todas essas linhas em seu .bashrc)

c_red=`tput setaf 1`
c_green
=`tput setaf 2`
c_sgr0
=`tput sgr0`

parse_git_branch
()
{
if git rev-parse --git-dir >/dev/null 2>&1
then
gitver
=$(git branch 2>/dev/null| sed -n '/^*/s/^* //p')
else
return 0
fi
echo
-e " [$gitver]"
}

branch_color
()
{
if git rev-parse --git-dir >/dev/null 2>&1
then
color
=""
if git diff --quiet HEAD 2>/dev/null >&2
then
color
="${c_green}"
else
color
=${c_red}
fi
else
return 0
fi
echo
-ne $color
}

PS1
='u@h:w[$(branch_color)]$(parse_git_branch)[${c_sgr0}]> '

Quando uma mudança está presente em sua cópia de trabalho ou em seu índice git, o nome do branch é colorido em vermelho, caso contrário, a cor é verde (estou assumindo que você usa o perfil do terminal com texto verde em fundo preto).