mercurial/revlogutils/debug.py
changeset 49819 b1e4c74beb6f
parent 49677 05db41701ece
child 50678 47b44d80d836
equal deleted inserted replaced
49818:3fd5824f1177 49819:b1e4c74beb6f
   659         flags,
   659         flags,
   660     )
   660     )
   661 
   661 
   662     fh = revlog._datafp()
   662     fh = revlog._datafp()
   663     deltacomputer.finddeltainfo(revinfo, fh, target_rev=rev)
   663     deltacomputer.finddeltainfo(revinfo, fh, target_rev=rev)
       
   664 
       
   665 
       
   666 def _get_revlogs(repo, changelog: bool, manifest: bool, filelogs: bool):
       
   667     """yield revlogs from this repository"""
       
   668     if changelog:
       
   669         yield repo.changelog
       
   670 
       
   671     if manifest:
       
   672         # XXX: Handle tree manifest
       
   673         root_mf = repo.manifestlog.getstorage(b'')
       
   674         assert not root_mf._treeondisk
       
   675         yield root_mf._revlog
       
   676 
       
   677     if filelogs:
       
   678         files = set()
       
   679         for rev in repo:
       
   680             ctx = repo[rev]
       
   681             files |= set(ctx.files())
       
   682 
       
   683         for f in sorted(files):
       
   684             yield repo.file(f)._revlog
       
   685 
       
   686 
       
   687 def debug_revlog_stats(
       
   688     repo, fm, changelog: bool, manifest: bool, filelogs: bool
       
   689 ):
       
   690     """Format revlog statistics for debugging purposes
       
   691 
       
   692     fm: the output formatter.
       
   693     """
       
   694     fm.plain(b'rev-count   data-size inl type      target \n')
       
   695 
       
   696     for rlog in _get_revlogs(repo, changelog, manifest, filelogs):
       
   697         fm.startitem()
       
   698         nb_rev = len(rlog)
       
   699         inline = rlog._inline
       
   700         data_size = rlog._get_data_offset(nb_rev - 1)
       
   701 
       
   702         target = rlog.target
       
   703         revlog_type = b'unknown'
       
   704         revlog_target = b''
       
   705         if target[0] == constants.KIND_CHANGELOG:
       
   706             revlog_type = b'changelog'
       
   707         elif target[0] == constants.KIND_MANIFESTLOG:
       
   708             revlog_type = b'manifest'
       
   709             revlog_target = target[1]
       
   710         elif target[0] == constants.KIND_FILELOG:
       
   711             revlog_type = b'file'
       
   712             revlog_target = target[1]
       
   713 
       
   714         fm.write(b'revlog.rev-count', b'%9d', nb_rev)
       
   715         fm.write(b'revlog.data-size', b'%12d', data_size)
       
   716 
       
   717         fm.write(b'revlog.inline', b' %-3s', b'yes' if inline else b'no')
       
   718         fm.write(b'revlog.type', b' %-9s', revlog_type)
       
   719         fm.write(b'revlog.target', b' %s', revlog_target)
       
   720 
       
   721         fm.plain(b'\n')