@ -5,9 +5,6 @@
#
#
# Alan K. Stebbens <aks@stebbens.org> [http://github.com/aks]
# Alan K. Stebbens <aks@stebbens.org> [http://github.com/aks]
# helper functions
count_lines( ) { echo " $1 " | egrep -c $3 " ^ $2 " ; }
if [ -z " ${ __GIT_PROMPT_DIR } " ] ; then
if [ -z " ${ __GIT_PROMPT_DIR } " ] ; then
SOURCE = " ${ BASH_SOURCE [0] } "
SOURCE = " ${ BASH_SOURCE [0] } "
while [ -h " ${ SOURCE } " ] ; do
while [ -h " ${ SOURCE } " ] ; do
@ -23,10 +20,20 @@ gitstatus=`LC_ALL=C git status --porcelain --branch`
# if the status is fatal, exit now
# if the status is fatal, exit now
[ [ " $? " -ne 0 ] ] && exit 0
[ [ " $? " -ne 0 ] ] && exit 0
num_staged = ` count_lines " $gitstatus " "(\?\?|##| )" "-v" `
num_staged = 0
num_changed = ` count_lines " $gitstatus " ".M" `
num_changed = 0
num_conflicts = ` count_lines " $gitstatus " "U" `
num_conflicts = 0
num_untracked = ` count_lines " $gitstatus " "\?\?" `
num_untracked = 0
while IFS = '' read -r line || [ [ -n " $line " ] ] ; do
status = ${ line : 0 : 2 }
case " $status " in
\# \# ) branch_line = " $line " ; ;
?M) ( ( num_changed++) ) ; ;
U?) ( ( num_conflicts++) ) ; ;
\? \? ) ( ( num_untracked++) ) ; ;
*) ( ( num_staged++) ) ; ;
esac
done <<< " $gitstatus "
if [ [ " $__GIT_PROMPT_IGNORE_STASH " = "1" ] ] ; then
if [ [ " $__GIT_PROMPT_IGNORE_STASH " = "1" ] ] ; then
num_stashed = 0
num_stashed = 0
@ -67,23 +74,31 @@ elif [[ "$branch" == *"Initial commit on"* ]]; then
elif [ [ " $branch " = = *"no branch" * ] ] ; then
elif [ [ " $branch " = = *"no branch" * ] ] ; then
branch = "_PREHASH_`git rev-parse --short HEAD`"
branch = "_PREHASH_`git rev-parse --short HEAD`"
else
else
IFS = "[]" read -ra remote_line <<< " ${ line [3] } "
IFS = "[,]" read -ra remote_line <<< " ${ line [3] } "
if [ [ " ${ remote_line [1] } " = = *ahead* ] ] ; then
for rline in " ${ remote_line [@] } " ; do
num_ahead = ${ remote_line [1] : 6 }
if [ [ " $rline " = = *ahead* ] ] ; then
num_ahead = ${ rline : 6 }
remote = " ${ remote } _AHEAD_ ${ num_ahead } "
remote = " ${ remote } _AHEAD_ ${ num_ahead } "
fi
fi
if [ [ " ${ remote_ line [1] } " = = *behind* ] ] ; then
if [ [ " $ rline" = = *behind* ] ] ; then
num_behind = ${ remote_ line [1] : 7 }
num_behind = ${ rline : 7 }
remote = " ${ remote } _BEHIND_ ${ num_behind } "
remote = " ${ remote } _BEHIND_ ${ num_behind # } "
fi
fi
done
fi
fi
if [ [ -z " $remote " ] ] ; then
if [ [ -z " $remote " ] ] ; then
remote = '.'
remote = '.'
fi
fi
for w in " $branch " " $remote " $num_staged $num_conflicts $num_changed $num_untracked $num_stashed $clean ; do
printf "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n" \
echo " $w "
" $branch " \
done
" $remote " \
$num_staged \
$num_conflicts \
$num_changed \
$num_untracked \
$num_stashed \
$clean
exit
exit