##// END OF EJS Templates
sharesafe: introduce config to disallow outdated shares if upgrade fails...
Pulkit Goyal -
r46856:d159d0fa default
parent child Browse files
Show More
@@ -1,2550 +1,2555 b''
1 # configitems.py - centralized declaration of configuration option
1 # configitems.py - centralized declaration of configuration option
2 #
2 #
3 # Copyright 2017 Pierre-Yves David <pierre-yves.david@octobus.net>
3 # Copyright 2017 Pierre-Yves David <pierre-yves.david@octobus.net>
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
6 # GNU General Public License version 2 or any later version.
7
7
8 from __future__ import absolute_import
8 from __future__ import absolute_import
9
9
10 import functools
10 import functools
11 import re
11 import re
12
12
13 from . import (
13 from . import (
14 encoding,
14 encoding,
15 error,
15 error,
16 )
16 )
17
17
18
18
19 def loadconfigtable(ui, extname, configtable):
19 def loadconfigtable(ui, extname, configtable):
20 """update config item known to the ui with the extension ones"""
20 """update config item known to the ui with the extension ones"""
21 for section, items in sorted(configtable.items()):
21 for section, items in sorted(configtable.items()):
22 knownitems = ui._knownconfig.setdefault(section, itemregister())
22 knownitems = ui._knownconfig.setdefault(section, itemregister())
23 knownkeys = set(knownitems)
23 knownkeys = set(knownitems)
24 newkeys = set(items)
24 newkeys = set(items)
25 for key in sorted(knownkeys & newkeys):
25 for key in sorted(knownkeys & newkeys):
26 msg = b"extension '%s' overwrite config item '%s.%s'"
26 msg = b"extension '%s' overwrite config item '%s.%s'"
27 msg %= (extname, section, key)
27 msg %= (extname, section, key)
28 ui.develwarn(msg, config=b'warn-config')
28 ui.develwarn(msg, config=b'warn-config')
29
29
30 knownitems.update(items)
30 knownitems.update(items)
31
31
32
32
33 class configitem(object):
33 class configitem(object):
34 """represent a known config item
34 """represent a known config item
35
35
36 :section: the official config section where to find this item,
36 :section: the official config section where to find this item,
37 :name: the official name within the section,
37 :name: the official name within the section,
38 :default: default value for this item,
38 :default: default value for this item,
39 :alias: optional list of tuples as alternatives,
39 :alias: optional list of tuples as alternatives,
40 :generic: this is a generic definition, match name using regular expression.
40 :generic: this is a generic definition, match name using regular expression.
41 """
41 """
42
42
43 def __init__(
43 def __init__(
44 self,
44 self,
45 section,
45 section,
46 name,
46 name,
47 default=None,
47 default=None,
48 alias=(),
48 alias=(),
49 generic=False,
49 generic=False,
50 priority=0,
50 priority=0,
51 experimental=False,
51 experimental=False,
52 ):
52 ):
53 self.section = section
53 self.section = section
54 self.name = name
54 self.name = name
55 self.default = default
55 self.default = default
56 self.alias = list(alias)
56 self.alias = list(alias)
57 self.generic = generic
57 self.generic = generic
58 self.priority = priority
58 self.priority = priority
59 self.experimental = experimental
59 self.experimental = experimental
60 self._re = None
60 self._re = None
61 if generic:
61 if generic:
62 self._re = re.compile(self.name)
62 self._re = re.compile(self.name)
63
63
64
64
65 class itemregister(dict):
65 class itemregister(dict):
66 """A specialized dictionary that can handle wild-card selection"""
66 """A specialized dictionary that can handle wild-card selection"""
67
67
68 def __init__(self):
68 def __init__(self):
69 super(itemregister, self).__init__()
69 super(itemregister, self).__init__()
70 self._generics = set()
70 self._generics = set()
71
71
72 def update(self, other):
72 def update(self, other):
73 super(itemregister, self).update(other)
73 super(itemregister, self).update(other)
74 self._generics.update(other._generics)
74 self._generics.update(other._generics)
75
75
76 def __setitem__(self, key, item):
76 def __setitem__(self, key, item):
77 super(itemregister, self).__setitem__(key, item)
77 super(itemregister, self).__setitem__(key, item)
78 if item.generic:
78 if item.generic:
79 self._generics.add(item)
79 self._generics.add(item)
80
80
81 def get(self, key):
81 def get(self, key):
82 baseitem = super(itemregister, self).get(key)
82 baseitem = super(itemregister, self).get(key)
83 if baseitem is not None and not baseitem.generic:
83 if baseitem is not None and not baseitem.generic:
84 return baseitem
84 return baseitem
85
85
86 # search for a matching generic item
86 # search for a matching generic item
87 generics = sorted(self._generics, key=(lambda x: (x.priority, x.name)))
87 generics = sorted(self._generics, key=(lambda x: (x.priority, x.name)))
88 for item in generics:
88 for item in generics:
89 # we use 'match' instead of 'search' to make the matching simpler
89 # we use 'match' instead of 'search' to make the matching simpler
90 # for people unfamiliar with regular expression. Having the match
90 # for people unfamiliar with regular expression. Having the match
91 # rooted to the start of the string will produce less surprising
91 # rooted to the start of the string will produce less surprising
92 # result for user writing simple regex for sub-attribute.
92 # result for user writing simple regex for sub-attribute.
93 #
93 #
94 # For example using "color\..*" match produces an unsurprising
94 # For example using "color\..*" match produces an unsurprising
95 # result, while using search could suddenly match apparently
95 # result, while using search could suddenly match apparently
96 # unrelated configuration that happens to contains "color."
96 # unrelated configuration that happens to contains "color."
97 # anywhere. This is a tradeoff where we favor requiring ".*" on
97 # anywhere. This is a tradeoff where we favor requiring ".*" on
98 # some match to avoid the need to prefix most pattern with "^".
98 # some match to avoid the need to prefix most pattern with "^".
99 # The "^" seems more error prone.
99 # The "^" seems more error prone.
100 if item._re.match(key):
100 if item._re.match(key):
101 return item
101 return item
102
102
103 return None
103 return None
104
104
105
105
106 coreitems = {}
106 coreitems = {}
107
107
108
108
109 def _register(configtable, *args, **kwargs):
109 def _register(configtable, *args, **kwargs):
110 item = configitem(*args, **kwargs)
110 item = configitem(*args, **kwargs)
111 section = configtable.setdefault(item.section, itemregister())
111 section = configtable.setdefault(item.section, itemregister())
112 if item.name in section:
112 if item.name in section:
113 msg = b"duplicated config item registration for '%s.%s'"
113 msg = b"duplicated config item registration for '%s.%s'"
114 raise error.ProgrammingError(msg % (item.section, item.name))
114 raise error.ProgrammingError(msg % (item.section, item.name))
115 section[item.name] = item
115 section[item.name] = item
116
116
117
117
118 # special value for case where the default is derived from other values
118 # special value for case where the default is derived from other values
119 dynamicdefault = object()
119 dynamicdefault = object()
120
120
121 # Registering actual config items
121 # Registering actual config items
122
122
123
123
124 def getitemregister(configtable):
124 def getitemregister(configtable):
125 f = functools.partial(_register, configtable)
125 f = functools.partial(_register, configtable)
126 # export pseudo enum as configitem.*
126 # export pseudo enum as configitem.*
127 f.dynamicdefault = dynamicdefault
127 f.dynamicdefault = dynamicdefault
128 return f
128 return f
129
129
130
130
131 coreconfigitem = getitemregister(coreitems)
131 coreconfigitem = getitemregister(coreitems)
132
132
133
133
134 def _registerdiffopts(section, configprefix=b''):
134 def _registerdiffopts(section, configprefix=b''):
135 coreconfigitem(
135 coreconfigitem(
136 section,
136 section,
137 configprefix + b'nodates',
137 configprefix + b'nodates',
138 default=False,
138 default=False,
139 )
139 )
140 coreconfigitem(
140 coreconfigitem(
141 section,
141 section,
142 configprefix + b'showfunc',
142 configprefix + b'showfunc',
143 default=False,
143 default=False,
144 )
144 )
145 coreconfigitem(
145 coreconfigitem(
146 section,
146 section,
147 configprefix + b'unified',
147 configprefix + b'unified',
148 default=None,
148 default=None,
149 )
149 )
150 coreconfigitem(
150 coreconfigitem(
151 section,
151 section,
152 configprefix + b'git',
152 configprefix + b'git',
153 default=False,
153 default=False,
154 )
154 )
155 coreconfigitem(
155 coreconfigitem(
156 section,
156 section,
157 configprefix + b'ignorews',
157 configprefix + b'ignorews',
158 default=False,
158 default=False,
159 )
159 )
160 coreconfigitem(
160 coreconfigitem(
161 section,
161 section,
162 configprefix + b'ignorewsamount',
162 configprefix + b'ignorewsamount',
163 default=False,
163 default=False,
164 )
164 )
165 coreconfigitem(
165 coreconfigitem(
166 section,
166 section,
167 configprefix + b'ignoreblanklines',
167 configprefix + b'ignoreblanklines',
168 default=False,
168 default=False,
169 )
169 )
170 coreconfigitem(
170 coreconfigitem(
171 section,
171 section,
172 configprefix + b'ignorewseol',
172 configprefix + b'ignorewseol',
173 default=False,
173 default=False,
174 )
174 )
175 coreconfigitem(
175 coreconfigitem(
176 section,
176 section,
177 configprefix + b'nobinary',
177 configprefix + b'nobinary',
178 default=False,
178 default=False,
179 )
179 )
180 coreconfigitem(
180 coreconfigitem(
181 section,
181 section,
182 configprefix + b'noprefix',
182 configprefix + b'noprefix',
183 default=False,
183 default=False,
184 )
184 )
185 coreconfigitem(
185 coreconfigitem(
186 section,
186 section,
187 configprefix + b'word-diff',
187 configprefix + b'word-diff',
188 default=False,
188 default=False,
189 )
189 )
190
190
191
191
192 coreconfigitem(
192 coreconfigitem(
193 b'alias',
193 b'alias',
194 b'.*',
194 b'.*',
195 default=dynamicdefault,
195 default=dynamicdefault,
196 generic=True,
196 generic=True,
197 )
197 )
198 coreconfigitem(
198 coreconfigitem(
199 b'auth',
199 b'auth',
200 b'cookiefile',
200 b'cookiefile',
201 default=None,
201 default=None,
202 )
202 )
203 _registerdiffopts(section=b'annotate')
203 _registerdiffopts(section=b'annotate')
204 # bookmarks.pushing: internal hack for discovery
204 # bookmarks.pushing: internal hack for discovery
205 coreconfigitem(
205 coreconfigitem(
206 b'bookmarks',
206 b'bookmarks',
207 b'pushing',
207 b'pushing',
208 default=list,
208 default=list,
209 )
209 )
210 # bundle.mainreporoot: internal hack for bundlerepo
210 # bundle.mainreporoot: internal hack for bundlerepo
211 coreconfigitem(
211 coreconfigitem(
212 b'bundle',
212 b'bundle',
213 b'mainreporoot',
213 b'mainreporoot',
214 default=b'',
214 default=b'',
215 )
215 )
216 coreconfigitem(
216 coreconfigitem(
217 b'censor',
217 b'censor',
218 b'policy',
218 b'policy',
219 default=b'abort',
219 default=b'abort',
220 experimental=True,
220 experimental=True,
221 )
221 )
222 coreconfigitem(
222 coreconfigitem(
223 b'chgserver',
223 b'chgserver',
224 b'idletimeout',
224 b'idletimeout',
225 default=3600,
225 default=3600,
226 )
226 )
227 coreconfigitem(
227 coreconfigitem(
228 b'chgserver',
228 b'chgserver',
229 b'skiphash',
229 b'skiphash',
230 default=False,
230 default=False,
231 )
231 )
232 coreconfigitem(
232 coreconfigitem(
233 b'cmdserver',
233 b'cmdserver',
234 b'log',
234 b'log',
235 default=None,
235 default=None,
236 )
236 )
237 coreconfigitem(
237 coreconfigitem(
238 b'cmdserver',
238 b'cmdserver',
239 b'max-log-files',
239 b'max-log-files',
240 default=7,
240 default=7,
241 )
241 )
242 coreconfigitem(
242 coreconfigitem(
243 b'cmdserver',
243 b'cmdserver',
244 b'max-log-size',
244 b'max-log-size',
245 default=b'1 MB',
245 default=b'1 MB',
246 )
246 )
247 coreconfigitem(
247 coreconfigitem(
248 b'cmdserver',
248 b'cmdserver',
249 b'max-repo-cache',
249 b'max-repo-cache',
250 default=0,
250 default=0,
251 experimental=True,
251 experimental=True,
252 )
252 )
253 coreconfigitem(
253 coreconfigitem(
254 b'cmdserver',
254 b'cmdserver',
255 b'message-encodings',
255 b'message-encodings',
256 default=list,
256 default=list,
257 )
257 )
258 coreconfigitem(
258 coreconfigitem(
259 b'cmdserver',
259 b'cmdserver',
260 b'track-log',
260 b'track-log',
261 default=lambda: [b'chgserver', b'cmdserver', b'repocache'],
261 default=lambda: [b'chgserver', b'cmdserver', b'repocache'],
262 )
262 )
263 coreconfigitem(
263 coreconfigitem(
264 b'cmdserver',
264 b'cmdserver',
265 b'shutdown-on-interrupt',
265 b'shutdown-on-interrupt',
266 default=True,
266 default=True,
267 )
267 )
268 coreconfigitem(
268 coreconfigitem(
269 b'color',
269 b'color',
270 b'.*',
270 b'.*',
271 default=None,
271 default=None,
272 generic=True,
272 generic=True,
273 )
273 )
274 coreconfigitem(
274 coreconfigitem(
275 b'color',
275 b'color',
276 b'mode',
276 b'mode',
277 default=b'auto',
277 default=b'auto',
278 )
278 )
279 coreconfigitem(
279 coreconfigitem(
280 b'color',
280 b'color',
281 b'pagermode',
281 b'pagermode',
282 default=dynamicdefault,
282 default=dynamicdefault,
283 )
283 )
284 coreconfigitem(
284 coreconfigitem(
285 b'command-templates',
285 b'command-templates',
286 b'graphnode',
286 b'graphnode',
287 default=None,
287 default=None,
288 alias=[(b'ui', b'graphnodetemplate')],
288 alias=[(b'ui', b'graphnodetemplate')],
289 )
289 )
290 coreconfigitem(
290 coreconfigitem(
291 b'command-templates',
291 b'command-templates',
292 b'log',
292 b'log',
293 default=None,
293 default=None,
294 alias=[(b'ui', b'logtemplate')],
294 alias=[(b'ui', b'logtemplate')],
295 )
295 )
296 coreconfigitem(
296 coreconfigitem(
297 b'command-templates',
297 b'command-templates',
298 b'mergemarker',
298 b'mergemarker',
299 default=(
299 default=(
300 b'{node|short} '
300 b'{node|short} '
301 b'{ifeq(tags, "tip", "", '
301 b'{ifeq(tags, "tip", "", '
302 b'ifeq(tags, "", "", "{tags} "))}'
302 b'ifeq(tags, "", "", "{tags} "))}'
303 b'{if(bookmarks, "{bookmarks} ")}'
303 b'{if(bookmarks, "{bookmarks} ")}'
304 b'{ifeq(branch, "default", "", "{branch} ")}'
304 b'{ifeq(branch, "default", "", "{branch} ")}'
305 b'- {author|user}: {desc|firstline}'
305 b'- {author|user}: {desc|firstline}'
306 ),
306 ),
307 alias=[(b'ui', b'mergemarkertemplate')],
307 alias=[(b'ui', b'mergemarkertemplate')],
308 )
308 )
309 coreconfigitem(
309 coreconfigitem(
310 b'command-templates',
310 b'command-templates',
311 b'pre-merge-tool-output',
311 b'pre-merge-tool-output',
312 default=None,
312 default=None,
313 alias=[(b'ui', b'pre-merge-tool-output-template')],
313 alias=[(b'ui', b'pre-merge-tool-output-template')],
314 )
314 )
315 coreconfigitem(
315 coreconfigitem(
316 b'command-templates',
316 b'command-templates',
317 b'oneline-summary',
317 b'oneline-summary',
318 default=None,
318 default=None,
319 )
319 )
320 coreconfigitem(
320 coreconfigitem(
321 b'command-templates',
321 b'command-templates',
322 b'oneline-summary.*',
322 b'oneline-summary.*',
323 default=dynamicdefault,
323 default=dynamicdefault,
324 generic=True,
324 generic=True,
325 )
325 )
326 _registerdiffopts(section=b'commands', configprefix=b'commit.interactive.')
326 _registerdiffopts(section=b'commands', configprefix=b'commit.interactive.')
327 coreconfigitem(
327 coreconfigitem(
328 b'commands',
328 b'commands',
329 b'commit.post-status',
329 b'commit.post-status',
330 default=False,
330 default=False,
331 )
331 )
332 coreconfigitem(
332 coreconfigitem(
333 b'commands',
333 b'commands',
334 b'grep.all-files',
334 b'grep.all-files',
335 default=False,
335 default=False,
336 experimental=True,
336 experimental=True,
337 )
337 )
338 coreconfigitem(
338 coreconfigitem(
339 b'commands',
339 b'commands',
340 b'merge.require-rev',
340 b'merge.require-rev',
341 default=False,
341 default=False,
342 )
342 )
343 coreconfigitem(
343 coreconfigitem(
344 b'commands',
344 b'commands',
345 b'push.require-revs',
345 b'push.require-revs',
346 default=False,
346 default=False,
347 )
347 )
348 coreconfigitem(
348 coreconfigitem(
349 b'commands',
349 b'commands',
350 b'resolve.confirm',
350 b'resolve.confirm',
351 default=False,
351 default=False,
352 )
352 )
353 coreconfigitem(
353 coreconfigitem(
354 b'commands',
354 b'commands',
355 b'resolve.explicit-re-merge',
355 b'resolve.explicit-re-merge',
356 default=False,
356 default=False,
357 )
357 )
358 coreconfigitem(
358 coreconfigitem(
359 b'commands',
359 b'commands',
360 b'resolve.mark-check',
360 b'resolve.mark-check',
361 default=b'none',
361 default=b'none',
362 )
362 )
363 _registerdiffopts(section=b'commands', configprefix=b'revert.interactive.')
363 _registerdiffopts(section=b'commands', configprefix=b'revert.interactive.')
364 coreconfigitem(
364 coreconfigitem(
365 b'commands',
365 b'commands',
366 b'show.aliasprefix',
366 b'show.aliasprefix',
367 default=list,
367 default=list,
368 )
368 )
369 coreconfigitem(
369 coreconfigitem(
370 b'commands',
370 b'commands',
371 b'status.relative',
371 b'status.relative',
372 default=False,
372 default=False,
373 )
373 )
374 coreconfigitem(
374 coreconfigitem(
375 b'commands',
375 b'commands',
376 b'status.skipstates',
376 b'status.skipstates',
377 default=[],
377 default=[],
378 experimental=True,
378 experimental=True,
379 )
379 )
380 coreconfigitem(
380 coreconfigitem(
381 b'commands',
381 b'commands',
382 b'status.terse',
382 b'status.terse',
383 default=b'',
383 default=b'',
384 )
384 )
385 coreconfigitem(
385 coreconfigitem(
386 b'commands',
386 b'commands',
387 b'status.verbose',
387 b'status.verbose',
388 default=False,
388 default=False,
389 )
389 )
390 coreconfigitem(
390 coreconfigitem(
391 b'commands',
391 b'commands',
392 b'update.check',
392 b'update.check',
393 default=None,
393 default=None,
394 )
394 )
395 coreconfigitem(
395 coreconfigitem(
396 b'commands',
396 b'commands',
397 b'update.requiredest',
397 b'update.requiredest',
398 default=False,
398 default=False,
399 )
399 )
400 coreconfigitem(
400 coreconfigitem(
401 b'committemplate',
401 b'committemplate',
402 b'.*',
402 b'.*',
403 default=None,
403 default=None,
404 generic=True,
404 generic=True,
405 )
405 )
406 coreconfigitem(
406 coreconfigitem(
407 b'convert',
407 b'convert',
408 b'bzr.saverev',
408 b'bzr.saverev',
409 default=True,
409 default=True,
410 )
410 )
411 coreconfigitem(
411 coreconfigitem(
412 b'convert',
412 b'convert',
413 b'cvsps.cache',
413 b'cvsps.cache',
414 default=True,
414 default=True,
415 )
415 )
416 coreconfigitem(
416 coreconfigitem(
417 b'convert',
417 b'convert',
418 b'cvsps.fuzz',
418 b'cvsps.fuzz',
419 default=60,
419 default=60,
420 )
420 )
421 coreconfigitem(
421 coreconfigitem(
422 b'convert',
422 b'convert',
423 b'cvsps.logencoding',
423 b'cvsps.logencoding',
424 default=None,
424 default=None,
425 )
425 )
426 coreconfigitem(
426 coreconfigitem(
427 b'convert',
427 b'convert',
428 b'cvsps.mergefrom',
428 b'cvsps.mergefrom',
429 default=None,
429 default=None,
430 )
430 )
431 coreconfigitem(
431 coreconfigitem(
432 b'convert',
432 b'convert',
433 b'cvsps.mergeto',
433 b'cvsps.mergeto',
434 default=None,
434 default=None,
435 )
435 )
436 coreconfigitem(
436 coreconfigitem(
437 b'convert',
437 b'convert',
438 b'git.committeractions',
438 b'git.committeractions',
439 default=lambda: [b'messagedifferent'],
439 default=lambda: [b'messagedifferent'],
440 )
440 )
441 coreconfigitem(
441 coreconfigitem(
442 b'convert',
442 b'convert',
443 b'git.extrakeys',
443 b'git.extrakeys',
444 default=list,
444 default=list,
445 )
445 )
446 coreconfigitem(
446 coreconfigitem(
447 b'convert',
447 b'convert',
448 b'git.findcopiesharder',
448 b'git.findcopiesharder',
449 default=False,
449 default=False,
450 )
450 )
451 coreconfigitem(
451 coreconfigitem(
452 b'convert',
452 b'convert',
453 b'git.remoteprefix',
453 b'git.remoteprefix',
454 default=b'remote',
454 default=b'remote',
455 )
455 )
456 coreconfigitem(
456 coreconfigitem(
457 b'convert',
457 b'convert',
458 b'git.renamelimit',
458 b'git.renamelimit',
459 default=400,
459 default=400,
460 )
460 )
461 coreconfigitem(
461 coreconfigitem(
462 b'convert',
462 b'convert',
463 b'git.saverev',
463 b'git.saverev',
464 default=True,
464 default=True,
465 )
465 )
466 coreconfigitem(
466 coreconfigitem(
467 b'convert',
467 b'convert',
468 b'git.similarity',
468 b'git.similarity',
469 default=50,
469 default=50,
470 )
470 )
471 coreconfigitem(
471 coreconfigitem(
472 b'convert',
472 b'convert',
473 b'git.skipsubmodules',
473 b'git.skipsubmodules',
474 default=False,
474 default=False,
475 )
475 )
476 coreconfigitem(
476 coreconfigitem(
477 b'convert',
477 b'convert',
478 b'hg.clonebranches',
478 b'hg.clonebranches',
479 default=False,
479 default=False,
480 )
480 )
481 coreconfigitem(
481 coreconfigitem(
482 b'convert',
482 b'convert',
483 b'hg.ignoreerrors',
483 b'hg.ignoreerrors',
484 default=False,
484 default=False,
485 )
485 )
486 coreconfigitem(
486 coreconfigitem(
487 b'convert',
487 b'convert',
488 b'hg.preserve-hash',
488 b'hg.preserve-hash',
489 default=False,
489 default=False,
490 )
490 )
491 coreconfigitem(
491 coreconfigitem(
492 b'convert',
492 b'convert',
493 b'hg.revs',
493 b'hg.revs',
494 default=None,
494 default=None,
495 )
495 )
496 coreconfigitem(
496 coreconfigitem(
497 b'convert',
497 b'convert',
498 b'hg.saverev',
498 b'hg.saverev',
499 default=False,
499 default=False,
500 )
500 )
501 coreconfigitem(
501 coreconfigitem(
502 b'convert',
502 b'convert',
503 b'hg.sourcename',
503 b'hg.sourcename',
504 default=None,
504 default=None,
505 )
505 )
506 coreconfigitem(
506 coreconfigitem(
507 b'convert',
507 b'convert',
508 b'hg.startrev',
508 b'hg.startrev',
509 default=None,
509 default=None,
510 )
510 )
511 coreconfigitem(
511 coreconfigitem(
512 b'convert',
512 b'convert',
513 b'hg.tagsbranch',
513 b'hg.tagsbranch',
514 default=b'default',
514 default=b'default',
515 )
515 )
516 coreconfigitem(
516 coreconfigitem(
517 b'convert',
517 b'convert',
518 b'hg.usebranchnames',
518 b'hg.usebranchnames',
519 default=True,
519 default=True,
520 )
520 )
521 coreconfigitem(
521 coreconfigitem(
522 b'convert',
522 b'convert',
523 b'ignoreancestorcheck',
523 b'ignoreancestorcheck',
524 default=False,
524 default=False,
525 experimental=True,
525 experimental=True,
526 )
526 )
527 coreconfigitem(
527 coreconfigitem(
528 b'convert',
528 b'convert',
529 b'localtimezone',
529 b'localtimezone',
530 default=False,
530 default=False,
531 )
531 )
532 coreconfigitem(
532 coreconfigitem(
533 b'convert',
533 b'convert',
534 b'p4.encoding',
534 b'p4.encoding',
535 default=dynamicdefault,
535 default=dynamicdefault,
536 )
536 )
537 coreconfigitem(
537 coreconfigitem(
538 b'convert',
538 b'convert',
539 b'p4.startrev',
539 b'p4.startrev',
540 default=0,
540 default=0,
541 )
541 )
542 coreconfigitem(
542 coreconfigitem(
543 b'convert',
543 b'convert',
544 b'skiptags',
544 b'skiptags',
545 default=False,
545 default=False,
546 )
546 )
547 coreconfigitem(
547 coreconfigitem(
548 b'convert',
548 b'convert',
549 b'svn.debugsvnlog',
549 b'svn.debugsvnlog',
550 default=True,
550 default=True,
551 )
551 )
552 coreconfigitem(
552 coreconfigitem(
553 b'convert',
553 b'convert',
554 b'svn.trunk',
554 b'svn.trunk',
555 default=None,
555 default=None,
556 )
556 )
557 coreconfigitem(
557 coreconfigitem(
558 b'convert',
558 b'convert',
559 b'svn.tags',
559 b'svn.tags',
560 default=None,
560 default=None,
561 )
561 )
562 coreconfigitem(
562 coreconfigitem(
563 b'convert',
563 b'convert',
564 b'svn.branches',
564 b'svn.branches',
565 default=None,
565 default=None,
566 )
566 )
567 coreconfigitem(
567 coreconfigitem(
568 b'convert',
568 b'convert',
569 b'svn.startrev',
569 b'svn.startrev',
570 default=0,
570 default=0,
571 )
571 )
572 coreconfigitem(
572 coreconfigitem(
573 b'debug',
573 b'debug',
574 b'dirstate.delaywrite',
574 b'dirstate.delaywrite',
575 default=0,
575 default=0,
576 )
576 )
577 coreconfigitem(
577 coreconfigitem(
578 b'defaults',
578 b'defaults',
579 b'.*',
579 b'.*',
580 default=None,
580 default=None,
581 generic=True,
581 generic=True,
582 )
582 )
583 coreconfigitem(
583 coreconfigitem(
584 b'devel',
584 b'devel',
585 b'all-warnings',
585 b'all-warnings',
586 default=False,
586 default=False,
587 )
587 )
588 coreconfigitem(
588 coreconfigitem(
589 b'devel',
589 b'devel',
590 b'bundle2.debug',
590 b'bundle2.debug',
591 default=False,
591 default=False,
592 )
592 )
593 coreconfigitem(
593 coreconfigitem(
594 b'devel',
594 b'devel',
595 b'bundle.delta',
595 b'bundle.delta',
596 default=b'',
596 default=b'',
597 )
597 )
598 coreconfigitem(
598 coreconfigitem(
599 b'devel',
599 b'devel',
600 b'cache-vfs',
600 b'cache-vfs',
601 default=None,
601 default=None,
602 )
602 )
603 coreconfigitem(
603 coreconfigitem(
604 b'devel',
604 b'devel',
605 b'check-locks',
605 b'check-locks',
606 default=False,
606 default=False,
607 )
607 )
608 coreconfigitem(
608 coreconfigitem(
609 b'devel',
609 b'devel',
610 b'check-relroot',
610 b'check-relroot',
611 default=False,
611 default=False,
612 )
612 )
613 coreconfigitem(
613 coreconfigitem(
614 b'devel',
614 b'devel',
615 b'default-date',
615 b'default-date',
616 default=None,
616 default=None,
617 )
617 )
618 coreconfigitem(
618 coreconfigitem(
619 b'devel',
619 b'devel',
620 b'deprec-warn',
620 b'deprec-warn',
621 default=False,
621 default=False,
622 )
622 )
623 coreconfigitem(
623 coreconfigitem(
624 b'devel',
624 b'devel',
625 b'disableloaddefaultcerts',
625 b'disableloaddefaultcerts',
626 default=False,
626 default=False,
627 )
627 )
628 coreconfigitem(
628 coreconfigitem(
629 b'devel',
629 b'devel',
630 b'warn-empty-changegroup',
630 b'warn-empty-changegroup',
631 default=False,
631 default=False,
632 )
632 )
633 coreconfigitem(
633 coreconfigitem(
634 b'devel',
634 b'devel',
635 b'legacy.exchange',
635 b'legacy.exchange',
636 default=list,
636 default=list,
637 )
637 )
638 coreconfigitem(
638 coreconfigitem(
639 b'devel',
639 b'devel',
640 b'persistent-nodemap',
640 b'persistent-nodemap',
641 default=False,
641 default=False,
642 )
642 )
643 coreconfigitem(
643 coreconfigitem(
644 b'devel',
644 b'devel',
645 b'servercafile',
645 b'servercafile',
646 default=b'',
646 default=b'',
647 )
647 )
648 coreconfigitem(
648 coreconfigitem(
649 b'devel',
649 b'devel',
650 b'serverexactprotocol',
650 b'serverexactprotocol',
651 default=b'',
651 default=b'',
652 )
652 )
653 coreconfigitem(
653 coreconfigitem(
654 b'devel',
654 b'devel',
655 b'serverrequirecert',
655 b'serverrequirecert',
656 default=False,
656 default=False,
657 )
657 )
658 coreconfigitem(
658 coreconfigitem(
659 b'devel',
659 b'devel',
660 b'strip-obsmarkers',
660 b'strip-obsmarkers',
661 default=True,
661 default=True,
662 )
662 )
663 coreconfigitem(
663 coreconfigitem(
664 b'devel',
664 b'devel',
665 b'warn-config',
665 b'warn-config',
666 default=None,
666 default=None,
667 )
667 )
668 coreconfigitem(
668 coreconfigitem(
669 b'devel',
669 b'devel',
670 b'warn-config-default',
670 b'warn-config-default',
671 default=None,
671 default=None,
672 )
672 )
673 coreconfigitem(
673 coreconfigitem(
674 b'devel',
674 b'devel',
675 b'user.obsmarker',
675 b'user.obsmarker',
676 default=None,
676 default=None,
677 )
677 )
678 coreconfigitem(
678 coreconfigitem(
679 b'devel',
679 b'devel',
680 b'warn-config-unknown',
680 b'warn-config-unknown',
681 default=None,
681 default=None,
682 )
682 )
683 coreconfigitem(
683 coreconfigitem(
684 b'devel',
684 b'devel',
685 b'debug.copies',
685 b'debug.copies',
686 default=False,
686 default=False,
687 )
687 )
688 coreconfigitem(
688 coreconfigitem(
689 b'devel',
689 b'devel',
690 b'debug.extensions',
690 b'debug.extensions',
691 default=False,
691 default=False,
692 )
692 )
693 coreconfigitem(
693 coreconfigitem(
694 b'devel',
694 b'devel',
695 b'debug.repo-filters',
695 b'debug.repo-filters',
696 default=False,
696 default=False,
697 )
697 )
698 coreconfigitem(
698 coreconfigitem(
699 b'devel',
699 b'devel',
700 b'debug.peer-request',
700 b'debug.peer-request',
701 default=False,
701 default=False,
702 )
702 )
703 coreconfigitem(
703 coreconfigitem(
704 b'devel',
704 b'devel',
705 b'discovery.randomize',
705 b'discovery.randomize',
706 default=True,
706 default=True,
707 )
707 )
708 _registerdiffopts(section=b'diff')
708 _registerdiffopts(section=b'diff')
709 coreconfigitem(
709 coreconfigitem(
710 b'email',
710 b'email',
711 b'bcc',
711 b'bcc',
712 default=None,
712 default=None,
713 )
713 )
714 coreconfigitem(
714 coreconfigitem(
715 b'email',
715 b'email',
716 b'cc',
716 b'cc',
717 default=None,
717 default=None,
718 )
718 )
719 coreconfigitem(
719 coreconfigitem(
720 b'email',
720 b'email',
721 b'charsets',
721 b'charsets',
722 default=list,
722 default=list,
723 )
723 )
724 coreconfigitem(
724 coreconfigitem(
725 b'email',
725 b'email',
726 b'from',
726 b'from',
727 default=None,
727 default=None,
728 )
728 )
729 coreconfigitem(
729 coreconfigitem(
730 b'email',
730 b'email',
731 b'method',
731 b'method',
732 default=b'smtp',
732 default=b'smtp',
733 )
733 )
734 coreconfigitem(
734 coreconfigitem(
735 b'email',
735 b'email',
736 b'reply-to',
736 b'reply-to',
737 default=None,
737 default=None,
738 )
738 )
739 coreconfigitem(
739 coreconfigitem(
740 b'email',
740 b'email',
741 b'to',
741 b'to',
742 default=None,
742 default=None,
743 )
743 )
744 coreconfigitem(
744 coreconfigitem(
745 b'experimental',
745 b'experimental',
746 b'archivemetatemplate',
746 b'archivemetatemplate',
747 default=dynamicdefault,
747 default=dynamicdefault,
748 )
748 )
749 coreconfigitem(
749 coreconfigitem(
750 b'experimental',
750 b'experimental',
751 b'auto-publish',
751 b'auto-publish',
752 default=b'publish',
752 default=b'publish',
753 )
753 )
754 coreconfigitem(
754 coreconfigitem(
755 b'experimental',
755 b'experimental',
756 b'bundle-phases',
756 b'bundle-phases',
757 default=False,
757 default=False,
758 )
758 )
759 coreconfigitem(
759 coreconfigitem(
760 b'experimental',
760 b'experimental',
761 b'bundle2-advertise',
761 b'bundle2-advertise',
762 default=True,
762 default=True,
763 )
763 )
764 coreconfigitem(
764 coreconfigitem(
765 b'experimental',
765 b'experimental',
766 b'bundle2-output-capture',
766 b'bundle2-output-capture',
767 default=False,
767 default=False,
768 )
768 )
769 coreconfigitem(
769 coreconfigitem(
770 b'experimental',
770 b'experimental',
771 b'bundle2.pushback',
771 b'bundle2.pushback',
772 default=False,
772 default=False,
773 )
773 )
774 coreconfigitem(
774 coreconfigitem(
775 b'experimental',
775 b'experimental',
776 b'bundle2lazylocking',
776 b'bundle2lazylocking',
777 default=False,
777 default=False,
778 )
778 )
779 coreconfigitem(
779 coreconfigitem(
780 b'experimental',
780 b'experimental',
781 b'bundlecomplevel',
781 b'bundlecomplevel',
782 default=None,
782 default=None,
783 )
783 )
784 coreconfigitem(
784 coreconfigitem(
785 b'experimental',
785 b'experimental',
786 b'bundlecomplevel.bzip2',
786 b'bundlecomplevel.bzip2',
787 default=None,
787 default=None,
788 )
788 )
789 coreconfigitem(
789 coreconfigitem(
790 b'experimental',
790 b'experimental',
791 b'bundlecomplevel.gzip',
791 b'bundlecomplevel.gzip',
792 default=None,
792 default=None,
793 )
793 )
794 coreconfigitem(
794 coreconfigitem(
795 b'experimental',
795 b'experimental',
796 b'bundlecomplevel.none',
796 b'bundlecomplevel.none',
797 default=None,
797 default=None,
798 )
798 )
799 coreconfigitem(
799 coreconfigitem(
800 b'experimental',
800 b'experimental',
801 b'bundlecomplevel.zstd',
801 b'bundlecomplevel.zstd',
802 default=None,
802 default=None,
803 )
803 )
804 coreconfigitem(
804 coreconfigitem(
805 b'experimental',
805 b'experimental',
806 b'changegroup3',
806 b'changegroup3',
807 default=False,
807 default=False,
808 )
808 )
809 coreconfigitem(
809 coreconfigitem(
810 b'experimental',
810 b'experimental',
811 b'cleanup-as-archived',
811 b'cleanup-as-archived',
812 default=False,
812 default=False,
813 )
813 )
814 coreconfigitem(
814 coreconfigitem(
815 b'experimental',
815 b'experimental',
816 b'clientcompressionengines',
816 b'clientcompressionengines',
817 default=list,
817 default=list,
818 )
818 )
819 coreconfigitem(
819 coreconfigitem(
820 b'experimental',
820 b'experimental',
821 b'copytrace',
821 b'copytrace',
822 default=b'on',
822 default=b'on',
823 )
823 )
824 coreconfigitem(
824 coreconfigitem(
825 b'experimental',
825 b'experimental',
826 b'copytrace.movecandidateslimit',
826 b'copytrace.movecandidateslimit',
827 default=100,
827 default=100,
828 )
828 )
829 coreconfigitem(
829 coreconfigitem(
830 b'experimental',
830 b'experimental',
831 b'copytrace.sourcecommitlimit',
831 b'copytrace.sourcecommitlimit',
832 default=100,
832 default=100,
833 )
833 )
834 coreconfigitem(
834 coreconfigitem(
835 b'experimental',
835 b'experimental',
836 b'copies.read-from',
836 b'copies.read-from',
837 default=b"filelog-only",
837 default=b"filelog-only",
838 )
838 )
839 coreconfigitem(
839 coreconfigitem(
840 b'experimental',
840 b'experimental',
841 b'copies.write-to',
841 b'copies.write-to',
842 default=b'filelog-only',
842 default=b'filelog-only',
843 )
843 )
844 coreconfigitem(
844 coreconfigitem(
845 b'experimental',
845 b'experimental',
846 b'crecordtest',
846 b'crecordtest',
847 default=None,
847 default=None,
848 )
848 )
849 coreconfigitem(
849 coreconfigitem(
850 b'experimental',
850 b'experimental',
851 b'directaccess',
851 b'directaccess',
852 default=False,
852 default=False,
853 )
853 )
854 coreconfigitem(
854 coreconfigitem(
855 b'experimental',
855 b'experimental',
856 b'directaccess.revnums',
856 b'directaccess.revnums',
857 default=False,
857 default=False,
858 )
858 )
859 coreconfigitem(
859 coreconfigitem(
860 b'experimental',
860 b'experimental',
861 b'editortmpinhg',
861 b'editortmpinhg',
862 default=False,
862 default=False,
863 )
863 )
864 coreconfigitem(
864 coreconfigitem(
865 b'experimental',
865 b'experimental',
866 b'evolution',
866 b'evolution',
867 default=list,
867 default=list,
868 )
868 )
869 coreconfigitem(
869 coreconfigitem(
870 b'experimental',
870 b'experimental',
871 b'evolution.allowdivergence',
871 b'evolution.allowdivergence',
872 default=False,
872 default=False,
873 alias=[(b'experimental', b'allowdivergence')],
873 alias=[(b'experimental', b'allowdivergence')],
874 )
874 )
875 coreconfigitem(
875 coreconfigitem(
876 b'experimental',
876 b'experimental',
877 b'evolution.allowunstable',
877 b'evolution.allowunstable',
878 default=None,
878 default=None,
879 )
879 )
880 coreconfigitem(
880 coreconfigitem(
881 b'experimental',
881 b'experimental',
882 b'evolution.createmarkers',
882 b'evolution.createmarkers',
883 default=None,
883 default=None,
884 )
884 )
885 coreconfigitem(
885 coreconfigitem(
886 b'experimental',
886 b'experimental',
887 b'evolution.effect-flags',
887 b'evolution.effect-flags',
888 default=True,
888 default=True,
889 alias=[(b'experimental', b'effect-flags')],
889 alias=[(b'experimental', b'effect-flags')],
890 )
890 )
891 coreconfigitem(
891 coreconfigitem(
892 b'experimental',
892 b'experimental',
893 b'evolution.exchange',
893 b'evolution.exchange',
894 default=None,
894 default=None,
895 )
895 )
896 coreconfigitem(
896 coreconfigitem(
897 b'experimental',
897 b'experimental',
898 b'evolution.bundle-obsmarker',
898 b'evolution.bundle-obsmarker',
899 default=False,
899 default=False,
900 )
900 )
901 coreconfigitem(
901 coreconfigitem(
902 b'experimental',
902 b'experimental',
903 b'evolution.bundle-obsmarker:mandatory',
903 b'evolution.bundle-obsmarker:mandatory',
904 default=True,
904 default=True,
905 )
905 )
906 coreconfigitem(
906 coreconfigitem(
907 b'experimental',
907 b'experimental',
908 b'log.topo',
908 b'log.topo',
909 default=False,
909 default=False,
910 )
910 )
911 coreconfigitem(
911 coreconfigitem(
912 b'experimental',
912 b'experimental',
913 b'evolution.report-instabilities',
913 b'evolution.report-instabilities',
914 default=True,
914 default=True,
915 )
915 )
916 coreconfigitem(
916 coreconfigitem(
917 b'experimental',
917 b'experimental',
918 b'evolution.track-operation',
918 b'evolution.track-operation',
919 default=True,
919 default=True,
920 )
920 )
921 # repo-level config to exclude a revset visibility
921 # repo-level config to exclude a revset visibility
922 #
922 #
923 # The target use case is to use `share` to expose different subset of the same
923 # The target use case is to use `share` to expose different subset of the same
924 # repository, especially server side. See also `server.view`.
924 # repository, especially server side. See also `server.view`.
925 coreconfigitem(
925 coreconfigitem(
926 b'experimental',
926 b'experimental',
927 b'extra-filter-revs',
927 b'extra-filter-revs',
928 default=None,
928 default=None,
929 )
929 )
930 coreconfigitem(
930 coreconfigitem(
931 b'experimental',
931 b'experimental',
932 b'maxdeltachainspan',
932 b'maxdeltachainspan',
933 default=-1,
933 default=-1,
934 )
934 )
935 # tracks files which were undeleted (merge might delete them but we explicitly
935 # tracks files which were undeleted (merge might delete them but we explicitly
936 # kept/undeleted them) and creates new filenodes for them
936 # kept/undeleted them) and creates new filenodes for them
937 coreconfigitem(
937 coreconfigitem(
938 b'experimental',
938 b'experimental',
939 b'merge-track-salvaged',
939 b'merge-track-salvaged',
940 default=False,
940 default=False,
941 )
941 )
942 coreconfigitem(
942 coreconfigitem(
943 b'experimental',
943 b'experimental',
944 b'mergetempdirprefix',
944 b'mergetempdirprefix',
945 default=None,
945 default=None,
946 )
946 )
947 coreconfigitem(
947 coreconfigitem(
948 b'experimental',
948 b'experimental',
949 b'mmapindexthreshold',
949 b'mmapindexthreshold',
950 default=None,
950 default=None,
951 )
951 )
952 coreconfigitem(
952 coreconfigitem(
953 b'experimental',
953 b'experimental',
954 b'narrow',
954 b'narrow',
955 default=False,
955 default=False,
956 )
956 )
957 coreconfigitem(
957 coreconfigitem(
958 b'experimental',
958 b'experimental',
959 b'nonnormalparanoidcheck',
959 b'nonnormalparanoidcheck',
960 default=False,
960 default=False,
961 )
961 )
962 coreconfigitem(
962 coreconfigitem(
963 b'experimental',
963 b'experimental',
964 b'exportableenviron',
964 b'exportableenviron',
965 default=list,
965 default=list,
966 )
966 )
967 coreconfigitem(
967 coreconfigitem(
968 b'experimental',
968 b'experimental',
969 b'extendedheader.index',
969 b'extendedheader.index',
970 default=None,
970 default=None,
971 )
971 )
972 coreconfigitem(
972 coreconfigitem(
973 b'experimental',
973 b'experimental',
974 b'extendedheader.similarity',
974 b'extendedheader.similarity',
975 default=False,
975 default=False,
976 )
976 )
977 coreconfigitem(
977 coreconfigitem(
978 b'experimental',
978 b'experimental',
979 b'graphshorten',
979 b'graphshorten',
980 default=False,
980 default=False,
981 )
981 )
982 coreconfigitem(
982 coreconfigitem(
983 b'experimental',
983 b'experimental',
984 b'graphstyle.parent',
984 b'graphstyle.parent',
985 default=dynamicdefault,
985 default=dynamicdefault,
986 )
986 )
987 coreconfigitem(
987 coreconfigitem(
988 b'experimental',
988 b'experimental',
989 b'graphstyle.missing',
989 b'graphstyle.missing',
990 default=dynamicdefault,
990 default=dynamicdefault,
991 )
991 )
992 coreconfigitem(
992 coreconfigitem(
993 b'experimental',
993 b'experimental',
994 b'graphstyle.grandparent',
994 b'graphstyle.grandparent',
995 default=dynamicdefault,
995 default=dynamicdefault,
996 )
996 )
997 coreconfigitem(
997 coreconfigitem(
998 b'experimental',
998 b'experimental',
999 b'hook-track-tags',
999 b'hook-track-tags',
1000 default=False,
1000 default=False,
1001 )
1001 )
1002 coreconfigitem(
1002 coreconfigitem(
1003 b'experimental',
1003 b'experimental',
1004 b'httppeer.advertise-v2',
1004 b'httppeer.advertise-v2',
1005 default=False,
1005 default=False,
1006 )
1006 )
1007 coreconfigitem(
1007 coreconfigitem(
1008 b'experimental',
1008 b'experimental',
1009 b'httppeer.v2-encoder-order',
1009 b'httppeer.v2-encoder-order',
1010 default=None,
1010 default=None,
1011 )
1011 )
1012 coreconfigitem(
1012 coreconfigitem(
1013 b'experimental',
1013 b'experimental',
1014 b'httppostargs',
1014 b'httppostargs',
1015 default=False,
1015 default=False,
1016 )
1016 )
1017 coreconfigitem(b'experimental', b'nointerrupt', default=False)
1017 coreconfigitem(b'experimental', b'nointerrupt', default=False)
1018 coreconfigitem(b'experimental', b'nointerrupt-interactiveonly', default=True)
1018 coreconfigitem(b'experimental', b'nointerrupt-interactiveonly', default=True)
1019
1019
1020 coreconfigitem(
1020 coreconfigitem(
1021 b'experimental',
1021 b'experimental',
1022 b'obsmarkers-exchange-debug',
1022 b'obsmarkers-exchange-debug',
1023 default=False,
1023 default=False,
1024 )
1024 )
1025 coreconfigitem(
1025 coreconfigitem(
1026 b'experimental',
1026 b'experimental',
1027 b'remotenames',
1027 b'remotenames',
1028 default=False,
1028 default=False,
1029 )
1029 )
1030 coreconfigitem(
1030 coreconfigitem(
1031 b'experimental',
1031 b'experimental',
1032 b'removeemptydirs',
1032 b'removeemptydirs',
1033 default=True,
1033 default=True,
1034 )
1034 )
1035 coreconfigitem(
1035 coreconfigitem(
1036 b'experimental',
1036 b'experimental',
1037 b'revert.interactive.select-to-keep',
1037 b'revert.interactive.select-to-keep',
1038 default=False,
1038 default=False,
1039 )
1039 )
1040 coreconfigitem(
1040 coreconfigitem(
1041 b'experimental',
1041 b'experimental',
1042 b'revisions.prefixhexnode',
1042 b'revisions.prefixhexnode',
1043 default=False,
1043 default=False,
1044 )
1044 )
1045 coreconfigitem(
1045 coreconfigitem(
1046 b'experimental',
1046 b'experimental',
1047 b'revlogv2',
1047 b'revlogv2',
1048 default=None,
1048 default=None,
1049 )
1049 )
1050 coreconfigitem(
1050 coreconfigitem(
1051 b'experimental',
1051 b'experimental',
1052 b'revisions.disambiguatewithin',
1052 b'revisions.disambiguatewithin',
1053 default=None,
1053 default=None,
1054 )
1054 )
1055 coreconfigitem(
1055 coreconfigitem(
1056 b'experimental',
1056 b'experimental',
1057 b'rust.index',
1057 b'rust.index',
1058 default=False,
1058 default=False,
1059 )
1059 )
1060 coreconfigitem(
1060 coreconfigitem(
1061 b'experimental',
1061 b'experimental',
1062 b'server.filesdata.recommended-batch-size',
1062 b'server.filesdata.recommended-batch-size',
1063 default=50000,
1063 default=50000,
1064 )
1064 )
1065 coreconfigitem(
1065 coreconfigitem(
1066 b'experimental',
1066 b'experimental',
1067 b'server.manifestdata.recommended-batch-size',
1067 b'server.manifestdata.recommended-batch-size',
1068 default=100000,
1068 default=100000,
1069 )
1069 )
1070 coreconfigitem(
1070 coreconfigitem(
1071 b'experimental',
1071 b'experimental',
1072 b'server.stream-narrow-clones',
1072 b'server.stream-narrow-clones',
1073 default=False,
1073 default=False,
1074 )
1074 )
1075 coreconfigitem(
1075 coreconfigitem(
1076 b'experimental',
1076 b'experimental',
1077 b'sharesafe-auto-downgrade-shares',
1077 b'sharesafe-auto-downgrade-shares',
1078 default=False,
1078 default=False,
1079 )
1079 )
1080 coreconfigitem(
1080 coreconfigitem(
1081 b'experimental',
1081 b'experimental',
1082 b'sharesafe-auto-upgrade-shares',
1082 b'sharesafe-auto-upgrade-shares',
1083 default=False,
1083 default=False,
1084 )
1084 )
1085 coreconfigitem(
1085 coreconfigitem(
1086 b'experimental',
1086 b'experimental',
1087 b'sharesafe-auto-upgrade-fail-error',
1088 default=False,
1089 )
1090 coreconfigitem(
1091 b'experimental',
1087 b'sharesafe-warn-outdated-shares',
1092 b'sharesafe-warn-outdated-shares',
1088 default=True,
1093 default=True,
1089 )
1094 )
1090 coreconfigitem(
1095 coreconfigitem(
1091 b'experimental',
1096 b'experimental',
1092 b'single-head-per-branch',
1097 b'single-head-per-branch',
1093 default=False,
1098 default=False,
1094 )
1099 )
1095 coreconfigitem(
1100 coreconfigitem(
1096 b'experimental',
1101 b'experimental',
1097 b'single-head-per-branch:account-closed-heads',
1102 b'single-head-per-branch:account-closed-heads',
1098 default=False,
1103 default=False,
1099 )
1104 )
1100 coreconfigitem(
1105 coreconfigitem(
1101 b'experimental',
1106 b'experimental',
1102 b'single-head-per-branch:public-changes-only',
1107 b'single-head-per-branch:public-changes-only',
1103 default=False,
1108 default=False,
1104 )
1109 )
1105 coreconfigitem(
1110 coreconfigitem(
1106 b'experimental',
1111 b'experimental',
1107 b'sshserver.support-v2',
1112 b'sshserver.support-v2',
1108 default=False,
1113 default=False,
1109 )
1114 )
1110 coreconfigitem(
1115 coreconfigitem(
1111 b'experimental',
1116 b'experimental',
1112 b'sparse-read',
1117 b'sparse-read',
1113 default=False,
1118 default=False,
1114 )
1119 )
1115 coreconfigitem(
1120 coreconfigitem(
1116 b'experimental',
1121 b'experimental',
1117 b'sparse-read.density-threshold',
1122 b'sparse-read.density-threshold',
1118 default=0.50,
1123 default=0.50,
1119 )
1124 )
1120 coreconfigitem(
1125 coreconfigitem(
1121 b'experimental',
1126 b'experimental',
1122 b'sparse-read.min-gap-size',
1127 b'sparse-read.min-gap-size',
1123 default=b'65K',
1128 default=b'65K',
1124 )
1129 )
1125 coreconfigitem(
1130 coreconfigitem(
1126 b'experimental',
1131 b'experimental',
1127 b'treemanifest',
1132 b'treemanifest',
1128 default=False,
1133 default=False,
1129 )
1134 )
1130 coreconfigitem(
1135 coreconfigitem(
1131 b'experimental',
1136 b'experimental',
1132 b'update.atomic-file',
1137 b'update.atomic-file',
1133 default=False,
1138 default=False,
1134 )
1139 )
1135 coreconfigitem(
1140 coreconfigitem(
1136 b'experimental',
1141 b'experimental',
1137 b'sshpeer.advertise-v2',
1142 b'sshpeer.advertise-v2',
1138 default=False,
1143 default=False,
1139 )
1144 )
1140 coreconfigitem(
1145 coreconfigitem(
1141 b'experimental',
1146 b'experimental',
1142 b'web.apiserver',
1147 b'web.apiserver',
1143 default=False,
1148 default=False,
1144 )
1149 )
1145 coreconfigitem(
1150 coreconfigitem(
1146 b'experimental',
1151 b'experimental',
1147 b'web.api.http-v2',
1152 b'web.api.http-v2',
1148 default=False,
1153 default=False,
1149 )
1154 )
1150 coreconfigitem(
1155 coreconfigitem(
1151 b'experimental',
1156 b'experimental',
1152 b'web.api.debugreflect',
1157 b'web.api.debugreflect',
1153 default=False,
1158 default=False,
1154 )
1159 )
1155 coreconfigitem(
1160 coreconfigitem(
1156 b'experimental',
1161 b'experimental',
1157 b'worker.wdir-get-thread-safe',
1162 b'worker.wdir-get-thread-safe',
1158 default=False,
1163 default=False,
1159 )
1164 )
1160 coreconfigitem(
1165 coreconfigitem(
1161 b'experimental',
1166 b'experimental',
1162 b'worker.repository-upgrade',
1167 b'worker.repository-upgrade',
1163 default=False,
1168 default=False,
1164 )
1169 )
1165 coreconfigitem(
1170 coreconfigitem(
1166 b'experimental',
1171 b'experimental',
1167 b'xdiff',
1172 b'xdiff',
1168 default=False,
1173 default=False,
1169 )
1174 )
1170 coreconfigitem(
1175 coreconfigitem(
1171 b'extensions',
1176 b'extensions',
1172 b'.*',
1177 b'.*',
1173 default=None,
1178 default=None,
1174 generic=True,
1179 generic=True,
1175 )
1180 )
1176 coreconfigitem(
1181 coreconfigitem(
1177 b'extdata',
1182 b'extdata',
1178 b'.*',
1183 b'.*',
1179 default=None,
1184 default=None,
1180 generic=True,
1185 generic=True,
1181 )
1186 )
1182 coreconfigitem(
1187 coreconfigitem(
1183 b'format',
1188 b'format',
1184 b'bookmarks-in-store',
1189 b'bookmarks-in-store',
1185 default=False,
1190 default=False,
1186 )
1191 )
1187 coreconfigitem(
1192 coreconfigitem(
1188 b'format',
1193 b'format',
1189 b'chunkcachesize',
1194 b'chunkcachesize',
1190 default=None,
1195 default=None,
1191 experimental=True,
1196 experimental=True,
1192 )
1197 )
1193 coreconfigitem(
1198 coreconfigitem(
1194 b'format',
1199 b'format',
1195 b'dotencode',
1200 b'dotencode',
1196 default=True,
1201 default=True,
1197 )
1202 )
1198 coreconfigitem(
1203 coreconfigitem(
1199 b'format',
1204 b'format',
1200 b'generaldelta',
1205 b'generaldelta',
1201 default=False,
1206 default=False,
1202 experimental=True,
1207 experimental=True,
1203 )
1208 )
1204 coreconfigitem(
1209 coreconfigitem(
1205 b'format',
1210 b'format',
1206 b'manifestcachesize',
1211 b'manifestcachesize',
1207 default=None,
1212 default=None,
1208 experimental=True,
1213 experimental=True,
1209 )
1214 )
1210 coreconfigitem(
1215 coreconfigitem(
1211 b'format',
1216 b'format',
1212 b'maxchainlen',
1217 b'maxchainlen',
1213 default=dynamicdefault,
1218 default=dynamicdefault,
1214 experimental=True,
1219 experimental=True,
1215 )
1220 )
1216 coreconfigitem(
1221 coreconfigitem(
1217 b'format',
1222 b'format',
1218 b'obsstore-version',
1223 b'obsstore-version',
1219 default=None,
1224 default=None,
1220 )
1225 )
1221 coreconfigitem(
1226 coreconfigitem(
1222 b'format',
1227 b'format',
1223 b'sparse-revlog',
1228 b'sparse-revlog',
1224 default=True,
1229 default=True,
1225 )
1230 )
1226 coreconfigitem(
1231 coreconfigitem(
1227 b'format',
1232 b'format',
1228 b'revlog-compression',
1233 b'revlog-compression',
1229 default=lambda: [b'zlib'],
1234 default=lambda: [b'zlib'],
1230 alias=[(b'experimental', b'format.compression')],
1235 alias=[(b'experimental', b'format.compression')],
1231 )
1236 )
1232 coreconfigitem(
1237 coreconfigitem(
1233 b'format',
1238 b'format',
1234 b'usefncache',
1239 b'usefncache',
1235 default=True,
1240 default=True,
1236 )
1241 )
1237 coreconfigitem(
1242 coreconfigitem(
1238 b'format',
1243 b'format',
1239 b'usegeneraldelta',
1244 b'usegeneraldelta',
1240 default=True,
1245 default=True,
1241 )
1246 )
1242 coreconfigitem(
1247 coreconfigitem(
1243 b'format',
1248 b'format',
1244 b'usestore',
1249 b'usestore',
1245 default=True,
1250 default=True,
1246 )
1251 )
1247 # Right now, the only efficient implement of the nodemap logic is in Rust, so
1252 # Right now, the only efficient implement of the nodemap logic is in Rust, so
1248 # the persistent nodemap feature needs to stay experimental as long as the Rust
1253 # the persistent nodemap feature needs to stay experimental as long as the Rust
1249 # extensions are an experimental feature.
1254 # extensions are an experimental feature.
1250 coreconfigitem(
1255 coreconfigitem(
1251 b'format', b'use-persistent-nodemap', default=False, experimental=True
1256 b'format', b'use-persistent-nodemap', default=False, experimental=True
1252 )
1257 )
1253 coreconfigitem(
1258 coreconfigitem(
1254 b'format',
1259 b'format',
1255 b'exp-use-copies-side-data-changeset',
1260 b'exp-use-copies-side-data-changeset',
1256 default=False,
1261 default=False,
1257 experimental=True,
1262 experimental=True,
1258 )
1263 )
1259 coreconfigitem(
1264 coreconfigitem(
1260 b'format',
1265 b'format',
1261 b'exp-use-side-data',
1266 b'exp-use-side-data',
1262 default=False,
1267 default=False,
1263 experimental=True,
1268 experimental=True,
1264 )
1269 )
1265 coreconfigitem(
1270 coreconfigitem(
1266 b'format',
1271 b'format',
1267 b'exp-share-safe',
1272 b'exp-share-safe',
1268 default=False,
1273 default=False,
1269 experimental=True,
1274 experimental=True,
1270 )
1275 )
1271 coreconfigitem(
1276 coreconfigitem(
1272 b'format',
1277 b'format',
1273 b'internal-phase',
1278 b'internal-phase',
1274 default=False,
1279 default=False,
1275 experimental=True,
1280 experimental=True,
1276 )
1281 )
1277 coreconfigitem(
1282 coreconfigitem(
1278 b'fsmonitor',
1283 b'fsmonitor',
1279 b'warn_when_unused',
1284 b'warn_when_unused',
1280 default=True,
1285 default=True,
1281 )
1286 )
1282 coreconfigitem(
1287 coreconfigitem(
1283 b'fsmonitor',
1288 b'fsmonitor',
1284 b'warn_update_file_count',
1289 b'warn_update_file_count',
1285 default=50000,
1290 default=50000,
1286 )
1291 )
1287 coreconfigitem(
1292 coreconfigitem(
1288 b'fsmonitor',
1293 b'fsmonitor',
1289 b'warn_update_file_count_rust',
1294 b'warn_update_file_count_rust',
1290 default=400000,
1295 default=400000,
1291 )
1296 )
1292 coreconfigitem(
1297 coreconfigitem(
1293 b'help',
1298 b'help',
1294 br'hidden-command\..*',
1299 br'hidden-command\..*',
1295 default=False,
1300 default=False,
1296 generic=True,
1301 generic=True,
1297 )
1302 )
1298 coreconfigitem(
1303 coreconfigitem(
1299 b'help',
1304 b'help',
1300 br'hidden-topic\..*',
1305 br'hidden-topic\..*',
1301 default=False,
1306 default=False,
1302 generic=True,
1307 generic=True,
1303 )
1308 )
1304 coreconfigitem(
1309 coreconfigitem(
1305 b'hooks',
1310 b'hooks',
1306 b'.*',
1311 b'.*',
1307 default=dynamicdefault,
1312 default=dynamicdefault,
1308 generic=True,
1313 generic=True,
1309 )
1314 )
1310 coreconfigitem(
1315 coreconfigitem(
1311 b'hgweb-paths',
1316 b'hgweb-paths',
1312 b'.*',
1317 b'.*',
1313 default=list,
1318 default=list,
1314 generic=True,
1319 generic=True,
1315 )
1320 )
1316 coreconfigitem(
1321 coreconfigitem(
1317 b'hostfingerprints',
1322 b'hostfingerprints',
1318 b'.*',
1323 b'.*',
1319 default=list,
1324 default=list,
1320 generic=True,
1325 generic=True,
1321 )
1326 )
1322 coreconfigitem(
1327 coreconfigitem(
1323 b'hostsecurity',
1328 b'hostsecurity',
1324 b'ciphers',
1329 b'ciphers',
1325 default=None,
1330 default=None,
1326 )
1331 )
1327 coreconfigitem(
1332 coreconfigitem(
1328 b'hostsecurity',
1333 b'hostsecurity',
1329 b'minimumprotocol',
1334 b'minimumprotocol',
1330 default=dynamicdefault,
1335 default=dynamicdefault,
1331 )
1336 )
1332 coreconfigitem(
1337 coreconfigitem(
1333 b'hostsecurity',
1338 b'hostsecurity',
1334 b'.*:minimumprotocol$',
1339 b'.*:minimumprotocol$',
1335 default=dynamicdefault,
1340 default=dynamicdefault,
1336 generic=True,
1341 generic=True,
1337 )
1342 )
1338 coreconfigitem(
1343 coreconfigitem(
1339 b'hostsecurity',
1344 b'hostsecurity',
1340 b'.*:ciphers$',
1345 b'.*:ciphers$',
1341 default=dynamicdefault,
1346 default=dynamicdefault,
1342 generic=True,
1347 generic=True,
1343 )
1348 )
1344 coreconfigitem(
1349 coreconfigitem(
1345 b'hostsecurity',
1350 b'hostsecurity',
1346 b'.*:fingerprints$',
1351 b'.*:fingerprints$',
1347 default=list,
1352 default=list,
1348 generic=True,
1353 generic=True,
1349 )
1354 )
1350 coreconfigitem(
1355 coreconfigitem(
1351 b'hostsecurity',
1356 b'hostsecurity',
1352 b'.*:verifycertsfile$',
1357 b'.*:verifycertsfile$',
1353 default=None,
1358 default=None,
1354 generic=True,
1359 generic=True,
1355 )
1360 )
1356
1361
1357 coreconfigitem(
1362 coreconfigitem(
1358 b'http_proxy',
1363 b'http_proxy',
1359 b'always',
1364 b'always',
1360 default=False,
1365 default=False,
1361 )
1366 )
1362 coreconfigitem(
1367 coreconfigitem(
1363 b'http_proxy',
1368 b'http_proxy',
1364 b'host',
1369 b'host',
1365 default=None,
1370 default=None,
1366 )
1371 )
1367 coreconfigitem(
1372 coreconfigitem(
1368 b'http_proxy',
1373 b'http_proxy',
1369 b'no',
1374 b'no',
1370 default=list,
1375 default=list,
1371 )
1376 )
1372 coreconfigitem(
1377 coreconfigitem(
1373 b'http_proxy',
1378 b'http_proxy',
1374 b'passwd',
1379 b'passwd',
1375 default=None,
1380 default=None,
1376 )
1381 )
1377 coreconfigitem(
1382 coreconfigitem(
1378 b'http_proxy',
1383 b'http_proxy',
1379 b'user',
1384 b'user',
1380 default=None,
1385 default=None,
1381 )
1386 )
1382
1387
1383 coreconfigitem(
1388 coreconfigitem(
1384 b'http',
1389 b'http',
1385 b'timeout',
1390 b'timeout',
1386 default=None,
1391 default=None,
1387 )
1392 )
1388
1393
1389 coreconfigitem(
1394 coreconfigitem(
1390 b'logtoprocess',
1395 b'logtoprocess',
1391 b'commandexception',
1396 b'commandexception',
1392 default=None,
1397 default=None,
1393 )
1398 )
1394 coreconfigitem(
1399 coreconfigitem(
1395 b'logtoprocess',
1400 b'logtoprocess',
1396 b'commandfinish',
1401 b'commandfinish',
1397 default=None,
1402 default=None,
1398 )
1403 )
1399 coreconfigitem(
1404 coreconfigitem(
1400 b'logtoprocess',
1405 b'logtoprocess',
1401 b'command',
1406 b'command',
1402 default=None,
1407 default=None,
1403 )
1408 )
1404 coreconfigitem(
1409 coreconfigitem(
1405 b'logtoprocess',
1410 b'logtoprocess',
1406 b'develwarn',
1411 b'develwarn',
1407 default=None,
1412 default=None,
1408 )
1413 )
1409 coreconfigitem(
1414 coreconfigitem(
1410 b'logtoprocess',
1415 b'logtoprocess',
1411 b'uiblocked',
1416 b'uiblocked',
1412 default=None,
1417 default=None,
1413 )
1418 )
1414 coreconfigitem(
1419 coreconfigitem(
1415 b'merge',
1420 b'merge',
1416 b'checkunknown',
1421 b'checkunknown',
1417 default=b'abort',
1422 default=b'abort',
1418 )
1423 )
1419 coreconfigitem(
1424 coreconfigitem(
1420 b'merge',
1425 b'merge',
1421 b'checkignored',
1426 b'checkignored',
1422 default=b'abort',
1427 default=b'abort',
1423 )
1428 )
1424 coreconfigitem(
1429 coreconfigitem(
1425 b'experimental',
1430 b'experimental',
1426 b'merge.checkpathconflicts',
1431 b'merge.checkpathconflicts',
1427 default=False,
1432 default=False,
1428 )
1433 )
1429 coreconfigitem(
1434 coreconfigitem(
1430 b'merge',
1435 b'merge',
1431 b'followcopies',
1436 b'followcopies',
1432 default=True,
1437 default=True,
1433 )
1438 )
1434 coreconfigitem(
1439 coreconfigitem(
1435 b'merge',
1440 b'merge',
1436 b'on-failure',
1441 b'on-failure',
1437 default=b'continue',
1442 default=b'continue',
1438 )
1443 )
1439 coreconfigitem(
1444 coreconfigitem(
1440 b'merge',
1445 b'merge',
1441 b'preferancestor',
1446 b'preferancestor',
1442 default=lambda: [b'*'],
1447 default=lambda: [b'*'],
1443 experimental=True,
1448 experimental=True,
1444 )
1449 )
1445 coreconfigitem(
1450 coreconfigitem(
1446 b'merge',
1451 b'merge',
1447 b'strict-capability-check',
1452 b'strict-capability-check',
1448 default=False,
1453 default=False,
1449 )
1454 )
1450 coreconfigitem(
1455 coreconfigitem(
1451 b'merge-tools',
1456 b'merge-tools',
1452 b'.*',
1457 b'.*',
1453 default=None,
1458 default=None,
1454 generic=True,
1459 generic=True,
1455 )
1460 )
1456 coreconfigitem(
1461 coreconfigitem(
1457 b'merge-tools',
1462 b'merge-tools',
1458 br'.*\.args$',
1463 br'.*\.args$',
1459 default=b"$local $base $other",
1464 default=b"$local $base $other",
1460 generic=True,
1465 generic=True,
1461 priority=-1,
1466 priority=-1,
1462 )
1467 )
1463 coreconfigitem(
1468 coreconfigitem(
1464 b'merge-tools',
1469 b'merge-tools',
1465 br'.*\.binary$',
1470 br'.*\.binary$',
1466 default=False,
1471 default=False,
1467 generic=True,
1472 generic=True,
1468 priority=-1,
1473 priority=-1,
1469 )
1474 )
1470 coreconfigitem(
1475 coreconfigitem(
1471 b'merge-tools',
1476 b'merge-tools',
1472 br'.*\.check$',
1477 br'.*\.check$',
1473 default=list,
1478 default=list,
1474 generic=True,
1479 generic=True,
1475 priority=-1,
1480 priority=-1,
1476 )
1481 )
1477 coreconfigitem(
1482 coreconfigitem(
1478 b'merge-tools',
1483 b'merge-tools',
1479 br'.*\.checkchanged$',
1484 br'.*\.checkchanged$',
1480 default=False,
1485 default=False,
1481 generic=True,
1486 generic=True,
1482 priority=-1,
1487 priority=-1,
1483 )
1488 )
1484 coreconfigitem(
1489 coreconfigitem(
1485 b'merge-tools',
1490 b'merge-tools',
1486 br'.*\.executable$',
1491 br'.*\.executable$',
1487 default=dynamicdefault,
1492 default=dynamicdefault,
1488 generic=True,
1493 generic=True,
1489 priority=-1,
1494 priority=-1,
1490 )
1495 )
1491 coreconfigitem(
1496 coreconfigitem(
1492 b'merge-tools',
1497 b'merge-tools',
1493 br'.*\.fixeol$',
1498 br'.*\.fixeol$',
1494 default=False,
1499 default=False,
1495 generic=True,
1500 generic=True,
1496 priority=-1,
1501 priority=-1,
1497 )
1502 )
1498 coreconfigitem(
1503 coreconfigitem(
1499 b'merge-tools',
1504 b'merge-tools',
1500 br'.*\.gui$',
1505 br'.*\.gui$',
1501 default=False,
1506 default=False,
1502 generic=True,
1507 generic=True,
1503 priority=-1,
1508 priority=-1,
1504 )
1509 )
1505 coreconfigitem(
1510 coreconfigitem(
1506 b'merge-tools',
1511 b'merge-tools',
1507 br'.*\.mergemarkers$',
1512 br'.*\.mergemarkers$',
1508 default=b'basic',
1513 default=b'basic',
1509 generic=True,
1514 generic=True,
1510 priority=-1,
1515 priority=-1,
1511 )
1516 )
1512 coreconfigitem(
1517 coreconfigitem(
1513 b'merge-tools',
1518 b'merge-tools',
1514 br'.*\.mergemarkertemplate$',
1519 br'.*\.mergemarkertemplate$',
1515 default=dynamicdefault, # take from command-templates.mergemarker
1520 default=dynamicdefault, # take from command-templates.mergemarker
1516 generic=True,
1521 generic=True,
1517 priority=-1,
1522 priority=-1,
1518 )
1523 )
1519 coreconfigitem(
1524 coreconfigitem(
1520 b'merge-tools',
1525 b'merge-tools',
1521 br'.*\.priority$',
1526 br'.*\.priority$',
1522 default=0,
1527 default=0,
1523 generic=True,
1528 generic=True,
1524 priority=-1,
1529 priority=-1,
1525 )
1530 )
1526 coreconfigitem(
1531 coreconfigitem(
1527 b'merge-tools',
1532 b'merge-tools',
1528 br'.*\.premerge$',
1533 br'.*\.premerge$',
1529 default=dynamicdefault,
1534 default=dynamicdefault,
1530 generic=True,
1535 generic=True,
1531 priority=-1,
1536 priority=-1,
1532 )
1537 )
1533 coreconfigitem(
1538 coreconfigitem(
1534 b'merge-tools',
1539 b'merge-tools',
1535 br'.*\.symlink$',
1540 br'.*\.symlink$',
1536 default=False,
1541 default=False,
1537 generic=True,
1542 generic=True,
1538 priority=-1,
1543 priority=-1,
1539 )
1544 )
1540 coreconfigitem(
1545 coreconfigitem(
1541 b'pager',
1546 b'pager',
1542 b'attend-.*',
1547 b'attend-.*',
1543 default=dynamicdefault,
1548 default=dynamicdefault,
1544 generic=True,
1549 generic=True,
1545 )
1550 )
1546 coreconfigitem(
1551 coreconfigitem(
1547 b'pager',
1552 b'pager',
1548 b'ignore',
1553 b'ignore',
1549 default=list,
1554 default=list,
1550 )
1555 )
1551 coreconfigitem(
1556 coreconfigitem(
1552 b'pager',
1557 b'pager',
1553 b'pager',
1558 b'pager',
1554 default=dynamicdefault,
1559 default=dynamicdefault,
1555 )
1560 )
1556 coreconfigitem(
1561 coreconfigitem(
1557 b'patch',
1562 b'patch',
1558 b'eol',
1563 b'eol',
1559 default=b'strict',
1564 default=b'strict',
1560 )
1565 )
1561 coreconfigitem(
1566 coreconfigitem(
1562 b'patch',
1567 b'patch',
1563 b'fuzz',
1568 b'fuzz',
1564 default=2,
1569 default=2,
1565 )
1570 )
1566 coreconfigitem(
1571 coreconfigitem(
1567 b'paths',
1572 b'paths',
1568 b'default',
1573 b'default',
1569 default=None,
1574 default=None,
1570 )
1575 )
1571 coreconfigitem(
1576 coreconfigitem(
1572 b'paths',
1577 b'paths',
1573 b'default-push',
1578 b'default-push',
1574 default=None,
1579 default=None,
1575 )
1580 )
1576 coreconfigitem(
1581 coreconfigitem(
1577 b'paths',
1582 b'paths',
1578 b'.*',
1583 b'.*',
1579 default=None,
1584 default=None,
1580 generic=True,
1585 generic=True,
1581 )
1586 )
1582 coreconfigitem(
1587 coreconfigitem(
1583 b'phases',
1588 b'phases',
1584 b'checksubrepos',
1589 b'checksubrepos',
1585 default=b'follow',
1590 default=b'follow',
1586 )
1591 )
1587 coreconfigitem(
1592 coreconfigitem(
1588 b'phases',
1593 b'phases',
1589 b'new-commit',
1594 b'new-commit',
1590 default=b'draft',
1595 default=b'draft',
1591 )
1596 )
1592 coreconfigitem(
1597 coreconfigitem(
1593 b'phases',
1598 b'phases',
1594 b'publish',
1599 b'publish',
1595 default=True,
1600 default=True,
1596 )
1601 )
1597 coreconfigitem(
1602 coreconfigitem(
1598 b'profiling',
1603 b'profiling',
1599 b'enabled',
1604 b'enabled',
1600 default=False,
1605 default=False,
1601 )
1606 )
1602 coreconfigitem(
1607 coreconfigitem(
1603 b'profiling',
1608 b'profiling',
1604 b'format',
1609 b'format',
1605 default=b'text',
1610 default=b'text',
1606 )
1611 )
1607 coreconfigitem(
1612 coreconfigitem(
1608 b'profiling',
1613 b'profiling',
1609 b'freq',
1614 b'freq',
1610 default=1000,
1615 default=1000,
1611 )
1616 )
1612 coreconfigitem(
1617 coreconfigitem(
1613 b'profiling',
1618 b'profiling',
1614 b'limit',
1619 b'limit',
1615 default=30,
1620 default=30,
1616 )
1621 )
1617 coreconfigitem(
1622 coreconfigitem(
1618 b'profiling',
1623 b'profiling',
1619 b'nested',
1624 b'nested',
1620 default=0,
1625 default=0,
1621 )
1626 )
1622 coreconfigitem(
1627 coreconfigitem(
1623 b'profiling',
1628 b'profiling',
1624 b'output',
1629 b'output',
1625 default=None,
1630 default=None,
1626 )
1631 )
1627 coreconfigitem(
1632 coreconfigitem(
1628 b'profiling',
1633 b'profiling',
1629 b'showmax',
1634 b'showmax',
1630 default=0.999,
1635 default=0.999,
1631 )
1636 )
1632 coreconfigitem(
1637 coreconfigitem(
1633 b'profiling',
1638 b'profiling',
1634 b'showmin',
1639 b'showmin',
1635 default=dynamicdefault,
1640 default=dynamicdefault,
1636 )
1641 )
1637 coreconfigitem(
1642 coreconfigitem(
1638 b'profiling',
1643 b'profiling',
1639 b'showtime',
1644 b'showtime',
1640 default=True,
1645 default=True,
1641 )
1646 )
1642 coreconfigitem(
1647 coreconfigitem(
1643 b'profiling',
1648 b'profiling',
1644 b'sort',
1649 b'sort',
1645 default=b'inlinetime',
1650 default=b'inlinetime',
1646 )
1651 )
1647 coreconfigitem(
1652 coreconfigitem(
1648 b'profiling',
1653 b'profiling',
1649 b'statformat',
1654 b'statformat',
1650 default=b'hotpath',
1655 default=b'hotpath',
1651 )
1656 )
1652 coreconfigitem(
1657 coreconfigitem(
1653 b'profiling',
1658 b'profiling',
1654 b'time-track',
1659 b'time-track',
1655 default=dynamicdefault,
1660 default=dynamicdefault,
1656 )
1661 )
1657 coreconfigitem(
1662 coreconfigitem(
1658 b'profiling',
1663 b'profiling',
1659 b'type',
1664 b'type',
1660 default=b'stat',
1665 default=b'stat',
1661 )
1666 )
1662 coreconfigitem(
1667 coreconfigitem(
1663 b'progress',
1668 b'progress',
1664 b'assume-tty',
1669 b'assume-tty',
1665 default=False,
1670 default=False,
1666 )
1671 )
1667 coreconfigitem(
1672 coreconfigitem(
1668 b'progress',
1673 b'progress',
1669 b'changedelay',
1674 b'changedelay',
1670 default=1,
1675 default=1,
1671 )
1676 )
1672 coreconfigitem(
1677 coreconfigitem(
1673 b'progress',
1678 b'progress',
1674 b'clear-complete',
1679 b'clear-complete',
1675 default=True,
1680 default=True,
1676 )
1681 )
1677 coreconfigitem(
1682 coreconfigitem(
1678 b'progress',
1683 b'progress',
1679 b'debug',
1684 b'debug',
1680 default=False,
1685 default=False,
1681 )
1686 )
1682 coreconfigitem(
1687 coreconfigitem(
1683 b'progress',
1688 b'progress',
1684 b'delay',
1689 b'delay',
1685 default=3,
1690 default=3,
1686 )
1691 )
1687 coreconfigitem(
1692 coreconfigitem(
1688 b'progress',
1693 b'progress',
1689 b'disable',
1694 b'disable',
1690 default=False,
1695 default=False,
1691 )
1696 )
1692 coreconfigitem(
1697 coreconfigitem(
1693 b'progress',
1698 b'progress',
1694 b'estimateinterval',
1699 b'estimateinterval',
1695 default=60.0,
1700 default=60.0,
1696 )
1701 )
1697 coreconfigitem(
1702 coreconfigitem(
1698 b'progress',
1703 b'progress',
1699 b'format',
1704 b'format',
1700 default=lambda: [b'topic', b'bar', b'number', b'estimate'],
1705 default=lambda: [b'topic', b'bar', b'number', b'estimate'],
1701 )
1706 )
1702 coreconfigitem(
1707 coreconfigitem(
1703 b'progress',
1708 b'progress',
1704 b'refresh',
1709 b'refresh',
1705 default=0.1,
1710 default=0.1,
1706 )
1711 )
1707 coreconfigitem(
1712 coreconfigitem(
1708 b'progress',
1713 b'progress',
1709 b'width',
1714 b'width',
1710 default=dynamicdefault,
1715 default=dynamicdefault,
1711 )
1716 )
1712 coreconfigitem(
1717 coreconfigitem(
1713 b'pull',
1718 b'pull',
1714 b'confirm',
1719 b'confirm',
1715 default=False,
1720 default=False,
1716 )
1721 )
1717 coreconfigitem(
1722 coreconfigitem(
1718 b'push',
1723 b'push',
1719 b'pushvars.server',
1724 b'pushvars.server',
1720 default=False,
1725 default=False,
1721 )
1726 )
1722 coreconfigitem(
1727 coreconfigitem(
1723 b'rewrite',
1728 b'rewrite',
1724 b'backup-bundle',
1729 b'backup-bundle',
1725 default=True,
1730 default=True,
1726 alias=[(b'ui', b'history-editing-backup')],
1731 alias=[(b'ui', b'history-editing-backup')],
1727 )
1732 )
1728 coreconfigitem(
1733 coreconfigitem(
1729 b'rewrite',
1734 b'rewrite',
1730 b'update-timestamp',
1735 b'update-timestamp',
1731 default=False,
1736 default=False,
1732 )
1737 )
1733 coreconfigitem(
1738 coreconfigitem(
1734 b'rewrite',
1739 b'rewrite',
1735 b'empty-successor',
1740 b'empty-successor',
1736 default=b'skip',
1741 default=b'skip',
1737 experimental=True,
1742 experimental=True,
1738 )
1743 )
1739 coreconfigitem(
1744 coreconfigitem(
1740 b'storage',
1745 b'storage',
1741 b'new-repo-backend',
1746 b'new-repo-backend',
1742 default=b'revlogv1',
1747 default=b'revlogv1',
1743 experimental=True,
1748 experimental=True,
1744 )
1749 )
1745 coreconfigitem(
1750 coreconfigitem(
1746 b'storage',
1751 b'storage',
1747 b'revlog.optimize-delta-parent-choice',
1752 b'revlog.optimize-delta-parent-choice',
1748 default=True,
1753 default=True,
1749 alias=[(b'format', b'aggressivemergedeltas')],
1754 alias=[(b'format', b'aggressivemergedeltas')],
1750 )
1755 )
1751 # experimental as long as rust is experimental (or a C version is implemented)
1756 # experimental as long as rust is experimental (or a C version is implemented)
1752 coreconfigitem(
1757 coreconfigitem(
1753 b'storage', b'revlog.nodemap.mmap', default=True, experimental=True
1758 b'storage', b'revlog.nodemap.mmap', default=True, experimental=True
1754 )
1759 )
1755 # experimental as long as format.use-persistent-nodemap is.
1760 # experimental as long as format.use-persistent-nodemap is.
1756 coreconfigitem(
1761 coreconfigitem(
1757 b'storage', b'revlog.nodemap.mode', default=b'compat', experimental=True
1762 b'storage', b'revlog.nodemap.mode', default=b'compat', experimental=True
1758 )
1763 )
1759 coreconfigitem(
1764 coreconfigitem(
1760 b'storage',
1765 b'storage',
1761 b'revlog.reuse-external-delta',
1766 b'revlog.reuse-external-delta',
1762 default=True,
1767 default=True,
1763 )
1768 )
1764 coreconfigitem(
1769 coreconfigitem(
1765 b'storage',
1770 b'storage',
1766 b'revlog.reuse-external-delta-parent',
1771 b'revlog.reuse-external-delta-parent',
1767 default=None,
1772 default=None,
1768 )
1773 )
1769 coreconfigitem(
1774 coreconfigitem(
1770 b'storage',
1775 b'storage',
1771 b'revlog.zlib.level',
1776 b'revlog.zlib.level',
1772 default=None,
1777 default=None,
1773 )
1778 )
1774 coreconfigitem(
1779 coreconfigitem(
1775 b'storage',
1780 b'storage',
1776 b'revlog.zstd.level',
1781 b'revlog.zstd.level',
1777 default=None,
1782 default=None,
1778 )
1783 )
1779 coreconfigitem(
1784 coreconfigitem(
1780 b'server',
1785 b'server',
1781 b'bookmarks-pushkey-compat',
1786 b'bookmarks-pushkey-compat',
1782 default=True,
1787 default=True,
1783 )
1788 )
1784 coreconfigitem(
1789 coreconfigitem(
1785 b'server',
1790 b'server',
1786 b'bundle1',
1791 b'bundle1',
1787 default=True,
1792 default=True,
1788 )
1793 )
1789 coreconfigitem(
1794 coreconfigitem(
1790 b'server',
1795 b'server',
1791 b'bundle1gd',
1796 b'bundle1gd',
1792 default=None,
1797 default=None,
1793 )
1798 )
1794 coreconfigitem(
1799 coreconfigitem(
1795 b'server',
1800 b'server',
1796 b'bundle1.pull',
1801 b'bundle1.pull',
1797 default=None,
1802 default=None,
1798 )
1803 )
1799 coreconfigitem(
1804 coreconfigitem(
1800 b'server',
1805 b'server',
1801 b'bundle1gd.pull',
1806 b'bundle1gd.pull',
1802 default=None,
1807 default=None,
1803 )
1808 )
1804 coreconfigitem(
1809 coreconfigitem(
1805 b'server',
1810 b'server',
1806 b'bundle1.push',
1811 b'bundle1.push',
1807 default=None,
1812 default=None,
1808 )
1813 )
1809 coreconfigitem(
1814 coreconfigitem(
1810 b'server',
1815 b'server',
1811 b'bundle1gd.push',
1816 b'bundle1gd.push',
1812 default=None,
1817 default=None,
1813 )
1818 )
1814 coreconfigitem(
1819 coreconfigitem(
1815 b'server',
1820 b'server',
1816 b'bundle2.stream',
1821 b'bundle2.stream',
1817 default=True,
1822 default=True,
1818 alias=[(b'experimental', b'bundle2.stream')],
1823 alias=[(b'experimental', b'bundle2.stream')],
1819 )
1824 )
1820 coreconfigitem(
1825 coreconfigitem(
1821 b'server',
1826 b'server',
1822 b'compressionengines',
1827 b'compressionengines',
1823 default=list,
1828 default=list,
1824 )
1829 )
1825 coreconfigitem(
1830 coreconfigitem(
1826 b'server',
1831 b'server',
1827 b'concurrent-push-mode',
1832 b'concurrent-push-mode',
1828 default=b'check-related',
1833 default=b'check-related',
1829 )
1834 )
1830 coreconfigitem(
1835 coreconfigitem(
1831 b'server',
1836 b'server',
1832 b'disablefullbundle',
1837 b'disablefullbundle',
1833 default=False,
1838 default=False,
1834 )
1839 )
1835 coreconfigitem(
1840 coreconfigitem(
1836 b'server',
1841 b'server',
1837 b'maxhttpheaderlen',
1842 b'maxhttpheaderlen',
1838 default=1024,
1843 default=1024,
1839 )
1844 )
1840 coreconfigitem(
1845 coreconfigitem(
1841 b'server',
1846 b'server',
1842 b'pullbundle',
1847 b'pullbundle',
1843 default=False,
1848 default=False,
1844 )
1849 )
1845 coreconfigitem(
1850 coreconfigitem(
1846 b'server',
1851 b'server',
1847 b'preferuncompressed',
1852 b'preferuncompressed',
1848 default=False,
1853 default=False,
1849 )
1854 )
1850 coreconfigitem(
1855 coreconfigitem(
1851 b'server',
1856 b'server',
1852 b'streamunbundle',
1857 b'streamunbundle',
1853 default=False,
1858 default=False,
1854 )
1859 )
1855 coreconfigitem(
1860 coreconfigitem(
1856 b'server',
1861 b'server',
1857 b'uncompressed',
1862 b'uncompressed',
1858 default=True,
1863 default=True,
1859 )
1864 )
1860 coreconfigitem(
1865 coreconfigitem(
1861 b'server',
1866 b'server',
1862 b'uncompressedallowsecret',
1867 b'uncompressedallowsecret',
1863 default=False,
1868 default=False,
1864 )
1869 )
1865 coreconfigitem(
1870 coreconfigitem(
1866 b'server',
1871 b'server',
1867 b'view',
1872 b'view',
1868 default=b'served',
1873 default=b'served',
1869 )
1874 )
1870 coreconfigitem(
1875 coreconfigitem(
1871 b'server',
1876 b'server',
1872 b'validate',
1877 b'validate',
1873 default=False,
1878 default=False,
1874 )
1879 )
1875 coreconfigitem(
1880 coreconfigitem(
1876 b'server',
1881 b'server',
1877 b'zliblevel',
1882 b'zliblevel',
1878 default=-1,
1883 default=-1,
1879 )
1884 )
1880 coreconfigitem(
1885 coreconfigitem(
1881 b'server',
1886 b'server',
1882 b'zstdlevel',
1887 b'zstdlevel',
1883 default=3,
1888 default=3,
1884 )
1889 )
1885 coreconfigitem(
1890 coreconfigitem(
1886 b'share',
1891 b'share',
1887 b'pool',
1892 b'pool',
1888 default=None,
1893 default=None,
1889 )
1894 )
1890 coreconfigitem(
1895 coreconfigitem(
1891 b'share',
1896 b'share',
1892 b'poolnaming',
1897 b'poolnaming',
1893 default=b'identity',
1898 default=b'identity',
1894 )
1899 )
1895 coreconfigitem(
1900 coreconfigitem(
1896 b'shelve',
1901 b'shelve',
1897 b'maxbackups',
1902 b'maxbackups',
1898 default=10,
1903 default=10,
1899 )
1904 )
1900 coreconfigitem(
1905 coreconfigitem(
1901 b'smtp',
1906 b'smtp',
1902 b'host',
1907 b'host',
1903 default=None,
1908 default=None,
1904 )
1909 )
1905 coreconfigitem(
1910 coreconfigitem(
1906 b'smtp',
1911 b'smtp',
1907 b'local_hostname',
1912 b'local_hostname',
1908 default=None,
1913 default=None,
1909 )
1914 )
1910 coreconfigitem(
1915 coreconfigitem(
1911 b'smtp',
1916 b'smtp',
1912 b'password',
1917 b'password',
1913 default=None,
1918 default=None,
1914 )
1919 )
1915 coreconfigitem(
1920 coreconfigitem(
1916 b'smtp',
1921 b'smtp',
1917 b'port',
1922 b'port',
1918 default=dynamicdefault,
1923 default=dynamicdefault,
1919 )
1924 )
1920 coreconfigitem(
1925 coreconfigitem(
1921 b'smtp',
1926 b'smtp',
1922 b'tls',
1927 b'tls',
1923 default=b'none',
1928 default=b'none',
1924 )
1929 )
1925 coreconfigitem(
1930 coreconfigitem(
1926 b'smtp',
1931 b'smtp',
1927 b'username',
1932 b'username',
1928 default=None,
1933 default=None,
1929 )
1934 )
1930 coreconfigitem(
1935 coreconfigitem(
1931 b'sparse',
1936 b'sparse',
1932 b'missingwarning',
1937 b'missingwarning',
1933 default=True,
1938 default=True,
1934 experimental=True,
1939 experimental=True,
1935 )
1940 )
1936 coreconfigitem(
1941 coreconfigitem(
1937 b'subrepos',
1942 b'subrepos',
1938 b'allowed',
1943 b'allowed',
1939 default=dynamicdefault, # to make backporting simpler
1944 default=dynamicdefault, # to make backporting simpler
1940 )
1945 )
1941 coreconfigitem(
1946 coreconfigitem(
1942 b'subrepos',
1947 b'subrepos',
1943 b'hg:allowed',
1948 b'hg:allowed',
1944 default=dynamicdefault,
1949 default=dynamicdefault,
1945 )
1950 )
1946 coreconfigitem(
1951 coreconfigitem(
1947 b'subrepos',
1952 b'subrepos',
1948 b'git:allowed',
1953 b'git:allowed',
1949 default=dynamicdefault,
1954 default=dynamicdefault,
1950 )
1955 )
1951 coreconfigitem(
1956 coreconfigitem(
1952 b'subrepos',
1957 b'subrepos',
1953 b'svn:allowed',
1958 b'svn:allowed',
1954 default=dynamicdefault,
1959 default=dynamicdefault,
1955 )
1960 )
1956 coreconfigitem(
1961 coreconfigitem(
1957 b'templates',
1962 b'templates',
1958 b'.*',
1963 b'.*',
1959 default=None,
1964 default=None,
1960 generic=True,
1965 generic=True,
1961 )
1966 )
1962 coreconfigitem(
1967 coreconfigitem(
1963 b'templateconfig',
1968 b'templateconfig',
1964 b'.*',
1969 b'.*',
1965 default=dynamicdefault,
1970 default=dynamicdefault,
1966 generic=True,
1971 generic=True,
1967 )
1972 )
1968 coreconfigitem(
1973 coreconfigitem(
1969 b'trusted',
1974 b'trusted',
1970 b'groups',
1975 b'groups',
1971 default=list,
1976 default=list,
1972 )
1977 )
1973 coreconfigitem(
1978 coreconfigitem(
1974 b'trusted',
1979 b'trusted',
1975 b'users',
1980 b'users',
1976 default=list,
1981 default=list,
1977 )
1982 )
1978 coreconfigitem(
1983 coreconfigitem(
1979 b'ui',
1984 b'ui',
1980 b'_usedassubrepo',
1985 b'_usedassubrepo',
1981 default=False,
1986 default=False,
1982 )
1987 )
1983 coreconfigitem(
1988 coreconfigitem(
1984 b'ui',
1989 b'ui',
1985 b'allowemptycommit',
1990 b'allowemptycommit',
1986 default=False,
1991 default=False,
1987 )
1992 )
1988 coreconfigitem(
1993 coreconfigitem(
1989 b'ui',
1994 b'ui',
1990 b'archivemeta',
1995 b'archivemeta',
1991 default=True,
1996 default=True,
1992 )
1997 )
1993 coreconfigitem(
1998 coreconfigitem(
1994 b'ui',
1999 b'ui',
1995 b'askusername',
2000 b'askusername',
1996 default=False,
2001 default=False,
1997 )
2002 )
1998 coreconfigitem(
2003 coreconfigitem(
1999 b'ui',
2004 b'ui',
2000 b'available-memory',
2005 b'available-memory',
2001 default=None,
2006 default=None,
2002 )
2007 )
2003
2008
2004 coreconfigitem(
2009 coreconfigitem(
2005 b'ui',
2010 b'ui',
2006 b'clonebundlefallback',
2011 b'clonebundlefallback',
2007 default=False,
2012 default=False,
2008 )
2013 )
2009 coreconfigitem(
2014 coreconfigitem(
2010 b'ui',
2015 b'ui',
2011 b'clonebundleprefers',
2016 b'clonebundleprefers',
2012 default=list,
2017 default=list,
2013 )
2018 )
2014 coreconfigitem(
2019 coreconfigitem(
2015 b'ui',
2020 b'ui',
2016 b'clonebundles',
2021 b'clonebundles',
2017 default=True,
2022 default=True,
2018 )
2023 )
2019 coreconfigitem(
2024 coreconfigitem(
2020 b'ui',
2025 b'ui',
2021 b'color',
2026 b'color',
2022 default=b'auto',
2027 default=b'auto',
2023 )
2028 )
2024 coreconfigitem(
2029 coreconfigitem(
2025 b'ui',
2030 b'ui',
2026 b'commitsubrepos',
2031 b'commitsubrepos',
2027 default=False,
2032 default=False,
2028 )
2033 )
2029 coreconfigitem(
2034 coreconfigitem(
2030 b'ui',
2035 b'ui',
2031 b'debug',
2036 b'debug',
2032 default=False,
2037 default=False,
2033 )
2038 )
2034 coreconfigitem(
2039 coreconfigitem(
2035 b'ui',
2040 b'ui',
2036 b'debugger',
2041 b'debugger',
2037 default=None,
2042 default=None,
2038 )
2043 )
2039 coreconfigitem(
2044 coreconfigitem(
2040 b'ui',
2045 b'ui',
2041 b'editor',
2046 b'editor',
2042 default=dynamicdefault,
2047 default=dynamicdefault,
2043 )
2048 )
2044 coreconfigitem(
2049 coreconfigitem(
2045 b'ui',
2050 b'ui',
2046 b'detailed-exit-code',
2051 b'detailed-exit-code',
2047 default=False,
2052 default=False,
2048 experimental=True,
2053 experimental=True,
2049 )
2054 )
2050 coreconfigitem(
2055 coreconfigitem(
2051 b'ui',
2056 b'ui',
2052 b'fallbackencoding',
2057 b'fallbackencoding',
2053 default=None,
2058 default=None,
2054 )
2059 )
2055 coreconfigitem(
2060 coreconfigitem(
2056 b'ui',
2061 b'ui',
2057 b'forcecwd',
2062 b'forcecwd',
2058 default=None,
2063 default=None,
2059 )
2064 )
2060 coreconfigitem(
2065 coreconfigitem(
2061 b'ui',
2066 b'ui',
2062 b'forcemerge',
2067 b'forcemerge',
2063 default=None,
2068 default=None,
2064 )
2069 )
2065 coreconfigitem(
2070 coreconfigitem(
2066 b'ui',
2071 b'ui',
2067 b'formatdebug',
2072 b'formatdebug',
2068 default=False,
2073 default=False,
2069 )
2074 )
2070 coreconfigitem(
2075 coreconfigitem(
2071 b'ui',
2076 b'ui',
2072 b'formatjson',
2077 b'formatjson',
2073 default=False,
2078 default=False,
2074 )
2079 )
2075 coreconfigitem(
2080 coreconfigitem(
2076 b'ui',
2081 b'ui',
2077 b'formatted',
2082 b'formatted',
2078 default=None,
2083 default=None,
2079 )
2084 )
2080 coreconfigitem(
2085 coreconfigitem(
2081 b'ui',
2086 b'ui',
2082 b'interactive',
2087 b'interactive',
2083 default=None,
2088 default=None,
2084 )
2089 )
2085 coreconfigitem(
2090 coreconfigitem(
2086 b'ui',
2091 b'ui',
2087 b'interface',
2092 b'interface',
2088 default=None,
2093 default=None,
2089 )
2094 )
2090 coreconfigitem(
2095 coreconfigitem(
2091 b'ui',
2096 b'ui',
2092 b'interface.chunkselector',
2097 b'interface.chunkselector',
2093 default=None,
2098 default=None,
2094 )
2099 )
2095 coreconfigitem(
2100 coreconfigitem(
2096 b'ui',
2101 b'ui',
2097 b'large-file-limit',
2102 b'large-file-limit',
2098 default=10000000,
2103 default=10000000,
2099 )
2104 )
2100 coreconfigitem(
2105 coreconfigitem(
2101 b'ui',
2106 b'ui',
2102 b'logblockedtimes',
2107 b'logblockedtimes',
2103 default=False,
2108 default=False,
2104 )
2109 )
2105 coreconfigitem(
2110 coreconfigitem(
2106 b'ui',
2111 b'ui',
2107 b'merge',
2112 b'merge',
2108 default=None,
2113 default=None,
2109 )
2114 )
2110 coreconfigitem(
2115 coreconfigitem(
2111 b'ui',
2116 b'ui',
2112 b'mergemarkers',
2117 b'mergemarkers',
2113 default=b'basic',
2118 default=b'basic',
2114 )
2119 )
2115 coreconfigitem(
2120 coreconfigitem(
2116 b'ui',
2121 b'ui',
2117 b'message-output',
2122 b'message-output',
2118 default=b'stdio',
2123 default=b'stdio',
2119 )
2124 )
2120 coreconfigitem(
2125 coreconfigitem(
2121 b'ui',
2126 b'ui',
2122 b'nontty',
2127 b'nontty',
2123 default=False,
2128 default=False,
2124 )
2129 )
2125 coreconfigitem(
2130 coreconfigitem(
2126 b'ui',
2131 b'ui',
2127 b'origbackuppath',
2132 b'origbackuppath',
2128 default=None,
2133 default=None,
2129 )
2134 )
2130 coreconfigitem(
2135 coreconfigitem(
2131 b'ui',
2136 b'ui',
2132 b'paginate',
2137 b'paginate',
2133 default=True,
2138 default=True,
2134 )
2139 )
2135 coreconfigitem(
2140 coreconfigitem(
2136 b'ui',
2141 b'ui',
2137 b'patch',
2142 b'patch',
2138 default=None,
2143 default=None,
2139 )
2144 )
2140 coreconfigitem(
2145 coreconfigitem(
2141 b'ui',
2146 b'ui',
2142 b'portablefilenames',
2147 b'portablefilenames',
2143 default=b'warn',
2148 default=b'warn',
2144 )
2149 )
2145 coreconfigitem(
2150 coreconfigitem(
2146 b'ui',
2151 b'ui',
2147 b'promptecho',
2152 b'promptecho',
2148 default=False,
2153 default=False,
2149 )
2154 )
2150 coreconfigitem(
2155 coreconfigitem(
2151 b'ui',
2156 b'ui',
2152 b'quiet',
2157 b'quiet',
2153 default=False,
2158 default=False,
2154 )
2159 )
2155 coreconfigitem(
2160 coreconfigitem(
2156 b'ui',
2161 b'ui',
2157 b'quietbookmarkmove',
2162 b'quietbookmarkmove',
2158 default=False,
2163 default=False,
2159 )
2164 )
2160 coreconfigitem(
2165 coreconfigitem(
2161 b'ui',
2166 b'ui',
2162 b'relative-paths',
2167 b'relative-paths',
2163 default=b'legacy',
2168 default=b'legacy',
2164 )
2169 )
2165 coreconfigitem(
2170 coreconfigitem(
2166 b'ui',
2171 b'ui',
2167 b'remotecmd',
2172 b'remotecmd',
2168 default=b'hg',
2173 default=b'hg',
2169 )
2174 )
2170 coreconfigitem(
2175 coreconfigitem(
2171 b'ui',
2176 b'ui',
2172 b'report_untrusted',
2177 b'report_untrusted',
2173 default=True,
2178 default=True,
2174 )
2179 )
2175 coreconfigitem(
2180 coreconfigitem(
2176 b'ui',
2181 b'ui',
2177 b'rollback',
2182 b'rollback',
2178 default=True,
2183 default=True,
2179 )
2184 )
2180 coreconfigitem(
2185 coreconfigitem(
2181 b'ui',
2186 b'ui',
2182 b'signal-safe-lock',
2187 b'signal-safe-lock',
2183 default=True,
2188 default=True,
2184 )
2189 )
2185 coreconfigitem(
2190 coreconfigitem(
2186 b'ui',
2191 b'ui',
2187 b'slash',
2192 b'slash',
2188 default=False,
2193 default=False,
2189 )
2194 )
2190 coreconfigitem(
2195 coreconfigitem(
2191 b'ui',
2196 b'ui',
2192 b'ssh',
2197 b'ssh',
2193 default=b'ssh',
2198 default=b'ssh',
2194 )
2199 )
2195 coreconfigitem(
2200 coreconfigitem(
2196 b'ui',
2201 b'ui',
2197 b'ssherrorhint',
2202 b'ssherrorhint',
2198 default=None,
2203 default=None,
2199 )
2204 )
2200 coreconfigitem(
2205 coreconfigitem(
2201 b'ui',
2206 b'ui',
2202 b'statuscopies',
2207 b'statuscopies',
2203 default=False,
2208 default=False,
2204 )
2209 )
2205 coreconfigitem(
2210 coreconfigitem(
2206 b'ui',
2211 b'ui',
2207 b'strict',
2212 b'strict',
2208 default=False,
2213 default=False,
2209 )
2214 )
2210 coreconfigitem(
2215 coreconfigitem(
2211 b'ui',
2216 b'ui',
2212 b'style',
2217 b'style',
2213 default=b'',
2218 default=b'',
2214 )
2219 )
2215 coreconfigitem(
2220 coreconfigitem(
2216 b'ui',
2221 b'ui',
2217 b'supportcontact',
2222 b'supportcontact',
2218 default=None,
2223 default=None,
2219 )
2224 )
2220 coreconfigitem(
2225 coreconfigitem(
2221 b'ui',
2226 b'ui',
2222 b'textwidth',
2227 b'textwidth',
2223 default=78,
2228 default=78,
2224 )
2229 )
2225 coreconfigitem(
2230 coreconfigitem(
2226 b'ui',
2231 b'ui',
2227 b'timeout',
2232 b'timeout',
2228 default=b'600',
2233 default=b'600',
2229 )
2234 )
2230 coreconfigitem(
2235 coreconfigitem(
2231 b'ui',
2236 b'ui',
2232 b'timeout.warn',
2237 b'timeout.warn',
2233 default=0,
2238 default=0,
2234 )
2239 )
2235 coreconfigitem(
2240 coreconfigitem(
2236 b'ui',
2241 b'ui',
2237 b'timestamp-output',
2242 b'timestamp-output',
2238 default=False,
2243 default=False,
2239 )
2244 )
2240 coreconfigitem(
2245 coreconfigitem(
2241 b'ui',
2246 b'ui',
2242 b'traceback',
2247 b'traceback',
2243 default=False,
2248 default=False,
2244 )
2249 )
2245 coreconfigitem(
2250 coreconfigitem(
2246 b'ui',
2251 b'ui',
2247 b'tweakdefaults',
2252 b'tweakdefaults',
2248 default=False,
2253 default=False,
2249 )
2254 )
2250 coreconfigitem(b'ui', b'username', alias=[(b'ui', b'user')])
2255 coreconfigitem(b'ui', b'username', alias=[(b'ui', b'user')])
2251 coreconfigitem(
2256 coreconfigitem(
2252 b'ui',
2257 b'ui',
2253 b'verbose',
2258 b'verbose',
2254 default=False,
2259 default=False,
2255 )
2260 )
2256 coreconfigitem(
2261 coreconfigitem(
2257 b'verify',
2262 b'verify',
2258 b'skipflags',
2263 b'skipflags',
2259 default=None,
2264 default=None,
2260 )
2265 )
2261 coreconfigitem(
2266 coreconfigitem(
2262 b'web',
2267 b'web',
2263 b'allowbz2',
2268 b'allowbz2',
2264 default=False,
2269 default=False,
2265 )
2270 )
2266 coreconfigitem(
2271 coreconfigitem(
2267 b'web',
2272 b'web',
2268 b'allowgz',
2273 b'allowgz',
2269 default=False,
2274 default=False,
2270 )
2275 )
2271 coreconfigitem(
2276 coreconfigitem(
2272 b'web',
2277 b'web',
2273 b'allow-pull',
2278 b'allow-pull',
2274 alias=[(b'web', b'allowpull')],
2279 alias=[(b'web', b'allowpull')],
2275 default=True,
2280 default=True,
2276 )
2281 )
2277 coreconfigitem(
2282 coreconfigitem(
2278 b'web',
2283 b'web',
2279 b'allow-push',
2284 b'allow-push',
2280 alias=[(b'web', b'allow_push')],
2285 alias=[(b'web', b'allow_push')],
2281 default=list,
2286 default=list,
2282 )
2287 )
2283 coreconfigitem(
2288 coreconfigitem(
2284 b'web',
2289 b'web',
2285 b'allowzip',
2290 b'allowzip',
2286 default=False,
2291 default=False,
2287 )
2292 )
2288 coreconfigitem(
2293 coreconfigitem(
2289 b'web',
2294 b'web',
2290 b'archivesubrepos',
2295 b'archivesubrepos',
2291 default=False,
2296 default=False,
2292 )
2297 )
2293 coreconfigitem(
2298 coreconfigitem(
2294 b'web',
2299 b'web',
2295 b'cache',
2300 b'cache',
2296 default=True,
2301 default=True,
2297 )
2302 )
2298 coreconfigitem(
2303 coreconfigitem(
2299 b'web',
2304 b'web',
2300 b'comparisoncontext',
2305 b'comparisoncontext',
2301 default=5,
2306 default=5,
2302 )
2307 )
2303 coreconfigitem(
2308 coreconfigitem(
2304 b'web',
2309 b'web',
2305 b'contact',
2310 b'contact',
2306 default=None,
2311 default=None,
2307 )
2312 )
2308 coreconfigitem(
2313 coreconfigitem(
2309 b'web',
2314 b'web',
2310 b'deny_push',
2315 b'deny_push',
2311 default=list,
2316 default=list,
2312 )
2317 )
2313 coreconfigitem(
2318 coreconfigitem(
2314 b'web',
2319 b'web',
2315 b'guessmime',
2320 b'guessmime',
2316 default=False,
2321 default=False,
2317 )
2322 )
2318 coreconfigitem(
2323 coreconfigitem(
2319 b'web',
2324 b'web',
2320 b'hidden',
2325 b'hidden',
2321 default=False,
2326 default=False,
2322 )
2327 )
2323 coreconfigitem(
2328 coreconfigitem(
2324 b'web',
2329 b'web',
2325 b'labels',
2330 b'labels',
2326 default=list,
2331 default=list,
2327 )
2332 )
2328 coreconfigitem(
2333 coreconfigitem(
2329 b'web',
2334 b'web',
2330 b'logoimg',
2335 b'logoimg',
2331 default=b'hglogo.png',
2336 default=b'hglogo.png',
2332 )
2337 )
2333 coreconfigitem(
2338 coreconfigitem(
2334 b'web',
2339 b'web',
2335 b'logourl',
2340 b'logourl',
2336 default=b'https://mercurial-scm.org/',
2341 default=b'https://mercurial-scm.org/',
2337 )
2342 )
2338 coreconfigitem(
2343 coreconfigitem(
2339 b'web',
2344 b'web',
2340 b'accesslog',
2345 b'accesslog',
2341 default=b'-',
2346 default=b'-',
2342 )
2347 )
2343 coreconfigitem(
2348 coreconfigitem(
2344 b'web',
2349 b'web',
2345 b'address',
2350 b'address',
2346 default=b'',
2351 default=b'',
2347 )
2352 )
2348 coreconfigitem(
2353 coreconfigitem(
2349 b'web',
2354 b'web',
2350 b'allow-archive',
2355 b'allow-archive',
2351 alias=[(b'web', b'allow_archive')],
2356 alias=[(b'web', b'allow_archive')],
2352 default=list,
2357 default=list,
2353 )
2358 )
2354 coreconfigitem(
2359 coreconfigitem(
2355 b'web',
2360 b'web',
2356 b'allow_read',
2361 b'allow_read',
2357 default=list,
2362 default=list,
2358 )
2363 )
2359 coreconfigitem(
2364 coreconfigitem(
2360 b'web',
2365 b'web',
2361 b'baseurl',
2366 b'baseurl',
2362 default=None,
2367 default=None,
2363 )
2368 )
2364 coreconfigitem(
2369 coreconfigitem(
2365 b'web',
2370 b'web',
2366 b'cacerts',
2371 b'cacerts',
2367 default=None,
2372 default=None,
2368 )
2373 )
2369 coreconfigitem(
2374 coreconfigitem(
2370 b'web',
2375 b'web',
2371 b'certificate',
2376 b'certificate',
2372 default=None,
2377 default=None,
2373 )
2378 )
2374 coreconfigitem(
2379 coreconfigitem(
2375 b'web',
2380 b'web',
2376 b'collapse',
2381 b'collapse',
2377 default=False,
2382 default=False,
2378 )
2383 )
2379 coreconfigitem(
2384 coreconfigitem(
2380 b'web',
2385 b'web',
2381 b'csp',
2386 b'csp',
2382 default=None,
2387 default=None,
2383 )
2388 )
2384 coreconfigitem(
2389 coreconfigitem(
2385 b'web',
2390 b'web',
2386 b'deny_read',
2391 b'deny_read',
2387 default=list,
2392 default=list,
2388 )
2393 )
2389 coreconfigitem(
2394 coreconfigitem(
2390 b'web',
2395 b'web',
2391 b'descend',
2396 b'descend',
2392 default=True,
2397 default=True,
2393 )
2398 )
2394 coreconfigitem(
2399 coreconfigitem(
2395 b'web',
2400 b'web',
2396 b'description',
2401 b'description',
2397 default=b"",
2402 default=b"",
2398 )
2403 )
2399 coreconfigitem(
2404 coreconfigitem(
2400 b'web',
2405 b'web',
2401 b'encoding',
2406 b'encoding',
2402 default=lambda: encoding.encoding,
2407 default=lambda: encoding.encoding,
2403 )
2408 )
2404 coreconfigitem(
2409 coreconfigitem(
2405 b'web',
2410 b'web',
2406 b'errorlog',
2411 b'errorlog',
2407 default=b'-',
2412 default=b'-',
2408 )
2413 )
2409 coreconfigitem(
2414 coreconfigitem(
2410 b'web',
2415 b'web',
2411 b'ipv6',
2416 b'ipv6',
2412 default=False,
2417 default=False,
2413 )
2418 )
2414 coreconfigitem(
2419 coreconfigitem(
2415 b'web',
2420 b'web',
2416 b'maxchanges',
2421 b'maxchanges',
2417 default=10,
2422 default=10,
2418 )
2423 )
2419 coreconfigitem(
2424 coreconfigitem(
2420 b'web',
2425 b'web',
2421 b'maxfiles',
2426 b'maxfiles',
2422 default=10,
2427 default=10,
2423 )
2428 )
2424 coreconfigitem(
2429 coreconfigitem(
2425 b'web',
2430 b'web',
2426 b'maxshortchanges',
2431 b'maxshortchanges',
2427 default=60,
2432 default=60,
2428 )
2433 )
2429 coreconfigitem(
2434 coreconfigitem(
2430 b'web',
2435 b'web',
2431 b'motd',
2436 b'motd',
2432 default=b'',
2437 default=b'',
2433 )
2438 )
2434 coreconfigitem(
2439 coreconfigitem(
2435 b'web',
2440 b'web',
2436 b'name',
2441 b'name',
2437 default=dynamicdefault,
2442 default=dynamicdefault,
2438 )
2443 )
2439 coreconfigitem(
2444 coreconfigitem(
2440 b'web',
2445 b'web',
2441 b'port',
2446 b'port',
2442 default=8000,
2447 default=8000,
2443 )
2448 )
2444 coreconfigitem(
2449 coreconfigitem(
2445 b'web',
2450 b'web',
2446 b'prefix',
2451 b'prefix',
2447 default=b'',
2452 default=b'',
2448 )
2453 )
2449 coreconfigitem(
2454 coreconfigitem(
2450 b'web',
2455 b'web',
2451 b'push_ssl',
2456 b'push_ssl',
2452 default=True,
2457 default=True,
2453 )
2458 )
2454 coreconfigitem(
2459 coreconfigitem(
2455 b'web',
2460 b'web',
2456 b'refreshinterval',
2461 b'refreshinterval',
2457 default=20,
2462 default=20,
2458 )
2463 )
2459 coreconfigitem(
2464 coreconfigitem(
2460 b'web',
2465 b'web',
2461 b'server-header',
2466 b'server-header',
2462 default=None,
2467 default=None,
2463 )
2468 )
2464 coreconfigitem(
2469 coreconfigitem(
2465 b'web',
2470 b'web',
2466 b'static',
2471 b'static',
2467 default=None,
2472 default=None,
2468 )
2473 )
2469 coreconfigitem(
2474 coreconfigitem(
2470 b'web',
2475 b'web',
2471 b'staticurl',
2476 b'staticurl',
2472 default=None,
2477 default=None,
2473 )
2478 )
2474 coreconfigitem(
2479 coreconfigitem(
2475 b'web',
2480 b'web',
2476 b'stripes',
2481 b'stripes',
2477 default=1,
2482 default=1,
2478 )
2483 )
2479 coreconfigitem(
2484 coreconfigitem(
2480 b'web',
2485 b'web',
2481 b'style',
2486 b'style',
2482 default=b'paper',
2487 default=b'paper',
2483 )
2488 )
2484 coreconfigitem(
2489 coreconfigitem(
2485 b'web',
2490 b'web',
2486 b'templates',
2491 b'templates',
2487 default=None,
2492 default=None,
2488 )
2493 )
2489 coreconfigitem(
2494 coreconfigitem(
2490 b'web',
2495 b'web',
2491 b'view',
2496 b'view',
2492 default=b'served',
2497 default=b'served',
2493 experimental=True,
2498 experimental=True,
2494 )
2499 )
2495 coreconfigitem(
2500 coreconfigitem(
2496 b'worker',
2501 b'worker',
2497 b'backgroundclose',
2502 b'backgroundclose',
2498 default=dynamicdefault,
2503 default=dynamicdefault,
2499 )
2504 )
2500 # Windows defaults to a limit of 512 open files. A buffer of 128
2505 # Windows defaults to a limit of 512 open files. A buffer of 128
2501 # should give us enough headway.
2506 # should give us enough headway.
2502 coreconfigitem(
2507 coreconfigitem(
2503 b'worker',
2508 b'worker',
2504 b'backgroundclosemaxqueue',
2509 b'backgroundclosemaxqueue',
2505 default=384,
2510 default=384,
2506 )
2511 )
2507 coreconfigitem(
2512 coreconfigitem(
2508 b'worker',
2513 b'worker',
2509 b'backgroundcloseminfilecount',
2514 b'backgroundcloseminfilecount',
2510 default=2048,
2515 default=2048,
2511 )
2516 )
2512 coreconfigitem(
2517 coreconfigitem(
2513 b'worker',
2518 b'worker',
2514 b'backgroundclosethreadcount',
2519 b'backgroundclosethreadcount',
2515 default=4,
2520 default=4,
2516 )
2521 )
2517 coreconfigitem(
2522 coreconfigitem(
2518 b'worker',
2523 b'worker',
2519 b'enabled',
2524 b'enabled',
2520 default=True,
2525 default=True,
2521 )
2526 )
2522 coreconfigitem(
2527 coreconfigitem(
2523 b'worker',
2528 b'worker',
2524 b'numcpus',
2529 b'numcpus',
2525 default=None,
2530 default=None,
2526 )
2531 )
2527
2532
2528 # Rebase related configuration moved to core because other extension are doing
2533 # Rebase related configuration moved to core because other extension are doing
2529 # strange things. For example, shelve import the extensions to reuse some bit
2534 # strange things. For example, shelve import the extensions to reuse some bit
2530 # without formally loading it.
2535 # without formally loading it.
2531 coreconfigitem(
2536 coreconfigitem(
2532 b'commands',
2537 b'commands',
2533 b'rebase.requiredest',
2538 b'rebase.requiredest',
2534 default=False,
2539 default=False,
2535 )
2540 )
2536 coreconfigitem(
2541 coreconfigitem(
2537 b'experimental',
2542 b'experimental',
2538 b'rebaseskipobsolete',
2543 b'rebaseskipobsolete',
2539 default=True,
2544 default=True,
2540 )
2545 )
2541 coreconfigitem(
2546 coreconfigitem(
2542 b'rebase',
2547 b'rebase',
2543 b'singletransaction',
2548 b'singletransaction',
2544 default=False,
2549 default=False,
2545 )
2550 )
2546 coreconfigitem(
2551 coreconfigitem(
2547 b'rebase',
2552 b'rebase',
2548 b'experimental.inmemory',
2553 b'experimental.inmemory',
2549 default=False,
2554 default=False,
2550 )
2555 )
@@ -1,298 +1,303 b''
1 # upgrade.py - functions for in place upgrade of Mercurial repository
1 # upgrade.py - functions for in place upgrade of Mercurial repository
2 #
2 #
3 # Copyright (c) 2016-present, Gregory Szorc
3 # Copyright (c) 2016-present, Gregory Szorc
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
6 # GNU General Public License version 2 or any later version.
7
7
8 from __future__ import absolute_import
8 from __future__ import absolute_import
9
9
10 from .i18n import _
10 from .i18n import _
11 from . import (
11 from . import (
12 error,
12 error,
13 hg,
13 hg,
14 localrepo,
14 localrepo,
15 lock as lockmod,
15 lock as lockmod,
16 pycompat,
16 pycompat,
17 requirements as requirementsmod,
17 requirements as requirementsmod,
18 scmutil,
18 scmutil,
19 )
19 )
20
20
21 from .upgrade_utils import (
21 from .upgrade_utils import (
22 actions as upgrade_actions,
22 actions as upgrade_actions,
23 engine as upgrade_engine,
23 engine as upgrade_engine,
24 )
24 )
25
25
26 from .utils import (
26 from .utils import (
27 stringutil,
27 stringutil,
28 )
28 )
29
29
30 allformatvariant = upgrade_actions.allformatvariant
30 allformatvariant = upgrade_actions.allformatvariant
31
31
32
32
33 def upgraderepo(
33 def upgraderepo(
34 ui,
34 ui,
35 repo,
35 repo,
36 run=False,
36 run=False,
37 optimize=None,
37 optimize=None,
38 backup=True,
38 backup=True,
39 manifest=None,
39 manifest=None,
40 changelog=None,
40 changelog=None,
41 filelogs=None,
41 filelogs=None,
42 ):
42 ):
43 """Upgrade a repository in place."""
43 """Upgrade a repository in place."""
44 if optimize is None:
44 if optimize is None:
45 optimize = {}
45 optimize = {}
46 repo = repo.unfiltered()
46 repo = repo.unfiltered()
47
47
48 revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS)
48 revlogs = set(upgrade_engine.UPGRADE_ALL_REVLOGS)
49 specentries = (
49 specentries = (
50 (upgrade_engine.UPGRADE_CHANGELOG, changelog),
50 (upgrade_engine.UPGRADE_CHANGELOG, changelog),
51 (upgrade_engine.UPGRADE_MANIFEST, manifest),
51 (upgrade_engine.UPGRADE_MANIFEST, manifest),
52 (upgrade_engine.UPGRADE_FILELOGS, filelogs),
52 (upgrade_engine.UPGRADE_FILELOGS, filelogs),
53 )
53 )
54 specified = [(y, x) for (y, x) in specentries if x is not None]
54 specified = [(y, x) for (y, x) in specentries if x is not None]
55 if specified:
55 if specified:
56 # we have some limitation on revlogs to be recloned
56 # we have some limitation on revlogs to be recloned
57 if any(x for y, x in specified):
57 if any(x for y, x in specified):
58 revlogs = set()
58 revlogs = set()
59 for upgrade, enabled in specified:
59 for upgrade, enabled in specified:
60 if enabled:
60 if enabled:
61 revlogs.add(upgrade)
61 revlogs.add(upgrade)
62 else:
62 else:
63 # none are enabled
63 # none are enabled
64 for upgrade, __ in specified:
64 for upgrade, __ in specified:
65 revlogs.discard(upgrade)
65 revlogs.discard(upgrade)
66
66
67 # Ensure the repository can be upgraded.
67 # Ensure the repository can be upgraded.
68 upgrade_actions.check_source_requirements(repo)
68 upgrade_actions.check_source_requirements(repo)
69
69
70 default_options = localrepo.defaultcreateopts(repo.ui)
70 default_options = localrepo.defaultcreateopts(repo.ui)
71 newreqs = localrepo.newreporequirements(repo.ui, default_options)
71 newreqs = localrepo.newreporequirements(repo.ui, default_options)
72 newreqs.update(upgrade_actions.preservedrequirements(repo))
72 newreqs.update(upgrade_actions.preservedrequirements(repo))
73
73
74 upgrade_actions.check_requirements_changes(repo, newreqs)
74 upgrade_actions.check_requirements_changes(repo, newreqs)
75
75
76 # Find and validate all improvements that can be made.
76 # Find and validate all improvements that can be made.
77 alloptimizations = upgrade_actions.findoptimizations(repo)
77 alloptimizations = upgrade_actions.findoptimizations(repo)
78
78
79 # Apply and Validate arguments.
79 # Apply and Validate arguments.
80 optimizations = []
80 optimizations = []
81 for o in alloptimizations:
81 for o in alloptimizations:
82 if o.name in optimize:
82 if o.name in optimize:
83 optimizations.append(o)
83 optimizations.append(o)
84 optimize.discard(o.name)
84 optimize.discard(o.name)
85
85
86 if optimize: # anything left is unknown
86 if optimize: # anything left is unknown
87 raise error.Abort(
87 raise error.Abort(
88 _(b'unknown optimization action requested: %s')
88 _(b'unknown optimization action requested: %s')
89 % b', '.join(sorted(optimize)),
89 % b', '.join(sorted(optimize)),
90 hint=_(b'run without arguments to see valid optimizations'),
90 hint=_(b'run without arguments to see valid optimizations'),
91 )
91 )
92
92
93 format_upgrades = upgrade_actions.find_format_upgrades(repo)
93 format_upgrades = upgrade_actions.find_format_upgrades(repo)
94 up_actions = upgrade_actions.determine_upgrade_actions(
94 up_actions = upgrade_actions.determine_upgrade_actions(
95 repo, format_upgrades, optimizations, repo.requirements, newreqs
95 repo, format_upgrades, optimizations, repo.requirements, newreqs
96 )
96 )
97 removed_actions = upgrade_actions.find_format_downgrades(repo)
97 removed_actions = upgrade_actions.find_format_downgrades(repo)
98
98
99 removedreqs = repo.requirements - newreqs
99 removedreqs = repo.requirements - newreqs
100 addedreqs = newreqs - repo.requirements
100 addedreqs = newreqs - repo.requirements
101
101
102 if revlogs != upgrade_engine.UPGRADE_ALL_REVLOGS:
102 if revlogs != upgrade_engine.UPGRADE_ALL_REVLOGS:
103 incompatible = upgrade_actions.RECLONES_REQUIREMENTS & (
103 incompatible = upgrade_actions.RECLONES_REQUIREMENTS & (
104 removedreqs | addedreqs
104 removedreqs | addedreqs
105 )
105 )
106 if incompatible:
106 if incompatible:
107 msg = _(
107 msg = _(
108 b'ignoring revlogs selection flags, format requirements '
108 b'ignoring revlogs selection flags, format requirements '
109 b'change: %s\n'
109 b'change: %s\n'
110 )
110 )
111 ui.warn(msg % b', '.join(sorted(incompatible)))
111 ui.warn(msg % b', '.join(sorted(incompatible)))
112 revlogs = upgrade_engine.UPGRADE_ALL_REVLOGS
112 revlogs = upgrade_engine.UPGRADE_ALL_REVLOGS
113
113
114 upgrade_op = upgrade_actions.UpgradeOperation(
114 upgrade_op = upgrade_actions.UpgradeOperation(
115 ui,
115 ui,
116 newreqs,
116 newreqs,
117 repo.requirements,
117 repo.requirements,
118 up_actions,
118 up_actions,
119 removed_actions,
119 removed_actions,
120 revlogs,
120 revlogs,
121 )
121 )
122
122
123 if not run:
123 if not run:
124 fromconfig = []
124 fromconfig = []
125 onlydefault = []
125 onlydefault = []
126
126
127 for d in format_upgrades:
127 for d in format_upgrades:
128 if d.fromconfig(repo):
128 if d.fromconfig(repo):
129 fromconfig.append(d)
129 fromconfig.append(d)
130 elif d.default:
130 elif d.default:
131 onlydefault.append(d)
131 onlydefault.append(d)
132
132
133 if fromconfig or onlydefault:
133 if fromconfig or onlydefault:
134
134
135 if fromconfig:
135 if fromconfig:
136 ui.status(
136 ui.status(
137 _(
137 _(
138 b'repository lacks features recommended by '
138 b'repository lacks features recommended by '
139 b'current config options:\n\n'
139 b'current config options:\n\n'
140 )
140 )
141 )
141 )
142 for i in fromconfig:
142 for i in fromconfig:
143 ui.status(b'%s\n %s\n\n' % (i.name, i.description))
143 ui.status(b'%s\n %s\n\n' % (i.name, i.description))
144
144
145 if onlydefault:
145 if onlydefault:
146 ui.status(
146 ui.status(
147 _(
147 _(
148 b'repository lacks features used by the default '
148 b'repository lacks features used by the default '
149 b'config options:\n\n'
149 b'config options:\n\n'
150 )
150 )
151 )
151 )
152 for i in onlydefault:
152 for i in onlydefault:
153 ui.status(b'%s\n %s\n\n' % (i.name, i.description))
153 ui.status(b'%s\n %s\n\n' % (i.name, i.description))
154
154
155 ui.status(b'\n')
155 ui.status(b'\n')
156 else:
156 else:
157 ui.status(_(b'(no format upgrades found in existing repository)\n'))
157 ui.status(_(b'(no format upgrades found in existing repository)\n'))
158
158
159 ui.status(
159 ui.status(
160 _(
160 _(
161 b'performing an upgrade with "--run" will make the following '
161 b'performing an upgrade with "--run" will make the following '
162 b'changes:\n\n'
162 b'changes:\n\n'
163 )
163 )
164 )
164 )
165
165
166 upgrade_op.print_requirements()
166 upgrade_op.print_requirements()
167 upgrade_op.print_optimisations()
167 upgrade_op.print_optimisations()
168 upgrade_op.print_upgrade_actions()
168 upgrade_op.print_upgrade_actions()
169 upgrade_op.print_affected_revlogs()
169 upgrade_op.print_affected_revlogs()
170
170
171 if upgrade_op.unused_optimizations:
171 if upgrade_op.unused_optimizations:
172 ui.status(
172 ui.status(
173 _(
173 _(
174 b'additional optimizations are available by specifying '
174 b'additional optimizations are available by specifying '
175 b'"--optimize <name>":\n\n'
175 b'"--optimize <name>":\n\n'
176 )
176 )
177 )
177 )
178 upgrade_op.print_unused_optimizations()
178 upgrade_op.print_unused_optimizations()
179 return
179 return
180
180
181 if not (upgrade_op.upgrade_actions or upgrade_op.removed_actions):
181 if not (upgrade_op.upgrade_actions or upgrade_op.removed_actions):
182 ui.status(_(b'nothing to do\n'))
182 ui.status(_(b'nothing to do\n'))
183 return
183 return
184 # Else we're in the run=true case.
184 # Else we're in the run=true case.
185 ui.write(_(b'upgrade will perform the following actions:\n\n'))
185 ui.write(_(b'upgrade will perform the following actions:\n\n'))
186 upgrade_op.print_requirements()
186 upgrade_op.print_requirements()
187 upgrade_op.print_optimisations()
187 upgrade_op.print_optimisations()
188 upgrade_op.print_upgrade_actions()
188 upgrade_op.print_upgrade_actions()
189 upgrade_op.print_affected_revlogs()
189 upgrade_op.print_affected_revlogs()
190
190
191 ui.status(_(b'beginning upgrade...\n'))
191 ui.status(_(b'beginning upgrade...\n'))
192 with repo.wlock(), repo.lock():
192 with repo.wlock(), repo.lock():
193 ui.status(_(b'repository locked and read-only\n'))
193 ui.status(_(b'repository locked and read-only\n'))
194 # Our strategy for upgrading the repository is to create a new,
194 # Our strategy for upgrading the repository is to create a new,
195 # temporary repository, write data to it, then do a swap of the
195 # temporary repository, write data to it, then do a swap of the
196 # data. There are less heavyweight ways to do this, but it is easier
196 # data. There are less heavyweight ways to do this, but it is easier
197 # to create a new repo object than to instantiate all the components
197 # to create a new repo object than to instantiate all the components
198 # (like the store) separately.
198 # (like the store) separately.
199 tmppath = pycompat.mkdtemp(prefix=b'upgrade.', dir=repo.path)
199 tmppath = pycompat.mkdtemp(prefix=b'upgrade.', dir=repo.path)
200 backuppath = None
200 backuppath = None
201 try:
201 try:
202 ui.status(
202 ui.status(
203 _(
203 _(
204 b'creating temporary repository to stage upgraded '
204 b'creating temporary repository to stage upgraded '
205 b'data: %s\n'
205 b'data: %s\n'
206 )
206 )
207 % tmppath
207 % tmppath
208 )
208 )
209
209
210 # clone ui without using ui.copy because repo.ui is protected
210 # clone ui without using ui.copy because repo.ui is protected
211 repoui = repo.ui.__class__(repo.ui)
211 repoui = repo.ui.__class__(repo.ui)
212 dstrepo = hg.repository(repoui, path=tmppath, create=True)
212 dstrepo = hg.repository(repoui, path=tmppath, create=True)
213
213
214 with dstrepo.wlock(), dstrepo.lock():
214 with dstrepo.wlock(), dstrepo.lock():
215 backuppath = upgrade_engine.upgrade(
215 backuppath = upgrade_engine.upgrade(
216 ui, repo, dstrepo, upgrade_op
216 ui, repo, dstrepo, upgrade_op
217 )
217 )
218 if not backup:
218 if not backup:
219 ui.status(
219 ui.status(
220 _(b'removing old repository content %s\n') % backuppath
220 _(b'removing old repository content %s\n') % backuppath
221 )
221 )
222 repo.vfs.rmtree(backuppath, forcibly=True)
222 repo.vfs.rmtree(backuppath, forcibly=True)
223 backuppath = None
223 backuppath = None
224
224
225 finally:
225 finally:
226 ui.status(_(b'removing temporary repository %s\n') % tmppath)
226 ui.status(_(b'removing temporary repository %s\n') % tmppath)
227 repo.vfs.rmtree(tmppath, forcibly=True)
227 repo.vfs.rmtree(tmppath, forcibly=True)
228
228
229 if backuppath and not ui.quiet:
229 if backuppath and not ui.quiet:
230 ui.warn(
230 ui.warn(
231 _(b'copy of old repository backed up at %s\n') % backuppath
231 _(b'copy of old repository backed up at %s\n') % backuppath
232 )
232 )
233 ui.warn(
233 ui.warn(
234 _(
234 _(
235 b'the old repository will not be deleted; remove '
235 b'the old repository will not be deleted; remove '
236 b'it to free up disk space once the upgraded '
236 b'it to free up disk space once the upgraded '
237 b'repository is verified\n'
237 b'repository is verified\n'
238 )
238 )
239 )
239 )
240
240
241 upgrade_op.print_post_op_messages()
241 upgrade_op.print_post_op_messages()
242
242
243
243
244 def upgrade_share_to_safe(ui, hgvfs, storevfs, current_requirements):
244 def upgrade_share_to_safe(ui, hgvfs, storevfs, current_requirements):
245 """Upgrades a share to use share-safe mechanism"""
245 """Upgrades a share to use share-safe mechanism"""
246 wlock = None
246 wlock = None
247 try:
247 try:
248 wlock = lockmod.trylock(ui, hgvfs, b'wlock', 0, 0)
248 wlock = lockmod.trylock(ui, hgvfs, b'wlock', 0, 0)
249 store_requirements = localrepo._readrequires(storevfs, False)
249 store_requirements = localrepo._readrequires(storevfs, False)
250 # after upgrade, store requires will be shared, so lets find
250 # after upgrade, store requires will be shared, so lets find
251 # the requirements which are not present in store and
251 # the requirements which are not present in store and
252 # write them to share's .hg/requires
252 # write them to share's .hg/requires
253 diffrequires = current_requirements - store_requirements
253 diffrequires = current_requirements - store_requirements
254 # add share-safe requirement as it will mark the share as share-safe
254 # add share-safe requirement as it will mark the share as share-safe
255 diffrequires.add(requirementsmod.SHARESAFE_REQUIREMENT)
255 diffrequires.add(requirementsmod.SHARESAFE_REQUIREMENT)
256 scmutil.writerequires(hgvfs, diffrequires)
256 scmutil.writerequires(hgvfs, diffrequires)
257 current_requirements.add(requirementsmod.SHARESAFE_REQUIREMENT)
257 current_requirements.add(requirementsmod.SHARESAFE_REQUIREMENT)
258 ui.warn(_(b'repository upgraded to use share-safe mode\n'))
258 ui.warn(_(b'repository upgraded to use share-safe mode\n'))
259 except error.LockError as e:
259 except error.LockError as e:
260 if ui.configbool(b'experimental', b'sharesafe-warn-outdated-shares'):
260 if ui.configbool(b'experimental', b'sharesafe-auto-upgrade-fail-error'):
261 raise error.Abort(
262 _(b'failed to upgrade share, got error: %s')
263 % stringutil.forcebytestr(e.strerror)
264 )
265 elif ui.configbool(b'experimental', b'sharesafe-warn-outdated-shares'):
261 ui.warn(
266 ui.warn(
262 _(b'failed to upgrade share, got error: %s\n')
267 _(b'failed to upgrade share, got error: %s\n')
263 % stringutil.forcebytestr(e.strerror)
268 % stringutil.forcebytestr(e.strerror)
264 )
269 )
265 finally:
270 finally:
266 if wlock:
271 if wlock:
267 wlock.release()
272 wlock.release()
268
273
269
274
270 def downgrade_share_to_non_safe(
275 def downgrade_share_to_non_safe(
271 ui,
276 ui,
272 hgvfs,
277 hgvfs,
273 sharedvfs,
278 sharedvfs,
274 current_requirements,
279 current_requirements,
275 ):
280 ):
276 """Downgrades a share which use share-safe to not use it"""
281 """Downgrades a share which use share-safe to not use it"""
277 wlock = None
282 wlock = None
278 try:
283 try:
279 wlock = lockmod.trylock(ui, hgvfs, b'wlock', 0, 0)
284 wlock = lockmod.trylock(ui, hgvfs, b'wlock', 0, 0)
280 source_requirements = localrepo._readrequires(sharedvfs, True)
285 source_requirements = localrepo._readrequires(sharedvfs, True)
281 # we cannot be 100% sure on which requirements were present in store when
286 # we cannot be 100% sure on which requirements were present in store when
282 # the source supported share-safe. However, we do know that working
287 # the source supported share-safe. However, we do know that working
283 # directory requirements were not there. Hence we remove them
288 # directory requirements were not there. Hence we remove them
284 source_requirements -= requirementsmod.WORKING_DIR_REQUIREMENTS
289 source_requirements -= requirementsmod.WORKING_DIR_REQUIREMENTS
285 current_requirements |= source_requirements
290 current_requirements |= source_requirements
286 current_requirements.remove(requirementsmod.SHARESAFE_REQUIREMENT)
291 current_requirements.remove(requirementsmod.SHARESAFE_REQUIREMENT)
287 scmutil.writerequires(hgvfs, current_requirements)
292 scmutil.writerequires(hgvfs, current_requirements)
288 ui.warn(_(b'repository downgraded to not use share-safe mode\n'))
293 ui.warn(_(b'repository downgraded to not use share-safe mode\n'))
289 except error.LockError as e:
294 except error.LockError as e:
290 # raise error right away because if downgrade failed, we cannot load
295 # raise error right away because if downgrade failed, we cannot load
291 # the repository because it does not have complete set of requirements
296 # the repository because it does not have complete set of requirements
292 raise error.Abort(
297 raise error.Abort(
293 _(b'failed to downgrade share, got error: %s')
298 _(b'failed to downgrade share, got error: %s')
294 % stringutil.forcebytestr(e.strerror)
299 % stringutil.forcebytestr(e.strerror)
295 )
300 )
296 finally:
301 finally:
297 if wlock:
302 if wlock:
298 wlock.release()
303 wlock.release()
@@ -1,575 +1,579 b''
1 setup
1 setup
2
2
3 $ cat >> $HGRCPATH <<EOF
3 $ cat >> $HGRCPATH <<EOF
4 > [extensions]
4 > [extensions]
5 > share =
5 > share =
6 > [format]
6 > [format]
7 > exp-share-safe = True
7 > exp-share-safe = True
8 > EOF
8 > EOF
9
9
10 prepare source repo
10 prepare source repo
11
11
12 $ hg init source
12 $ hg init source
13 $ cd source
13 $ cd source
14 $ cat .hg/requires
14 $ cat .hg/requires
15 exp-sharesafe
15 exp-sharesafe
16 $ cat .hg/store/requires
16 $ cat .hg/store/requires
17 dotencode
17 dotencode
18 fncache
18 fncache
19 generaldelta
19 generaldelta
20 revlogv1
20 revlogv1
21 sparserevlog
21 sparserevlog
22 store
22 store
23 $ hg debugrequirements
23 $ hg debugrequirements
24 dotencode
24 dotencode
25 exp-sharesafe
25 exp-sharesafe
26 fncache
26 fncache
27 generaldelta
27 generaldelta
28 revlogv1
28 revlogv1
29 sparserevlog
29 sparserevlog
30 store
30 store
31
31
32 $ echo a > a
32 $ echo a > a
33 $ hg ci -Aqm "added a"
33 $ hg ci -Aqm "added a"
34 $ echo b > b
34 $ echo b > b
35 $ hg ci -Aqm "added b"
35 $ hg ci -Aqm "added b"
36
36
37 $ HGEDITOR=cat hg config --shared
37 $ HGEDITOR=cat hg config --shared
38 abort: repository is not shared; can't use --shared
38 abort: repository is not shared; can't use --shared
39 [10]
39 [10]
40 $ cd ..
40 $ cd ..
41
41
42 Create a shared repo and check the requirements are shared and read correctly
42 Create a shared repo and check the requirements are shared and read correctly
43 $ hg share source shared1
43 $ hg share source shared1
44 updating working directory
44 updating working directory
45 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
45 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
46 $ cd shared1
46 $ cd shared1
47 $ cat .hg/requires
47 $ cat .hg/requires
48 exp-sharesafe
48 exp-sharesafe
49 shared
49 shared
50
50
51 $ hg debugrequirements -R ../source
51 $ hg debugrequirements -R ../source
52 dotencode
52 dotencode
53 exp-sharesafe
53 exp-sharesafe
54 fncache
54 fncache
55 generaldelta
55 generaldelta
56 revlogv1
56 revlogv1
57 sparserevlog
57 sparserevlog
58 store
58 store
59
59
60 $ hg debugrequirements
60 $ hg debugrequirements
61 dotencode
61 dotencode
62 exp-sharesafe
62 exp-sharesafe
63 fncache
63 fncache
64 generaldelta
64 generaldelta
65 revlogv1
65 revlogv1
66 shared
66 shared
67 sparserevlog
67 sparserevlog
68 store
68 store
69
69
70 $ echo c > c
70 $ echo c > c
71 $ hg ci -Aqm "added c"
71 $ hg ci -Aqm "added c"
72
72
73 Check that config of the source repository is also loaded
73 Check that config of the source repository is also loaded
74
74
75 $ hg showconfig ui.curses
75 $ hg showconfig ui.curses
76 [1]
76 [1]
77
77
78 $ echo "[ui]" >> ../source/.hg/hgrc
78 $ echo "[ui]" >> ../source/.hg/hgrc
79 $ echo "curses=true" >> ../source/.hg/hgrc
79 $ echo "curses=true" >> ../source/.hg/hgrc
80
80
81 $ hg showconfig ui.curses
81 $ hg showconfig ui.curses
82 true
82 true
83
83
84 Test that extensions of source repository are also loaded
84 Test that extensions of source repository are also loaded
85
85
86 $ hg debugextensions
86 $ hg debugextensions
87 share
87 share
88 $ hg extdiff -p echo
88 $ hg extdiff -p echo
89 hg: unknown command 'extdiff'
89 hg: unknown command 'extdiff'
90 'extdiff' is provided by the following extension:
90 'extdiff' is provided by the following extension:
91
91
92 extdiff command to allow external programs to compare revisions
92 extdiff command to allow external programs to compare revisions
93
93
94 (use 'hg help extensions' for information on enabling extensions)
94 (use 'hg help extensions' for information on enabling extensions)
95 [255]
95 [255]
96
96
97 $ echo "[extensions]" >> ../source/.hg/hgrc
97 $ echo "[extensions]" >> ../source/.hg/hgrc
98 $ echo "extdiff=" >> ../source/.hg/hgrc
98 $ echo "extdiff=" >> ../source/.hg/hgrc
99
99
100 $ hg debugextensions -R ../source
100 $ hg debugextensions -R ../source
101 extdiff
101 extdiff
102 share
102 share
103 $ hg extdiff -R ../source -p echo
103 $ hg extdiff -R ../source -p echo
104
104
105 BROKEN: the command below will not work if config of shared source is not loaded
105 BROKEN: the command below will not work if config of shared source is not loaded
106 on dispatch but debugextensions says that extension
106 on dispatch but debugextensions says that extension
107 is loaded
107 is loaded
108 $ hg debugextensions
108 $ hg debugextensions
109 extdiff
109 extdiff
110 share
110 share
111
111
112 $ hg extdiff -p echo
112 $ hg extdiff -p echo
113
113
114 However, local .hg/hgrc should override the config set by share source
114 However, local .hg/hgrc should override the config set by share source
115
115
116 $ echo "[ui]" >> .hg/hgrc
116 $ echo "[ui]" >> .hg/hgrc
117 $ echo "curses=false" >> .hg/hgrc
117 $ echo "curses=false" >> .hg/hgrc
118
118
119 $ hg showconfig ui.curses
119 $ hg showconfig ui.curses
120 false
120 false
121
121
122 $ HGEDITOR=cat hg config --shared
122 $ HGEDITOR=cat hg config --shared
123 [ui]
123 [ui]
124 curses=true
124 curses=true
125 [extensions]
125 [extensions]
126 extdiff=
126 extdiff=
127
127
128 $ HGEDITOR=cat hg config --local
128 $ HGEDITOR=cat hg config --local
129 [ui]
129 [ui]
130 curses=false
130 curses=false
131
131
132 Testing that hooks set in source repository also runs in shared repo
132 Testing that hooks set in source repository also runs in shared repo
133
133
134 $ cd ../source
134 $ cd ../source
135 $ cat <<EOF >> .hg/hgrc
135 $ cat <<EOF >> .hg/hgrc
136 > [extensions]
136 > [extensions]
137 > hooklib=
137 > hooklib=
138 > [hooks]
138 > [hooks]
139 > pretxnchangegroup.reject_merge_commits = \
139 > pretxnchangegroup.reject_merge_commits = \
140 > python:hgext.hooklib.reject_merge_commits.hook
140 > python:hgext.hooklib.reject_merge_commits.hook
141 > EOF
141 > EOF
142
142
143 $ cd ..
143 $ cd ..
144 $ hg clone source cloned
144 $ hg clone source cloned
145 updating to branch default
145 updating to branch default
146 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
146 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
147 $ cd cloned
147 $ cd cloned
148 $ hg up 0
148 $ hg up 0
149 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
149 0 files updated, 0 files merged, 2 files removed, 0 files unresolved
150 $ echo bar > bar
150 $ echo bar > bar
151 $ hg ci -Aqm "added bar"
151 $ hg ci -Aqm "added bar"
152 $ hg merge
152 $ hg merge
153 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
153 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
154 (branch merge, don't forget to commit)
154 (branch merge, don't forget to commit)
155 $ hg ci -m "merge commit"
155 $ hg ci -m "merge commit"
156
156
157 $ hg push ../source
157 $ hg push ../source
158 pushing to ../source
158 pushing to ../source
159 searching for changes
159 searching for changes
160 adding changesets
160 adding changesets
161 adding manifests
161 adding manifests
162 adding file changes
162 adding file changes
163 error: pretxnchangegroup.reject_merge_commits hook failed: bcde3522682d rejected as merge on the same branch. Please consider rebase.
163 error: pretxnchangegroup.reject_merge_commits hook failed: bcde3522682d rejected as merge on the same branch. Please consider rebase.
164 transaction abort!
164 transaction abort!
165 rollback completed
165 rollback completed
166 abort: bcde3522682d rejected as merge on the same branch. Please consider rebase.
166 abort: bcde3522682d rejected as merge on the same branch. Please consider rebase.
167 [255]
167 [255]
168
168
169 $ hg push ../shared1
169 $ hg push ../shared1
170 pushing to ../shared1
170 pushing to ../shared1
171 searching for changes
171 searching for changes
172 adding changesets
172 adding changesets
173 adding manifests
173 adding manifests
174 adding file changes
174 adding file changes
175 error: pretxnchangegroup.reject_merge_commits hook failed: bcde3522682d rejected as merge on the same branch. Please consider rebase.
175 error: pretxnchangegroup.reject_merge_commits hook failed: bcde3522682d rejected as merge on the same branch. Please consider rebase.
176 transaction abort!
176 transaction abort!
177 rollback completed
177 rollback completed
178 abort: bcde3522682d rejected as merge on the same branch. Please consider rebase.
178 abort: bcde3522682d rejected as merge on the same branch. Please consider rebase.
179 [255]
179 [255]
180
180
181 Test that if share source config is untrusted, we dont read it
181 Test that if share source config is untrusted, we dont read it
182
182
183 $ cd ../shared1
183 $ cd ../shared1
184
184
185 $ cat << EOF > $TESTTMP/untrusted.py
185 $ cat << EOF > $TESTTMP/untrusted.py
186 > from mercurial import scmutil, util
186 > from mercurial import scmutil, util
187 > def uisetup(ui):
187 > def uisetup(ui):
188 > class untrustedui(ui.__class__):
188 > class untrustedui(ui.__class__):
189 > def _trusted(self, fp, f):
189 > def _trusted(self, fp, f):
190 > if util.normpath(fp.name).endswith(b'source/.hg/hgrc'):
190 > if util.normpath(fp.name).endswith(b'source/.hg/hgrc'):
191 > return False
191 > return False
192 > return super(untrustedui, self)._trusted(fp, f)
192 > return super(untrustedui, self)._trusted(fp, f)
193 > ui.__class__ = untrustedui
193 > ui.__class__ = untrustedui
194 > EOF
194 > EOF
195
195
196 $ hg showconfig hooks
196 $ hg showconfig hooks
197 hooks.pretxnchangegroup.reject_merge_commits=python:hgext.hooklib.reject_merge_commits.hook
197 hooks.pretxnchangegroup.reject_merge_commits=python:hgext.hooklib.reject_merge_commits.hook
198
198
199 $ hg showconfig hooks --config extensions.untrusted=$TESTTMP/untrusted.py
199 $ hg showconfig hooks --config extensions.untrusted=$TESTTMP/untrusted.py
200 [1]
200 [1]
201
201
202 Update the source repository format and check that shared repo works
202 Update the source repository format and check that shared repo works
203
203
204 $ cd ../source
204 $ cd ../source
205
205
206 Disable zstd related tests because its not present on pure version
206 Disable zstd related tests because its not present on pure version
207 #if zstd
207 #if zstd
208 $ echo "[format]" >> .hg/hgrc
208 $ echo "[format]" >> .hg/hgrc
209 $ echo "revlog-compression=zstd" >> .hg/hgrc
209 $ echo "revlog-compression=zstd" >> .hg/hgrc
210
210
211 $ hg debugupgraderepo --run -q
211 $ hg debugupgraderepo --run -q
212 upgrade will perform the following actions:
212 upgrade will perform the following actions:
213
213
214 requirements
214 requirements
215 preserved: dotencode, exp-sharesafe, fncache, generaldelta, revlogv1, sparserevlog, store
215 preserved: dotencode, exp-sharesafe, fncache, generaldelta, revlogv1, sparserevlog, store
216 added: revlog-compression-zstd
216 added: revlog-compression-zstd
217
217
218 processed revlogs:
218 processed revlogs:
219 - all-filelogs
219 - all-filelogs
220 - changelog
220 - changelog
221 - manifest
221 - manifest
222
222
223 $ hg log -r .
223 $ hg log -r .
224 changeset: 1:5f6d8a4bf34a
224 changeset: 1:5f6d8a4bf34a
225 user: test
225 user: test
226 date: Thu Jan 01 00:00:00 1970 +0000
226 date: Thu Jan 01 00:00:00 1970 +0000
227 summary: added b
227 summary: added b
228
228
229 #endif
229 #endif
230 $ echo "[format]" >> .hg/hgrc
230 $ echo "[format]" >> .hg/hgrc
231 $ echo "use-persistent-nodemap=True" >> .hg/hgrc
231 $ echo "use-persistent-nodemap=True" >> .hg/hgrc
232
232
233 $ hg debugupgraderepo --run -q -R ../shared1
233 $ hg debugupgraderepo --run -q -R ../shared1
234 abort: cannot upgrade repository; unsupported source requirement: shared
234 abort: cannot upgrade repository; unsupported source requirement: shared
235 [255]
235 [255]
236
236
237 $ hg debugupgraderepo --run -q
237 $ hg debugupgraderepo --run -q
238 upgrade will perform the following actions:
238 upgrade will perform the following actions:
239
239
240 requirements
240 requirements
241 preserved: dotencode, exp-sharesafe, fncache, generaldelta, revlogv1, sparserevlog, store (no-zstd !)
241 preserved: dotencode, exp-sharesafe, fncache, generaldelta, revlogv1, sparserevlog, store (no-zstd !)
242 preserved: dotencode, exp-sharesafe, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd !)
242 preserved: dotencode, exp-sharesafe, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd !)
243 added: persistent-nodemap
243 added: persistent-nodemap
244
244
245 processed revlogs:
245 processed revlogs:
246 - all-filelogs
246 - all-filelogs
247 - changelog
247 - changelog
248 - manifest
248 - manifest
249
249
250 $ hg log -r .
250 $ hg log -r .
251 changeset: 1:5f6d8a4bf34a
251 changeset: 1:5f6d8a4bf34a
252 user: test
252 user: test
253 date: Thu Jan 01 00:00:00 1970 +0000
253 date: Thu Jan 01 00:00:00 1970 +0000
254 summary: added b
254 summary: added b
255
255
256
256
257 Shared one should work
257 Shared one should work
258 $ cd ../shared1
258 $ cd ../shared1
259 $ hg log -r .
259 $ hg log -r .
260 changeset: 2:155349b645be
260 changeset: 2:155349b645be
261 tag: tip
261 tag: tip
262 user: test
262 user: test
263 date: Thu Jan 01 00:00:00 1970 +0000
263 date: Thu Jan 01 00:00:00 1970 +0000
264 summary: added c
264 summary: added c
265
265
266
266
267 Testing that nonsharedrc is loaded for source and not shared
267 Testing that nonsharedrc is loaded for source and not shared
268
268
269 $ cd ../source
269 $ cd ../source
270 $ touch .hg/hgrc-not-shared
270 $ touch .hg/hgrc-not-shared
271 $ echo "[ui]" >> .hg/hgrc-not-shared
271 $ echo "[ui]" >> .hg/hgrc-not-shared
272 $ echo "traceback=true" >> .hg/hgrc-not-shared
272 $ echo "traceback=true" >> .hg/hgrc-not-shared
273
273
274 $ hg showconfig ui.traceback
274 $ hg showconfig ui.traceback
275 true
275 true
276
276
277 $ HGEDITOR=cat hg config --non-shared
277 $ HGEDITOR=cat hg config --non-shared
278 [ui]
278 [ui]
279 traceback=true
279 traceback=true
280
280
281 $ cd ../shared1
281 $ cd ../shared1
282 $ hg showconfig ui.traceback
282 $ hg showconfig ui.traceback
283 [1]
283 [1]
284
284
285 Unsharing works
285 Unsharing works
286
286
287 $ hg unshare
287 $ hg unshare
288
288
289 Test that source config is added to the shared one after unshare, and the config
289 Test that source config is added to the shared one after unshare, and the config
290 of current repo is still respected over the config which came from source config
290 of current repo is still respected over the config which came from source config
291 $ cd ../cloned
291 $ cd ../cloned
292 $ hg push ../shared1
292 $ hg push ../shared1
293 pushing to ../shared1
293 pushing to ../shared1
294 searching for changes
294 searching for changes
295 adding changesets
295 adding changesets
296 adding manifests
296 adding manifests
297 adding file changes
297 adding file changes
298 error: pretxnchangegroup.reject_merge_commits hook failed: bcde3522682d rejected as merge on the same branch. Please consider rebase.
298 error: pretxnchangegroup.reject_merge_commits hook failed: bcde3522682d rejected as merge on the same branch. Please consider rebase.
299 transaction abort!
299 transaction abort!
300 rollback completed
300 rollback completed
301 abort: bcde3522682d rejected as merge on the same branch. Please consider rebase.
301 abort: bcde3522682d rejected as merge on the same branch. Please consider rebase.
302 [255]
302 [255]
303 $ hg showconfig ui.curses -R ../shared1
303 $ hg showconfig ui.curses -R ../shared1
304 false
304 false
305
305
306 $ cd ../
306 $ cd ../
307
307
308 Test that upgrading using debugupgraderepo works
308 Test that upgrading using debugupgraderepo works
309 =================================================
309 =================================================
310
310
311 $ hg init non-share-safe --config format.exp-share-safe=false
311 $ hg init non-share-safe --config format.exp-share-safe=false
312 $ cd non-share-safe
312 $ cd non-share-safe
313 $ hg debugrequirements
313 $ hg debugrequirements
314 dotencode
314 dotencode
315 fncache
315 fncache
316 generaldelta
316 generaldelta
317 revlogv1
317 revlogv1
318 sparserevlog
318 sparserevlog
319 store
319 store
320 $ echo foo > foo
320 $ echo foo > foo
321 $ hg ci -Aqm 'added foo'
321 $ hg ci -Aqm 'added foo'
322 $ echo bar > bar
322 $ echo bar > bar
323 $ hg ci -Aqm 'added bar'
323 $ hg ci -Aqm 'added bar'
324
324
325 Create a share before upgrading
325 Create a share before upgrading
326
326
327 $ cd ..
327 $ cd ..
328 $ hg share non-share-safe nss-share
328 $ hg share non-share-safe nss-share
329 updating working directory
329 updating working directory
330 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
330 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
331 $ hg debugrequirements -R nss-share
331 $ hg debugrequirements -R nss-share
332 dotencode
332 dotencode
333 fncache
333 fncache
334 generaldelta
334 generaldelta
335 revlogv1
335 revlogv1
336 shared
336 shared
337 sparserevlog
337 sparserevlog
338 store
338 store
339 $ cd non-share-safe
339 $ cd non-share-safe
340
340
341 Upgrade
341 Upgrade
342
342
343 $ hg debugupgraderepo -q
343 $ hg debugupgraderepo -q
344 requirements
344 requirements
345 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
345 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
346 added: exp-sharesafe
346 added: exp-sharesafe
347
347
348 processed revlogs:
348 processed revlogs:
349 - all-filelogs
349 - all-filelogs
350 - changelog
350 - changelog
351 - manifest
351 - manifest
352
352
353 $ hg debugupgraderepo --run -q
353 $ hg debugupgraderepo --run -q
354 upgrade will perform the following actions:
354 upgrade will perform the following actions:
355
355
356 requirements
356 requirements
357 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
357 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
358 added: exp-sharesafe
358 added: exp-sharesafe
359
359
360 processed revlogs:
360 processed revlogs:
361 - all-filelogs
361 - all-filelogs
362 - changelog
362 - changelog
363 - manifest
363 - manifest
364
364
365 repository upgraded to share safe mode, existing shares will still work in old non-safe mode. Re-share existing shares to use them in safe mode New shares will be created in safe mode.
365 repository upgraded to share safe mode, existing shares will still work in old non-safe mode. Re-share existing shares to use them in safe mode New shares will be created in safe mode.
366
366
367 $ hg debugrequirements
367 $ hg debugrequirements
368 dotencode
368 dotencode
369 exp-sharesafe
369 exp-sharesafe
370 fncache
370 fncache
371 generaldelta
371 generaldelta
372 revlogv1
372 revlogv1
373 sparserevlog
373 sparserevlog
374 store
374 store
375
375
376 $ cat .hg/requires
376 $ cat .hg/requires
377 exp-sharesafe
377 exp-sharesafe
378
378
379 $ cat .hg/store/requires
379 $ cat .hg/store/requires
380 dotencode
380 dotencode
381 fncache
381 fncache
382 generaldelta
382 generaldelta
383 revlogv1
383 revlogv1
384 sparserevlog
384 sparserevlog
385 store
385 store
386
386
387 $ hg log -GT "{node}: {desc}\n"
387 $ hg log -GT "{node}: {desc}\n"
388 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
388 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
389 |
389 |
390 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
390 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
391
391
392
392
393 Make sure existing shares still works
393 Make sure existing shares still works
394
394
395 $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-warn-outdated-shares=false
395 $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-warn-outdated-shares=false
396 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
396 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
397 |
397 |
398 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
398 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
399
399
400
400
401 $ hg log -GT "{node}: {desc}\n" -R ../nss-share
401 $ hg log -GT "{node}: {desc}\n" -R ../nss-share
402 warning: source repository supports share-safe functionality. Reshare to upgrade.
402 warning: source repository supports share-safe functionality. Reshare to upgrade.
403 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
403 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
404 |
404 |
405 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
405 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
406
406
407
407
408
408
409 Create a safe share from upgrade one
409 Create a safe share from upgrade one
410
410
411 $ cd ..
411 $ cd ..
412 $ hg share non-share-safe ss-share
412 $ hg share non-share-safe ss-share
413 updating working directory
413 updating working directory
414 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
414 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
415 $ cd ss-share
415 $ cd ss-share
416 $ hg log -GT "{node}: {desc}\n"
416 $ hg log -GT "{node}: {desc}\n"
417 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
417 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
418 |
418 |
419 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
419 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
420
420
421 $ cd ../non-share-safe
421 $ cd ../non-share-safe
422
422
423 Test that downgrading works too
423 Test that downgrading works too
424
424
425 $ cat >> $HGRCPATH <<EOF
425 $ cat >> $HGRCPATH <<EOF
426 > [extensions]
426 > [extensions]
427 > share =
427 > share =
428 > [format]
428 > [format]
429 > exp-share-safe = False
429 > exp-share-safe = False
430 > EOF
430 > EOF
431
431
432 $ hg debugupgraderepo -q
432 $ hg debugupgraderepo -q
433 requirements
433 requirements
434 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
434 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
435 removed: exp-sharesafe
435 removed: exp-sharesafe
436
436
437 processed revlogs:
437 processed revlogs:
438 - all-filelogs
438 - all-filelogs
439 - changelog
439 - changelog
440 - manifest
440 - manifest
441
441
442 $ hg debugupgraderepo -q --run
442 $ hg debugupgraderepo -q --run
443 upgrade will perform the following actions:
443 upgrade will perform the following actions:
444
444
445 requirements
445 requirements
446 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
446 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
447 removed: exp-sharesafe
447 removed: exp-sharesafe
448
448
449 processed revlogs:
449 processed revlogs:
450 - all-filelogs
450 - all-filelogs
451 - changelog
451 - changelog
452 - manifest
452 - manifest
453
453
454 repository downgraded to not use share safe mode, existing shares will not work and needs to be reshared.
454 repository downgraded to not use share safe mode, existing shares will not work and needs to be reshared.
455
455
456 $ hg debugrequirements
456 $ hg debugrequirements
457 dotencode
457 dotencode
458 fncache
458 fncache
459 generaldelta
459 generaldelta
460 revlogv1
460 revlogv1
461 sparserevlog
461 sparserevlog
462 store
462 store
463
463
464 $ cat .hg/requires
464 $ cat .hg/requires
465 dotencode
465 dotencode
466 fncache
466 fncache
467 generaldelta
467 generaldelta
468 revlogv1
468 revlogv1
469 sparserevlog
469 sparserevlog
470 store
470 store
471
471
472 $ test -f .hg/store/requires
472 $ test -f .hg/store/requires
473 [1]
473 [1]
474
474
475 $ hg log -GT "{node}: {desc}\n"
475 $ hg log -GT "{node}: {desc}\n"
476 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
476 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
477 |
477 |
478 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
478 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
479
479
480
480
481 Make sure existing shares still works
481 Make sure existing shares still works
482
482
483 $ hg log -GT "{node}: {desc}\n" -R ../nss-share
483 $ hg log -GT "{node}: {desc}\n" -R ../nss-share
484 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
484 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
485 |
485 |
486 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
486 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
487
487
488
488
489 $ hg log -GT "{node}: {desc}\n" -R ../ss-share
489 $ hg log -GT "{node}: {desc}\n" -R ../ss-share
490 abort: share source does not support exp-sharesafe requirement
490 abort: share source does not support exp-sharesafe requirement
491 [255]
491 [255]
492
492
493 Testing automatic downgrade of shares when config is set
493 Testing automatic downgrade of shares when config is set
494
494
495 $ touch ../ss-share/.hg/wlock
495 $ touch ../ss-share/.hg/wlock
496 $ hg log -GT "{node}: {desc}\n" -R ../ss-share --config experimental.sharesafe-auto-downgrade-shares=true
496 $ hg log -GT "{node}: {desc}\n" -R ../ss-share --config experimental.sharesafe-auto-downgrade-shares=true
497 abort: failed to downgrade share, got error: Lock held
497 abort: failed to downgrade share, got error: Lock held
498 [255]
498 [255]
499 $ rm ../ss-share/.hg/wlock
499 $ rm ../ss-share/.hg/wlock
500
500
501 $ hg log -GT "{node}: {desc}\n" -R ../ss-share --config experimental.sharesafe-auto-downgrade-shares=true
501 $ hg log -GT "{node}: {desc}\n" -R ../ss-share --config experimental.sharesafe-auto-downgrade-shares=true
502 repository downgraded to not use share-safe mode
502 repository downgraded to not use share-safe mode
503 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
503 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
504 |
504 |
505 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
505 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
506
506
507
507
508 $ hg log -GT "{node}: {desc}\n" -R ../ss-share
508 $ hg log -GT "{node}: {desc}\n" -R ../ss-share
509 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
509 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
510 |
510 |
511 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
511 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
512
512
513
513
514
514
515 Testing automatic upgrade of shares when config is set
515 Testing automatic upgrade of shares when config is set
516
516
517 $ hg debugupgraderepo -q --run --config format.exp-share-safe=True
517 $ hg debugupgraderepo -q --run --config format.exp-share-safe=True
518 upgrade will perform the following actions:
518 upgrade will perform the following actions:
519
519
520 requirements
520 requirements
521 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
521 preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store
522 added: exp-sharesafe
522 added: exp-sharesafe
523
523
524 processed revlogs:
524 processed revlogs:
525 - all-filelogs
525 - all-filelogs
526 - changelog
526 - changelog
527 - manifest
527 - manifest
528
528
529 repository upgraded to share safe mode, existing shares will still work in old non-safe mode. Re-share existing shares to use them in safe mode New shares will be created in safe mode.
529 repository upgraded to share safe mode, existing shares will still work in old non-safe mode. Re-share existing shares to use them in safe mode New shares will be created in safe mode.
530 $ hg debugrequirements
530 $ hg debugrequirements
531 dotencode
531 dotencode
532 exp-sharesafe
532 exp-sharesafe
533 fncache
533 fncache
534 generaldelta
534 generaldelta
535 revlogv1
535 revlogv1
536 sparserevlog
536 sparserevlog
537 store
537 store
538 $ hg log -GT "{node}: {desc}\n" -R ../nss-share
538 $ hg log -GT "{node}: {desc}\n" -R ../nss-share
539 warning: source repository supports share-safe functionality. Reshare to upgrade.
539 warning: source repository supports share-safe functionality. Reshare to upgrade.
540 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
540 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
541 |
541 |
542 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
542 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
543
543
544
544
545 Check that if lock is taken, upgrade fails but read operation are successful
545 Check that if lock is taken, upgrade fails but read operation are successful
546 $ touch ../nss-share/.hg/wlock
546 $ touch ../nss-share/.hg/wlock
547 $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-auto-upgrade-shares=true
547 $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-auto-upgrade-shares=true
548 failed to upgrade share, got error: Lock held
548 failed to upgrade share, got error: Lock held
549 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
549 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
550 |
550 |
551 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
551 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
552
552
553
553
554 $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-auto-upgrade-shares=true --config experimental.sharesafe-warn-outdated-shares=false
554 $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-auto-upgrade-shares=true --config experimental.sharesafe-warn-outdated-shares=false
555 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
555 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
556 |
556 |
557 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
557 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
558
558
559
559
560 $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-auto-upgrade-shares=true --config experimental.sharesafe-auto-upgrade-fail-error=true
561 abort: failed to upgrade share, got error: Lock held
562 [255]
563
560 $ rm ../nss-share/.hg/wlock
564 $ rm ../nss-share/.hg/wlock
561 $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-auto-upgrade-shares=true
565 $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-auto-upgrade-shares=true
562 repository upgraded to use share-safe mode
566 repository upgraded to use share-safe mode
563 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
567 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
564 |
568 |
565 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
569 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
566
570
567
571
568 Test that unshare works
572 Test that unshare works
569
573
570 $ hg unshare -R ../nss-share
574 $ hg unshare -R ../nss-share
571 $ hg log -GT "{node}: {desc}\n" -R ../nss-share
575 $ hg log -GT "{node}: {desc}\n" -R ../nss-share
572 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
576 @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar
573 |
577 |
574 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
578 o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo
575
579
General Comments 0
You need to be logged in to leave comments. Login now