diff --git a/rhodecode/lib/vcs/backends/git/changeset.py b/rhodecode/lib/vcs/backends/git/changeset.py --- a/rhodecode/lib/vcs/backends/git/changeset.py +++ b/rhodecode/lib/vcs/backends/git/changeset.py @@ -46,8 +46,7 @@ class GitChangeset(BaseChangeset): self.revision = repository.revisions.index(revision) self.message = safe_unicode(commit.message) - #self.branch = None - self.tags = [] + self.nodes = {} self._paths = {} @@ -72,6 +71,14 @@ class GitChangeset(BaseChangeset): return self.changed, self.added, self.removed @LazyProperty + def tags(self): + _tags = [] + for tname, tsha in self.repository.tags.iteritems(): + if tsha == self.raw_id: + _tags.append(tname) + return _tags + + @LazyProperty def branch(self): heads = self.repository._heads(reverse=False) diff --git a/rhodecode/lib/vcs/backends/git/repository.py b/rhodecode/lib/vcs/backends/git/repository.py --- a/rhodecode/lib/vcs/backends/git/repository.py +++ b/rhodecode/lib/vcs/backends/git/repository.py @@ -18,7 +18,7 @@ import traceback import urllib import urllib2 from dulwich.repo import Repo, NotGitRepository -#from dulwich.config import ConfigFile +from dulwich.objects import Tag from string import Template from subprocess import Popen, PIPE from rhodecode.lib.vcs.backends.base import BaseRepository @@ -401,6 +401,10 @@ class GitRepository(BaseRepository): for k, type_ in keys: if ref.startswith(k): _key = ref[len(k):] + if type_ == 'T': + obj = self._repo.get_object(sha) + if isinstance(obj, Tag): + sha = self._repo.get_object(sha).object[1] _refs[_key] = [sha, type_] break return _refs