Create a gist now

Instantly share code, notes, and snippets.

put this in your .bashrc/.bash_profile... works with both git and svn
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
#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='+ '

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:


autocompletion? This is relevant to my interests...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment