deltaparent(): don't return nullrev for a revision containing a full snapshot
this allows us to simplify manifest.readdelta and revlog.revdiff
--- a/mercurial/manifest.py Sat Aug 21 10:48:49 2010 -0500
+++ b/mercurial/manifest.py Sat Aug 21 19:30:42 2010 +0200
@@ -36,9 +36,7 @@
def readdelta(self, node):
r = self.rev(node)
- if self._parentdelta:
- return self.parse(mdiff.patchtext(self.revdiff(self.deltaparent(r), r)))
- return self.parse(mdiff.patchtext(self.revdiff(r - 1, r)))
+ return self.parse(mdiff.patchtext(self.revdiff(self.deltaparent(r), r)))
def read(self, node):
if node == revlog.nullid:
--- a/mercurial/revlog.py Sat Aug 21 10:48:49 2010 -0500
+++ b/mercurial/revlog.py Sat Aug 21 19:30:42 2010 +0200
@@ -1018,16 +1018,14 @@
def deltaparent(self, rev):
"""return previous revision or parentrev according to flags"""
- if self.base(rev) == rev:
- return nullrev
- elif self.flags(rev) & REVIDX_PARENTDELTA:
+ if self.flags(rev) & REVIDX_PARENTDELTA:
return self.parentrevs(rev)[0]
else:
return rev - 1
def revdiff(self, rev1, rev2):
"""return or calculate a delta between two revisions"""
- if rev1 != nullrev and self.deltaparent(rev2) == rev1:
+ if self.base(rev2) != rev2 and self.deltaparent(rev2) == rev1:
return self._chunk(rev2)
return mdiff.textdiff(self.revision(self.node(rev1)),