Mercurial > hg
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 |