comparison mercurial/revlog.py @ 14208:d62d597b8974

revlog: compute correct deltaparent in the deltaparent function It now returns nullrev for chain base revisions, since they are conceptually deltas against nullrev. The revdiff function was updated accordingly.
author Sune Foldager <cryo@cyanite.org>
date Thu, 05 May 2011 18:05:24 +0200
parents e7483ec3c374
children c33427080671
comparison
equal deleted inserted replaced
14207:c1cca38818b9 14208:d62d597b8974
828 def _chunkclear(self): 828 def _chunkclear(self):
829 self._chunkcache = (0, '') 829 self._chunkcache = (0, '')
830 830
831 def deltaparent(self, rev): 831 def deltaparent(self, rev):
832 """return deltaparent of the given revision""" 832 """return deltaparent of the given revision"""
833 return rev - 1 833 if self.index[rev][3] == rev:
834 return nullrev
835 else:
836 return rev - 1
834 837
835 def revdiff(self, rev1, rev2): 838 def revdiff(self, rev1, rev2):
836 """return or calculate a delta between two revisions""" 839 """return or calculate a delta between two revisions"""
837 if self.base(rev2) != rev2 and self.deltaparent(rev2) == rev1: 840 if rev1 != nullrev and self.deltaparent(rev2) == rev1:
838 return self._chunk(rev2) 841 return self._chunk(rev2)
839 842
840 return mdiff.textdiff(self.revision(self.node(rev1)), 843 return mdiff.textdiff(self.revision(self.node(rev1)),
841 self.revision(self.node(rev2))) 844 self.revision(self.node(rev2)))
842 845