[bitbake-devel] git: Use git branch for ancestor checks

Submitted by Richard Purdie on Nov. 19, 2013, 1:20 p.m.


Message ID 1384867226.16887.1.camel@ted
State New
Headers show

Commit Message

Richard Purdie Nov. 19, 2013, 1:20 p.m.
Using git merge-base for checking for ancestors is nice but required git 1.8.0
which is not in many distrbutions yet. We therefore revert to a more ugly
check using git branch --contains until such times as we can upgrade.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

Patch hide | download patch | download mbox

diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
index 99230c1..a901a44 100644
--- a/bitbake/lib/bb/fetch2/git.py
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -283,12 +283,14 @@  class Git(FetchMethod):
     def _contains_ref(self, tag, branch, d):
         basecmd = data.getVar("FETCHCMD_git", d, True) or "git"
-        cmd = "%s merge-base --is-ancestorlog %s %s" % (basecmd, tag, branch)
+        cmd =  "%s branch --contains %s --list %s 2> /dev/null | wc -l" % (basecmd, tag, branch)
             output = runfetchcmd(cmd, d, quiet=True)
         except bb.fetch2.FetchError:
             return False
-        return True
+        if len(output.split()) > 1:
+            raise bb.fetch2.FetchError("The command '%s' gave output with more then 1 line unexpectedly, output: '%s'" % (cmd, output))
+        return output.split()[0] != "0"
     def _revision_key(self, url, ud, d, name):