예제 #1
0
 def lookup_bzr_revision_id(self, revision_id):
     """See ForeignRepository.lookup_bzr_revision_id()."""
     assert type(revision_id) is str, "invalid revid: %r" % revision_id
     # TODO: Handle round-tripped revisions
     try:
         return mapping_registry.revision_id_bzr_to_foreign(revision_id)
     except errors.InvalidRevisionId:
         raise errors.NoSuchRevision(self, revision_id)
예제 #2
0
    def lookup_revid(self, revid):
        """See RevisionIdMapCache.lookup_revid."""

        self.mutter('lookup-revid %s', revid)
        try:
            (min_revnum, max_revnum, mapping_name, path) = self.db[b"native-revid/" + revid].split(b" ", 3)
        except KeyError:
            raise errors.NoSuchRevision(self, revid)
        return (path.decode('utf-8'), int(min_revnum), int(max_revnum), mapping_name)
예제 #3
0
    def lookup_revid(self, revid):
        """See RevisionIdMapCache.lookup_revid."""

        assert isinstance(revid, bytes)
        self.mutter("lookup revid %r", revid)
        ret = self.execute(
            "select path, min_revnum, max_revnum, mapping from revmap where revid=? order by abs(min_revnum-max_revnum) asc", (revid,)).fetchone()
        if ret is None:
            raise errors.NoSuchRevision(self, revid)
        (path, min_revnum, max_revnum, mapping) = (ret[0].encode("utf-8"), int(ret[1]), int(ret[2]), ret[3].encode("utf-8"))
        if min_revnum > max_revnum:
            return (path, max_revnum, min_revnum, mapping)
        else:
            return (path, min_revnum, max_revnum, mapping)
예제 #4
0
 def get_rev_id(self, revno, history=None):
     """Find the revision id of the specified revno."""
     with self.lock_read():
         if revno == 0:
             return NULL_REVISION
         last_revno, last_revid = self.last_revision_info()
         if revno == last_revno:
             return last_revid
         if last_revno is None:
             self._extend_partial_history()
             return self._partial_revision_history_cache[
                 len(self._partial_revision_history_cache) - revno
             ]
         else:
             if revno <= 0 or revno > last_revno:
                 raise errors.NoSuchRevision(self, revno)
             distance_from_last = last_revno - revno
             if len(self._partial_revision_history_cache) <= distance_from_last:
                 self._extend_partial_history(distance_from_last)
             return self._partial_revision_history_cache[distance_from_last]