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