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 ()
|
__git_ps1 ()
|
||||||
{
|
{
|
||||||
local b="$(git symbolic-ref HEAD 2>/dev/null)"
|
local g="$(git rev-parse --git-dir 2>/dev/null)"
|
||||||
if [ -n "$b" ]; then
|
if [ -n "$g" ]; then
|
||||||
if [ -n "$1" ]; then
|
local r
|
||||||
printf "$1" "${b##refs/heads/}"
|
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
|
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
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user