comparison mercurial/debugcommands.py @ 49221:75d0775dce7f

debugdeltachain: also display p1/p2 Looking at the parents is a common need when trying to understanding why a delta was chosen, having it readily available helps a lot.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 18 May 2022 17:22:32 +0100
parents 0a86cb154e83
children e7d23c512d3d
comparison
equal deleted inserted replaced
49220:3376b5d9a697 49221:75d0775dce7f
756 """dump information about delta chains in a revlog 756 """dump information about delta chains in a revlog
757 757
758 Output can be templatized. Available template keywords are: 758 Output can be templatized. Available template keywords are:
759 759
760 :``rev``: revision number 760 :``rev``: revision number
761 :``p1``: parent 1 revision number (for reference)
762 :``p2``: parent 2 revision number (for reference)
761 :``chainid``: delta chain identifier (numbered by unique base) 763 :``chainid``: delta chain identifier (numbered by unique base)
762 :``chainlen``: delta chain length to this revision 764 :``chainlen``: delta chain length to this revision
763 :``prevrev``: previous revision in delta chain 765 :``prevrev``: previous revision in delta chain
764 :``deltatype``: role of delta / how it was computed 766 :``deltatype``: role of delta / how it was computed
765 :``compsize``: compressed size of revision 767 :``compsize``: compressed size of revision
827 chain = r._deltachain(rev)[0] 829 chain = r._deltachain(rev)[0]
828 for iterrev in chain: 830 for iterrev in chain:
829 e = index[iterrev] 831 e = index[iterrev]
830 chainsize += e[revlog_constants.ENTRY_DATA_COMPRESSED_LENGTH] 832 chainsize += e[revlog_constants.ENTRY_DATA_COMPRESSED_LENGTH]
831 833
832 return compsize, uncompsize, deltatype, chain, chainsize 834 return p1, p2, compsize, uncompsize, deltatype, chain, chainsize
833 835
834 fm = ui.formatter(b'debugdeltachain', opts) 836 fm = ui.formatter(b'debugdeltachain', opts)
835 837
836 fm.plain( 838 fm.plain(
837 b' rev chain# chainlen prev delta ' 839 b' rev p1 p2 chain# chainlen prev delta '
838 b'size rawsize chainsize ratio lindist extradist ' 840 b'size rawsize chainsize ratio lindist extradist '
839 b'extraratio' 841 b'extraratio'
840 ) 842 )
841 if withsparseread: 843 if withsparseread:
842 fm.plain(b' readsize largestblk rddensity srchunks') 844 fm.plain(b' readsize largestblk rddensity srchunks')
843 fm.plain(b'\n') 845 fm.plain(b'\n')
844 846
845 chainbases = {} 847 chainbases = {}
846 for rev in r: 848 for rev in r:
847 comp, uncomp, deltatype, chain, chainsize = revinfo(rev) 849 p1, p2, comp, uncomp, deltatype, chain, chainsize = revinfo(rev)
848 chainbase = chain[0] 850 chainbase = chain[0]
849 chainid = chainbases.setdefault(chainbase, len(chainbases) + 1) 851 chainid = chainbases.setdefault(chainbase, len(chainbases) + 1)
850 basestart = start(chainbase) 852 basestart = start(chainbase)
851 revstart = start(rev) 853 revstart = start(rev)
852 lineardist = revstart + comp - basestart 854 lineardist = revstart + comp - basestart
866 else: 868 else:
867 extraratio = extradist 869 extraratio = extradist
868 870
869 fm.startitem() 871 fm.startitem()
870 fm.write( 872 fm.write(
871 b'rev chainid chainlen prevrev deltatype compsize ' 873 b'rev p1 p2 chainid chainlen prevrev deltatype compsize '
872 b'uncompsize chainsize chainratio lindist extradist ' 874 b'uncompsize chainsize chainratio lindist extradist '
873 b'extraratio', 875 b'extraratio',
874 b'%7d %7d %8d %8d %7s %10d %10d %10d %9.5f %9d %9d %10.5f', 876 b'%7d %7d %7d %7d %8d %8d %7s %10d %10d %10d %9.5f %9d %9d %10.5f',
875 rev, 877 rev,
878 p1,
879 p2,
876 chainid, 880 chainid,
877 len(chain), 881 len(chain),
878 prevrev, 882 prevrev,
879 deltatype, 883 deltatype,
880 comp, 884 comp,