Comments
Patch
@@ -423,7 +423,11 @@
delta = e.metadata
prefix = mdiff.trivialdiffheader(len(delta))
else:
- delta = revlog.revdiff(base, rev)
+ try:
+ delta = revlog.revdiff(base, rev)
+ except error.CensoredNodeError:
+ delta = _tombstonedelta(revlog, base, rev)
+
p1n, p2n = revlog.parents(node)
basenode = revlog.node(base)
meta = self.builddeltaheader(node, p1n, p2n, basenode, linknode)
@@ -436,6 +440,17 @@
# do nothing with basenode, it is implicitly the previous one in HG10
return struct.pack(self.deltaheader, node, p1n, p2n, linknode)
+def _tombstonedelta(revlog, base, rev):
+ try:
+ basedata = revlog.revision(base)
+ except error.CensoredNodeError, e:
+ basedata = e.metadata
+ try:
+ revdata = revlog.revision(rev)
+ except error.CensoredNodeError, e:
+ revdata = e.metadata
+ return struct.pack(">lll", 0, len(basedata), len(revdata)) + revdata
+
def _changegroupinfo(repo, nodes, source):
if repo.ui.verbose or source == 'bundle':
repo.ui.status(_("%d changesets found\n") % len(nodes))