equal
deleted
inserted
replaced
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))) |