Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revlogutils/debug.py @ 49269:69983adfed06
debugindex: introduce a concept of "verbose-only" column
We are about to add a bunch of new column and most of them are probably only
relevant to --verbose.
We add some more testing of the `--verbose` mode in a sidedata context.
author | Pierre-Yves DAVID <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 01 Jun 2022 00:54:19 +0200 |
parents | a321304269cf |
children | 251650844331 |
comparison
equal
deleted
inserted
replaced
49268:a321304269cf | 49269:69983adfed06 |
---|---|
20 | 20 |
21 | 21 |
22 class _column_base: | 22 class _column_base: |
23 """constains the definition of a revlog column | 23 """constains the definition of a revlog column |
24 | 24 |
25 name: the column header, | 25 name: the column header, |
26 value_func: the function called to get a value, | 26 value_func: the function called to get a value, |
27 size: the width of the column. | 27 size: the width of the column, |
28 verbose_only: only include the column in verbose mode. | |
28 """ | 29 """ |
29 | 30 |
30 def __init__(self, name, value_func, size=None): | 31 def __init__(self, name, value_func, size=None, verbose=False): |
31 self.name = name | 32 self.name = name |
32 self.value_func = value_func | 33 self.value_func = value_func |
33 if size is not NODE_SIZE: | 34 if size is not NODE_SIZE: |
34 if size is None: | 35 if size is None: |
35 size = 8 # arbitrary default | 36 size = 8 # arbitrary default |
36 size = max(len(name), size) | 37 size = max(len(name), size) |
37 self._size = size | 38 self._size = size |
39 self.verbose_only = verbose | |
38 | 40 |
39 def get_size(self, node_size): | 41 def get_size(self, node_size): |
40 if self._size is NODE_SIZE: | 42 if self._size is NODE_SIZE: |
41 return node_size | 43 return node_size |
42 else: | 44 else: |
43 return self._size | 45 return self._size |
44 | 46 |
45 | 47 |
46 def debug_column(name, size=None): | 48 def debug_column(name, size=None, verbose=False): |
47 """decorated function is registered as a column | 49 """decorated function is registered as a column |
48 | 50 |
49 name: the name of the column, | 51 name: the name of the column, |
50 size: the expected size of the column. | 52 size: the expected size of the column. |
51 """ | 53 """ |
53 def register(func): | 55 def register(func): |
54 entry = _column_base( | 56 entry = _column_base( |
55 name=name, | 57 name=name, |
56 value_func=func, | 58 value_func=func, |
57 size=size, | 59 size=size, |
60 verbose=verbose, | |
58 ) | 61 ) |
59 INDEX_ENTRY_DEBUG_COLUMN.append(entry) | 62 INDEX_ENTRY_DEBUG_COLUMN.append(entry) |
60 return entry | 63 return entry |
61 | 64 |
62 return register | 65 return register |
111 | 114 |
112 fm = formatter | 115 fm = formatter |
113 | 116 |
114 header_pieces = [] | 117 header_pieces = [] |
115 for column in INDEX_ENTRY_DEBUG_COLUMN: | 118 for column in INDEX_ENTRY_DEBUG_COLUMN: |
119 if column.verbose_only and not ui.verbose: | |
120 continue | |
116 size = column.get_size(idlen) | 121 size = column.get_size(idlen) |
117 name = column.name | 122 name = column.name |
118 header_pieces.append(name.rjust(size)) | 123 header_pieces.append(name.rjust(size)) |
119 | 124 |
120 fm.plain(b' '.join(header_pieces) + b'\n') | 125 fm.plain(b' '.join(header_pieces) + b'\n') |
124 for rev in revlog: | 129 for rev in revlog: |
125 fm.startitem() | 130 fm.startitem() |
126 entry = index[rev] | 131 entry = index[rev] |
127 first = True | 132 first = True |
128 for column in INDEX_ENTRY_DEBUG_COLUMN: | 133 for column in INDEX_ENTRY_DEBUG_COLUMN: |
134 if column.verbose_only and not ui.verbose: | |
135 continue | |
129 if not first: | 136 if not first: |
130 fm.plain(b' ') | 137 fm.plain(b' ') |
131 first = False | 138 first = False |
132 | 139 |
133 size = column.get_size(idlen) | 140 size = column.get_size(idlen) |