summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLingchaox Xin <lingchaox.xin@intel.com>2013-06-20 09:34:01 +0800
committerGuido Günther <agx@sigxcpu.org>2013-09-04 22:32:55 +0200
commiteca5a3365c5461519fd23ab2e85e5de9195da007 (patch)
treebcdd2f3f957799771b86d473e90c192cb6a1a84d
parent07b30540133f193702190570b2a0e1819a327dff (diff)
GitRepository.describe: add 'tags' and 'extra-match' options
Signed-off-by: Lingchaox Xin <lingchaox.xin@intel.com> Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
-rw-r--r--gbp/git/repository.py9
-rw-r--r--tests/test_GitRepository.py6
2 files changed, 14 insertions, 1 deletions
diff --git a/gbp/git/repository.py b/gbp/git/repository.py
index 79492a1..9c55dfd 100644
--- a/gbp/git/repository.py
+++ b/gbp/git/repository.py
@@ -625,7 +625,7 @@ class GitRepository(object):
return [ False, True ][len(out)]
def describe(self, commitish, pattern=None, longfmt=False, always=False,
- abbrev=None):
+ abbrev=None, tags=False, exact_match=False):
"""
Describe commit, relative to the latest tag reachable from it.
@@ -639,6 +639,11 @@ class GitRepository(object):
@type always: C{bool}
@param abbrev: abbreviate sha1 to given length instead of the default
@type abbrev: None or C{long}
+ @param tags: enable matching a lightweight (non-annotated) tag
+ @type tags: C{bool}
+ @param exact_match: only output exact matches (a tag directly
+ references the supplied commit)
+ @type exact_match: C{bool}
@return: tag name plus/or the abbreviated sha1
@rtype: C{str}
"""
@@ -652,6 +657,8 @@ class GitRepository(object):
elif abbrev is not None:
args.add('--abbrev=%s' % abbrev)
args.add_true(always, '--always')
+ args.add_true(tags, '--tags')
+ args.add_true(exact_match, '--exact-match')
args.add(commitish)
tag, err, ret = self._git_inout('describe', args.args,
diff --git a/tests/test_GitRepository.py b/tests/test_GitRepository.py
index 8dafc2a..24bdae2 100644
--- a/tests/test_GitRepository.py
+++ b/tests/test_GitRepository.py
@@ -266,6 +266,12 @@ def test_describe():
>>> repo.describe('HEAD', pattern='foo*', always=True, abbrev=16) == sha[:16]
True
>>> tag = repo.describe('HEAD', longfmt=True, abbrev=16) == 'tag2-0-g%s' % sha[:16]
+ >>> repo.delete_tag('tag2')
+ >>> repo.describe('HEAD', tags=True)
+ 'tag'
+ >>> repo.describe('HEAD', tags=True, exact_match=True)
+ 'tag'
+ >>> repo.create_tag('tag2', msg='foo')
"""
def test_find_tag():