[bitbake-devel] [RFC] WIP: git: prefix with refs/tags/ when revision isn't git hash

Martin Jansa martin.jansa at gmail.com
Sun Aug 11 08:36:37 UTC 2013


* many Open webOS components have tag in format
  submissions/N, versions/X.Y.Z
  just by chance I've noticed that git ls-remote behaves a bit different
  than what I've expected:

  We were using tag=18 in SRC_URI.
  librolegen repository doesn't have tag '18'
  $ git tag -l
  submissions/0
  submissions/16
  submissions/17
  submissions/18
  version/2.0.0
  versions/2.1.0

  It was working correctly until now, just because we were lucky.

  From git help ls-remote:
    When <refs>... are specified, only references matching the given
    patterns are displayed.
  $ git ls-remote git://github.com/openwebos/librolegen 18
    cbedc69733f65cd2f498787a621c014e219d38ab        refs/tags/submissions/18
  $ git ls-remote git://github.com/openwebos/librolegen 17
    af5b0e7b514938d5589c89ab9508ad23dce43e98        refs/tags/submissions/17
  $ git ls-remote git://github.com/openwebos/librolegen
    9040954a24115b05219e7dd459dcf91ad05cc739        HEAD
    9040954a24115b05219e7dd459dcf91ad05cc739        refs/heads/master
    85524970dba46557d3c9672455a4a88165efe7f1        refs/notes/review
    fe509e33f5d68c834bce087dff0f6c801d869b68        refs/tags/submissions/0
    04bc2c24ce628de3ac0fba8afce088f2391f96bb        refs/tags/submissions/0^{}
    7aa394eea6bd76618337772894f7615d0ae8e13a        refs/tags/submissions/16
    af5b0e7b514938d5589c89ab9508ad23dce43e98        refs/tags/submissions/17
    cbedc69733f65cd2f498787a621c014e219d38ab        refs/tags/submissions/18
    9040954a24115b05219e7dd459dcf91ad05cc739        refs/tags/submissions/18^{}
    7aa394eea6bd76618337772894f7615d0ae8e13a        refs/tags/version/2.0.0
    af5b0e7b514938d5589c89ab9508ad23dce43e98        refs/tags/versions/2.1.0

    So if someone creates tag 'foo/18' ls-remote will return both lines and
    build will fail.

    Prefixing with 'refs/tags/' will work in this case, but I haven't tested
    if this code breaks AUTOREV or other use-cases -> that's why it's RFC + WIP.

Signed-off-by: Martin Jansa <Martin.Jansa at gmail.com>
---
 lib/bb/fetch2/git.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/bb/fetch2/git.py b/lib/bb/fetch2/git.py
index 6175e4c..ebb5722 100644
--- a/lib/bb/fetch2/git.py
+++ b/lib/bb/fetch2/git.py
@@ -124,7 +124,7 @@ class Git(FetchMethod):
             # Ensure anything that doesn't look like a sha256 checksum/revision is translated into one
             if not ud.revisions[name] or len(ud.revisions[name]) != 40  or (False in [c in "abcdef0123456789" for c in ud.revisions[name]]):
                 if ud.revisions[name]:
-                    ud.branches[name] = ud.revisions[name]
+                    ud.branches[name] = "refs/tags/%s" % ud.revisions[name]
                 ud.revisions[name] = self.latest_revision(ud.url, ud, d, name)
 
         gitsrcname = '%s%s' % (ud.host.replace(':','.'), ud.path.replace('/', '.').replace('*', '.'))
-- 
1.8.3.2




More information about the bitbake-devel mailing list