annotate mercurial/revlogutils/debug.py @ 49775:bd3b6f363fb9

debug-revlog: move the code in revlogutils module We have a module dedicated to debug code, let us use it.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 07 Nov 2022 14:24:52 -0500
parents 7c0a383849a8
children 511106bcb16c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
1 # revlogutils/debug.py - utility used for revlog debuging
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
2 #
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
3 # Copyright 2005-2007 Olivia Mackall <olivia@selenic.com>
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
4 # Copyright 2022 Octobus <contact@octobus.net>
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
5 #
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
6 # This software may be used and distributed according to the terms of the
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
7 # GNU General Public License version 2 or any later version.
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
8
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
9 import collections
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
10 import string
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
11
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
12 from .. import (
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
13 node as nodemod,
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
14 util,
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
15 )
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
16
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
17 from . import (
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
18 constants,
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
19 )
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
20
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
21 INDEX_ENTRY_DEBUG_COLUMN = []
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
22
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
23 NODE_SIZE = object()
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
24
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
25
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
26 class _column_base:
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
27 """constains the definition of a revlog column
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
28
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
29 name: the column header,
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
30 value_func: the function called to get a value,
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
31 size: the width of the column,
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
32 verbose_only: only include the column in verbose mode.
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
33 """
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
34
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
35 def __init__(self, name, value_func, size=None, verbose=False):
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
36 self.name = name
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
37 self.value_func = value_func
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
38 if size is not NODE_SIZE:
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
39 if size is None:
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
40 size = 8 # arbitrary default
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
41 size = max(len(name), size)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
42 self._size = size
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
43 self.verbose_only = verbose
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
44
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
45 def get_size(self, node_size):
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
46 if self._size is NODE_SIZE:
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
47 return node_size
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
48 else:
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
49 return self._size
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
50
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
51
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
52 def debug_column(name, size=None, verbose=False):
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
53 """decorated function is registered as a column
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
54
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
55 name: the name of the column,
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
56 size: the expected size of the column.
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
57 """
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
58
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
59 def register(func):
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
60 entry = _column_base(
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
61 name=name,
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
62 value_func=func,
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
63 size=size,
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
64 verbose=verbose,
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
65 )
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
66 INDEX_ENTRY_DEBUG_COLUMN.append(entry)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
67 return entry
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
68
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
69 return register
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
70
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
71
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
72 @debug_column(b"rev", size=6)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
73 def _rev(index, rev, entry, hexfn):
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
74 return b"%d" % rev
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
75
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
76
49281
da3e37ecacde debugindex: add a `rank` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49280
diff changeset
77 @debug_column(b"rank", size=6, verbose=True)
da3e37ecacde debugindex: add a `rank` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49280
diff changeset
78 def rank(index, rev, entry, hexfn):
da3e37ecacde debugindex: add a `rank` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49280
diff changeset
79 return b"%d" % entry[constants.ENTRY_RANK]
da3e37ecacde debugindex: add a `rank` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49280
diff changeset
80
da3e37ecacde debugindex: add a `rank` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49280
diff changeset
81
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
82 @debug_column(b"linkrev", size=6)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
83 def _linkrev(index, rev, entry, hexfn):
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
84 return b"%d" % entry[constants.ENTRY_LINK_REV]
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
85
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
86
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
87 @debug_column(b"nodeid", size=NODE_SIZE)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
88 def _nodeid(index, rev, entry, hexfn):
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
89 return hexfn(entry[constants.ENTRY_NODE_ID])
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
90
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
91
49270
251650844331 debugindex: add a `p1-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49269
diff changeset
92 @debug_column(b"p1-rev", size=6, verbose=True)
251650844331 debugindex: add a `p1-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49269
diff changeset
93 def _p1_rev(index, rev, entry, hexfn):
251650844331 debugindex: add a `p1-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49269
diff changeset
94 return b"%d" % entry[constants.ENTRY_PARENT_1]
251650844331 debugindex: add a `p1-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49269
diff changeset
95
251650844331 debugindex: add a `p1-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49269
diff changeset
96
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
97 @debug_column(b"p1-nodeid", size=NODE_SIZE)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
98 def _p1_node(index, rev, entry, hexfn):
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
99 parent = entry[constants.ENTRY_PARENT_1]
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
100 p_entry = index[parent]
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
101 return hexfn(p_entry[constants.ENTRY_NODE_ID])
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
102
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
103
49271
d910ca4e995b debugindex: add a `p2-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49270
diff changeset
104 @debug_column(b"p2-rev", size=6, verbose=True)
d910ca4e995b debugindex: add a `p2-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49270
diff changeset
105 def _p2_rev(index, rev, entry, hexfn):
d910ca4e995b debugindex: add a `p2-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49270
diff changeset
106 return b"%d" % entry[constants.ENTRY_PARENT_2]
d910ca4e995b debugindex: add a `p2-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49270
diff changeset
107
d910ca4e995b debugindex: add a `p2-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49270
diff changeset
108
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
109 @debug_column(b"p2-nodeid", size=NODE_SIZE)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
110 def _p2_node(index, rev, entry, hexfn):
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
111 parent = entry[constants.ENTRY_PARENT_2]
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
112 p_entry = index[parent]
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
113 return hexfn(p_entry[constants.ENTRY_NODE_ID])
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
114
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
115
49272
b0238fc496af debugindex: add a `full-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49271
diff changeset
116 @debug_column(b"full-size", size=20, verbose=True)
b0238fc496af debugindex: add a `full-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49271
diff changeset
117 def full_size(index, rev, entry, hexfn):
b0238fc496af debugindex: add a `full-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49271
diff changeset
118 return b"%d" % entry[constants.ENTRY_DATA_UNCOMPRESSED_LENGTH]
b0238fc496af debugindex: add a `full-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49271
diff changeset
119
b0238fc496af debugindex: add a `full-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49271
diff changeset
120
49273
f6ef18be36e1 debugindex: add a `delta-base` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49272
diff changeset
121 @debug_column(b"delta-base", size=6, verbose=True)
f6ef18be36e1 debugindex: add a `delta-base` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49272
diff changeset
122 def delta_base(index, rev, entry, hexfn):
f6ef18be36e1 debugindex: add a `delta-base` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49272
diff changeset
123 return b"%d" % entry[constants.ENTRY_DELTA_BASE]
f6ef18be36e1 debugindex: add a `delta-base` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49272
diff changeset
124
f6ef18be36e1 debugindex: add a `delta-base` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49272
diff changeset
125
49274
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
126 @debug_column(b"flags", size=2, verbose=True)
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
127 def flags(index, rev, entry, hexfn):
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
128 field = entry[constants.ENTRY_DATA_OFFSET]
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
129 field &= 0xFFFF
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
130 return b"%d" % field
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
131
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
132
49275
7a18f6fc7e0c debugindex: add a `comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49274
diff changeset
133 @debug_column(b"comp-mode", size=4, verbose=True)
7a18f6fc7e0c debugindex: add a `comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49274
diff changeset
134 def compression_mode(index, rev, entry, hexfn):
7a18f6fc7e0c debugindex: add a `comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49274
diff changeset
135 return b"%d" % entry[constants.ENTRY_DATA_COMPRESSION_MODE]
7a18f6fc7e0c debugindex: add a `comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49274
diff changeset
136
7a18f6fc7e0c debugindex: add a `comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49274
diff changeset
137
49276
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
138 @debug_column(b"data-offset", size=20, verbose=True)
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
139 def data_offset(index, rev, entry, hexfn):
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
140 field = entry[constants.ENTRY_DATA_OFFSET]
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
141 field >>= 16
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
142 return b"%d" % field
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
143
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
144
49277
4c145006b24a debugindex: add a `chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49276
diff changeset
145 @debug_column(b"chunk-size", size=10, verbose=True)
4c145006b24a debugindex: add a `chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49276
diff changeset
146 def data_chunk_size(index, rev, entry, hexfn):
4c145006b24a debugindex: add a `chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49276
diff changeset
147 return b"%d" % entry[constants.ENTRY_DATA_COMPRESSED_LENGTH]
4c145006b24a debugindex: add a `chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49276
diff changeset
148
4c145006b24a debugindex: add a `chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49276
diff changeset
149
49278
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
150 @debug_column(b"sd-comp-mode", size=7, verbose=True)
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
151 def sidedata_compression_mode(index, rev, entry, hexfn):
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
152 compression = entry[constants.ENTRY_SIDEDATA_COMPRESSION_MODE]
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
153 if compression == constants.COMP_MODE_PLAIN:
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
154 return b"plain"
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
155 elif compression == constants.COMP_MODE_DEFAULT:
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
156 return b"default"
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
157 elif compression == constants.COMP_MODE_INLINE:
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
158 return b"inline"
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
159 else:
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
160 return b"%d" % compression
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
161
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
162
49279
e3a267a93711 debugindex: add a `sidedata-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49278
diff changeset
163 @debug_column(b"sidedata-offset", size=20, verbose=True)
e3a267a93711 debugindex: add a `sidedata-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49278
diff changeset
164 def sidedata_offset(index, rev, entry, hexfn):
e3a267a93711 debugindex: add a `sidedata-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49278
diff changeset
165 return b"%d" % entry[constants.ENTRY_SIDEDATA_OFFSET]
e3a267a93711 debugindex: add a `sidedata-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49278
diff changeset
166
e3a267a93711 debugindex: add a `sidedata-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49278
diff changeset
167
49280
30d2beab8163 debugindex: add a `sd-chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49279
diff changeset
168 @debug_column(b"sd-chunk-size", size=10, verbose=True)
30d2beab8163 debugindex: add a `sd-chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49279
diff changeset
169 def sidedata_chunk_size(index, rev, entry, hexfn):
30d2beab8163 debugindex: add a `sd-chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49279
diff changeset
170 return b"%d" % entry[constants.ENTRY_SIDEDATA_COMPRESSED_LENGTH]
30d2beab8163 debugindex: add a `sd-chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49279
diff changeset
171
30d2beab8163 debugindex: add a `sd-chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49279
diff changeset
172
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
173 def debug_index(
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
174 ui,
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
175 repo,
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
176 formatter,
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
177 revlog,
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
178 full_node,
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
179 ):
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
180 """display index data for a revlog"""
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
181 if full_node:
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
182 hexfn = nodemod.hex
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
183 else:
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
184 hexfn = nodemod.short
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
185
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
186 idlen = 12
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
187 for i in revlog:
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
188 idlen = len(hexfn(revlog.node(i)))
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
189 break
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
190
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
191 fm = formatter
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
192
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
193 header_pieces = []
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
194 for column in INDEX_ENTRY_DEBUG_COLUMN:
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
195 if column.verbose_only and not ui.verbose:
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
196 continue
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
197 size = column.get_size(idlen)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
198 name = column.name
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
199 header_pieces.append(name.rjust(size))
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
200
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
201 fm.plain(b' '.join(header_pieces) + b'\n')
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
202
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
203 index = revlog.index
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
204
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
205 for rev in revlog:
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
206 fm.startitem()
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
207 entry = index[rev]
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
208 first = True
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
209 for column in INDEX_ENTRY_DEBUG_COLUMN:
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
210 if column.verbose_only and not ui.verbose:
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
211 continue
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
212 if not first:
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
213 fm.plain(b' ')
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
214 first = False
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
215
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
216 size = column.get_size(idlen)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
217 value = column.value_func(index, rev, entry, hexfn)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
218 display = b"%%%ds" % size
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
219 fm.write(column.name, display, value)
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
220 fm.plain(b'\n')
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
221
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
222 fm.end()
49774
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
223
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
224
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
225 def dump(ui, revlog):
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
226 """perform the work for `hg debugrevlog --dump"""
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
227 # XXX seems redundant with debug index ?
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
228 r = revlog
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
229 numrevs = len(r)
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
230 ui.write(
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
231 (
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
232 b"# rev p1rev p2rev start end deltastart base p1 p2"
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
233 b" rawsize totalsize compression heads chainlen\n"
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
234 )
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
235 )
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
236 ts = 0
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
237 heads = set()
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
238
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
239 for rev in range(numrevs):
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
240 dbase = r.deltaparent(rev)
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
241 if dbase == -1:
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
242 dbase = rev
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
243 cbase = r.chainbase(rev)
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
244 clen = r.chainlen(rev)
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
245 p1, p2 = r.parentrevs(rev)
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
246 rs = r.rawsize(rev)
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
247 ts = ts + rs
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
248 heads -= set(r.parentrevs(rev))
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
249 heads.add(rev)
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
250 try:
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
251 compression = ts / r.end(rev)
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
252 except ZeroDivisionError:
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
253 compression = 0
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
254 ui.write(
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
255 b"%5d %5d %5d %5d %5d %10d %4d %4d %4d %7d %9d "
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
256 b"%11d %5d %8d\n"
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
257 % (
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
258 rev,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
259 p1,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
260 p2,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
261 r.start(rev),
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
262 r.end(rev),
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
263 r.start(dbase),
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
264 r.start(cbase),
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
265 r.start(p1),
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
266 r.start(p2),
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
267 rs,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
268 ts,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
269 compression,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
270 len(heads),
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
271 clen,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
272 )
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
273 )
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
274
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
275
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
276 def debug_revlog(ui, revlog):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
277 """code for `hg debugrevlog`"""
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
278 r = revlog
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
279 format = r._format_version
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
280 v = r._format_flags
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
281 flags = []
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
282 gdelta = False
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
283 if v & constants.FLAG_INLINE_DATA:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
284 flags.append(b'inline')
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
285 if v & constants.FLAG_GENERALDELTA:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
286 gdelta = True
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
287 flags.append(b'generaldelta')
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
288 if not flags:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
289 flags = [b'(none)']
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
290
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
291 ### tracks merge vs single parent
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
292 nummerges = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
293
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
294 ### tracks ways the "delta" are build
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
295 # nodelta
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
296 numempty = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
297 numemptytext = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
298 numemptydelta = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
299 # full file content
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
300 numfull = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
301 # intermediate snapshot against a prior snapshot
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
302 numsemi = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
303 # snapshot count per depth
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
304 numsnapdepth = collections.defaultdict(lambda: 0)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
305 # delta against previous revision
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
306 numprev = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
307 # delta against first or second parent (not prev)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
308 nump1 = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
309 nump2 = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
310 # delta against neither prev nor parents
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
311 numother = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
312 # delta against prev that are also first or second parent
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
313 # (details of `numprev`)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
314 nump1prev = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
315 nump2prev = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
316
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
317 # data about delta chain of each revs
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
318 chainlengths = []
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
319 chainbases = []
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
320 chainspans = []
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
321
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
322 # data about each revision
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
323 datasize = [None, 0, 0]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
324 fullsize = [None, 0, 0]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
325 semisize = [None, 0, 0]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
326 # snapshot count per depth
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
327 snapsizedepth = collections.defaultdict(lambda: [None, 0, 0])
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
328 deltasize = [None, 0, 0]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
329 chunktypecounts = {}
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
330 chunktypesizes = {}
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
331
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
332 def addsize(size, l):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
333 if l[0] is None or size < l[0]:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
334 l[0] = size
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
335 if size > l[1]:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
336 l[1] = size
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
337 l[2] += size
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
338
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
339 numrevs = len(r)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
340 for rev in range(numrevs):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
341 p1, p2 = r.parentrevs(rev)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
342 delta = r.deltaparent(rev)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
343 if format > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
344 addsize(r.rawsize(rev), datasize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
345 if p2 != nodemod.nullrev:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
346 nummerges += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
347 size = r.length(rev)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
348 if delta == nodemod.nullrev:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
349 chainlengths.append(0)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
350 chainbases.append(r.start(rev))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
351 chainspans.append(size)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
352 if size == 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
353 numempty += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
354 numemptytext += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
355 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
356 numfull += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
357 numsnapdepth[0] += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
358 addsize(size, fullsize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
359 addsize(size, snapsizedepth[0])
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
360 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
361 chainlengths.append(chainlengths[delta] + 1)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
362 baseaddr = chainbases[delta]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
363 revaddr = r.start(rev)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
364 chainbases.append(baseaddr)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
365 chainspans.append((revaddr - baseaddr) + size)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
366 if size == 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
367 numempty += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
368 numemptydelta += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
369 elif r.issnapshot(rev):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
370 addsize(size, semisize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
371 numsemi += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
372 depth = r.snapshotdepth(rev)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
373 numsnapdepth[depth] += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
374 addsize(size, snapsizedepth[depth])
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
375 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
376 addsize(size, deltasize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
377 if delta == rev - 1:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
378 numprev += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
379 if delta == p1:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
380 nump1prev += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
381 elif delta == p2:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
382 nump2prev += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
383 elif delta == p1:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
384 nump1 += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
385 elif delta == p2:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
386 nump2 += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
387 elif delta != nodemod.nullrev:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
388 numother += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
389
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
390 # Obtain data on the raw chunks in the revlog.
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
391 if util.safehasattr(r, '_getsegmentforrevs'):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
392 segment = r._getsegmentforrevs(rev, rev)[1]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
393 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
394 segment = r._revlog._getsegmentforrevs(rev, rev)[1]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
395 if segment:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
396 chunktype = bytes(segment[0:1])
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
397 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
398 chunktype = b'empty'
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
399
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
400 if chunktype not in chunktypecounts:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
401 chunktypecounts[chunktype] = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
402 chunktypesizes[chunktype] = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
403
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
404 chunktypecounts[chunktype] += 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
405 chunktypesizes[chunktype] += size
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
406
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
407 # Adjust size min value for empty cases
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
408 for size in (datasize, fullsize, semisize, deltasize):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
409 if size[0] is None:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
410 size[0] = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
411
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
412 numdeltas = numrevs - numfull - numempty - numsemi
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
413 numoprev = numprev - nump1prev - nump2prev
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
414 totalrawsize = datasize[2]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
415 datasize[2] /= numrevs
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
416 fulltotal = fullsize[2]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
417 if numfull == 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
418 fullsize[2] = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
419 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
420 fullsize[2] /= numfull
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
421 semitotal = semisize[2]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
422 snaptotal = {}
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
423 if numsemi > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
424 semisize[2] /= numsemi
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
425 for depth in snapsizedepth:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
426 snaptotal[depth] = snapsizedepth[depth][2]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
427 snapsizedepth[depth][2] /= numsnapdepth[depth]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
428
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
429 deltatotal = deltasize[2]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
430 if numdeltas > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
431 deltasize[2] /= numdeltas
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
432 totalsize = fulltotal + semitotal + deltatotal
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
433 avgchainlen = sum(chainlengths) / numrevs
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
434 maxchainlen = max(chainlengths)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
435 maxchainspan = max(chainspans)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
436 compratio = 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
437 if totalsize:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
438 compratio = totalrawsize / totalsize
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
439
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
440 basedfmtstr = b'%%%dd\n'
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
441 basepcfmtstr = b'%%%dd %s(%%5.2f%%%%)\n'
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
442
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
443 def dfmtstr(max):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
444 return basedfmtstr % len(str(max))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
445
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
446 def pcfmtstr(max, padding=0):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
447 return basepcfmtstr % (len(str(max)), b' ' * padding)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
448
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
449 def pcfmt(value, total):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
450 if total:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
451 return (value, 100 * float(value) / total)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
452 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
453 return value, 100.0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
454
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
455 ui.writenoi18n(b'format : %d\n' % format)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
456 ui.writenoi18n(b'flags : %s\n' % b', '.join(flags))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
457
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
458 ui.write(b'\n')
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
459 fmt = pcfmtstr(totalsize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
460 fmt2 = dfmtstr(totalsize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
461 ui.writenoi18n(b'revisions : ' + fmt2 % numrevs)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
462 ui.writenoi18n(b' merges : ' + fmt % pcfmt(nummerges, numrevs))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
463 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
464 b' normal : ' + fmt % pcfmt(numrevs - nummerges, numrevs)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
465 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
466 ui.writenoi18n(b'revisions : ' + fmt2 % numrevs)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
467 ui.writenoi18n(b' empty : ' + fmt % pcfmt(numempty, numrevs))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
468 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
469 b' text : '
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
470 + fmt % pcfmt(numemptytext, numemptytext + numemptydelta)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
471 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
472 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
473 b' delta : '
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
474 + fmt % pcfmt(numemptydelta, numemptytext + numemptydelta)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
475 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
476 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
477 b' snapshot : ' + fmt % pcfmt(numfull + numsemi, numrevs)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
478 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
479 for depth in sorted(numsnapdepth):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
480 ui.write(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
481 (b' lvl-%-3d : ' % depth)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
482 + fmt % pcfmt(numsnapdepth[depth], numrevs)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
483 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
484 ui.writenoi18n(b' deltas : ' + fmt % pcfmt(numdeltas, numrevs))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
485 ui.writenoi18n(b'revision size : ' + fmt2 % totalsize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
486 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
487 b' snapshot : ' + fmt % pcfmt(fulltotal + semitotal, totalsize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
488 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
489 for depth in sorted(numsnapdepth):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
490 ui.write(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
491 (b' lvl-%-3d : ' % depth)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
492 + fmt % pcfmt(snaptotal[depth], totalsize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
493 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
494 ui.writenoi18n(b' deltas : ' + fmt % pcfmt(deltatotal, totalsize))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
495
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
496 letters = string.ascii_letters.encode('ascii')
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
497
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
498 def fmtchunktype(chunktype):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
499 if chunktype == b'empty':
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
500 return b' %s : ' % chunktype
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
501 elif chunktype in letters:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
502 return b' 0x%s (%s) : ' % (nodemod.hex(chunktype), chunktype)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
503 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
504 return b' 0x%s : ' % nodemod.hex(chunktype)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
505
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
506 ui.write(b'\n')
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
507 ui.writenoi18n(b'chunks : ' + fmt2 % numrevs)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
508 for chunktype in sorted(chunktypecounts):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
509 ui.write(fmtchunktype(chunktype))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
510 ui.write(fmt % pcfmt(chunktypecounts[chunktype], numrevs))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
511 ui.writenoi18n(b'chunks size : ' + fmt2 % totalsize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
512 for chunktype in sorted(chunktypecounts):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
513 ui.write(fmtchunktype(chunktype))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
514 ui.write(fmt % pcfmt(chunktypesizes[chunktype], totalsize))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
515
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
516 ui.write(b'\n')
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
517 fmt = dfmtstr(max(avgchainlen, maxchainlen, maxchainspan, compratio))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
518 ui.writenoi18n(b'avg chain length : ' + fmt % avgchainlen)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
519 ui.writenoi18n(b'max chain length : ' + fmt % maxchainlen)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
520 ui.writenoi18n(b'max chain reach : ' + fmt % maxchainspan)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
521 ui.writenoi18n(b'compression ratio : ' + fmt % compratio)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
522
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
523 if format > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
524 ui.write(b'\n')
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
525 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
526 b'uncompressed data size (min/max/avg) : %d / %d / %d\n'
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
527 % tuple(datasize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
528 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
529 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
530 b'full revision size (min/max/avg) : %d / %d / %d\n'
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
531 % tuple(fullsize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
532 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
533 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
534 b'inter-snapshot size (min/max/avg) : %d / %d / %d\n'
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
535 % tuple(semisize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
536 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
537 for depth in sorted(snapsizedepth):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
538 if depth == 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
539 continue
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
540 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
541 b' level-%-3d (min/max/avg) : %d / %d / %d\n'
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
542 % ((depth,) + tuple(snapsizedepth[depth]))
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
543 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
544 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
545 b'delta size (min/max/avg) : %d / %d / %d\n'
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
546 % tuple(deltasize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
547 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
548
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
549 if numdeltas > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
550 ui.write(b'\n')
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
551 fmt = pcfmtstr(numdeltas)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
552 fmt2 = pcfmtstr(numdeltas, 4)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
553 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
554 b'deltas against prev : ' + fmt % pcfmt(numprev, numdeltas)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
555 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
556 if numprev > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
557 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
558 b' where prev = p1 : ' + fmt2 % pcfmt(nump1prev, numprev)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
559 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
560 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
561 b' where prev = p2 : ' + fmt2 % pcfmt(nump2prev, numprev)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
562 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
563 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
564 b' other : ' + fmt2 % pcfmt(numoprev, numprev)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
565 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
566 if gdelta:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
567 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
568 b'deltas against p1 : ' + fmt % pcfmt(nump1, numdeltas)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
569 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
570 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
571 b'deltas against p2 : ' + fmt % pcfmt(nump2, numdeltas)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
572 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
573 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
574 b'deltas against other : ' + fmt % pcfmt(numother, numdeltas)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
575 )