From a7f12476d4e7b2025a60be58027b67b9e551f31b Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Sat, 26 Mar 2016 18:59:01 +0000 Subject: Add support for definitions version 8 This code is a rework from changes done by: - Tiago Gomes https://storyboard.baserock.org/#!/story/86 Change-Id: I3475c2bcb648a272fee33bc878a521f79d4e6581 --- morphlib/gitdir.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'morphlib/gitdir.py') diff --git a/morphlib/gitdir.py b/morphlib/gitdir.py index ca4a4c76..24dd9ed7 100644 --- a/morphlib/gitdir.py +++ b/morphlib/gitdir.py @@ -54,6 +54,14 @@ class ExpectedSha1Error(cliapp.AppException): self, 'SHA1 expected, got %s' % ref) +class MissingSubmoduleCommitError(cliapp.AppException): + + def __init__(self, repo, ref, submodule): + cliapp.AppException.__init__(self, # pragma + '%s:%s:.gitmodules: No commit object found for ' + 'submodule "%s"' % (repo, ref, submodule)) + + class RefChangeError(cliapp.AppException): pass @@ -822,6 +830,20 @@ class GitDirectory(object): except Exception as e: raise RefDeleteError(self, ref, old_sha1, e) + def get_submodule_commit(self, parent_ref, + submodule_path): # pragma: no cover + try: + lstree_output = morphlib.git.gitcmd(self._runcmd, 'ls-tree', + parent_ref, submodule_path) + except cliapp.AppException: + raise MissingSubmoduleCommitError(self.dirname, parent_ref, + submodule_path) + m = re.match("160000 commit (?P\w{40})", lstree_output) + if not m: + raise MissingSubmoduleCommitError(self.dirname, parent_ref, + submodule_path) + return m.group('sha1') + def describe(self): version = morphlib.git.gitcmd(self._runcmd, 'describe', '--always', '--dirty=-unreproducible') -- cgit v1.2.1