bitbake: bitbake: fetch2/git: add nobranch option for SRC_URI to skip SHA validating...
authorZhenhua Luo <zhenhua.luo@freescale.com>
Tue, 7 Jan 2014 10:45:34 +0000 (18:45 +0800)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 7 Jan 2014 13:42:55 +0000 (13:42 +0000)
For rebased git tree, some commits doesn't exist in any branch, and such commits are
valid in tag, the change is useful for such case.

(Bitbake rev: f594cb9f5a18dd0ab2342f96ffc6dba697b35f65)

Signed-off-by: Zhenhua Luo <zhenhua.luo@freescale.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/lib/bb/fetch2/git.py

index b4b9368..c323309 100644 (file)
@@ -101,6 +101,8 @@ class Git(FetchMethod):
 
         ud.rebaseable = ud.parm.get("rebaseable","0") == "1"
 
+        ud.nobranch = ud.parm.get("nobranch","0") == "1"
+
         # bareclone implies nocheckout
         ud.bareclone = ud.parm.get("bareclone","0") == "1"
         if ud.bareclone:
@@ -289,8 +291,13 @@ class Git(FetchMethod):
         return True
 
     def _contains_ref(self, ud, d, name):
-        cmd =  "%s branch --contains %s --list %s 2> /dev/null | wc -l" % (
-            ud.basecmd, ud.revisions[name], ud.branches[name])
+        cmd = ""
+        if ud.nobranch:
+            cmd = "%s log --pretty=oneline -n 1 %s -- 2> /dev/null | wc -l" % (
+                ud.basecmd, ud.revisions[name])
+        else:
+            cmd =  "%s branch --contains %s --list %s 2> /dev/null | wc -l" % (
+                ud.basecmd, ud.revisions[name], ud.branches[name])
         try:
             output = runfetchcmd(cmd, d, quiet=True)
         except bb.fetch2.FetchError: