metadata_scm: use rev-parse rather than show-ref
authorChris Larson <chris_larson@mentor.com>
Thu, 4 Nov 2010 04:18:02 +0000 (04:18 +0000)
committerChris Larson <chris_larson@mentor.com>
Thu, 4 Nov 2010 18:36:15 +0000 (11:36 -0700)
show-ref will show all matching refs, so a "show-ref HEAD" will show not just
the local HEAD, but the fetched remote ones as well.  This isn't what we want
for this function, so change it to use rev-parse with --verify, and also
change it to use --short, to shorten the hash to a more palatable length.

Signed-off-by: Chris Larson <chris_larson@mentor.com>
Acked-by: Tim Harvey <harvey.tim@gmail.com>
Acked-by: Khem Raj <raj.khem@gmail.com>
classes/metadata_scm.bbclass

index ffc6a8a..f79ea19 100644 (file)
@@ -63,14 +63,18 @@ def base_get_metadata_svn_revision(path, d):
        return revision
 
 def base_get_metadata_git_branch(path, d):
-       branch = os.popen('cd %s; PATH=%s git symbolic-ref HEAD 2>/dev/null' % (path, d.getVar("PATH", 1))).read().rstrip()
-
-       if len(branch) != 0:
-               return branch.replace("refs/heads/", "")
-       return "<unknown>"
+    try:
+        rev = oe_run(d, ["git", "symbolic-ref", "HEAD"], cwd=path).rstrip()
+    except oe.process.CmdError:
+        rev = "<unknown>"
+    else:
+        rev = rev.replace("refs/heads/", "")
+    return rev
 
 def base_get_metadata_git_revision(path, d):
-       rev = os.popen("cd %s; PATH=%s git show-ref HEAD 2>/dev/null" % (path, d.getVar("PATH", 1))).read().split(" ")[0].rstrip()
-       if len(rev) != 0:
-               return rev
-       return "<unknown>"
+    try:
+        rev = oe_run(d, ["git", "rev-parse", "--verify", "--short", "HEAD"],
+                     cwd=path).rstrip()
+    except oe.process.CmdError:
+        rev = "<unknown>"
+    return rev