fetch2/git: Dereference unresolved names with ls-remote
We need to deference names 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.
---
bitbake/lib/bb/fetch2/git.py +1 -1
@@ -326,7 +326,7 @@ class Git(FetchMethod): else: username = "" - cmd = "%s ls-remote %s://%s%s%s %s" % \ + cmd = "%s ls-remote %s://%s%s%s %s^{}" % \ (ud.basecmd, ud.proto, username, ud.host, ud.path, ud.unresolvedrev[name]) if ud.proto.lower() != 'file': bb.fetch2.check_network_access(d, cmd)
PATCH v2 1/1 fetch2/git: Dereference unresolved names with ls-remote
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.
---
v2: Only apply ^{} to tags, not heads
bitbake/lib/bb/fetch2/git.py +1 -1
@@ -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)
Quoted 15 lines · Richard Purdie
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 <[email protected]>---
v2: Only apply ^{} to tags, not heads
bitbake/lib/bb/fetch2/git.py +0
-0
bitbake/lib/bb/fetch2/git.py class Git(FetchMethod): · line 332
Quoted 8 lines
bitbake/lib/bb/fetch2/git.py +1
-1@@ -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 ;)
Quoted 56 lines · Bernhard Reutner-Fischer
Quoted 15 lines · Richard Purdie
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 <[email protected]>---
v2: Only apply ^{} to tags, not heads
bitbake/lib/bb/fetch2/git.py +0
-0bitbake/lib/bb/fetch2/git.py class Git(FetchMethod): · line 332
Quoted 8 lines
bitbake/lib/bb/fetch2/git.py +1
-1@@ -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
df2e0972cd1db7abd5ec8b7cb295fb0c42e284a4are 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_URIshould 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^{} $
Quoted 2 lines
¹) 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