Re: git branch -a prefixes origin/ branches with remotes/
On Wed, Mar 31, 2010 at 1:26 PM, layer <layer@known.net> wrote:
Show 14 quoted lines
> In git 1.6.6.1 & 1.6.3.3, "git branch -a" output is like this
>
> * master
> remotes/origin/foo
> ...
>
> instead of like this for 1.6.1.3
>
> * master
> origin/foo
> ...
>
> Is this a feature or bug? I searched the mailing list archives and
> announcements couldn't find any reference to this change.
Feature. Introduced in 1.6.3:
http://article.gmane.org/gmane.comp.version-control.git/116404
See "builtin-branch: improve output when displaying remote branches"
Show 6 quoted lines
> This is important to me because I use the output of "git branch -a" in
> scripts.
>
> I should add that the scripts are merely testing for the existence of
> remote tracking branches in the local repo. If there's a better way
> to do this, I'm game. Thanks.
git branch is a so-called porcelain command, and as you've now been bitten by, the output of porcelain's is subject to change.
You probably want git for-each-ref.
Aside, the only list of plumbing vs porcelain commands I'm aware of is in the bash-completion script under contrib. See __git_list_porcelain_commands here:
http://git.kernel.org/?p=git/git.git;a=blob;f=contrib/completion/git-completion.bash
Those are generally commands whose output you do not want to be parsing. All the other git commands installed under git-core are mostly plumbing upon which you can build additional functionality.
(Note to git list: there should be a man page that has a single-line summary of each command and states whether the command is plumbing or porcelain. Maybe there is and I just don't know it.)
j.