diff options
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/fetch2/git.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py index f771fd02b6..44fc27193e 100644 --- a/bitbake/lib/bb/fetch2/git.py +++ b/bitbake/lib/bb/fetch2/git.py | |||
@@ -340,12 +340,19 @@ class Git(FetchMethod): | |||
340 | """ | 340 | """ |
341 | Compute the HEAD revision for the url | 341 | Compute the HEAD revision for the url |
342 | """ | 342 | """ |
343 | output = self._lsremote(ud, d, "") | ||
344 | # Tags of the form ^{} may not work, need to fallback to other form | ||
343 | if ud.unresolvedrev[name][:5] == "refs/": | 345 | if ud.unresolvedrev[name][:5] == "refs/": |
344 | search = "%s %s^{}" % (ud.unresolvedrev[name], ud.unresolvedrev[name]) | 346 | head = ud.unresolvedrev[name] |
347 | tag = ud.unresolvedrev[name] | ||
345 | else: | 348 | else: |
346 | search = "refs/heads/%s refs/tags/%s^{}" % (ud.unresolvedrev[name], ud.unresolvedrev[name]) | 349 | head = "refs/heads/%s" % ud.unresolvedrev[name] |
347 | output = self._lsremote(ud, d, search) | 350 | tag = "refs/tags/%s" % ud.unresolvedrev[name] |
348 | return output.split()[0] | 351 | for s in [head, tag + "^{}", tag]: |
352 | for l in output.split('\n'): | ||
353 | if s in l: | ||
354 | return l.split()[0] | ||
355 | raise bb.fetch2.FetchError("Unable to resolve '%s' in upstream git repository in git ls-remote output" % ud.unresolvedrev[name]) | ||
349 | 356 | ||
350 | def latest_versionstring(self, ud, d): | 357 | def latest_versionstring(self, ud, d): |
351 | """ | 358 | """ |