summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <michael.drake@codethink.co.uk>2015-04-13 14:17:29 +0000
committerBaserock Gerrit <gerrit@baserock.org>2015-04-28 15:53:08 +0000
commit87f8dbefda89bf6cb9e4b88f23a5317b054da0d4 (patch)
tree8c2028c45ae08fd5c7606d1ff2d093bd763c79f4
parent2594f6d52878ef78d9809c52c7aebbe52434dba9 (diff)
downloadmorph-87f8dbefda89bf6cb9e4b88f23a5317b054da0d4.tar.gz
Add version guessing function to gitdir and cached repo.
Change-Id: I1c79ce68a7a7534d36a9e83210e18a58e7b648e8
-rw-r--r--morphlib/cachedrepo.py9
-rw-r--r--morphlib/gitdir.py6
2 files changed, 15 insertions, 0 deletions
diff --git a/morphlib/cachedrepo.py b/morphlib/cachedrepo.py
index 0c0f5cb7..a630cc29 100644
--- a/morphlib/cachedrepo.py
+++ b/morphlib/cachedrepo.py
@@ -143,6 +143,15 @@ class CachedRepo(object):
'''
return self._gitdir.branches_containing_sha1(ref)
+ def version_guess(self, ref): # pragma: no cover
+ '''Guess version number using `git describe --tags`
+
+ Raises a gitdir.InvalidRefError if the ref is not found in the
+ repository.
+
+ '''
+ return self._gitdir.version_guess(ref)
+
def list_files(self, ref, recurse=True): # pragma: no cover
'''Return filenames found in the tree pointed to by the given ref.
diff --git a/morphlib/gitdir.py b/morphlib/gitdir.py
index 1c286720..a6dd26a1 100644
--- a/morphlib/gitdir.py
+++ b/morphlib/gitdir.py
@@ -707,6 +707,12 @@ class GitDirectory(object):
args = ['branch', '--contains', ref]
return self._gitcmd_output_list(*args)
+ def version_guess(self, ref): # pragma: no cover
+ self._check_ref_exists(ref)
+
+ args = ['describe', '--tags', '--always', ref]
+ return morphlib.git.gitcmd(self._runcmd, *args).strip()
+
def _update_ref(self, ref_args, message):
args = ['update-ref']
# No test coverage, since while this functionality is useful,