mercurial/bundlerepo.py
changeset 4989 1aaed3d69772
parent 4988 14486eea8e7a
child 5159 aba624d2301d
equal deleted inserted replaced
4988:14486eea8e7a 4989:1aaed3d69772
    10 of the GNU General Public License, incorporated herein by reference.
    10 of the GNU General Public License, incorporated herein by reference.
    11 """
    11 """
    12 
    12 
    13 from node import *
    13 from node import *
    14 from i18n import _
    14 from i18n import _
    15 import changegroup, util, os, struct, bz2, tempfile
    15 import changegroup, util, os, struct, bz2, tempfile, mdiff
    16 
       
    17 import localrepo, changelog, manifest, filelog, revlog
    16 import localrepo, changelog, manifest, filelog, revlog
    18 
    17 
    19 class bundlerevlog(revlog.revlog):
    18 class bundlerevlog(revlog.revlog):
    20     def __init__(self, opener, indexfile, bundlefile,
    19     def __init__(self, opener, indexfile, bundlefile,
    21                  linkmapper=None):
    20                  linkmapper=None):
    89             if revb == rev1:
    88             if revb == rev1:
    90                 return self.chunk(rev2)
    89                 return self.chunk(rev2)
    91         elif not self.bundle(rev1) and not self.bundle(rev2):
    90         elif not self.bundle(rev1) and not self.bundle(rev2):
    92             return revlog.revlog.revdiff(self, rev1, rev2)
    91             return revlog.revlog.revdiff(self, rev1, rev2)
    93 
    92 
    94         return self.diff(self.revision(self.node(rev1)),
    93         return mdiff.textdiff(self.revision(self.node(rev1)),
    95                          self.revision(self.node(rev2)))
    94                          self.revision(self.node(rev2)))
    96 
    95 
    97     def revision(self, node):
    96     def revision(self, node):
    98         """return an uncompressed revision of a given"""
    97         """return an uncompressed revision of a given"""
    99         if node == nullid: return ""
    98         if node == nullid: return ""
   113         if text is None:
   112         if text is None:
   114             text = revlog.revlog.revision(self, iter_node)
   113             text = revlog.revlog.revision(self, iter_node)
   115 
   114 
   116         while chain:
   115         while chain:
   117             delta = self.chunk(chain.pop())
   116             delta = self.chunk(chain.pop())
   118             text = self.patches(text, [delta])
   117             text = mdiff.patches(text, [delta])
   119 
   118 
   120         p1, p2 = self.parents(node)
   119         p1, p2 = self.parents(node)
   121         if node != revlog.hash(text, p1, p2):
   120         if node != revlog.hash(text, p1, p2):
   122             raise revlog.RevlogError(_("integrity check failed on %s:%d")
   121             raise revlog.RevlogError(_("integrity check failed on %s:%d")
   123                                      % (self.datafile, self.rev(node)))
   122                                      % (self.datafile, self.rev(node)))