diff options
-rw-r--r-- | gbp/git/repository.py | 9 | ||||
-rw-r--r-- | tests/test_GitRepository.py | 6 |
2 files changed, 14 insertions, 1 deletions
diff --git a/gbp/git/repository.py b/gbp/git/repository.py index 79492a1e..9c55dfd8 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 8dafc2a2..24bdae26 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(): |