mercurial/bundlerepo.py
changeset 7633 08cabecfa8a8
parent 7435 5e13df32fb74
child 7637 1d54e2f6c0b7
equal deleted inserted replaced
7632:9626819b2e3d 7633:08cabecfa8a8
    11 """
    11 """
    12 
    12 
    13 from node import hex, nullid, short
    13 from node import hex, nullid, short
    14 from i18n import _
    14 from i18n import _
    15 import changegroup, util, os, struct, bz2, zlib, tempfile, shutil, mdiff
    15 import changegroup, util, os, struct, bz2, zlib, tempfile, shutil, mdiff
    16 import repo, localrepo, changelog, manifest, filelog, revlog, context
    16 import repo, localrepo, changelog, manifest, filelog, revlog, context, error
    17 
    17 
    18 class bundlerevlog(revlog.revlog):
    18 class bundlerevlog(revlog.revlog):
    19     def __init__(self, opener, indexfile, bundlefile,
    19     def __init__(self, opener, indexfile, bundlefile,
    20                  linkmapper=None):
    20                  linkmapper=None):
    21         # How it works:
    21         # How it works:
    46             if node in self.nodemap:
    46             if node in self.nodemap:
    47                 prev = node
    47                 prev = node
    48                 continue
    48                 continue
    49             for p in (p1, p2):
    49             for p in (p1, p2):
    50                 if not p in self.nodemap:
    50                 if not p in self.nodemap:
    51                     raise revlog.LookupError(p1, self.indexfile,
    51                     raise error.LookupError(p1, self.indexfile,
    52                                              _("unknown parent"))
    52                                             _("unknown parent"))
    53             if linkmapper is None:
    53             if linkmapper is None:
    54                 link = n
    54                 link = n
    55             else:
    55             else:
    56                 link = linkmapper(cs)
    56                 link = linkmapper(cs)
    57 
    57 
   117             delta = self.chunk(chain.pop())
   117             delta = self.chunk(chain.pop())
   118             text = mdiff.patches(text, [delta])
   118             text = mdiff.patches(text, [delta])
   119 
   119 
   120         p1, p2 = self.parents(node)
   120         p1, p2 = self.parents(node)
   121         if node != revlog.hash(text, p1, p2):
   121         if node != revlog.hash(text, p1, p2):
   122             raise revlog.RevlogError(_("integrity check failed on %s:%d")
   122             raise error.RevlogError(_("integrity check failed on %s:%d")
   123                                      % (self.datafile, self.rev(node)))
   123                                      % (self.datafile, self.rev(node)))
   124 
   124 
   125         self._cache = (node, self.rev(node), text)
   125         self._cache = (node, self.rev(node), text)
   126         return text
   126         return text
   127 
   127