def _get_revision(self, revision):
        """
        For git backend we always return integer here. This way we ensure
        that changset's revision attribute would become integer.
        """

        is_null = lambda o: len(o) == revision.count('0')

        try:
            self.revisions[0]
        except (KeyError, IndexError):
            raise EmptyRepositoryError("There are no changesets yet")

        if revision in (None, '', 'tip', 'HEAD', 'head', -1):
            return self.revisions[-1]

        is_bstr = isinstance(revision, (str, unicode))
        if ((is_bstr and revision.isdigit() and len(revision) < 12)
            or isinstance(revision, int) or is_null(revision)):
            try:
                revision = self.revisions[int(revision)]
            except Exception:
                raise ChangesetDoesNotExistError("Revision %s does not exist "
                    "for this repository" % (revision))

        elif is_bstr:
            # get by branch/tag name
            _ref_revision = self._parsed_refs.get(revision)
            if _ref_revision:  # and _ref_revision[1] in ['H', 'RH', 'T']:
                return _ref_revision[0]

            _tags_shas = self.tags.values()
            # maybe it's a tag ? we don't have them in self.revisions
            if revision in _tags_shas:
                return _tags_shas[_tags_shas.index(revision)]

            elif not SHA_PATTERN.match(revision) or revision not in self.revisions:
                raise ChangesetDoesNotExistError("Revision %s does not exist "
                    "for this repository" % (revision))

        # Ensure we return full id
        if not SHA_PATTERN.match(str(revision)):
            raise ChangesetDoesNotExistError("Given revision %s not recognized"
                % revision)
        return revision
def _get_revision ( self , revision ) : is_null = lambda o : len ( o ) == revision . count ( '0' ) try : self . revisions [ 0 ] except ( KeyError , IndexError ) : raise EmptyRepositoryError ( "There are no changesets yet" ) if revision in ( None , '' , 'tip' , 'HEAD' , 'head' , - 1 ) : return self . revisions [ - 1 ] is_bstr = isinstance ( revision , ( str , unicode ) ) if ( ( is_bstr and revision . isdigit ( ) and len ( revision ) < 12 ) or isinstance ( revision , int ) or is_null ( revision ) ) : try : revision = self . revisions [ int ( revision ) ] except Exception : raise ChangesetDoesNotExistError ( "Revision %s does not exist " "for this repository" % ( revision ) ) elif is_bstr : _ref_revision = self . _parsed_refs . get ( revision ) if _ref_revision : return _ref_revision [ 0 ] _tags_shas = self . tags . values ( ) if revision in _tags_shas : return _tags_shas [ _tags_shas . index ( revision ) ] elif not SHA_PATTERN . match ( revision ) or revision not in self . revisions : raise ChangesetDoesNotExistError ( "Revision %s does not exist " "for this repository" % ( revision ) ) if not SHA_PATTERN . match ( str ( revision ) ) : raise ChangesetDoesNotExistError ( "Given revision %s not recognized" % revision ) return revision
For git backend we always return integer here. This way we ensure
        that changset's revision attribute would become integer.