comparison mercurial/bundlerepo.py @ 4989:1aaed3d69772

revlog: eliminate diff and patches functions call mdiff variants directly
author Matt Mackall <mpm@selenic.com>
date Mon, 23 Jul 2007 20:44:08 -0500
parents 14486eea8e7a
children aba624d2301d
comparison
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)))