751 b'r', |
751 b'r', |
752 b'rev', |
752 b'rev', |
753 [], |
753 [], |
754 _('restrict processing to these revlog revisions'), |
754 _('restrict processing to these revlog revisions'), |
755 ), |
755 ), |
|
756 ( |
|
757 b'', |
|
758 b'size-info', |
|
759 True, |
|
760 _('compute information related to deltas size'), |
|
761 ), |
|
762 ( |
|
763 b'', |
|
764 b'dist-info', |
|
765 True, |
|
766 _('compute information related to base distance'), |
|
767 ), |
|
768 ( |
|
769 b'', |
|
770 b'sparse-info', |
|
771 True, |
|
772 _('compute information related to sparse read'), |
|
773 ), |
756 ] |
774 ] |
757 + cmdutil.debugrevlogopts |
775 + cmdutil.debugrevlogopts |
758 + cmdutil.formatteropts, |
776 + cmdutil.formatteropts, |
759 _(b'-c|-m|FILE'), |
777 _(b'-c|-m|FILE'), |
760 optionalrepo=True, |
778 optionalrepo=True, |
765 Output can be templatized. Available template keywords are: |
783 Output can be templatized. Available template keywords are: |
766 |
784 |
767 :``rev``: revision number |
785 :``rev``: revision number |
768 :``p1``: parent 1 revision number (for reference) |
786 :``p1``: parent 1 revision number (for reference) |
769 :``p2``: parent 2 revision number (for reference) |
787 :``p2``: parent 2 revision number (for reference) |
|
788 |
770 :``chainid``: delta chain identifier (numbered by unique base) |
789 :``chainid``: delta chain identifier (numbered by unique base) |
771 :``chainlen``: delta chain length to this revision |
790 :``chainlen``: delta chain length to this revision |
|
791 |
772 :``prevrev``: previous revision in delta chain |
792 :``prevrev``: previous revision in delta chain |
773 :``deltatype``: role of delta / how it was computed |
793 :``deltatype``: role of delta / how it was computed |
774 - base: a full snapshot |
794 - base: a full snapshot |
775 - snap: an intermediate snapshot |
795 - snap: an intermediate snapshot |
776 - p1: a delta against the first parent |
796 - p1: a delta against the first parent |
779 (when p1 has empty delta |
799 (when p1 has empty delta |
780 - skip2: a delta against the same base as p2 |
800 - skip2: a delta against the same base as p2 |
781 (when p2 has empty delta |
801 (when p2 has empty delta |
782 - prev: a delta against the previous revision |
802 - prev: a delta against the previous revision |
783 - other: a delta against an arbitrary revision |
803 - other: a delta against an arbitrary revision |
|
804 |
784 :``compsize``: compressed size of revision |
805 :``compsize``: compressed size of revision |
785 :``uncompsize``: uncompressed size of revision |
806 :``uncompsize``: uncompressed size of revision |
786 :``chainsize``: total size of compressed revisions in chain |
807 :``chainsize``: total size of compressed revisions in chain |
787 :``chainratio``: total chain size divided by uncompressed revision size |
808 :``chainratio``: total chain size divided by uncompressed revision size |
788 (new delta chains typically start at ratio 2.00) |
809 (new delta chains typically start at ratio 2.00) |
|
810 |
789 :``lindist``: linear distance from base revision in delta chain to end |
811 :``lindist``: linear distance from base revision in delta chain to end |
790 of this revision |
812 of this revision |
791 :``extradist``: total size of revisions not part of this delta chain from |
813 :``extradist``: total size of revisions not part of this delta chain from |
792 base of delta chain to end of this revision; a measurement |
814 base of delta chain to end of this revision; a measurement |
793 of how much extra data we need to read/seek across to read |
815 of how much extra data we need to read/seek across to read |
802 (sum of the sizes of all the blocks) |
824 (sum of the sizes of all the blocks) |
803 :``largestblock``: size of the largest block of data read from the disk |
825 :``largestblock``: size of the largest block of data read from the disk |
804 :``readdensity``: density of useful bytes in the data read from the disk |
826 :``readdensity``: density of useful bytes in the data read from the disk |
805 :``srchunks``: in how many data hunks the whole revision would be read |
827 :``srchunks``: in how many data hunks the whole revision would be read |
806 |
828 |
|
829 It is possible to select the information to be computed, this can provide a |
|
830 noticeable speedup to the command in some cases. |
|
831 |
|
832 Always computed: |
|
833 |
|
834 - ``rev`` |
|
835 - ``p1`` |
|
836 - ``p2`` |
|
837 - ``chainid`` |
|
838 - ``chainlen`` |
|
839 - ``prevrev`` |
|
840 - ``deltatype`` |
|
841 |
|
842 Computed with --no-size-info |
|
843 |
|
844 - ``compsize`` |
|
845 - ``uncompsize`` |
|
846 - ``chainsize`` |
|
847 - ``chainratio`` |
|
848 |
|
849 Computed with --no-dist-info |
|
850 |
|
851 - ``lindist`` |
|
852 - ``extradist`` |
|
853 - ``extraratio`` |
|
854 |
|
855 Skipped with --no-sparse-info |
|
856 |
|
857 - ``readsize`` |
|
858 - ``largestblock`` |
|
859 - ``readdensity`` |
|
860 - ``srchunks`` |
|
861 |
|
862 -- |
|
863 |
807 The sparse read can be enabled with experimental.sparse-read = True |
864 The sparse read can be enabled with experimental.sparse-read = True |
808 """ |
865 """ |
809 revs = None |
866 revs = None |
810 revs_opt = opts.pop('rev', []) |
867 revs_opt = opts.pop('rev', []) |
811 if revs_opt: |
868 if revs_opt: |
812 revs = [int(r) for r in revs_opt] |
869 revs = [int(r) for r in revs_opt] |
|
870 |
|
871 size_info = opts.pop('size_info', True) |
|
872 dist_info = opts.pop('dist_info', True) |
|
873 sparse_info = opts.pop('sparse_info', True) |
|
874 |
813 revlog = cmdutil.openrevlog( |
875 revlog = cmdutil.openrevlog( |
814 repo, b'debugdeltachain', file_, pycompat.byteskwargs(opts) |
876 repo, b'debugdeltachain', file_, pycompat.byteskwargs(opts) |
815 ) |
877 ) |
816 fm = ui.formatter(b'debugdeltachain', pycompat.byteskwargs(opts)) |
878 fm = ui.formatter(b'debugdeltachain', pycompat.byteskwargs(opts)) |
817 |
879 |
818 lines = revlog_debug.debug_delta_chain(revlog, revs=revs) |
880 lines = revlog_debug.debug_delta_chain( |
|
881 revlog, |
|
882 revs=revs, |
|
883 size_info=size_info, |
|
884 dist_info=dist_info, |
|
885 sparse_info=sparse_info, |
|
886 ) |
819 # first entry is the header |
887 # first entry is the header |
820 header = next(lines) |
888 header = next(lines) |
821 fm.plain(header) |
889 fm.plain(header) |
822 for entry in lines: |
890 for entry in lines: |
823 label = b' '.join(e[0] for e in entry) |
891 label = b' '.join(e[0] for e in entry) |