summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/fetch2/git.py15
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 """