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

Re: git-PS1 bash prompt setting

From
Shawn Pearce <spearce@spearce.org>
Date
Nov 27, 2006, 17:02 UTC
Message-ID
<20061127170249.GC6616@spearce.org>
In-Reply-To
<20061127075650.81a5a850.seanlkml@sympatico.ca>
Sean <seanlkml@sympatico.ca> wrote:
Show 18 quoted lines
> On Mon, 27 Nov 2006 01:54:00 -0500
> Shawn Pearce <spearce@spearce.org> wrote:
> 
> > I'm using something like this, and will be adding it to
> > git-completion.bash tonight:
> > 
> > 	__git_ps1 ()
> > 	{
> > 		local b="$(git symbolic-ref HEAD 2>/dev/null)"
> > 		if [ -n "$b" ]; then echo "(${b##refs/heads/})"; fi
> > 	}
> > 	PS1='[\u@\h \W$(__git_ps1)]\$ '
> > 
> > it works very well...
> 
> Yeah, when I first coded it I even looked at making it a bash loadable
> to make it perform better but found the prototype to run acceptably,
> so never bothered.

When I originally coded the first version of __git_ps1 I was using it on a Cygwin system, where the fork+exec of the external script can take a little while. The time to fork+exec two programs (script and then git) is huge compared to just fork+exec of git by itself, so I coded it as a function. On the other hand my Mac OS X system doesn't even blink at either implementation.

> If Git does get a --show-ps1 option, people will
> still be able to roll their own version to tweak the output format
> as you did above.  Hopefully the standard format will work for most
> though.

I'm not sure that's worth implementing in the core code. Most shells that will let you invoke a command as part of their prompt generation will also let you use builtin functions and do some basic string manipulation (e.g. like I do above with bash). At which point it is say 5 lines of shell (nicely formatted) to craft a prompt string vs. 15-20 lines of C to parse the option, read HEAD, and craft a prompt string.

If someone else contributes a --show-ps1 option that is useable as a replacement for my __git_ps1 I'll gladly jump on board and change to using it, but I just don't see a reason to write it myself.

Previous: SeanNext: Sean
Message 12 of 13 in “git-PS1 bash prompt setting”
  1. SeanNov 16, 2006
  2. Junio C HamanoNov 16, 2006
  3. Johannes SchindelinNov 26, 2006
  4. SeanNov 26, 2006
  5. Johannes SchindelinNov 26, 2006
  6. Nicolas VilzNov 26, 2006
  7. Junio C HamanoNov 27, 2006
  8. Nicolas VilzNov 27, 2006
  9. Shawn PearceNov 27, 2006
  10. Jakub NarebskiNov 27, 2006
  11. SeanNov 27, 2006
  12. Shawn PearceNov 27, 2006
  13. SeanNov 27, 2006

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.