#!/bin/bash set -o pipefail [[ "$TERM" = *color ]] && mitFarbe=true || mitFarbe=false [ -z "$PS1Start" ] && [ -z "$PS1Ende" ] && if echo "$PS1" | grep -q "\S" then PS1Ende="$(echo "$PS1" | sed 's|^.*[^\]\(\\\?[$#>]\s*\([]\\[0-9m]\)*\s*\)$|\1|')" PS1Start="$(echo "$PS1" | sed 's|\\\?[$#>]\s*\([]\\[0-9m]\)*\s*$||')" else PS1Ende="" PS1Start="$PS1" fi PS1="$PS1Start" if branches="$(git branch -a --no-color 2>/dev/null | sed 's|^\s*||')" && status=$(git status --porcelain 2> /dev/null) then PS1="$PS1 " branch="$( echo "${branches}" | \ grep '^\*' | \ sed 's|^\*\s*||' )" echo "$status" | grep -q "^.\S" && wtClean=false || wtClean=true echo "$status" | grep -q "^\S" && idxClean=false || idxClean=true remBranch="$( echo "${branches}" | \ grep '^\s*remotes/[^/]\+/'"${branch}" | \ sed 's|^\s*\(remotes/[^/]\+/'"${branch}"'\)/.*$|\1|' )" [ -n "${remBranch}" ] && \ [ "$(git describe --always --abbrev=0 "HEAD")" == "$(git describe --always --abbrev=0 "${remBranch}")" ] && \ remClean=true || remClean=false if $mitFarbe then if ! $wtClean then PS1="$PS1\[\033[01;31m\]" elif ! $idxClean then PS1="$PS1\[\033[01;33m\]" elif ! $remClean then PS1="$PS1\[\033[01;34m\]" else PS1="$PS1\[\033[01;32m\]" fi fi PS1="$PS1$branch" if $mitFarbe then PS1="$PS1\[\033[00m\]" else if ! $wtClean then PS1="$PS1!" elif ! $idxClean then PS1="$PS1+" elif ! $remClean then PS1="$PS1^" fi fi fi PS1="$PS1$PS1Ende"