Re: [PATCH] Improve bash prompt to detect merge / rebase in progress
- From
Robin Rosenberg <robin.rosenberg@dewire.com>
- Date
- Sep 2, 2007, 10:40 UTC
- Message-ID
- <200709021240.36807.robin.rosenberg@dewire.com>
- In-Reply-To
- <20070902101825.1938C576FA@dx.sixt.local>
söndag 02 september 2007 skrev Johannes Sixt:
Show 21 quoted lines
> Robin Rosenberg wrote: > > + if [ -d "$g/../.dotest" ] > > + then > > + ... > > + else > > + if [ -d "$g/.dotest-merge" ] > > + then > > + ... > > + else > > + if [ -f "$g/MERGE_HEAD" ] > > + then > > + ... > > + else > > + ... > > + fi > > + fi > > + fi > > You can use 'elif' to avoid the increasing indentation. > > -- Hannes
Ofcourse :)
-- robin
From a0cce4fd418dc3ba715566980aa901dd12791b66 Mon Sep 17 00:00:00 2001 From: Robin Rosenberg <robin.rosenberg@dewire.com> Date: Sat, 1 Sep 2007 12:20:48 +0200 Subject: [PATCH] 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> --- contrib/completion/git-completion.bash | 33 ++++++++++++++++++++++++++++--- 1 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 5ed1821..433be3a 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -64,12 +64,37 @@ __gitdir () __git_ps1 () { - local b="$(git symbolic-ref HEAD 2>/dev/null)" - if [ -n "$b" ]; then + local g="$(git rev-parse --git-dir 2>/dev/null)" + if [ -n "$g" ]; then + local r + local b + if [ -d "$g/../.dotest" ] + then + local b="$(git symbolic-ref HEAD 2>/dev/null)" + r="|REBASING" + elif [ -d "$g/.dotest-merge" ] + then + r="|REBASING" + 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 + b="$(cut -c1-7 $g/HEAD)..." + fi + fi + if [ -n "$1" ]; then - printf "$1" "${b##refs/heads/}" + printf "$1" "${b##refs/heads/}$r" else - printf " (%s)" "${b##refs/heads/}" + printf " (%s)" "${b##refs/heads/}$r" fi fi }
-- 1.5.3