# Default unset c_reset= c_user= c_host= c_path= c_git_clean= c_git_staged= c_git_unstaged= # Configure colors, if available. if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then c_reset='\[\e[0m\]' c_user='\[\e[0;32m\]' if [ -n "$SSH_TTY" ]; then c_host='\[\e[0;33m\]' else c_host=$c_user fi c_path='\[\e[1;34m\]' c_git_clean='\[\e[0;34m\]' c_git_staged='\[\e[0;32m\]' c_git_unstaged='\[\e[0;31m\]' fi # Add the titlebar information when it is supported. case $TERM in xterm*|rxvt*) TITLEBAR='\[\e]0;\u@\h: \w\a\]'; ;; *) TITLEBAR=""; ;; esac # Function to assemble the Git parsingart of our prompt. git_prompt () { GIT_DIR=`git rev-parse --git-dir 2>/dev/null` if [ -z "$GIT_DIR" ]; then return 0 fi GIT_HEAD=`cat $GIT_DIR/HEAD` GIT_BRANCH=`git rev-parse --abbrev-ref HEAD 2>/dev/null` if [ ${#GIT_BRANCH} -eq 40 ]; then GIT_BRANCH="(no branch)" fi STATUS=`git status --porcelain` if [ -z "$STATUS" ]; then git_color="${c_git_clean}" else echo -e "$STATUS" | grep -q '^ [A-Z\?]' if [ $? -eq 0 ]; then git_color="${c_git_unstaged}" else git_color="${c_git_staged}" fi fi echo "[$git_color$GIT_BRANCH$c_reset]" } # Thy holy prompt. PROMPT_COMMAND="PS1=\"${TITLEBAR}${c_user}\u${c_reset}@${c_host}\h${c_reset}:${c_path}\w${c_reset}\$(git_prompt)\$ \" ;"