Improve bash prompt to detect various states like an unfinished merge
This patch makes the git prompt (when enabled) show if a merge or a rebase is unfinished. It also detects if a bisect is being done as well as detached checkouts. An uncompleted git-am cannot be distinguised from a rebase (the non-interactive version). Instead of having an even longer prompt we simply ignore that and hope the power users that use git-am knows the difference. Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com> Acked-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
b828fef678
commit
e75201963f
@ -64,12 +64,41 @@ __gitdir ()
|
||||
|
||||
__git_ps1 ()
|
||||
{
|
||||
local b="$(git symbolic-ref HEAD 2>/dev/null)"
|
||||
if [ -n "$b" ]; then
|
||||
if [ -n "$1" ]; then
|
||||
printf "$1" "${b##refs/heads/}"
|
||||
local g="$(git rev-parse --git-dir 2>/dev/null)"
|
||||
if [ -n "$g" ]; then
|
||||
local r
|
||||
local b
|
||||
if [ -d "$g/../.dotest" ]
|
||||
then
|
||||
r="|AM/REBASE"
|
||||
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
|
||||
printf " (%s)" "${b##refs/heads/}"
|
||||
if [ -f $g/BISECT_LOG ]
|
||||
then
|
||||
r="|BISECTING"
|
||||
fi
|
||||
if ! b="$(git symbolic-ref HEAD 2>/dev/null)"
|
||||
then
|
||||
b="$(cut -c1-7 $g/HEAD)..."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
printf "$1" "${b##refs/heads/}$r"
|
||||
else
|
||||
printf " (%s)" "${b##refs/heads/}$r"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user