Merge pull request #5 from eacousineau/master

Updated to use porcelain Git commands
This commit is contained in:
2013-03-21 11:12:49 -07:00

View File

@@ -1,35 +1,51 @@
function find_git_branch { find_git_branch() {
local dir=. head local branch
until [ "$dir" -ef / ]; do # Based on: http://stackoverflow.com/a/13003854/170413
if [ -f "$dir/.git/HEAD" ]; then if branch=$(git rev-parse --abbrev-ref HEAD 2> /dev/null)
head=$(< "$dir/.git/HEAD") then
if [[ $head == ref:\ refs/heads/* ]]; then if [[ "$branch" == "HEAD" ]]; then
git_branch=" (${head#*/*/})" branch='(detached head)'
elif [[ $head != '' ]]; then fi
git_branch=' (detached)' git_branch="($branch)"
else else
git_branch=' (unknown)' git_branch=""
fi fi
return
fi
dir="../$dir"
done
git_branch=''
} }
function find_git_dirty {
st=$(git status 2>/dev/null | tail -n 1) find_git_dirty() {
if [[ $st == "" ]]; then if [[ -z "$git_branch" ]]
git_dirty='' then
elif [[ $st == "nothing to commit (working directory clean)" ]]; then git_dirty=''
git_dirty='' else
else # Based on: http://stackoverflow.com/a/2659808/170413
git_dirty='*' local err
fi if err=$(git diff-files --quiet 2>&1)
then
if git diff-index --quiet --cached HEAD
then
git_dirty=''
else
# Can't figure out different colors
git_dirty="^"
fi
elif [ -n "$err" ]
then
# Some error - most likely that it was run within $GIT_DIR
# Resolve repo root instead? `git rev-parse --git-dir` does not work, nor does the 'git root' alias trick
git_dirty=""
else
git_dirty="*"
fi
fi
} }
PROMPT_COMMAND="find_git_branch; find_git_dirty; $PROMPT_COMMAND" PROMPT_COMMAND="find_git_branch; find_git_dirty; $PROMPT_COMMAND"
# Default Git enabled prompt with dirty state # Default Git enabled prompt with dirty state
# export PS1="\u@\h \w\[$txtcyn\]\$git_branch\[$txtylw\]\$git_dirty\[$txtrst\]\$ " # export PS1="\u@\h \w\[$txtcyn\]\$git_branch\$git_dirty\[$txtrst\]\$ "
# Another variant:
# export PS1="\[$bldgrn\]\u@\h\[$txtrst\] \w\[$bldylw\]\$git_branch\[$txtcyn\]\$git_dirty\[$txtrst\]\$ "
# Default Git enabled root prompt (for use with "sudo -s") # Default Git enabled root prompt (for use with "sudo -s")
# export SUDO_PS1="\[$bakred\]\u@\h\[$txtrst\] \w\$ " # export SUDO_PS1="\[$bakred\]\u@\h\[$txtrst\] \w\$ "