annotate mercurial/revlogutils/debug.py @ 52661:0e11e532c958

style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()` These aliases were introduced back in 5209fc94b982, because `black` was going to strip away the extra parentheses, but they're needed to subvert `test-check-code.t`. That obviously changed at some point, but `pyupgrade`[1] also strips these out. While that tool is very useful in adapting code to modern standards, it lacks the ability to turn off most conversions, so constantly reverting these is a pain. Even without that, the code is more understandable with an explicit declaration. It also would have been an easy typo to miss the leading `_` in the i18n method `_()` that the checker is looking for, and fail to detect the problem. The `contrib/perf.py` code just uses a local alias to the original methods because (IIUC), this tries to be compatible with old versions of hg. But practically, these noi18n aliases were added before useful py3 support, and at some point, it won't be feasible to do py2 benchmarking anymore, and maybe this module can be cleaned up some. [1] https://github.com/asottile/pyupgrade
author Matt Harbison <matt_harbison@yahoo.com>
date Mon, 06 Jan 2025 13:29:42 -0500
parents 1c5810ce737e
children abc327f9628b
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
51902
1c5810ce737e typing: add `from __future__ import annotations` to remaining source files
Matt Harbison <matt_harbison@yahoo.com>
parents: 51091
diff changeset
9 from __future__ import annotations
1c5810ce737e typing: add `from __future__ import annotations` to remaining source files
Matt Harbison <matt_harbison@yahoo.com>
parents: 51091
diff changeset
10
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
11 import collections
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
12 import string
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
13
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
14 from .. import (
49790
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
15 mdiff,
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
16 node as nodemod,
49790
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
17 revlogutils,
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
18 )
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
19
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
20 from . import (
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
21 constants,
49790
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
22 deltas as deltautil,
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
23 )
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 INDEX_ENTRY_DEBUG_COLUMN = []
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
26
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
27 NODE_SIZE = object()
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
28
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
29
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
30 class _column_base:
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
31 """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
32
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
33 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
34 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
35 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
36 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
37 """
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
38
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
39 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
40 self.name = name
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
41 self.value_func = value_func
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
42 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
43 if size is None:
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
44 size = 8 # arbitrary default
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
45 size = max(len(name), size)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
46 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
47 self.verbose_only = verbose
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
48
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
49 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
50 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
51 return node_size
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
52 else:
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
53 return self._size
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
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
56 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
57 """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
58
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
59 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
60 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
61 """
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
62
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
63 def register(func):
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
64 entry = _column_base(
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
65 name=name,
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
66 value_func=func,
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
67 size=size,
49269
69983adfed06 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49268
diff changeset
68 verbose=verbose,
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
69 )
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
70 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
71 return entry
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
72
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
73 return register
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
74
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 @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
77 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
78 return b"%d" % rev
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
79
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
80
49281
da3e37ecacde debugindex: add a `rank` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49280
diff changeset
81 @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
82 def rank(index, rev, entry, hexfn):
da3e37ecacde debugindex: add a `rank` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49280
diff changeset
83 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
84
da3e37ecacde debugindex: add a `rank` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49280
diff changeset
85
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
86 @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
87 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
88 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
89
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 @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
92 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
93 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
94
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
95
49270
251650844331 debugindex: add a `p1-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49269
diff changeset
96 @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
97 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
98 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
99
251650844331 debugindex: add a `p1-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49269
diff changeset
100
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
101 @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
102 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
103 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
104 p_entry = index[parent]
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
105 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
106
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
107
49271
d910ca4e995b debugindex: add a `p2-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49270
diff changeset
108 @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
109 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
110 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
111
d910ca4e995b debugindex: add a `p2-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49270
diff changeset
112
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
113 @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
114 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
115 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
116 p_entry = index[parent]
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
117 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
118
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
119
49272
b0238fc496af debugindex: add a `full-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49271
diff changeset
120 @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
121 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
122 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
123
b0238fc496af debugindex: add a `full-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49271
diff changeset
124
49273
f6ef18be36e1 debugindex: add a `delta-base` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49272
diff changeset
125 @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
126 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
127 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
128
f6ef18be36e1 debugindex: add a `delta-base` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49272
diff changeset
129
49274
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
130 @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
131 def flags(index, rev, entry, hexfn):
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
132 field = entry[constants.ENTRY_DATA_OFFSET]
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
133 field &= 0xFFFF
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
134 return b"%d" % field
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
135
fbb2477298a6 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49273
diff changeset
136
49275
7a18f6fc7e0c debugindex: add a `comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49274
diff changeset
137 @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
138 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
139 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
140
7a18f6fc7e0c debugindex: add a `comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49274
diff changeset
141
49276
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
142 @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
143 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
144 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
145 field >>= 16
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
146 return b"%d" % field
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
147
7ba8adced391 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49275
diff changeset
148
49277
4c145006b24a debugindex: add a `chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49276
diff changeset
149 @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
150 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
151 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
152
4c145006b24a debugindex: add a `chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49276
diff changeset
153
49278
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
154 @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
155 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
156 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
157 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
158 return b"plain"
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
159 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
160 return b"default"
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
161 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
162 return b"inline"
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
163 else:
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
164 return b"%d" % compression
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
165
27583efef74d debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49277
diff changeset
166
49279
e3a267a93711 debugindex: add a `sidedata-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49278
diff changeset
167 @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
168 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
169 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
170
e3a267a93711 debugindex: add a `sidedata-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49278
diff changeset
171
49280
30d2beab8163 debugindex: add a `sd-chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49279
diff changeset
172 @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
173 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
174 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
175
30d2beab8163 debugindex: add a `sd-chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net>
parents: 49279
diff changeset
176
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
177 def debug_index(
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
178 ui,
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
179 repo,
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
180 formatter,
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
181 revlog,
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
182 full_node,
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
183 ):
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
184 """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
185 if full_node:
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
186 hexfn = nodemod.hex
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
187 else:
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
188 hexfn = nodemod.short
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
189
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
190 idlen = 12
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
191 for i in revlog:
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
192 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
193 break
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
194
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
195 fm = formatter
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
196
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
197 header_pieces = []
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
198 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
199 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
200 continue
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
201 size = column.get_size(idlen)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
202 name = column.name
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
203 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
204
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
205 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
206
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
207 index = revlog.index
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
208
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
209 for rev in revlog:
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
210 fm.startitem()
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
211 entry = index[rev]
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
212 first = True
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
213 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
214 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
215 continue
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
216 if not first:
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
217 fm.plain(b' ')
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
218 first = False
49265
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
219
49268
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
220 size = column.get_size(idlen)
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
221 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
222 display = b"%%%ds" % size
a321304269cf debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49267
diff changeset
223 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
224 fm.plain(b'\n')
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
225
61cf3d39fd9e debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
226 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
227
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
228
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
229 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
230 """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
231 # 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
232 r = revlog
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
233 numrevs = len(r)
52661
0e11e532c958 style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents: 51902
diff changeset
234 ui.writenoi18n(
0e11e532c958 style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents: 51902
diff changeset
235 b"# rev p1rev p2rev start end deltastart base p1 p2"
0e11e532c958 style: use `ui.xxxnoi18n()` methods instead of wrapping msg in `()`
Matt Harbison <matt_harbison@yahoo.com>
parents: 51902
diff changeset
236 b" rawsize totalsize compression heads chainlen\n"
49774
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
237 )
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
238 ts = 0
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
239 heads = set()
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
240
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
241 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
242 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
243 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
244 dbase = rev
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
245 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
246 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
247 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
248 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
249 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
250 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
251 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
252 try:
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
253 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
254 except ZeroDivisionError:
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
255 compression = 0
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
256 ui.write(
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
257 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
258 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
259 % (
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
260 rev,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
261 p1,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
262 p2,
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(rev),
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
264 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
265 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
266 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
267 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
268 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
269 rs,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
270 ts,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
271 compression,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
272 len(heads),
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
273 clen,
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
274 )
7c0a383849a8 debug-revlog: move the --dump code in `revlogutils` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49281
diff changeset
275 )
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
276
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
277
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
278 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
279 """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
280 r = revlog
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
281 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
282 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
283 flags = []
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
284 gdelta = False
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_INLINE_DATA:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
286 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
287 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
288 gdelta = True
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
289 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
290 if not flags:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
291 flags = [b'(none)']
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
292
49777
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
293 ### the total size of stored content if incompressed.
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
294 full_text_total_size = 0
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
295 ### 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
296 nummerges = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
297
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
298 ### 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
299 # nodelta
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
300 numempty = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
301 numemptytext = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
302 numemptydelta = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
303 # full file content
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
304 numfull = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
305 # 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
306 numsemi = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
307 # 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
308 numsnapdepth = collections.defaultdict(lambda: 0)
49776
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
309 # number of snapshots with a non-ancestor delta
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
310 numsnapdepth_nad = collections.defaultdict(lambda: 0)
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
311 # 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
312 numprev = 0
49776
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
313 # delta against prev, where prev is a non-ancestor
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
314 numprev_nad = 0
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
315 # 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
316 nump1 = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
317 nump2 = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
318 # 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
319 numother = 0
49776
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
320 # delta against other that is a non-ancestor
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
321 numother_nad = 0
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
322 # 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
323 # (details of `numprev`)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
324 nump1prev = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
325 nump2prev = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
326
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
327 # 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
328 chainlengths = []
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
329 chainbases = []
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
330 chainspans = []
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 # 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
333 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
334 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
335 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
336 # 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
337 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
338 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
339 chunktypecounts = {}
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
340 chunktypesizes = {}
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
341
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
342 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
343 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
344 l[0] = size
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
345 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
346 l[1] = size
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
347 l[2] += size
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
348
51022
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
349 with r.reading():
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
350 numrevs = len(r)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
351 for rev in range(numrevs):
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
352 p1, p2 = r.parentrevs(rev)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
353 delta = r.deltaparent(rev)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
354 if format > 0:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
355 s = r.rawsize(rev)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
356 full_text_total_size += s
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
357 addsize(s, datasize)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
358 if p2 != nodemod.nullrev:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
359 nummerges += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
360 size = r.length(rev)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
361 if delta == nodemod.nullrev:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
362 chainlengths.append(0)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
363 chainbases.append(r.start(rev))
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
364 chainspans.append(size)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
365 if size == 0:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
366 numempty += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
367 numemptytext += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
368 else:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
369 numfull += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
370 numsnapdepth[0] += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
371 addsize(size, fullsize)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
372 addsize(size, snapsizedepth[0])
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
373 else:
51022
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
374 nad = (
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
375 delta != p1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
376 and delta != p2
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
377 and not r.isancestorrev(delta, rev)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
378 )
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
379 chainlengths.append(chainlengths[delta] + 1)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
380 baseaddr = chainbases[delta]
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
381 revaddr = r.start(rev)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
382 chainbases.append(baseaddr)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
383 chainspans.append((revaddr - baseaddr) + size)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
384 if size == 0:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
385 numempty += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
386 numemptydelta += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
387 elif r.issnapshot(rev):
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
388 addsize(size, semisize)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
389 numsemi += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
390 depth = r.snapshotdepth(rev)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
391 numsnapdepth[depth] += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
392 if nad:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
393 numsnapdepth_nad[depth] += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
394 addsize(size, snapsizedepth[depth])
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
395 else:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
396 addsize(size, deltasize)
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
397 if delta == rev - 1:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
398 numprev += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
399 if delta == p1:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
400 nump1prev += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
401 elif delta == p2:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
402 nump2prev += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
403 elif nad:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
404 numprev_nad += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
405 elif delta == p1:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
406 nump1 += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
407 elif delta == p2:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
408 nump2 += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
409 elif delta != nodemod.nullrev:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
410 numother += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
411 numother_nad += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
412
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
413 # Obtain data on the raw chunks in the revlog.
51091
df50a1592e0c revlog: move _getsegmentforrevs on the internal object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51079
diff changeset
414 if hasattr(r, '_inner'):
df50a1592e0c revlog: move _getsegmentforrevs on the internal object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51079
diff changeset
415 segment = r._inner.get_segment_for_revs(rev, rev)[1]
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
416 else:
51022
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
417 segment = r._revlog._getsegmentforrevs(rev, rev)[1]
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
418 if segment:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
419 chunktype = bytes(segment[0:1])
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
420 else:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
421 chunktype = b'empty'
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
422
51022
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
423 if chunktype not in chunktypecounts:
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
424 chunktypecounts[chunktype] = 0
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
425 chunktypesizes[chunktype] = 0
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
426
51022
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
427 chunktypecounts[chunktype] += 1
edc44ab7437a debug-revlog: keep the revlog open for the analysis duration
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50951
diff changeset
428 chunktypesizes[chunktype] += size
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
429
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
430 # 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
431 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
432 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
433 size[0] = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
434
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
435 numdeltas = numrevs - numfull - numempty - numsemi
49776
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
436 numoprev = numprev - nump1prev - nump2prev - numprev_nad
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
437 num_other_ancestors = numother - numother_nad
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
438 totalrawsize = datasize[2]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
439 datasize[2] /= numrevs
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
440 fulltotal = fullsize[2]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
441 if numfull == 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
442 fullsize[2] = 0
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
443 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
444 fullsize[2] /= numfull
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
445 semitotal = semisize[2]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
446 snaptotal = {}
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
447 if numsemi > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
448 semisize[2] /= numsemi
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
449 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
450 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
451 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
452
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
453 deltatotal = deltasize[2]
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
454 if numdeltas > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
455 deltasize[2] /= numdeltas
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
456 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
457 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
458 maxchainlen = max(chainlengths)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
459 maxchainspan = max(chainspans)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
460 compratio = 1
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
461 if totalsize:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
462 compratio = totalrawsize / totalsize
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
463
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
464 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
465 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
466
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
467 def dfmtstr(max):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
468 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
469
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
470 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
471 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
472
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
473 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
474 if total:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
475 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
476 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
477 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
478
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
479 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
480 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
481
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
482 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
483 fmt = pcfmtstr(totalsize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
484 fmt2 = dfmtstr(totalsize)
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'revisions : ' + fmt2 % numrevs)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
486 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
487 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
488 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
489 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
490 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
491 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
492 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
493 b' text : '
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
494 + 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
495 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
496 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
497 b' delta : '
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
498 + 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
499 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
500 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
501 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
502 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
503 for depth in sorted(numsnapdepth):
49776
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
504 base = b' lvl-%-3d : ' % depth
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
505 count = fmt % pcfmt(numsnapdepth[depth], numrevs)
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
506 pieces = [base, count]
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
507 if numsnapdepth_nad[depth]:
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
508 pieces[-1] = count = count[:-1] # drop the final '\n'
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
509 more = b' non-ancestor-bases: '
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
510 anc_count = fmt
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
511 anc_count %= pcfmt(numsnapdepth_nad[depth], numsnapdepth[depth])
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
512 pieces.append(more)
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
513 pieces.append(anc_count)
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
514 ui.write(b''.join(pieces))
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
515 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
516 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
517 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
518 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
519 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
520 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
521 ui.write(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
522 (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
523 + 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
524 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
525 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
526
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
527 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
528
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
529 def fmtchunktype(chunktype):
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
530 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
531 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
532 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
533 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
534 else:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
535 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
536
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
537 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
538 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
539 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
540 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
541 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
542 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
543 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
544 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
545 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
546
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
547 ui.write(b'\n')
49777
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
548 b_total = b"%d" % full_text_total_size
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
549 p_total = []
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
550 while len(b_total) > 3:
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
551 p_total.append(b_total[-3:])
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
552 b_total = b_total[:-3]
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
553 p_total.append(b_total)
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
554 p_total.reverse()
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
555 b_total = b' '.join(p_total)
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
556
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
557 ui.write(b'\n')
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
558 ui.writenoi18n(b'total-stored-content: %s bytes\n' % b_total)
7aea9babac5d debugrevlog: display total stored information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49776
diff changeset
559 ui.write(b'\n')
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
560 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
561 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
562 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
563 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
564 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
565
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
566 if format > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
567 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
568 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
569 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
570 % tuple(datasize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
571 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
572 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
573 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
574 % tuple(fullsize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
575 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
576 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
577 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
578 % tuple(semisize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
579 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
580 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
581 if depth == 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
582 continue
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
583 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
584 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
585 % ((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
586 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
587 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
588 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
589 % tuple(deltasize)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
590 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
591
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
592 if numdeltas > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
593 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
594 fmt = pcfmtstr(numdeltas)
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
595 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
596 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
597 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
598 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
599 if numprev > 0:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
600 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
601 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
602 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
603 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
604 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
605 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
606 ui.writenoi18n(
49776
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
607 b' other-ancestor : ' + fmt2 % pcfmt(numoprev, numprev)
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
608 )
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
609 ui.writenoi18n(
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
610 b' unrelated : ' + fmt2 % pcfmt(numoprev, numprev)
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
611 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
612 if gdelta:
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
613 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
614 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
615 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
616 ui.writenoi18n(
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
617 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
618 )
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
619 ui.writenoi18n(
49776
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
620 b'deltas against ancs : '
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
621 + fmt % pcfmt(num_other_ancestors, numdeltas)
49775
bd3b6f363fb9 debug-revlog: move the code in revlogutils module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49774
diff changeset
622 )
49776
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
623 ui.writenoi18n(
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
624 b'deltas against other : '
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
625 + fmt % pcfmt(numother_nad, numdeltas)
511106bcb16c debug-revlog: details about non-ancestors delta-bases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49775
diff changeset
626 )
49790
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
627
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
628
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
629 def debug_delta_find(ui, revlog, rev, base_rev=nodemod.nullrev):
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
630 """display the search process for a delta"""
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
631 deltacomputer = deltautil.deltacomputer(
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
632 revlog,
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
633 write_debug=ui.write,
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
634 debug_search=not ui.quiet,
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
635 )
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
636
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
637 node = revlog.node(rev)
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
638 p1r, p2r = revlog.parentrevs(rev)
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
639 p1 = revlog.node(p1r)
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
640 p2 = revlog.node(p2r)
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
641 full_text = revlog.revision(rev)
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
642 btext = [full_text]
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
643 textlen = len(btext[0])
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
644 cachedelta = None
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
645 flags = revlog.flags(rev)
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
646
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
647 if base_rev != nodemod.nullrev:
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
648 base_text = revlog.revision(base_rev)
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
649 delta = mdiff.textdiff(base_text, full_text)
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
650
49791
05db41701ece find-delta: pass the cache-delta usage policy alongside the cache-delta
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49790
diff changeset
651 cachedelta = (base_rev, delta, constants.DELTA_BASE_REUSE_TRY)
49790
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
652 btext = [None]
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
653
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
654 revinfo = revlogutils.revisioninfo(
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
655 node,
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
656 p1,
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
657 p2,
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
658 btext,
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
659 textlen,
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
660 cachedelta,
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
661 flags,
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
662 )
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
663
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
664 fh = revlog._datafp()
4302db0f54c8 find-delta: move most of the debug-find-delta code in the debug module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49777
diff changeset
665 deltacomputer.finddeltainfo(revinfo, fh, target_rev=rev)
49914
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
666
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
667
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
668 def debug_revlog_stats(
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
669 repo, fm, changelog: bool, manifest: bool, filelogs: bool
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
670 ):
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
671 """Format revlog statistics for debugging purposes
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
672
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
673 fm: the output formatter.
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
674 """
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
675 fm.plain(b'rev-count data-size inl type target \n')
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
676
50689
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
677 revlog_entries = [e for e in repo.store.walk() if e.is_revlog]
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
678 revlog_entries.sort(key=lambda e: (e.revlog_type, e.target_id))
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
679
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
680 for entry in revlog_entries:
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
681 if not changelog and entry.is_changelog:
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
682 continue
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
683 elif not manifest and entry.is_manifestlog:
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
684 continue
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
685 elif not filelogs and entry.is_filelog:
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
686 continue
47b44d80d836 debug-revlog-stats: make it use the new store entry API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49914
diff changeset
687 rlog = entry.get_revlog_instance(repo).get_revlog()
49914
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
688 fm.startitem()
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
689 nb_rev = len(rlog)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
690 inline = rlog._inline
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
691 data_size = rlog._get_data_offset(nb_rev - 1)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
692
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
693 target = rlog.target
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
694 revlog_type = b'unknown'
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
695 revlog_target = b''
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
696 if target[0] == constants.KIND_CHANGELOG:
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
697 revlog_type = b'changelog'
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
698 elif target[0] == constants.KIND_MANIFESTLOG:
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
699 revlog_type = b'manifest'
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
700 revlog_target = target[1]
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
701 elif target[0] == constants.KIND_FILELOG:
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
702 revlog_type = b'file'
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
703 revlog_target = target[1]
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
704
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
705 fm.write(b'revlog.rev-count', b'%9d', nb_rev)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
706 fm.write(b'revlog.data-size', b'%12d', data_size)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
707
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
708 fm.write(b'revlog.inline', b' %-3s', b'yes' if inline else b'no')
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
709 fm.write(b'revlog.type', b' %-9s', revlog_type)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
710 fm.write(b'revlog.target', b' %s', revlog_target)
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
711
b1e4c74beb6f debug: add debug-revlog-stats command
Franck Bret <franck.bret@octobus.net>
parents: 49791
diff changeset
712 fm.plain(b'\n')
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
713
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
714
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
715 class DeltaChainAuditor:
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
716 def __init__(self, revlog):
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
717 self._revlog = revlog
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
718 self._index = self._revlog.index
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
719 self._generaldelta = revlog.delta_config.general_delta
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
720 self._chain_size_cache = {}
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
721 # security to avoid crash on corrupted revlogs
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
722 self._total_revs = len(self._index)
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
723
51079
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
724 def revinfo(self, rev, size_info=True, dist_info=True, sparse_info=True):
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
725 e = self._index[rev]
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
726 compsize = e[constants.ENTRY_DATA_COMPRESSED_LENGTH]
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
727 uncompsize = e[constants.ENTRY_DATA_UNCOMPRESSED_LENGTH]
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
728
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
729 base = e[constants.ENTRY_DELTA_BASE]
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
730 p1 = e[constants.ENTRY_PARENT_1]
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
731 p2 = e[constants.ENTRY_PARENT_2]
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
732
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
733 # If the parents of a revision has an empty delta, we never try to
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
734 # delta against that parent, but directly against the delta base of
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
735 # that parent (recursively). It avoids adding a useless entry in the
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
736 # chain.
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
737 #
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
738 # However we need to detect that as a special case for delta-type, that
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
739 # is not simply "other".
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
740 p1_base = p1
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
741 if p1 != nodemod.nullrev and p1 < self._total_revs:
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
742 e1 = self._index[p1]
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
743 while e1[constants.ENTRY_DATA_COMPRESSED_LENGTH] == 0:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
744 new_base = e1[constants.ENTRY_DELTA_BASE]
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
745 if (
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
746 new_base == p1_base
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
747 or new_base == nodemod.nullrev
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
748 or new_base >= self._total_revs
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
749 ):
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
750 break
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
751 p1_base = new_base
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
752 e1 = self._index[p1_base]
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
753 p2_base = p2
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
754 if p2 != nodemod.nullrev and p2 < self._total_revs:
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
755 e2 = self._index[p2]
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
756 while e2[constants.ENTRY_DATA_COMPRESSED_LENGTH] == 0:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
757 new_base = e2[constants.ENTRY_DELTA_BASE]
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
758 if (
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
759 new_base == p2_base
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
760 or new_base == nodemod.nullrev
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
761 or new_base >= self._total_revs
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
762 ):
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
763 break
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
764 p2_base = new_base
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
765 e2 = self._index[p2_base]
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
766
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
767 if self._generaldelta:
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
768 if base == p1:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
769 deltatype = b'p1'
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
770 elif base == p2:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
771 deltatype = b'p2'
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
772 elif base == rev:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
773 deltatype = b'base'
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
774 elif base == p1_base:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
775 deltatype = b'skip1'
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
776 elif base == p2_base:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
777 deltatype = b'skip2'
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
778 elif self._revlog.issnapshot(rev):
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
779 deltatype = b'snap'
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
780 elif base == rev - 1:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
781 deltatype = b'prev'
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
782 else:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
783 deltatype = b'other'
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
784 else:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
785 if base == rev:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
786 deltatype = b'base'
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
787 else:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
788 deltatype = b'prev'
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
789
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
790 chain = self._revlog._deltachain(rev)[0]
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
791
51079
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
792 data = {
51078
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
793 'p1': p1,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
794 'p2': p2,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
795 'compressed_size': compsize,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
796 'uncompressed_size': uncompsize,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
797 'deltatype': deltatype,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
798 'chain': chain,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
799 }
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
800
51079
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
801 if size_info or dist_info or sparse_info:
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
802 chain_size = 0
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
803 for iter_rev in reversed(chain):
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
804 cached = self._chain_size_cache.get(iter_rev)
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
805 if cached is not None:
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
806 chain_size += cached
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
807 break
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
808 e = self._index[iter_rev]
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
809 chain_size += e[constants.ENTRY_DATA_COMPRESSED_LENGTH]
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
810 self._chain_size_cache[rev] = chain_size
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
811 data['chain_size'] = chain_size
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
812
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
813 return data
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
814
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
815
51078
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
816 def debug_delta_chain(
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
817 revlog,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
818 revs=None,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
819 size_info=True,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
820 dist_info=True,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
821 sparse_info=True,
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
822 ):
51076
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
823 auditor = DeltaChainAuditor(revlog)
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
824 r = revlog
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
825 start = r.start
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
826 length = r.length
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
827 withsparseread = revlog.data_config.with_sparse_read
793a058f64bd delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51075
diff changeset
828
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
829 header = (
51078
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
830 b' rev'
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
831 b' p1'
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
832 b' p2'
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
833 b' chain#'
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
834 b' chainlen'
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
835 b' prev'
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
836 b' delta'
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
837 )
51078
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
838 if size_info:
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
839 header += b' size' b' rawsize' b' chainsize' b' ratio'
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
840 if dist_info:
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
841 header += b' lindist' b' extradist' b' extraratio'
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
842 if withsparseread and sparse_info:
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
843 header += b' readsize' b' largestblk' b' rddensity' b' srchunks'
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
844 header += b'\n'
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
845 yield header
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
846
51077
810446d2d5ef debug-delta-chaing: add a parameter to select revision to look at
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51076
diff changeset
847 if revs is None:
810446d2d5ef debug-delta-chaing: add a parameter to select revision to look at
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51076
diff changeset
848 all_revs = iter(r)
810446d2d5ef debug-delta-chaing: add a parameter to select revision to look at
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51076
diff changeset
849 else:
810446d2d5ef debug-delta-chaing: add a parameter to select revision to look at
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51076
diff changeset
850 revlog_size = len(r)
810446d2d5ef debug-delta-chaing: add a parameter to select revision to look at
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51076
diff changeset
851 all_revs = sorted(rev for rev in revs if rev < revlog_size)
810446d2d5ef debug-delta-chaing: add a parameter to select revision to look at
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51076
diff changeset
852
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
853 chainbases = {}
51077
810446d2d5ef debug-delta-chaing: add a parameter to select revision to look at
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51076
diff changeset
854 for rev in all_revs:
51079
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
855 info = auditor.revinfo(
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
856 rev,
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
857 size_info=size_info,
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
858 dist_info=dist_info,
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
859 sparse_info=sparse_info,
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
860 )
51078
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
861 comp = info['compressed_size']
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
862 uncomp = info['uncompressed_size']
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
863 chain = info['chain']
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
864 chainbase = chain[0]
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
865 chainid = chainbases.setdefault(chainbase, len(chainbases) + 1)
51079
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
866 if dist_info:
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
867 basestart = start(chainbase)
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
868 revstart = start(rev)
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
869 lineardist = revstart + comp - basestart
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
870 extradist = lineardist - info['chain_size']
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
871 try:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
872 prevrev = chain[-2]
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
873 except IndexError:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
874 prevrev = -1
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
875
51079
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
876 if size_info:
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
877 chainsize = info['chain_size']
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
878 if uncomp != 0:
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
879 chainratio = float(chainsize) / float(uncomp)
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
880 else:
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
881 chainratio = chainsize
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
882
51079
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
883 if dist_info:
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
884 if chainsize != 0:
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
885 extraratio = float(extradist) / float(chainsize)
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
886 else:
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
887 extraratio = extradist
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
888
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
889 # label, display-format, data-key, value
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
890 entry = [
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
891 (b'rev', b'%7d', 'rev', rev),
51078
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
892 (b'p1', b'%7d', 'p1', info['p1']),
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
893 (b'p2', b'%7d', 'p2', info['p2']),
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
894 (b'chainid', b'%7d', 'chainid', chainid),
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
895 (b'chainlen', b'%8d', 'chainlen', len(chain)),
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
896 (b'prevrev', b'%8d', 'prevrev', prevrev),
51078
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
897 (b'deltatype', b'%7s', 'deltatype', info['deltatype']),
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
898 ]
51078
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
899 if size_info:
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
900 entry.extend(
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
901 [
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
902 (b'compsize', b'%10d', 'compsize', comp),
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
903 (b'uncompsize', b'%10d', 'uncompsize', uncomp),
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
904 (b'chainsize', b'%10d', 'chainsize', chainsize),
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
905 (b'chainratio', b'%9.5f', 'chainratio', chainratio),
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
906 ]
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
907 )
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
908 if dist_info:
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
909 entry.extend(
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
910 [
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
911 (b'lindist', b'%9d', 'lindist', lineardist),
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
912 (b'extradist', b'%9d', 'extradist', extradist),
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
913 (b'extraratio', b'%10.5f', 'extraratio', extraratio),
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
914 ]
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
915 )
752e380c5702 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51077
diff changeset
916 if withsparseread and sparse_info:
51079
5b5cb6b833b0 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51078
diff changeset
917 chainsize = info['chain_size']
51075
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
918 readsize = 0
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
919 largestblock = 0
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
920 srchunks = 0
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
921
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
922 for revschunk in deltautil.slicechunk(r, chain):
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
923 srchunks += 1
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
924 blkend = start(revschunk[-1]) + length(revschunk[-1])
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
925 blksize = blkend - start(revschunk[0])
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
926
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
927 readsize += blksize
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
928 if largestblock < blksize:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
929 largestblock = blksize
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
930
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
931 if readsize:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
932 readdensity = float(chainsize) / float(readsize)
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
933 else:
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
934 readdensity = 1
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
935 entry.extend(
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
936 [
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
937 (b'readsize', b'%10d', 'readsize', readsize),
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
938 (b'largestblock', b'%10d', 'largestblock', largestblock),
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
939 (b'readdensity', b'%9.5f', 'readdensity', readdensity),
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
940 (b'srchunks', b'%8d', 'srchunks', srchunks),
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
941 ]
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
942 )
d7f975e49f20 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51022
diff changeset
943 yield entry