Re: command prompt script for current branch

5 messages, 4 authors, 2016-06-15 · open the first message on its own page

Re: command prompt script for current branch

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:44:11

"Stephen Sinclair" [off-list ref] writes:
...  Sometimes I've
found I started working only to realize I was on the wrong branch.
See contrib/completion/git-completion.bash if you are a bash user.

[PATCH (repost)] Improve bash prompt to detect merge / rebase in progress

From: Robin Rosenberg <hidden>
Date: 2016-06-15 22:44:11

Hi Junio,

I'm not sure whether you didn't like it or not or just lost it. Here
is the vastly enhanced prompt again, rebased.

-- robin
From 76aa8bae8491c1ffbd6e3f5c99ab014ef87794c8 Mon Sep 17 00:00:00 2001
From: Shawn O. Pearce <redacted>
Date: Tue, 4 Sep 2007 03:13:01 -0400
Subject: 

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.

Signed-off-by: Robin Rosenberg <redacted>
---
 contrib/completion/git-completion.bash |   37 ++++++++++++++++++++++++++++---
 1 files changed, 33 insertions(+), 4 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 0d33f9a..4ea727b 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -64,12 +64,41 @@ __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
+			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
+			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.4.rc4.25.g81cc

Re: [PATCH (repost)] Improve bash prompt to detect merge / rebase in progress

From: Robin Rosenberg <hidden>
Date: 2016-06-15 22:44:11

Actually I wrote the patch and Shawn sent back a sligtly better version,
i.e.:

From: Robin Rosenberg <redacted>

-- robin

Re: [PATCH (repost)] Improve bash prompt to detect merge / rebase in progress

From: Jakub Narebski <hidden>
Date: 2016-06-15 22:44:11

Robin Rosenberg [off-list ref] writes:
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.
[...]
+		if [ -d "$g/../.dotest" ]
[...]
+		elif [ -f "$g/.dotest-merge/interactive" ]
[...]
+		elif [ -d "$g/.dotest-merge" ]
Hmmm... is it time to ressurect "git explain" / "git info" / "git state"
command idea, as to not need to harcode info about state in scripts,
putting it in only one place?

-- 
Jakub Narebski
Poland
ShadeHawk on #git

Re: [PATCH (repost)] Improve bash prompt to detect merge / rebase in progress

From: Mike Hommey <hidden>
Date: 2016-06-15 22:44:11

On Wed, Feb 06, 2008 at 03:21:40PM -0800, Jakub Narebski wrote:
Robin Rosenberg [off-list ref] writes:
quoted
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.
[...]
quoted
+		if [ -d "$g/../.dotest" ]
[...]
quoted
+		elif [ -f "$g/.dotest-merge/interactive" ]
[...]
quoted
+		elif [ -d "$g/.dotest-merge" ]
Hmmm... is it time to ressurect "git explain" / "git info" / "git state"
command idea, as to not need to harcode info about state in scripts,
putting it in only one place?
Maybe git status could deal with that job.

Mike
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help