--- a/mercurial/revlog.py Fri Feb 06 01:38:16 2015 +0000
+++ b/mercurial/revlog.py Wed Jan 21 17:11:37 2015 -0500
@@ -1261,8 +1261,14 @@
delta = cachedelta[1]
else:
t = buildtext()
- ptext = self.revision(self.node(rev))
- delta = mdiff.textdiff(ptext, t)
+ if self.iscensored(rev):
+ # deltas based on a censored revision must replace the
+ # full content in one patch, so delta works everywhere
+ header = mdiff.replacediffheader(self.rawsize(rev), len(t))
+ delta = header + t
+ else:
+ ptext = self.revision(self.node(rev))
+ delta = mdiff.textdiff(ptext, t)
data = self.compress(delta)
l = len(data[1]) + len(data[0])
if basecache[0] == rev: