##// END OF EJS Templates
changegroup: emit full-replacement deltas if either revision is censored...
Mike Edgar -
r24190:903c7e8c default
parent child Browse files
Show More
@@ -482,7 +482,17 b' class cg1packer(object):'
482 base = self.deltaparent(revlog, rev, p1, p2, prev)
482 base = self.deltaparent(revlog, rev, p1, p2, prev)
483
483
484 prefix = ''
484 prefix = ''
485 if base == nullrev:
485 if revlog.iscensored(base) or revlog.iscensored(rev):
486 try:
487 delta = revlog.revision(node)
488 except error.CensoredNodeError, e:
489 delta = e.tombstone
490 if base == nullrev:
491 prefix = mdiff.trivialdiffheader(len(delta))
492 else:
493 baselen = revlog.rawsize(base)
494 prefix = mdiff.replacediffheader(baselen, len(delta))
495 elif base == nullrev:
486 delta = revlog.revision(node)
496 delta = revlog.revision(node)
487 prefix = mdiff.trivialdiffheader(len(delta))
497 prefix = mdiff.trivialdiffheader(len(delta))
488 else:
498 else:
@@ -138,11 +138,15 b' class ReadOnlyPartError(RuntimeError):'
138 pass
138 pass
139
139
140 class CensoredNodeError(RevlogError):
140 class CensoredNodeError(RevlogError):
141 """error raised when content verification fails on a censored node"""
141 """error raised when content verification fails on a censored node
142
142
143 def __init__(self, filename, node):
143 Also contains the tombstone data substituted for the uncensored data.
144 """
145
146 def __init__(self, filename, node, tombstone):
144 from node import short
147 from node import short
145 RevlogError.__init__(self, '%s:%s' % (filename, short(node)))
148 RevlogError.__init__(self, '%s:%s' % (filename, short(node)))
149 self.tombstone = tombstone
146
150
147 class CensoredBaseError(RevlogError):
151 class CensoredBaseError(RevlogError):
148 """error raised when a delta is rejected because its base is censored
152 """error raised when a delta is rejected because its base is censored
@@ -101,7 +101,7 b' class filelog(revlog.revlog):'
101 super(filelog, self).checkhash(text, p1, p2, node, rev=rev)
101 super(filelog, self).checkhash(text, p1, p2, node, rev=rev)
102 except error.RevlogError:
102 except error.RevlogError:
103 if _censoredtext(text):
103 if _censoredtext(text):
104 raise error.CensoredNodeError(self.indexfile, node)
104 raise error.CensoredNodeError(self.indexfile, node, text)
105 raise
105 raise
106
106
107 def iscensored(self, rev):
107 def iscensored(self, rev):
General Comments 0
You need to be logged in to leave comments. Login now