]> code.ossystems Code Review - openembedded-core.git/commitdiff
metadata_scm: rewrite git hash logic
authorRoss Burton <ross.burton@intel.com>
Tue, 13 Oct 2015 14:52:20 +0000 (15:52 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 19 Oct 2015 16:48:14 +0000 (17:48 +0100)
The code to get the git and branch hash for the current commit in a specific
repository was quite complex and prone to breakage, replace it with subprocess
and git rev-parse.

Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/metadata_scm.bbclass

index 237e61821dc1f61db1a1b4bf8b7872ee0e970763..64465faa4c89f52b2ce4738ae0c94dd758f9c7ea 100644 (file)
@@ -65,18 +65,19 @@ def base_get_metadata_svn_revision(path, d):
     return revision
 
 def base_get_metadata_git_branch(path, d):
-    branch = os.popen('cd %s; git branch 2>&1 | grep "^* " | tr -d "* "' % path).read()
+    import subprocess
 
-    if len(branch) != 0:
-        return branch
-    return "<unknown>"
+    try:
+        return subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"],
+                                       cwd=path).strip()
+    except:
+        return "<unknown>"
 
 def base_get_metadata_git_revision(path, d):
-    f = os.popen("cd %s; git log -n 1 --pretty=oneline -- 2>&1" % path)
-    data = f.read()
-    if f.close() is None:        
-        rev = data.split(" ")[0]
-        if len(rev) != 0:
-            return rev
-    return "<unknown>"
+    import subprocess
 
+    try:
+        return subprocess.check_output(["git", "rev-parse", "HEAD"],
+                                       cwd=path).strip()
+    except:
+        return "<unknown>"