[bitbake-devel] [PATCH v2] fetch2/git: Dereference unresolved names with ls-remote

Richard Purdie richard.purdie at linuxfoundation.org
Mon Feb 3 23:43:47 UTC 2014


On Mon, 2014-02-03 at 23:11 +0100, Bernhard Reutner-Fischer wrote:
> On Mon, Jan 20, 2014 at 08:47:30PM +0000, Richard Purdie wrote:
> > We need to deference tags when trying to map them to commit IDs with
> > ls-remote. If we don't do this, a given commit might not show up
> > later in a specific branch. There appears to be no good reason not
> > to do this.
> > 
> > Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> > ---
> > 
> > v2: Only apply ^{} to tags, not heads
> > 
> > diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
> > index d73f0cb..f7c26b3 100644
> > --- a/bitbake/lib/bb/fetch2/git.py
> > +++ b/bitbake/lib/bb/fetch2/git.py
> > @@ -326,7 +326,7 @@ class Git(FetchMethod):
> >          else:
> >              username = ""
> >  
> > -        cmd = "%s ls-remote %s://%s%s%s refs/heads/%s refs/tags/%s" % \
> > +        cmd = "%s ls-remote %s://%s%s%s refs/heads/%s refs/tags/%s^{}" % \
> >                (ud.basecmd, ud.proto, username, ud.host, ud.path, ud.unresolvedrev[name], ud.unresolvedrev[name])
> >          if ud.proto.lower() != 'file':
> >              bb.fetch2.check_network_access(d, cmd)
> 
> Hi Richard,
> 
> This and the previous df2e0972cd1db7abd5ec8b7cb295fb0c42e284a4 are very
> inconvenient for my workflow (¹).
> I usually have the toolchain locally for hacking, so my gcc,
> binutils-gdb, uClibc and selected apps etc look like e.g.:
> 
> $ egrep "SRC(REV|PV|_URI )" meta/recipes-devtools/gcc/gcc-4.9.inc
> SRCREV = "HEAD"
> PV = "4.9.0+git${SRCPV}"
> SRC_URI = "git:///scratch/src/gcc-4.9.mine/;branch=fixups-rtl;protocol=file;rebaseable=1"
> 
> This worked fine until your abovementioned changes. Can you advise how
> my SRC_URI should look like so i am able to keep developing and
> test changes now with the lot of oe-core and meta-openembedded as
> checks?
> 
> thanks,
> 
> To reproduce:
> $ git init /tmp/yuck
> Initialized empty Git repository in /tmp/yuck/.git/
> $ cd !$
> $ echo | tee a > b
> $ git add a
> $ git commit -q -m '1c' a
> $ git ls-remote file:///tmp/yuck/ HEAD
> 7532c4dab272c062c117b731e97889122dc10e67	HEAD
> $ git ls-remote file:///tmp/yuck/ refs/heads/HEAD refs/tags/HEAD^{}
> $
> 
> ¹) think http://xkcd.com/1172/ but IMHO a tad less obscure since i'm
> affected ;)

The xkcd link made me smile :).

There may be a case here for adding in a conditional on a local repo
(file:// type) and the revision being HEAD. It is a pretty special case
but one we can probably accommodate relatively easily...

Cheers,

Richard





More information about the bitbake-devel mailing list