comparison mercurial/revlog.py @ 12011:f38b0a3308b6

deltaparent(): don't return nullrev for a revision containing a full snapshot this allows us to simplify manifest.readdelta and revlog.revdiff
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Sat, 21 Aug 2010 19:30:42 +0200
parents 3361075816f8
children bade7a9c5c07
comparison
equal deleted inserted replaced
12010:ce818cf215dc 12011:f38b0a3308b6
1016 def _chunkclear(self): 1016 def _chunkclear(self):
1017 self._chunkcache = (0, '') 1017 self._chunkcache = (0, '')
1018 1018
1019 def deltaparent(self, rev): 1019 def deltaparent(self, rev):
1020 """return previous revision or parentrev according to flags""" 1020 """return previous revision or parentrev according to flags"""
1021 if self.base(rev) == rev: 1021 if self.flags(rev) & REVIDX_PARENTDELTA:
1022 return nullrev
1023 elif self.flags(rev) & REVIDX_PARENTDELTA:
1024 return self.parentrevs(rev)[0] 1022 return self.parentrevs(rev)[0]
1025 else: 1023 else:
1026 return rev - 1 1024 return rev - 1
1027 1025
1028 def revdiff(self, rev1, rev2): 1026 def revdiff(self, rev1, rev2):
1029 """return or calculate a delta between two revisions""" 1027 """return or calculate a delta between two revisions"""
1030 if rev1 != nullrev and self.deltaparent(rev2) == rev1: 1028 if self.base(rev2) != rev2 and self.deltaparent(rev2) == rev1:
1031 return self._chunk(rev2) 1029 return self._chunk(rev2)
1032 1030
1033 return mdiff.textdiff(self.revision(self.node(rev1)), 1031 return mdiff.textdiff(self.revision(self.node(rev1)),
1034 self.revision(self.node(rev2))) 1032 self.revision(self.node(rev2)))
1035 1033