Hi,
Suppose I have these branches:
fc/feature-a
fc/feature-b
master
next
I want to show this: fc/feature-a fc/feature-b ^master ^next. I can do
'git log --branches=fc' to show the branches that begin with fc/, but
there's no way to specify the rest. If they were under a prefix, I
could do '--not --branches=prefix', but they are not.
Anybody knows a way to query branches that don't have any prefix?
It appears this works:
% git for-each-ref refs/heads/*
But I would like something parsable by rev-parse.
Any ideas?
Cheers.
--
Felipe Contreras
On Sun, Nov 25, 2012 at 10:24:59AM +0100, Felipe Contreras wrote:
Suppose I have these branches:
fc/feature-a
fc/feature-b
master
next
I want to show this: fc/feature-a fc/feature-b ^master ^next. I can do
'git log --branches=fc' to show the branches that begin with fc/, but
there's no way to specify the rest. If they were under a prefix, I
could do '--not --branches=prefix', but they are not.
Anybody knows a way to query branches that don't have any prefix?
I don't think there is a way. `--branches` can take a pattern (and there
is always `--glob`), but we do not pass FNM_PATHNAME to fnmatch, so "*"
will match across `/` boundaries.
You are stuck with:
git log --branches=fc --not $(
git for-each-ref --format='%(refname:short)' refs/heads |
grep -v /
)
which is at least robust due to the restrictions on refnames (i.e., no
whitespace).
As an aside, I noticed that:
git log --branches=does-not-exist
will see that we matched no refs and fall back to showing HEAD. That
seems a bit surprising to me.
-Peff