#!/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