oeqa.utils.metadata: fix retrieval of git branch and revision

Always return a valid branch name, or, '(nobranch)' if the current HEAD
is detached. Also, always return the hash of the commit object that HEAD
is pointing to. Previous code returned an incorrect branch name (or
crashed) e.g. in the case of detached HEAD.

[YOCTO #10590]

(From OE-Core rev: 02d3ba17a8090bd088beb973980651d664f713bb)

Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Markus Lehtonen
2017-01-13 15:12:40 +02:00
committed by Richard Purdie
parent 4e67232f34
commit 927e759bb2

View File

@@ -72,11 +72,13 @@ def get_layers(layers):
layer_dict[layer_name] = OrderedDict() layer_dict[layer_name] = OrderedDict()
try: try:
repo = Repo(layer, search_parent_directories=True) repo = Repo(layer, search_parent_directories=True)
revision, branch = repo.head.object.name_rev.split()
except (InvalidGitRepositoryError, NoSuchPathError): except (InvalidGitRepositoryError, NoSuchPathError):
continue continue
layer_dict[layer_name]['branch'] = branch layer_dict[layer_name]['revision'] = repo.head.commit.hexsha
layer_dict[layer_name]['revision'] = revision try:
layer_dict[layer_name]['branch'] = repo.active_branch.name
except TypeError:
layer_dict[layer_name]['branch'] = '(nobranch)'
return layer_dict return layer_dict
def write_metadata_file(file_path, metadata): def write_metadata_file(file_path, metadata):