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

Re: git-prompt.sh vs leading white space in __git_ps1()::printf_format

From
Simon Oosthoek <s.oosthoek@xs4all.nl>
Date
Dec 11, 2012, 22:47 UTC
Message-ID
<50C7B811.7030006@xs4all.nl>
In-Reply-To
<7vlidltpyj.fsf@alter.siamese.dyndns.org>
Hi Junio
This patch for the documentation doesn't seem to be in rc2 of 1.8.1...

tonight I was explaining this feature to a small group of people and I pulled the git tree to get the latest code.

The current tagged 1.8.1-rc2 doesn't yet have your improvement and after trying to explain it, I think it should be improved even more ;-)

I'm sorry to say I don't have the time right now to make a proper patch, but I'll try to expand below...

On 28/11/12 21:47, Junio C Hamano wrote:
Show 22 quoted lines
> Simon Oosthoek <s.oosthoek@xs4all.nl> writes:
> 
>> perhaps the point should read like this:
>> #    3a) In ~/.bashrc set PROMPT_COMMAND
>> #        To customize the prompt, provide start/end arguments
>> #        PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
>>
>> Which would not be confusing at all, I think...
> 
> It says "to customize", so a user who just wants the default (which
> does not exist but the comment does not say so) would be left
> without instruction, no?
> 
>     In $HOME/.bashrc, PROMPT_COMMAND can be set to
>     '__git_ps1 <pre> <post>', where <pre> and <post>
>     are strings you would put in $PS1 before and after
>     the status string generated by git-prompt machinery.
>     e.g.
>         PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "'
> 
> or something?
> 

The gist should be that: __git_ps1 can function in two modes; The "traditional" way with command substitution. This mode is activated when the function is provided 0 or 1 arguments. The new way, activated by providing exactly 2 arguments to __git_ps1 is intended for use in the PROMPT_COMMAND way of bash to call a function before writing the prompt. This command can then be (and is in fact) used to set/overwrite the PS1 variable.

Only in the PROMPT_COMMAND mode can you get a prompt with colors for the various states of the git tree showing in the prompt.

An example for inclusion in the ~/.bashrc file is: -----snip----- PROMPT_COMMAND='__git_ps1 "\u@\h:\w" "\\\$ "' GIT_PS1_SHOWDIRTYSTATE=true GIT_PS1_SHOWCOLORHINTS=true --------------

It turns out that it can be quite confusing to get your head around this split personality of __git_ps1...

I hope you can somehow get this into the next release with some improvement to the docs!

Cheers
Simon
Previous: Simon OosthoekNext: Junio C Hamano
Message 6 of 20 in “Re: git-prompt.sh vs leading white space in __git_ps1()::printf_format”
  1. Simon OosthoekNov 28, 2012
  2. Piotr KrukowieckiNov 28, 2012
  3. Simon OosthoekNov 28, 2012
  4. Junio C HamanoNov 28, 2012
  5. Simon OosthoekNov 28, 2012
  6. Simon OosthoekDec 11, 2012
  7. Junio C HamanoDec 11, 2012
  8. Junio C HamanoDec 12, 2012
  9. Simon OosthoekDec 12, 2012
  10. Junio C HamanoDec 12, 2012
  11. Simon OosthoekDec 12, 2012
  12. Junio C HamanoDec 26, 2012
  13. Simon OosthoekDec 26, 2012
  14. make __git_ps1 accept a third parameter in pcmodeSimon Oosthoek, Dec 26, 2012
  15. Junio C HamanoDec 26, 2012
  16. Simon OosthoekDec 26, 2012
  17. Junio C HamanoDec 26, 2012
  18. Junio C HamanoDec 26, 2012
  19. Simon OosthoekDec 26, 2012
  20. Junio C HamanoDec 26, 2012

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.