|
|
|
|
@ -5,9 +5,6 @@ |
|
|
|
|
# |
|
|
|
|
# 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 |
|
|
|
|
SOURCE="${BASH_SOURCE[0]}" |
|
|
|
|
while [ -h "${SOURCE}" ]; do |
|
|
|
|
@ -23,17 +20,27 @@ gitstatus=`LC_ALL=C git status --porcelain --branch` |
|
|
|
|
# if the status is fatal, exit now |
|
|
|
|
[[ "$?" -ne 0 ]] && exit 0 |
|
|
|
|
|
|
|
|
|
num_staged=`count_lines "$gitstatus" "(\?\?|##| )" "-v"` |
|
|
|
|
num_changed=`count_lines "$gitstatus" ".M"` |
|
|
|
|
num_conflicts=`count_lines "$gitstatus" "U"` |
|
|
|
|
num_untracked=`count_lines "$gitstatus" "\?\?"` |
|
|
|
|
num_staged=0 |
|
|
|
|
num_changed=0 |
|
|
|
|
num_conflicts=0 |
|
|
|
|
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 |
|
|
|
|
num_stashed=0 |
|
|
|
|
else |
|
|
|
|
stash_file="`git rev-parse --git-dir`/logs/refs/stash" |
|
|
|
|
if [[ -e "${stash_file}" ]]; then |
|
|
|
|
num_stashed=`wc -l "${stash_file}" | cut -d' ' -f 1` |
|
|
|
|
num_stashed=`cat "${stash_file} | wc -l` |
|
|
|
|
else |
|
|
|
|
num_stashed=0 |
|
|
|
|
fi |
|
|
|
|
@ -46,7 +53,6 @@ fi |
|
|
|
|
|
|
|
|
|
remote= |
|
|
|
|
|
|
|
|
|
branch_line=`echo "$gitstatus" | grep "^##"` |
|
|
|
|
IFS="." read -ra line <<< "${branch_line/\#\# }" |
|
|
|
|
branch="${line[0]}" |
|
|
|
|
|
|
|
|
|
|