Show More
@@ -587,11 +587,22 b' def debugdeltachain(ui, repo, file_=None' | |||||
587 | the delta chain for this revision |
|
587 | the delta chain for this revision | |
588 | :``extraratio``: extradist divided by chainsize; another representation of |
|
588 | :``extraratio``: extradist divided by chainsize; another representation of | |
589 | how much unrelated data is needed to load this delta chain |
|
589 | how much unrelated data is needed to load this delta chain | |
|
590 | ||||
|
591 | If the repository is configured to use the sparse read, additional keywords | |||
|
592 | are available: | |||
|
593 | ||||
|
594 | :``readsize``: total size of data read from the disk for a revision | |||
|
595 | (sum of the sizes of all the blocks) | |||
|
596 | :``largestblock``: size of the largest block of data read from the disk | |||
|
597 | :``readdensity``: density of useful bytes in the data read from the disk | |||
|
598 | ||||
|
599 | The sparse read can be enabled with experimental.sparse-read = True | |||
590 | """ |
|
600 | """ | |
591 | opts = pycompat.byteskwargs(opts) |
|
601 | opts = pycompat.byteskwargs(opts) | |
592 | r = cmdutil.openrevlog(repo, 'debugdeltachain', file_, opts) |
|
602 | r = cmdutil.openrevlog(repo, 'debugdeltachain', file_, opts) | |
593 | index = r.index |
|
603 | index = r.index | |
594 | generaldelta = r.version & revlog.FLAG_GENERALDELTA |
|
604 | generaldelta = r.version & revlog.FLAG_GENERALDELTA | |
|
605 | withsparseread = getattr(r, '_withsparseread', False) | |||
595 |
|
606 | |||
596 | def revinfo(rev): |
|
607 | def revinfo(rev): | |
597 | e = index[rev] |
|
608 | e = index[rev] | |
@@ -627,15 +638,20 b' def debugdeltachain(ui, repo, file_=None' | |||||
627 |
|
638 | |||
628 | fm.plain(' rev chain# chainlen prev delta ' |
|
639 | fm.plain(' rev chain# chainlen prev delta ' | |
629 | 'size rawsize chainsize ratio lindist extradist ' |
|
640 | 'size rawsize chainsize ratio lindist extradist ' | |
630 |
'extraratio |
|
641 | 'extraratio') | |
|
642 | if withsparseread: | |||
|
643 | fm.plain(' readsize largestblk rddensity') | |||
|
644 | fm.plain('\n') | |||
631 |
|
645 | |||
632 | chainbases = {} |
|
646 | chainbases = {} | |
633 | for rev in r: |
|
647 | for rev in r: | |
634 | comp, uncomp, deltatype, chain, chainsize = revinfo(rev) |
|
648 | comp, uncomp, deltatype, chain, chainsize = revinfo(rev) | |
635 | chainbase = chain[0] |
|
649 | chainbase = chain[0] | |
636 | chainid = chainbases.setdefault(chainbase, len(chainbases) + 1) |
|
650 | chainid = chainbases.setdefault(chainbase, len(chainbases) + 1) | |
637 |
|
|
651 | start = r.start | |
638 | revstart = r.start(rev) |
|
652 | length = r.length | |
|
653 | basestart = start(chainbase) | |||
|
654 | revstart = start(rev) | |||
639 | lineardist = revstart + comp - basestart |
|
655 | lineardist = revstart + comp - basestart | |
640 | extradist = lineardist - chainsize |
|
656 | extradist = lineardist - chainsize | |
641 | try: |
|
657 | try: | |
@@ -650,7 +666,7 b' def debugdeltachain(ui, repo, file_=None' | |||||
650 | fm.write('rev chainid chainlen prevrev deltatype compsize ' |
|
666 | fm.write('rev chainid chainlen prevrev deltatype compsize ' | |
651 | 'uncompsize chainsize chainratio lindist extradist ' |
|
667 | 'uncompsize chainsize chainratio lindist extradist ' | |
652 | 'extraratio', |
|
668 | 'extraratio', | |
653 |
'%7d %7d %8d %8d %7s %10d %10d %10d %9.5f %9d %9d %10.5f |
|
669 | '%7d %7d %8d %8d %7s %10d %10d %10d %9.5f %9d %9d %10.5f', | |
654 | rev, chainid, len(chain), prevrev, deltatype, comp, |
|
670 | rev, chainid, len(chain), prevrev, deltatype, comp, | |
655 | uncomp, chainsize, chainratio, lineardist, extradist, |
|
671 | uncomp, chainsize, chainratio, lineardist, extradist, | |
656 | extraratio, |
|
672 | extraratio, | |
@@ -659,6 +675,26 b' def debugdeltachain(ui, repo, file_=None' | |||||
659 | uncompsize=uncomp, chainsize=chainsize, |
|
675 | uncompsize=uncomp, chainsize=chainsize, | |
660 | chainratio=chainratio, lindist=lineardist, |
|
676 | chainratio=chainratio, lindist=lineardist, | |
661 | extradist=extradist, extraratio=extraratio) |
|
677 | extradist=extradist, extraratio=extraratio) | |
|
678 | if withsparseread: | |||
|
679 | readsize = 0 | |||
|
680 | largestblock = 0 | |||
|
681 | for revschunk in revlog._slicechunk(r, chain): | |||
|
682 | blkend = start(revschunk[-1]) + length(revschunk[-1]) | |||
|
683 | blksize = blkend - start(revschunk[0]) | |||
|
684 | ||||
|
685 | readsize += blksize | |||
|
686 | if largestblock < blksize: | |||
|
687 | largestblock = blksize | |||
|
688 | ||||
|
689 | readdensity = float(chainsize) / float(readsize) | |||
|
690 | ||||
|
691 | fm.write('readsize largestblock readdensity', | |||
|
692 | ' %10d %10d %9.5f', | |||
|
693 | readsize, largestblock, readdensity, | |||
|
694 | readsize=readsize, largestblock=largestblock, | |||
|
695 | readdensity=readdensity) | |||
|
696 | ||||
|
697 | fm.plain('\n') | |||
662 |
|
698 | |||
663 | fm.end() |
|
699 | fm.end() | |
664 |
|
700 |
@@ -77,6 +77,40 b' debugdelta chain basic output' | |||||
77 | } |
|
77 | } | |
78 | ] |
|
78 | ] | |
79 |
|
79 | |||
|
80 | debugdelta chain with sparse read enabled | |||
|
81 | ||||
|
82 | $ cat >> $HGRCPATH <<EOF | |||
|
83 | > [experimental] | |||
|
84 | > sparse-read = True | |||
|
85 | > EOF | |||
|
86 | $ hg debugdeltachain -m | |||
|
87 | rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio readsize largestblk rddensity | |||
|
88 | 0 1 1 -1 base 44 43 44 1.02326 44 0 0.00000 44 44 1.00000 | |||
|
89 | ||||
|
90 | $ hg debugdeltachain -m -T '{rev} {chainid} {chainlen} {readsize} {largestblock} {readdensity}\n' | |||
|
91 | 0 1 1 44 44 1.0 | |||
|
92 | ||||
|
93 | $ hg debugdeltachain -m -Tjson | |||
|
94 | [ | |||
|
95 | { | |||
|
96 | "chainid": 1, | |||
|
97 | "chainlen": 1, | |||
|
98 | "chainratio": 1.02325581395, | |||
|
99 | "chainsize": 44, | |||
|
100 | "compsize": 44, | |||
|
101 | "deltatype": "base", | |||
|
102 | "extradist": 0, | |||
|
103 | "extraratio": 0.0, | |||
|
104 | "largestblock": 44, | |||
|
105 | "lindist": 44, | |||
|
106 | "prevrev": -1, | |||
|
107 | "readdensity": 1.0, | |||
|
108 | "readsize": 44, | |||
|
109 | "rev": 0, | |||
|
110 | "uncompsize": 43 | |||
|
111 | } | |||
|
112 | ] | |||
|
113 | ||||
80 | Test max chain len |
|
114 | Test max chain len | |
81 | $ cat >> $HGRCPATH << EOF |
|
115 | $ cat >> $HGRCPATH << EOF | |
82 | > [format] |
|
116 | > [format] |
General Comments 0
You need to be logged in to leave comments.
Login now