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)