Mercurial > public > mercurial-scm > hg
comparison mercurial/revlog.py @ 11929:1839a7518b0d
revlog: deltachain() returns chain of revs need to construct a revision
author | Pradeepkumar Gayam <in3xes@gmail.com> |
---|---|
date | Tue, 10 Aug 2010 22:26:08 +0530 |
parents | b69899dbad40 |
children | 12547cedc264 |
comparison
equal
deleted
inserted
replaced
11928:b69899dbad40 | 11929:1839a7518b0d |
---|---|
1014 return decompress(self._chunkraw(rev, rev)) | 1014 return decompress(self._chunkraw(rev, rev)) |
1015 | 1015 |
1016 def _chunkclear(self): | 1016 def _chunkclear(self): |
1017 self._chunkcache = (0, '') | 1017 self._chunkcache = (0, '') |
1018 | 1018 |
1019 def deltaparent(self, rev): | |
1020 """return previous revision or parentrev according to flags""" | |
1021 if self.base(rev) == rev: | |
1022 return nullrev | |
1023 elif self.flags(rev) & REVIDX_PARENTDELTA: | |
1024 return self.parentrevs(rev)[0] | |
1025 else: | |
1026 return rev - 1 | |
1027 | |
1028 | |
1029 def deltachain(self, rev, cache): | |
1030 """return chain of revisions to construct a given revision""" | |
1031 chain = [] | |
1032 check = False | |
1033 while self.base(rev) != rev and rev != cache: | |
1034 chain.append(rev) | |
1035 rev = self.deltaparent(rev) | |
1036 chain.reverse() | |
1037 if rev == cache: | |
1038 check = True | |
1039 return check, rev, chain | |
1040 | |
1019 def revdiff(self, rev1, rev2): | 1041 def revdiff(self, rev1, rev2): |
1020 """return or calculate a delta between two revisions""" | 1042 """return or calculate a delta between two revisions""" |
1021 if rev1 + 1 == rev2 and self.base(rev1) == self.base(rev2): | 1043 if rev1 + 1 == rev2 and self.base(rev1) == self.base(rev2): |
1022 return self._chunk(rev2) | 1044 return self._chunk(rev2) |
1023 | 1045 |