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