mercurial/revlogutils/debug.py
changeset 51070 752e380c5702
parent 51069 810446d2d5ef
child 51071 5b5cb6b833b0
equal deleted inserted replaced
51069:810446d2d5ef 51070:752e380c5702
   796                 break
   796                 break
   797             e = self._index[iter_rev]
   797             e = self._index[iter_rev]
   798             chain_size += e[constants.ENTRY_DATA_COMPRESSED_LENGTH]
   798             chain_size += e[constants.ENTRY_DATA_COMPRESSED_LENGTH]
   799         self._chain_size_cache[rev] = chain_size
   799         self._chain_size_cache[rev] = chain_size
   800 
   800 
   801         return p1, p2, compsize, uncompsize, deltatype, chain, chain_size
   801         return {
   802 
   802             'p1': p1,
   803 
   803             'p2': p2,
   804 def debug_delta_chain(revlog, revs=None):
   804             'compressed_size': compsize,
       
   805             'uncompressed_size': uncompsize,
       
   806             'deltatype': deltatype,
       
   807             'chain': chain,
       
   808             'chain_size': chain_size,
       
   809         }
       
   810 
       
   811 
       
   812 def debug_delta_chain(
       
   813     revlog,
       
   814     revs=None,
       
   815     size_info=True,
       
   816     dist_info=True,
       
   817     sparse_info=True,
       
   818 ):
   805     auditor = DeltaChainAuditor(revlog)
   819     auditor = DeltaChainAuditor(revlog)
   806     r = revlog
   820     r = revlog
   807     start = r.start
   821     start = r.start
   808     length = r.length
   822     length = r.length
   809     withsparseread = revlog.data_config.with_sparse_read
   823     withsparseread = revlog.data_config.with_sparse_read
   810 
   824 
   811     header = (
   825     header = (
   812         b'    rev      p1      p2  chain# chainlen     prev   delta       '
   826         b'    rev'
   813         b'size    rawsize  chainsize     ratio   lindist extradist '
   827         b'      p1'
   814         b'extraratio'
   828         b'      p2'
   815     )
   829         b'  chain#'
   816     if withsparseread:
   830         b' chainlen'
   817         header += b'   readsize largestblk rddensity srchunks'
   831         b'     prev'
       
   832         b'   delta'
       
   833     )
       
   834     if size_info:
       
   835         header += b'       size' b'    rawsize' b'  chainsize' b'     ratio'
       
   836     if dist_info:
       
   837         header += b'   lindist' b' extradist' b' extraratio'
       
   838     if withsparseread and sparse_info:
       
   839         header += b'   readsize' b' largestblk' b' rddensity' b' srchunks'
   818     header += b'\n'
   840     header += b'\n'
   819     yield header
   841     yield header
   820 
   842 
   821     if revs is None:
   843     if revs is None:
   822         all_revs = iter(r)
   844         all_revs = iter(r)
   824         revlog_size = len(r)
   846         revlog_size = len(r)
   825         all_revs = sorted(rev for rev in revs if rev < revlog_size)
   847         all_revs = sorted(rev for rev in revs if rev < revlog_size)
   826 
   848 
   827     chainbases = {}
   849     chainbases = {}
   828     for rev in all_revs:
   850     for rev in all_revs:
   829         p1, p2, comp, uncomp, deltatype, chain, chainsize = auditor.revinfo(rev)
   851         info = auditor.revinfo(rev)
       
   852         comp = info['compressed_size']
       
   853         uncomp = info['uncompressed_size']
       
   854         chain = info['chain']
   830         chainbase = chain[0]
   855         chainbase = chain[0]
   831         chainid = chainbases.setdefault(chainbase, len(chainbases) + 1)
   856         chainid = chainbases.setdefault(chainbase, len(chainbases) + 1)
   832         basestart = start(chainbase)
   857         basestart = start(chainbase)
   833         revstart = start(rev)
   858         revstart = start(rev)
   834         lineardist = revstart + comp - basestart
   859         lineardist = revstart + comp - basestart
       
   860         chainsize = info['chain_size']
   835         extradist = lineardist - chainsize
   861         extradist = lineardist - chainsize
   836         try:
   862         try:
   837             prevrev = chain[-2]
   863             prevrev = chain[-2]
   838         except IndexError:
   864         except IndexError:
   839             prevrev = -1
   865             prevrev = -1
   849             extraratio = extradist
   875             extraratio = extradist
   850 
   876 
   851         # label, display-format, data-key, value
   877         # label, display-format, data-key, value
   852         entry = [
   878         entry = [
   853             (b'rev', b'%7d', 'rev', rev),
   879             (b'rev', b'%7d', 'rev', rev),
   854             (b'p1', b'%7d', 'p1', p1),
   880             (b'p1', b'%7d', 'p1', info['p1']),
   855             (b'p2', b'%7d', 'p2', p2),
   881             (b'p2', b'%7d', 'p2', info['p2']),
   856             (b'chainid', b'%7d', 'chainid', chainid),
   882             (b'chainid', b'%7d', 'chainid', chainid),
   857             (b'chainlen', b'%8d', 'chainlen', len(chain)),
   883             (b'chainlen', b'%8d', 'chainlen', len(chain)),
   858             (b'prevrev', b'%8d', 'prevrev', prevrev),
   884             (b'prevrev', b'%8d', 'prevrev', prevrev),
   859             (b'deltatype', b'%7s', 'deltatype', deltatype),
   885             (b'deltatype', b'%7s', 'deltatype', info['deltatype']),
   860             (b'compsize', b'%10d', 'compsize', comp),
       
   861             (b'uncompsize', b'%10d', 'uncompsize', uncomp),
       
   862             (b'chainsize', b'%10d', 'chainsize', chainsize),
       
   863             (b'chainratio', b'%9.5f', 'chainratio', chainratio),
       
   864             (b'lindist', b'%9d', 'lindist', lineardist),
       
   865             (b'extradist', b'%9d', 'extradist', extradist),
       
   866             (b'extraratio', b'%10.5f', 'extraratio', extraratio),
       
   867         ]
   886         ]
   868         if withsparseread:
   887         if size_info:
       
   888             entry.extend(
       
   889                 [
       
   890                     (b'compsize', b'%10d', 'compsize', comp),
       
   891                     (b'uncompsize', b'%10d', 'uncompsize', uncomp),
       
   892                     (b'chainsize', b'%10d', 'chainsize', chainsize),
       
   893                     (b'chainratio', b'%9.5f', 'chainratio', chainratio),
       
   894                 ]
       
   895             )
       
   896         if dist_info:
       
   897             entry.extend(
       
   898                 [
       
   899                     (b'lindist', b'%9d', 'lindist', lineardist),
       
   900                     (b'extradist', b'%9d', 'extradist', extradist),
       
   901                     (b'extraratio', b'%10.5f', 'extraratio', extraratio),
       
   902                 ]
       
   903             )
       
   904         if withsparseread and sparse_info:
   869             readsize = 0
   905             readsize = 0
   870             largestblock = 0
   906             largestblock = 0
   871             srchunks = 0
   907             srchunks = 0
   872 
   908 
   873             for revschunk in deltautil.slicechunk(r, chain):
   909             for revschunk in deltautil.slicechunk(r, chain):