From 73f3cb75d19f586e8baca0347d93e6c70a3814f6 Mon Sep 17 00:00:00 2001 From: Dan Nguyen Date: Tue, 29 Sep 2015 15:44:25 -0500 Subject: [PATCH] Handle branches with dots in them --- gitstatus.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gitstatus.sh b/gitstatus.sh index 5416fec..3343889 100755 --- a/gitstatus.sh +++ b/gitstatus.sh @@ -27,7 +27,7 @@ num_untracked=0 while IFS='' read -r line || [[ -n "$line" ]]; do status=${line:0:2} case "$status" in - \#\#) branch_line="$line" ;; + \#\#) branch_line="${line/\.\.\./^}" ;; ?M) ((num_changed++)) ;; U?) ((num_conflicts++)) ;; \?\?) ((num_untracked++)) ;; @@ -50,13 +50,13 @@ if (( num_changed == 0 && num_staged == 0 && num_untracked == 0 && num_stashed = clean=1 fi -IFS="." read -ra line <<< "${branch_line/\#\# }" -branch="${line[0]}" +IFS="^" read -ra branch_fields <<< "${branch_line/\#\# }" +branch="${branch_fields[0]}" remote= if [[ "$branch" == *"Initial commit on"* ]]; then - IFS=" " read -ra branch_line <<< "$branch" - branch="${branch_line[3]}" + IFS=" " read -ra fields <<< "$branch" + branch="${fields[3]}" remote="_NO_REMOTE_TRACKING_" elif [[ "$branch" == *"no branch"* ]]; then tag=$( git describe --exact-match ) @@ -66,10 +66,10 @@ elif [[ "$branch" == *"no branch"* ]]; then branch="_PREHASH_$( git rev-parse --short HEAD )" fi else - if [[ "${#line[@]}" -eq 1 ]]; then + if [[ "${#branch_fields[@]}" -eq 1 ]]; then remote="_NO_REMOTE_TRACKING_" else - IFS="[,]" read -ra remote_line <<< "${line[3]}" + IFS="[,]" read -ra remote_line <<< "${branch_fields[1]}" for rline in "${remote_line[@]}"; do if [[ "$rline" == *ahead* ]]; then num_ahead=${rline:6}