git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Robin Rosenberg <robin.rosenberg.lists@dewire.com>
Date
Feb 7, 2008, 00:23 UTC
Message-ID
<200802070123.43109.robin.rosenberg.lists@dewire.com>
In-Reply-To
<7vodatu37m.fsf@gitster.siamese.dyndns.org>
onsdagen den 6 februari 2008 skrev Junio C Hamano:
Show 24 quoted lines
> Robin Rosenberg <robin.rosenberg.lists@dewire.com> writes:
> 
> > I'm not sure whether you didn't like it or not or just lost it. Here
> > is the vastly enhanced prompt again, rebased.
> 
> Most likely "lost", and I appreciate a reminder like this.
> 
> > From 76aa8bae8491c1ffbd6e3f5c99ab014ef87794c8 Mon Sep 17 00:00:00 2001
> > From: Shawn O. Pearce <spearce@spearce.org>
> > 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 <robin.rosenberg@dewire.com>
> 
> But this looks funny, without Subject: and also S-o-b by the
> original author (if Shawn is indeed the original author).  It
> appears that the patch originally was from Shawn and after
> discussion petered out around Oct 1st 2007 there wasn't a resend
> for inclusion.  Is this improved/revised in any way from the one
> in the thread?
No.

I sent a patch and Shawn modified it somewhat and posted the full modified patch. Here is the same patch again (to make sure you get the right one). It has a better comment than the one I sent recently.

-- robin
>From 82a5b8d5b043ffc7c1950b391ec7ae69d575640b Mon Sep 17 00:00:00 2001
From: Robin Rosenberg <robin.rosenberg@dewire.com>
Date: Sun, 30 Sep 2007 02:20:45 +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 |   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
Previous: Junio C HamanoNext: Shawn O. Pearce
Message 6 of 16 in “command prompt script for current branch”
  1. Stephen SinclairFeb 6, 2008
  2. Junio C HamanoFeb 6, 2008
  3. Improve bash prompt to detect merge / rebase in progressRobin Rosenberg, Feb 6, 2008
  4. Robin RosenbergFeb 6, 2008
  5. Junio C HamanoFeb 6, 2008
  6. Robin RosenbergFeb 7, 2008
  7. Shawn O. PearceFeb 7, 2008
  8. Steffen ProhaskaFeb 8, 2008
  9. Johannes SchindelinFeb 8, 2008
  10. Steffen ProhaskaFeb 8, 2008
  11. Make git-completion.bash a first-class citizenJohannes Schindelin, Feb 8, 2008
  12. Jakub NarebskiFeb 6, 2008
  13. Mike HommeyFeb 6, 2008
  14. Jakub NarebskiFeb 6, 2008
  15. Stephen SinclairFeb 6, 2008
  16. Jakub NarebskiFeb 6, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.