Changeset - 952dd2c95e45
[Not reviewed]
beta
0 1 0
Marcin Kuzminski - 13 years ago 2012-07-03 00:19:02
marcin@python-works.com
When using tags in git use the link to Commit instead of messing with Tag object
1 file changed with 10 insertions and 13 deletions:
0 comments (0 inline, 0 general)
rhodecode/lib/vcs/backends/git/changeset.py
Show inline comments
 
@@ -17,45 +17,42 @@ from rhodecode.lib.vcs.utils import date
 
from rhodecode.lib.vcs.utils.lazy import LazyProperty
 
from dulwich.objects import Commit, Tag
 

	
 

	
 
class GitChangeset(BaseChangeset):
 
    """
 
    Represents state of the repository at single revision.
 
    """
 

	
 
    def __init__(self, repository, revision):
 
        self._stat_modes = {}
 
        self.repository = repository
 
        self.raw_id = revision
 
        self.short_id = self.raw_id[:12]
 
        self.id = self.raw_id
 

	
 
        try:
 
            commit = self.repository._repo.get_object(self.raw_id)
 
            commit = self.repository._repo.get_object(revision)
 
            if isinstance(commit, Tag):
 
                revision = commit.object[1]
 
                commit = self.repository._repo.get_object(commit.object[1])
 
        except KeyError:
 
            raise RepositoryError("Cannot get object with id %s" % self.raw_id)
 
            raise RepositoryError("Cannot get object with id %s" % revision)
 
        self.raw_id = revision
 
        self.id = self.raw_id
 
        self.short_id = self.raw_id[:12]
 
        self._commit = commit
 

	
 
        if isinstance(commit, Commit):
 
            self._tree_id = commit.tree
 
            self._commiter_property = 'committer'
 
            self._date_property = 'commit_time'
 
            self._date_tz_property = 'commit_timezone'
 
            self.revision = repository.revisions.index(revision)
 
        elif isinstance(commit, Tag):
 
            self._commiter_property = 'tagger'
 
            self._tree_id = commit.id
 
            self._date_property = 'tag_time'
 
            self._date_tz_property = 'tag_timezone'
 
            self.revision = 'tag'
 

	
 
        self.message = safe_unicode(commit.message)
 
        #self.branch = None
 
        self.tags = []
 
        self.nodes = {}
 
        self._paths = {}
 

	
 
    @LazyProperty
 
    def author(self):
 
        return safe_unicode(getattr(self._commit, self._commiter_property))
 

	
 
    @LazyProperty
 
@@ -379,25 +376,25 @@ class GitChangeset(BaseChangeset):
 
                id_ = self._get_id_for_path(path)
 
            except ChangesetError:
 
                raise NodeDoesNotExistError("Cannot find one of parents' "
 
                    "directories for a given path: %s" % path)
 

	
 
            _GL = lambda m: m and objects.S_ISGITLINK(m)
 
            if _GL(self._stat_modes.get(path)):
 
                node = SubModuleNode(path, url=None, changeset=id_,
 
                                     alias=self.repository.alias)
 
            else:
 
                obj = self.repository._repo.get_object(id_)
 

	
 
                if isinstance(obj, (objects.Tree, objects.Tag)):
 
                if isinstance(obj, objects.Tree):
 
                    if path == '':
 
                        node = RootNode(changeset=self)
 
                    else:
 
                        node = DirNode(path, changeset=self)
 
                    node._tree = obj
 
                elif isinstance(obj, objects.Blob):
 
                    node = FileNode(path, changeset=self)
 
                    node._blob = obj
 
                else:
 
                    raise NodeDoesNotExistError("There is no file nor directory "
 
                        "at the given path %r at revision %r"
 
                        % (path, self.short_id))
0 comments (0 inline, 0 general)