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