Subject: Re: [PATCH] bash completion: Support "unpushed commits" warnings in __git_ps1

From: Jakub Narebski <[email-masked]>
Date: Sun, 06 Jun 2010 14:07:48 -0700 (PDT)

Andrew Sayers <[email-masked]> writes:

> I don't see how to actually split out the branch name without calling
> sed or using one of the disallowed ${} constructs.  So I compared the
> following commands on my PC (2.1 GHz dual-core Athlon) using a
> repository with 100 empty commits between HEAD and a git-svn-id:
> 
> time git log | \
> 	sed -ne "/^    git-svn-id: / { s/^    git-svn-id: "\
> 	"$remote_branch\/\([^@]*\).*/\1/p ; q }"
> 
> time git log -1 --grep="^git-svn-id: $remote_branch" | \
> 	sed -ne "s/^    git-svn-id: $remote_branch\/\([^@]*\).*/\1/p"

What disallowed ${} constructs?

First, ${var#pattern}, ${var##pattern}, ${var%pattern} and ${var%%pattern}
are POSIX, so you can use it in git shell scripts.

Second, this is _bash_ completion, so you can use also bash-specific
expansion, like ${var/pattern/string} or ${var//pattern/string}.

-- 
Jakub Narebski
Poland
ShadeHawk on #git