浏览代码

oeqa/utils/metadata: Allow to function without the git module

The python git module may or may not be enabled, allow this code to
function without it, falling back to the same method as metadata_scm.bbclass
uses. This will be cleaned up in the next round of feature development.

(From OE-Core rev: 6350586ba9f4a4107a2d457590824cd4d662d5b9)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Richard Purdie 6 年之前
父节点
当前提交
44ee41052c
共有 1 个文件被更改,包括 15 次插入2 次删除
  1. 15 2
      meta/lib/oeqa/utils/metadata.py

+ 15 - 2
meta/lib/oeqa/utils/metadata.py

@@ -58,9 +58,22 @@ def metadata_from_data_store(d):
 
 
 def git_rev_info(path):
 def git_rev_info(path):
     """Get git revision information as a dict"""
     """Get git revision information as a dict"""
-    from git import Repo, InvalidGitRepositoryError, NoSuchPathError
-
     info = OrderedDict()
     info = OrderedDict()
+
+    try:
+        from git import Repo, InvalidGitRepositoryError, NoSuchPathError
+    except ImportError:
+        import subprocess
+        try:
+            info['branch'] = subprocess.check_output(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd=path).decode('utf-8').strip()
+        except subprocess.CalledProcessError:
+            pass
+        try:
+            info['commit'] = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=path).decode('utf-8').strip()
+        except subprocess.CalledProcessError:
+            pass
+        return info
+
     try:
     try:
         repo = Repo(path, search_parent_directories=True)
         repo = Repo(path, search_parent_directories=True)
     except (InvalidGitRepositoryError, NoSuchPathError):
     except (InvalidGitRepositoryError, NoSuchPathError):