Comments
Patch
@@ -447,7 +447,17 @@
base = self.deltaparent(revlog, rev, p1, p2, prev)
prefix = ''
- if base == nullrev:
+ if revlog.iscensored(base) or revlog.iscensored(rev):
+ try:
+ delta = revlog.revision(rev)
+ except error.CensoredNodeError, e:
+ delta = e.metadata
+ if base == nullrev:
+ prefix = mdiff.trivialdiffheader(len(delta))
+ else:
+ baselen = revlog.rawsize(base)
+ prefix = mdiff.replacediffheader(baselen, len(delta))
+ elif base == nullrev:
delta = revlog.revision(node)
prefix = mdiff.trivialdiffheader(len(delta))
else:
@@ -136,9 +136,10 @@
class CensoredNodeError(RevlogError):
"""error raised when content verification fails on a censored node"""
- def __init__(self, filename, node):
+ def __init__(self, filename, node, metadata):
from node import short
RevlogError.__init__(self, '%s:%s' % (filename, short(node)))
+ self.metadata = metadata
class CensoredBaseError(CensoredNodeError):
"""error raised when a delta is rejected because its base is censored
@@ -101,7 +101,7 @@
super(filelog, self).checkhash(text, p1, p2, node, rev=rev)
except error.RevlogError:
if _censoredtext(text):
- raise error.CensoredNodeError(self.indexfile, node)
+ raise error.CensoredNodeError(self.indexfile, node, text)
raise
def iscensored(self, rev):