changeset 7633 | 08cabecfa8a8 |
parent 7435 | 5e13df32fb74 |
child 7637 | 1d54e2f6c0b7 |
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 |