Mercurial > public > mercurial-scm > hg
comparison mercurial/revlog.py @ 42768:5a8f2c8edff6
rawdata: update caller in revlog
We update callers incrementally because this help bisecting failures. This was
useful during development, so we expect it might be useful again in the future.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 07 Aug 2019 20:08:26 +0200 |
parents | 6d61be152c55 |
children | ef177c04ac7f |
comparison
equal
deleted
inserted
replaced
42767:624d86262e14 | 42768:5a8f2c8edff6 |
---|---|
634 """return the length of the uncompressed text for a given revision""" | 634 """return the length of the uncompressed text for a given revision""" |
635 l = self.index[rev][2] | 635 l = self.index[rev][2] |
636 if l >= 0: | 636 if l >= 0: |
637 return l | 637 return l |
638 | 638 |
639 t = self.revision(rev, raw=True) | 639 t = self.rawdata(rev) |
640 return len(t) | 640 return len(t) |
641 | 641 |
642 def size(self, rev): | 642 def size(self, rev): |
643 """length of non-raw text (processed by a "read" flag processor)""" | 643 """length of non-raw text (processed by a "read" flag processor)""" |
644 # fast path: if no "read" flag processor could change the content, | 644 # fast path: if no "read" flag processor could change the content, |
1594 revlog data directly. So this function needs raw revision data. | 1594 revlog data directly. So this function needs raw revision data. |
1595 """ | 1595 """ |
1596 if rev1 != nullrev and self.deltaparent(rev2) == rev1: | 1596 if rev1 != nullrev and self.deltaparent(rev2) == rev1: |
1597 return bytes(self._chunk(rev2)) | 1597 return bytes(self._chunk(rev2)) |
1598 | 1598 |
1599 return mdiff.textdiff(self.revision(rev1, raw=True), | 1599 return mdiff.textdiff(self.rawdata(rev1), |
1600 self.revision(rev2, raw=True)) | 1600 self.rawdata(rev2)) |
1601 | 1601 |
1602 def revision(self, nodeorrev, _df=None, raw=False): | 1602 def revision(self, nodeorrev, _df=None, raw=False): |
1603 """return an uncompressed revision of a given node or revision | 1603 """return an uncompressed revision of a given node or revision |
1604 number. | 1604 number. |
1605 | 1605 |
2433 dp = self.deltaparent(rev) | 2433 dp = self.deltaparent(rev) |
2434 if dp != nullrev: | 2434 if dp != nullrev: |
2435 cachedelta = (dp, bytes(self._chunk(rev))) | 2435 cachedelta = (dp, bytes(self._chunk(rev))) |
2436 | 2436 |
2437 if not cachedelta: | 2437 if not cachedelta: |
2438 rawtext = self.revision(rev, raw=True) | 2438 rawtext = self.rawdata(rev) |
2439 | 2439 |
2440 | 2440 |
2441 if deltareuse == self.DELTAREUSEFULLADD: | 2441 if deltareuse == self.DELTAREUSEFULLADD: |
2442 destrevlog.addrevision(rawtext, tr, linkrev, p1, p2, | 2442 destrevlog.addrevision(rawtext, tr, linkrev, p1, p2, |
2443 cachedelta=cachedelta, | 2443 cachedelta=cachedelta, |
2511 if self.deltaparent(rev) != nullrev: | 2511 if self.deltaparent(rev) != nullrev: |
2512 raise error.Abort(_('cannot censor due to censored ' | 2512 raise error.Abort(_('cannot censor due to censored ' |
2513 'revision having delta stored')) | 2513 'revision having delta stored')) |
2514 rawtext = self._chunk(rev) | 2514 rawtext = self._chunk(rev) |
2515 else: | 2515 else: |
2516 rawtext = self.revision(rev, raw=True) | 2516 rawtext = self.rawdata(rev) |
2517 | 2517 |
2518 newrl.addrawrevision(rawtext, tr, self.linkrev(rev), p1, p2, node, | 2518 newrl.addrawrevision(rawtext, tr, self.linkrev(rev), p1, p2, node, |
2519 self.flags(rev)) | 2519 self.flags(rev)) |
2520 | 2520 |
2521 tr.addbackup(self.indexfile, location='store') | 2521 tr.addbackup(self.indexfile, location='store') |
2569 # flags() | 0 | 0 | 0 | not 0 | 2569 # flags() | 0 | 0 | 0 | not 0 |
2570 # renamed() | False | True | False | ? | 2570 # renamed() | False | True | False | ? |
2571 # rawtext[0:2]=='\1\n'| False | True | True | ? | 2571 # rawtext[0:2]=='\1\n'| False | True | True | ? |
2572 # | 2572 # |
2573 # "rawtext" means the raw text stored in revlog data, which | 2573 # "rawtext" means the raw text stored in revlog data, which |
2574 # could be retrieved by "revision(rev, raw=True)". "text" | 2574 # could be retrieved by "rawdata(rev)". "text" |
2575 # mentioned below is "revision(rev, raw=False)". | 2575 # mentioned below is "revision(rev)". |
2576 # | 2576 # |
2577 # There are 3 different lengths stored physically: | 2577 # There are 3 different lengths stored physically: |
2578 # 1. L1: rawsize, stored in revlog index | 2578 # 1. L1: rawsize, stored in revlog index |
2579 # 2. L2: len(rawtext), stored in revlog data | 2579 # 2. L2: len(rawtext), stored in revlog data |
2580 # 3. L3: len(text), stored in revlog data if flags==0, or | 2580 # 3. L3: len(text), stored in revlog data if flags==0, or |
2612 else: | 2612 else: |
2613 # Side-effect: read content and verify hash. | 2613 # Side-effect: read content and verify hash. |
2614 self.revision(node) | 2614 self.revision(node) |
2615 | 2615 |
2616 l1 = self.rawsize(rev) | 2616 l1 = self.rawsize(rev) |
2617 l2 = len(self.revision(node, raw=True)) | 2617 l2 = len(self.rawdata(node)) |
2618 | 2618 |
2619 if l1 != l2: | 2619 if l1 != l2: |
2620 yield revlogproblem( | 2620 yield revlogproblem( |
2621 error=_('unpacked size is %d, %d expected') % (l2, l1), | 2621 error=_('unpacked size is %d, %d expected') % (l2, l1), |
2622 node=node) | 2622 node=node) |