| #!/usr/bin/env bash |
| r= |
| b= |
| g="$(git rev-parse --git-dir 2>/dev/null)" |
| |
| if [ -n "$g" ]; then |
| if [ -d "$g/../.dotest" ] |
| then |
| if test -f "$g/../.dotest/rebasing" |
| then |
| r="|REBASE" |
| elif test -f "$g/../.dotest/applying" |
| then |
| r="|AM" |
| else |
| r="|AM/REBASE" |
| fi |
| b="$(git symbolic-ref HEAD 2>/dev/null)" |
| elif [ -f "$g/.dotest-merge/interactive" ] |
| then |
| r="|REBASE-i" |
| b="$(cat "$g/.dotest-merge/head-name")" |
| elif [ -d "$g/.dotest-merge" ] |
| then |
| r="|REBASE-m" |
| b="$(cat "$g/.dotest-merge/head-name")" |
| elif [ -f "$g/MERGE_HEAD" ] |
| then |
| r="|MERGING" |
| b="$(git symbolic-ref HEAD 2>/dev/null)" |
| else |
| if [ -f "$g/BISECT_LOG" ] |
| then |
| r="|BISECTING" |
| fi |
| if ! b="$(git symbolic-ref HEAD 2>/dev/null)" |
| then |
| if ! b="$(git describe --exact-match HEAD 2>/dev/null)" |
| then |
| b="$(cut -c1-7 "$g/HEAD")..." |
| fi |
| fi |
| fi |
| |
| if [ -n "$1" ]; then |
| printf "$1" "${b##refs/heads/}$r" |
| else |
| printf "%s" "${b##refs/heads/}$r" |
| fi |
| else |
| printf "not-in-git" |
| fi |