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') |