53 lines
1.2 KiB
Text
53 lines
1.2 KiB
Text
|
#!/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
|