public
Last active

put this in your .bashrc/.bash_profile... works with both git and svn

  • Download Gist
pimp_prompt.sh
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
parse_git_branch() {
ref=$(git symbolic-ref -q HEAD 2> /dev/null) || return
printf "${1:-(%s)}" "${ref#refs/heads/}"
}
 
parse_svn_revision() {
local DIRTY REV=$(svn info 2>/dev/null | grep Revision | sed -e 's/Revision: //')
[ "$REV" ] || return
[ "$(svn st)" ] && DIRTY=' *'
echo "(r$REV$DIRTY)"
}
 
pimp_prompt() {
local BLUE="\[\033[0;34m\]"
local BLUE_BOLD="\[\033[1;34m\]"
local RED="\[\033[0;31m\]"
local LIGHT_RED="\[\033[1;31m\]"
local GREEN="\[\033[0;32m\]"
local LIGHT_GREEN="\[\033[1;32m\]"
local WHITE="\[\033[0;37m\]"
local WHITE_BOLD="\[\033[1;37m\]"
local LIGHT_GRAY="\[\033[0;37m\]"
case $TERM in
xterm*)
TITLEBAR='\[\033]0;\u@\h:\w\007\]'
;;
*)
TITLEBAR=""
;;
esac
#PS1="${TITLEBAR}[$WHITE\u@$BLUE_BOLD\h$WHITE \w$GREEN\$(parse_git_branch)\$(parse_svn_revision) $RED\$(~/.rvm/bin/rvm-prompt v g)$WHITE]\$ "
PS1="${TITLEBAR}[$WHITE\u@$BLUE_BOLD\h$WHITE \w$GREEN\$(parse_git_branch)\$(parse_svn_revision)$WHITE]\$ "
PS2='> '
PS4='+ '
}
pimp_prompt

two things.
1. Would recommend against 'function'. not as portable.
2. I use this for my parse_git_branch

__git_ps1() {
    ref=$(git symbolic-ref -q HEAD 2> /dev/null) || return
    printf "${1:- (%s)}" "${ref#refs/heads/}"
}

then I use __git_ps1 in my PS1. This has the added benefit that if I use git-bashcompletion, it provides __git_ps1 which will override my declaration, and gives a more robust ps1 (handles some edge cases).

Cactus, thanks for the notes. Do you have a gist of all your code somewhere?

I am putting this here from my own use as well as others... not entirely sure what the small differences are here: http://en.newinstance.it/2010/05/23/git-autocompletion-and-enhanced-bash-prompt/

autocompletion? This is relevant to my interests...

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.