diff options
Diffstat (limited to 'bin/git-ps1')
-rwxr-xr-x | bin/git-ps1 | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/bin/git-ps1 b/bin/git-ps1 new file mode 100755 index 000000000..8a0980091 --- /dev/null +++ b/bin/git-ps1 @@ -0,0 +1,52 @@ +#!/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 |