threads / discuss / 43509

Re: git-PS1 bash prompt setting

Subject: Re: git-PS1 bash prompt setting

## tl;dr

4 messages between Nov 17, 2006 and Nov 19, 2006.

replies: 3people: 3as markdown or json

Nicolas Vilz· Nov 17, 2006, 08:38 UTC · lore
On Thu, Nov 16, 2006 at 01:01:11PM -0500, Sean wrote:
Show 18 quoted lines
> [branch!repo/relative/path]$ 
> 
> Where "repo" is the basename of the path to the root of your repo.
> An example would look like this:
> 
> [master!linus-2.6/Documentation/vm]$ 
> 
> Cheers,
> Sean
> 
> 
> #!/bin/bash
> BR=$(git symbolic-ref HEAD 2>/dev/null) || { echo "$@" ; exit ; }
> BR=${BR#refs/heads/}
> REL=$(git rev-parse --show-prefix) 
> REL="${REL//%\/}"
> LOC="${PWD%/$REL}"
> echo "[$BR!${LOC/*\/}${REL:+/$REL}]$ "
Just a note:

this doesn't work with bash 3.2. I think they altered the way of trimming variables in this version.

on systems with bash 3.2 installed, i get [master!linus-2.6/vm/vm]$ with the example above.

on systems with bash 3.1, it works properly.

unfortunatelly, i am not so good in bash scripting, so it will take some time for me to fix it.

Sincerly
Sean· Nov 17, 2006, 09:20 UTC · re: Nicolas Vilz · lore

On Fri, 17 Nov 2006 09:38:02 +0100 Nicolas Vilz <niv@iaglans.de> wrote:

Show 10 quoted lines
> Just a note:
> 
> this doesn't work with bash 3.2. I think they altered the way of
> trimming variables in this version.
> 
> on systems with bash 3.2 installed, i get
> [master!linus-2.6/vm/vm]$ 
> with the example above.
> 
> on systems with bash 3.1, it works properly.

Sorry bout that, I knew it was a bit fragile. Was rather comical reading Junio's recent message about all the things not to do if you want portable shell code and noticing my 6 line script did 90% of them ;o) Strange though, I downloaded Bash 3.2 and gave it a try and didn't see the problem here..

Wanna try this small change, to see if it helps? :

#!/bin/bash BR=$(git symbolic-ref HEAD 2>/dev/null) || { echo "$@" ; exit ; } BR=${BR#refs/heads/} REL=$(git rev-parse --show-prefix) REL="${REL%\/}" LOC="${PWD%/$REL}" echo "[$BR!${LOC/*\/}${REL:+/$REL}]$ "

Junio C Hamano· Nov 19, 2006, 06:28 UTC · re: Sean · lore
Sean <seanlkml@sympatico.ca> writes:
Show 18 quoted lines
> On Fri, 17 Nov 2006 09:38:02 +0100
> Nicolas Vilz <niv@iaglans.de> wrote:
>
>> Just a note:
>> 
>> this doesn't work with bash 3.2. I think they altered the way of
>> trimming variables in this version.
>> 
>> on systems with bash 3.2 installed, i get
>> [master!linus-2.6/vm/vm]$ 
>> with the example above.
>> 
>> on systems with bash 3.1, it works properly.
>
> Sorry bout that, I knew it was a bit fragile.  Was rather
> comical reading Junio's recent message about all the things not
> to do if you want portable shell code and noticing my 6 line script
> did 90% of them ;o)

Maybe I should have been more explicit when I said "${paremeter##word} and friends". Might not have been obvious, but I only meant the following four: %, %%, # and ##.

${parameter/pattern/string} and ${parameter//pattern/string} are not even in POSIX.

Nicolas Vilz· Nov 17, 2006, 09:52 UTC · lore
On Fri, Nov 17, 2006 at 04:20:51AM -0500, Sean wrote:
Show 30 quoted lines
> On Fri, 17 Nov 2006 09:38:02 +0100
> Nicolas Vilz <niv@iaglans.de> wrote:
> 
> > Just a note:
> > 
> > this doesn't work with bash 3.2. I think they altered the way of
> > trimming variables in this version.
> > 
> > on systems with bash 3.2 installed, i get
> > [master!linus-2.6/vm/vm]$ 
> > with the example above.
> > 
> > on systems with bash 3.1, it works properly.
> 
> Sorry bout that, I knew it was a bit fragile.  Was rather
> comical reading Junio's recent message about all the things not
> to do if you want portable shell code and noticing my 6 line script
> did 90% of them ;o)  Strange though, I downloaded Bash 3.2
> and gave it a try and didn't see the problem here..
> 
> Wanna try this small change, to see if it helps? :
> 
> #!/bin/bash
> BR=$(git symbolic-ref HEAD 2>/dev/null) || { echo "$@" ; exit ; }
> BR=${BR#refs/heads/}
> REL=$(git rev-parse --show-prefix)
> REL="${REL%\/}"
> LOC="${PWD%/$REL}"
> echo "[$BR!${LOC/*\/}${REL:+/$REL}]$ "
> 

That one did the job... funny, removing these two // did the job, for both versions, GNU bash, version 3.1.17(1)-release (powerpc-unknown-linux-gnu) and GNU bash, version 3.2.5(1)-release (x86_64-pc-linux-gnu).

Thx for fixing that script. It really helps me.

Sincerly Nicolas

← back to recent threads