##// END OF EJS Templates
auto-upgrade: add an option to silence the dirstate-v2 message...
marmoute -
r50236:b38f5063 default
parent child Browse files
Show More
@@ -1,2815 +1,2821 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
8
9 import functools
9 import functools
10 import re
10 import re
11
11
12 from . import (
12 from . import (
13 encoding,
13 encoding,
14 error,
14 error,
15 )
15 )
16
16
17
17
18 def loadconfigtable(ui, extname, configtable):
18 def loadconfigtable(ui, extname, configtable):
19 """update config item known to the ui with the extension ones"""
19 """update config item known to the ui with the extension ones"""
20 for section, items in sorted(configtable.items()):
20 for section, items in sorted(configtable.items()):
21 knownitems = ui._knownconfig.setdefault(section, itemregister())
21 knownitems = ui._knownconfig.setdefault(section, itemregister())
22 knownkeys = set(knownitems)
22 knownkeys = set(knownitems)
23 newkeys = set(items)
23 newkeys = set(items)
24 for key in sorted(knownkeys & newkeys):
24 for key in sorted(knownkeys & newkeys):
25 msg = b"extension '%s' overwrite config item '%s.%s'"
25 msg = b"extension '%s' overwrite config item '%s.%s'"
26 msg %= (extname, section, key)
26 msg %= (extname, section, key)
27 ui.develwarn(msg, config=b'warn-config')
27 ui.develwarn(msg, config=b'warn-config')
28
28
29 knownitems.update(items)
29 knownitems.update(items)
30
30
31
31
32 class configitem:
32 class configitem:
33 """represent a known config item
33 """represent a known config item
34
34
35 :section: the official config section where to find this item,
35 :section: the official config section where to find this item,
36 :name: the official name within the section,
36 :name: the official name within the section,
37 :default: default value for this item,
37 :default: default value for this item,
38 :alias: optional list of tuples as alternatives,
38 :alias: optional list of tuples as alternatives,
39 :generic: this is a generic definition, match name using regular expression.
39 :generic: this is a generic definition, match name using regular expression.
40 """
40 """
41
41
42 def __init__(
42 def __init__(
43 self,
43 self,
44 section,
44 section,
45 name,
45 name,
46 default=None,
46 default=None,
47 alias=(),
47 alias=(),
48 generic=False,
48 generic=False,
49 priority=0,
49 priority=0,
50 experimental=False,
50 experimental=False,
51 ):
51 ):
52 self.section = section
52 self.section = section
53 self.name = name
53 self.name = name
54 self.default = default
54 self.default = default
55 self.alias = list(alias)
55 self.alias = list(alias)
56 self.generic = generic
56 self.generic = generic
57 self.priority = priority
57 self.priority = priority
58 self.experimental = experimental
58 self.experimental = experimental
59 self._re = None
59 self._re = None
60 if generic:
60 if generic:
61 self._re = re.compile(self.name)
61 self._re = re.compile(self.name)
62
62
63
63
64 class itemregister(dict):
64 class itemregister(dict):
65 """A specialized dictionary that can handle wild-card selection"""
65 """A specialized dictionary that can handle wild-card selection"""
66
66
67 def __init__(self):
67 def __init__(self):
68 super(itemregister, self).__init__()
68 super(itemregister, self).__init__()
69 self._generics = set()
69 self._generics = set()
70
70
71 def update(self, other):
71 def update(self, other):
72 super(itemregister, self).update(other)
72 super(itemregister, self).update(other)
73 self._generics.update(other._generics)
73 self._generics.update(other._generics)
74
74
75 def __setitem__(self, key, item):
75 def __setitem__(self, key, item):
76 super(itemregister, self).__setitem__(key, item)
76 super(itemregister, self).__setitem__(key, item)
77 if item.generic:
77 if item.generic:
78 self._generics.add(item)
78 self._generics.add(item)
79
79
80 def get(self, key):
80 def get(self, key):
81 baseitem = super(itemregister, self).get(key)
81 baseitem = super(itemregister, self).get(key)
82 if baseitem is not None and not baseitem.generic:
82 if baseitem is not None and not baseitem.generic:
83 return baseitem
83 return baseitem
84
84
85 # search for a matching generic item
85 # search for a matching generic item
86 generics = sorted(self._generics, key=(lambda x: (x.priority, x.name)))
86 generics = sorted(self._generics, key=(lambda x: (x.priority, x.name)))
87 for item in generics:
87 for item in generics:
88 # we use 'match' instead of 'search' to make the matching simpler
88 # we use 'match' instead of 'search' to make the matching simpler
89 # for people unfamiliar with regular expression. Having the match
89 # for people unfamiliar with regular expression. Having the match
90 # rooted to the start of the string will produce less surprising
90 # rooted to the start of the string will produce less surprising
91 # result for user writing simple regex for sub-attribute.
91 # result for user writing simple regex for sub-attribute.
92 #
92 #
93 # For example using "color\..*" match produces an unsurprising
93 # For example using "color\..*" match produces an unsurprising
94 # result, while using search could suddenly match apparently
94 # result, while using search could suddenly match apparently
95 # unrelated configuration that happens to contains "color."
95 # unrelated configuration that happens to contains "color."
96 # anywhere. This is a tradeoff where we favor requiring ".*" on
96 # anywhere. This is a tradeoff where we favor requiring ".*" on
97 # some match to avoid the need to prefix most pattern with "^".
97 # some match to avoid the need to prefix most pattern with "^".
98 # The "^" seems more error prone.
98 # The "^" seems more error prone.
99 if item._re.match(key):
99 if item._re.match(key):
100 return item
100 return item
101
101
102 return None
102 return None
103
103
104
104
105 coreitems = {}
105 coreitems = {}
106
106
107
107
108 def _register(configtable, *args, **kwargs):
108 def _register(configtable, *args, **kwargs):
109 item = configitem(*args, **kwargs)
109 item = configitem(*args, **kwargs)
110 section = configtable.setdefault(item.section, itemregister())
110 section = configtable.setdefault(item.section, itemregister())
111 if item.name in section:
111 if item.name in section:
112 msg = b"duplicated config item registration for '%s.%s'"
112 msg = b"duplicated config item registration for '%s.%s'"
113 raise error.ProgrammingError(msg % (item.section, item.name))
113 raise error.ProgrammingError(msg % (item.section, item.name))
114 section[item.name] = item
114 section[item.name] = item
115
115
116
116
117 # special value for case where the default is derived from other values
117 # special value for case where the default is derived from other values
118 dynamicdefault = object()
118 dynamicdefault = object()
119
119
120 # Registering actual config items
120 # Registering actual config items
121
121
122
122
123 def getitemregister(configtable):
123 def getitemregister(configtable):
124 f = functools.partial(_register, configtable)
124 f = functools.partial(_register, configtable)
125 # export pseudo enum as configitem.*
125 # export pseudo enum as configitem.*
126 f.dynamicdefault = dynamicdefault
126 f.dynamicdefault = dynamicdefault
127 return f
127 return f
128
128
129
129
130 coreconfigitem = getitemregister(coreitems)
130 coreconfigitem = getitemregister(coreitems)
131
131
132
132
133 def _registerdiffopts(section, configprefix=b''):
133 def _registerdiffopts(section, configprefix=b''):
134 coreconfigitem(
134 coreconfigitem(
135 section,
135 section,
136 configprefix + b'nodates',
136 configprefix + b'nodates',
137 default=False,
137 default=False,
138 )
138 )
139 coreconfigitem(
139 coreconfigitem(
140 section,
140 section,
141 configprefix + b'showfunc',
141 configprefix + b'showfunc',
142 default=False,
142 default=False,
143 )
143 )
144 coreconfigitem(
144 coreconfigitem(
145 section,
145 section,
146 configprefix + b'unified',
146 configprefix + b'unified',
147 default=None,
147 default=None,
148 )
148 )
149 coreconfigitem(
149 coreconfigitem(
150 section,
150 section,
151 configprefix + b'git',
151 configprefix + b'git',
152 default=False,
152 default=False,
153 )
153 )
154 coreconfigitem(
154 coreconfigitem(
155 section,
155 section,
156 configprefix + b'ignorews',
156 configprefix + b'ignorews',
157 default=False,
157 default=False,
158 )
158 )
159 coreconfigitem(
159 coreconfigitem(
160 section,
160 section,
161 configprefix + b'ignorewsamount',
161 configprefix + b'ignorewsamount',
162 default=False,
162 default=False,
163 )
163 )
164 coreconfigitem(
164 coreconfigitem(
165 section,
165 section,
166 configprefix + b'ignoreblanklines',
166 configprefix + b'ignoreblanklines',
167 default=False,
167 default=False,
168 )
168 )
169 coreconfigitem(
169 coreconfigitem(
170 section,
170 section,
171 configprefix + b'ignorewseol',
171 configprefix + b'ignorewseol',
172 default=False,
172 default=False,
173 )
173 )
174 coreconfigitem(
174 coreconfigitem(
175 section,
175 section,
176 configprefix + b'nobinary',
176 configprefix + b'nobinary',
177 default=False,
177 default=False,
178 )
178 )
179 coreconfigitem(
179 coreconfigitem(
180 section,
180 section,
181 configprefix + b'noprefix',
181 configprefix + b'noprefix',
182 default=False,
182 default=False,
183 )
183 )
184 coreconfigitem(
184 coreconfigitem(
185 section,
185 section,
186 configprefix + b'word-diff',
186 configprefix + b'word-diff',
187 default=False,
187 default=False,
188 )
188 )
189
189
190
190
191 coreconfigitem(
191 coreconfigitem(
192 b'alias',
192 b'alias',
193 b'.*',
193 b'.*',
194 default=dynamicdefault,
194 default=dynamicdefault,
195 generic=True,
195 generic=True,
196 )
196 )
197 coreconfigitem(
197 coreconfigitem(
198 b'auth',
198 b'auth',
199 b'cookiefile',
199 b'cookiefile',
200 default=None,
200 default=None,
201 )
201 )
202 _registerdiffopts(section=b'annotate')
202 _registerdiffopts(section=b'annotate')
203 # bookmarks.pushing: internal hack for discovery
203 # bookmarks.pushing: internal hack for discovery
204 coreconfigitem(
204 coreconfigitem(
205 b'bookmarks',
205 b'bookmarks',
206 b'pushing',
206 b'pushing',
207 default=list,
207 default=list,
208 )
208 )
209 # bundle.mainreporoot: internal hack for bundlerepo
209 # bundle.mainreporoot: internal hack for bundlerepo
210 coreconfigitem(
210 coreconfigitem(
211 b'bundle',
211 b'bundle',
212 b'mainreporoot',
212 b'mainreporoot',
213 default=b'',
213 default=b'',
214 )
214 )
215 coreconfigitem(
215 coreconfigitem(
216 b'censor',
216 b'censor',
217 b'policy',
217 b'policy',
218 default=b'abort',
218 default=b'abort',
219 experimental=True,
219 experimental=True,
220 )
220 )
221 coreconfigitem(
221 coreconfigitem(
222 b'chgserver',
222 b'chgserver',
223 b'idletimeout',
223 b'idletimeout',
224 default=3600,
224 default=3600,
225 )
225 )
226 coreconfigitem(
226 coreconfigitem(
227 b'chgserver',
227 b'chgserver',
228 b'skiphash',
228 b'skiphash',
229 default=False,
229 default=False,
230 )
230 )
231 coreconfigitem(
231 coreconfigitem(
232 b'cmdserver',
232 b'cmdserver',
233 b'log',
233 b'log',
234 default=None,
234 default=None,
235 )
235 )
236 coreconfigitem(
236 coreconfigitem(
237 b'cmdserver',
237 b'cmdserver',
238 b'max-log-files',
238 b'max-log-files',
239 default=7,
239 default=7,
240 )
240 )
241 coreconfigitem(
241 coreconfigitem(
242 b'cmdserver',
242 b'cmdserver',
243 b'max-log-size',
243 b'max-log-size',
244 default=b'1 MB',
244 default=b'1 MB',
245 )
245 )
246 coreconfigitem(
246 coreconfigitem(
247 b'cmdserver',
247 b'cmdserver',
248 b'max-repo-cache',
248 b'max-repo-cache',
249 default=0,
249 default=0,
250 experimental=True,
250 experimental=True,
251 )
251 )
252 coreconfigitem(
252 coreconfigitem(
253 b'cmdserver',
253 b'cmdserver',
254 b'message-encodings',
254 b'message-encodings',
255 default=list,
255 default=list,
256 )
256 )
257 coreconfigitem(
257 coreconfigitem(
258 b'cmdserver',
258 b'cmdserver',
259 b'track-log',
259 b'track-log',
260 default=lambda: [b'chgserver', b'cmdserver', b'repocache'],
260 default=lambda: [b'chgserver', b'cmdserver', b'repocache'],
261 )
261 )
262 coreconfigitem(
262 coreconfigitem(
263 b'cmdserver',
263 b'cmdserver',
264 b'shutdown-on-interrupt',
264 b'shutdown-on-interrupt',
265 default=True,
265 default=True,
266 )
266 )
267 coreconfigitem(
267 coreconfigitem(
268 b'color',
268 b'color',
269 b'.*',
269 b'.*',
270 default=None,
270 default=None,
271 generic=True,
271 generic=True,
272 )
272 )
273 coreconfigitem(
273 coreconfigitem(
274 b'color',
274 b'color',
275 b'mode',
275 b'mode',
276 default=b'auto',
276 default=b'auto',
277 )
277 )
278 coreconfigitem(
278 coreconfigitem(
279 b'color',
279 b'color',
280 b'pagermode',
280 b'pagermode',
281 default=dynamicdefault,
281 default=dynamicdefault,
282 )
282 )
283 coreconfigitem(
283 coreconfigitem(
284 b'command-templates',
284 b'command-templates',
285 b'graphnode',
285 b'graphnode',
286 default=None,
286 default=None,
287 alias=[(b'ui', b'graphnodetemplate')],
287 alias=[(b'ui', b'graphnodetemplate')],
288 )
288 )
289 coreconfigitem(
289 coreconfigitem(
290 b'command-templates',
290 b'command-templates',
291 b'log',
291 b'log',
292 default=None,
292 default=None,
293 alias=[(b'ui', b'logtemplate')],
293 alias=[(b'ui', b'logtemplate')],
294 )
294 )
295 coreconfigitem(
295 coreconfigitem(
296 b'command-templates',
296 b'command-templates',
297 b'mergemarker',
297 b'mergemarker',
298 default=(
298 default=(
299 b'{node|short} '
299 b'{node|short} '
300 b'{ifeq(tags, "tip", "", '
300 b'{ifeq(tags, "tip", "", '
301 b'ifeq(tags, "", "", "{tags} "))}'
301 b'ifeq(tags, "", "", "{tags} "))}'
302 b'{if(bookmarks, "{bookmarks} ")}'
302 b'{if(bookmarks, "{bookmarks} ")}'
303 b'{ifeq(branch, "default", "", "{branch} ")}'
303 b'{ifeq(branch, "default", "", "{branch} ")}'
304 b'- {author|user}: {desc|firstline}'
304 b'- {author|user}: {desc|firstline}'
305 ),
305 ),
306 alias=[(b'ui', b'mergemarkertemplate')],
306 alias=[(b'ui', b'mergemarkertemplate')],
307 )
307 )
308 coreconfigitem(
308 coreconfigitem(
309 b'command-templates',
309 b'command-templates',
310 b'pre-merge-tool-output',
310 b'pre-merge-tool-output',
311 default=None,
311 default=None,
312 alias=[(b'ui', b'pre-merge-tool-output-template')],
312 alias=[(b'ui', b'pre-merge-tool-output-template')],
313 )
313 )
314 coreconfigitem(
314 coreconfigitem(
315 b'command-templates',
315 b'command-templates',
316 b'oneline-summary',
316 b'oneline-summary',
317 default=None,
317 default=None,
318 )
318 )
319 coreconfigitem(
319 coreconfigitem(
320 b'command-templates',
320 b'command-templates',
321 b'oneline-summary.*',
321 b'oneline-summary.*',
322 default=dynamicdefault,
322 default=dynamicdefault,
323 generic=True,
323 generic=True,
324 )
324 )
325 _registerdiffopts(section=b'commands', configprefix=b'commit.interactive.')
325 _registerdiffopts(section=b'commands', configprefix=b'commit.interactive.')
326 coreconfigitem(
326 coreconfigitem(
327 b'commands',
327 b'commands',
328 b'commit.post-status',
328 b'commit.post-status',
329 default=False,
329 default=False,
330 )
330 )
331 coreconfigitem(
331 coreconfigitem(
332 b'commands',
332 b'commands',
333 b'grep.all-files',
333 b'grep.all-files',
334 default=False,
334 default=False,
335 experimental=True,
335 experimental=True,
336 )
336 )
337 coreconfigitem(
337 coreconfigitem(
338 b'commands',
338 b'commands',
339 b'merge.require-rev',
339 b'merge.require-rev',
340 default=False,
340 default=False,
341 )
341 )
342 coreconfigitem(
342 coreconfigitem(
343 b'commands',
343 b'commands',
344 b'push.require-revs',
344 b'push.require-revs',
345 default=False,
345 default=False,
346 )
346 )
347 coreconfigitem(
347 coreconfigitem(
348 b'commands',
348 b'commands',
349 b'resolve.confirm',
349 b'resolve.confirm',
350 default=False,
350 default=False,
351 )
351 )
352 coreconfigitem(
352 coreconfigitem(
353 b'commands',
353 b'commands',
354 b'resolve.explicit-re-merge',
354 b'resolve.explicit-re-merge',
355 default=False,
355 default=False,
356 )
356 )
357 coreconfigitem(
357 coreconfigitem(
358 b'commands',
358 b'commands',
359 b'resolve.mark-check',
359 b'resolve.mark-check',
360 default=b'none',
360 default=b'none',
361 )
361 )
362 _registerdiffopts(section=b'commands', configprefix=b'revert.interactive.')
362 _registerdiffopts(section=b'commands', configprefix=b'revert.interactive.')
363 coreconfigitem(
363 coreconfigitem(
364 b'commands',
364 b'commands',
365 b'show.aliasprefix',
365 b'show.aliasprefix',
366 default=list,
366 default=list,
367 )
367 )
368 coreconfigitem(
368 coreconfigitem(
369 b'commands',
369 b'commands',
370 b'status.relative',
370 b'status.relative',
371 default=False,
371 default=False,
372 )
372 )
373 coreconfigitem(
373 coreconfigitem(
374 b'commands',
374 b'commands',
375 b'status.skipstates',
375 b'status.skipstates',
376 default=[],
376 default=[],
377 experimental=True,
377 experimental=True,
378 )
378 )
379 coreconfigitem(
379 coreconfigitem(
380 b'commands',
380 b'commands',
381 b'status.terse',
381 b'status.terse',
382 default=b'',
382 default=b'',
383 )
383 )
384 coreconfigitem(
384 coreconfigitem(
385 b'commands',
385 b'commands',
386 b'status.verbose',
386 b'status.verbose',
387 default=False,
387 default=False,
388 )
388 )
389 coreconfigitem(
389 coreconfigitem(
390 b'commands',
390 b'commands',
391 b'update.check',
391 b'update.check',
392 default=None,
392 default=None,
393 )
393 )
394 coreconfigitem(
394 coreconfigitem(
395 b'commands',
395 b'commands',
396 b'update.requiredest',
396 b'update.requiredest',
397 default=False,
397 default=False,
398 )
398 )
399 coreconfigitem(
399 coreconfigitem(
400 b'committemplate',
400 b'committemplate',
401 b'.*',
401 b'.*',
402 default=None,
402 default=None,
403 generic=True,
403 generic=True,
404 )
404 )
405 coreconfigitem(
405 coreconfigitem(
406 b'convert',
406 b'convert',
407 b'bzr.saverev',
407 b'bzr.saverev',
408 default=True,
408 default=True,
409 )
409 )
410 coreconfigitem(
410 coreconfigitem(
411 b'convert',
411 b'convert',
412 b'cvsps.cache',
412 b'cvsps.cache',
413 default=True,
413 default=True,
414 )
414 )
415 coreconfigitem(
415 coreconfigitem(
416 b'convert',
416 b'convert',
417 b'cvsps.fuzz',
417 b'cvsps.fuzz',
418 default=60,
418 default=60,
419 )
419 )
420 coreconfigitem(
420 coreconfigitem(
421 b'convert',
421 b'convert',
422 b'cvsps.logencoding',
422 b'cvsps.logencoding',
423 default=None,
423 default=None,
424 )
424 )
425 coreconfigitem(
425 coreconfigitem(
426 b'convert',
426 b'convert',
427 b'cvsps.mergefrom',
427 b'cvsps.mergefrom',
428 default=None,
428 default=None,
429 )
429 )
430 coreconfigitem(
430 coreconfigitem(
431 b'convert',
431 b'convert',
432 b'cvsps.mergeto',
432 b'cvsps.mergeto',
433 default=None,
433 default=None,
434 )
434 )
435 coreconfigitem(
435 coreconfigitem(
436 b'convert',
436 b'convert',
437 b'git.committeractions',
437 b'git.committeractions',
438 default=lambda: [b'messagedifferent'],
438 default=lambda: [b'messagedifferent'],
439 )
439 )
440 coreconfigitem(
440 coreconfigitem(
441 b'convert',
441 b'convert',
442 b'git.extrakeys',
442 b'git.extrakeys',
443 default=list,
443 default=list,
444 )
444 )
445 coreconfigitem(
445 coreconfigitem(
446 b'convert',
446 b'convert',
447 b'git.findcopiesharder',
447 b'git.findcopiesharder',
448 default=False,
448 default=False,
449 )
449 )
450 coreconfigitem(
450 coreconfigitem(
451 b'convert',
451 b'convert',
452 b'git.remoteprefix',
452 b'git.remoteprefix',
453 default=b'remote',
453 default=b'remote',
454 )
454 )
455 coreconfigitem(
455 coreconfigitem(
456 b'convert',
456 b'convert',
457 b'git.renamelimit',
457 b'git.renamelimit',
458 default=400,
458 default=400,
459 )
459 )
460 coreconfigitem(
460 coreconfigitem(
461 b'convert',
461 b'convert',
462 b'git.saverev',
462 b'git.saverev',
463 default=True,
463 default=True,
464 )
464 )
465 coreconfigitem(
465 coreconfigitem(
466 b'convert',
466 b'convert',
467 b'git.similarity',
467 b'git.similarity',
468 default=50,
468 default=50,
469 )
469 )
470 coreconfigitem(
470 coreconfigitem(
471 b'convert',
471 b'convert',
472 b'git.skipsubmodules',
472 b'git.skipsubmodules',
473 default=False,
473 default=False,
474 )
474 )
475 coreconfigitem(
475 coreconfigitem(
476 b'convert',
476 b'convert',
477 b'hg.clonebranches',
477 b'hg.clonebranches',
478 default=False,
478 default=False,
479 )
479 )
480 coreconfigitem(
480 coreconfigitem(
481 b'convert',
481 b'convert',
482 b'hg.ignoreerrors',
482 b'hg.ignoreerrors',
483 default=False,
483 default=False,
484 )
484 )
485 coreconfigitem(
485 coreconfigitem(
486 b'convert',
486 b'convert',
487 b'hg.preserve-hash',
487 b'hg.preserve-hash',
488 default=False,
488 default=False,
489 )
489 )
490 coreconfigitem(
490 coreconfigitem(
491 b'convert',
491 b'convert',
492 b'hg.revs',
492 b'hg.revs',
493 default=None,
493 default=None,
494 )
494 )
495 coreconfigitem(
495 coreconfigitem(
496 b'convert',
496 b'convert',
497 b'hg.saverev',
497 b'hg.saverev',
498 default=False,
498 default=False,
499 )
499 )
500 coreconfigitem(
500 coreconfigitem(
501 b'convert',
501 b'convert',
502 b'hg.sourcename',
502 b'hg.sourcename',
503 default=None,
503 default=None,
504 )
504 )
505 coreconfigitem(
505 coreconfigitem(
506 b'convert',
506 b'convert',
507 b'hg.startrev',
507 b'hg.startrev',
508 default=None,
508 default=None,
509 )
509 )
510 coreconfigitem(
510 coreconfigitem(
511 b'convert',
511 b'convert',
512 b'hg.tagsbranch',
512 b'hg.tagsbranch',
513 default=b'default',
513 default=b'default',
514 )
514 )
515 coreconfigitem(
515 coreconfigitem(
516 b'convert',
516 b'convert',
517 b'hg.usebranchnames',
517 b'hg.usebranchnames',
518 default=True,
518 default=True,
519 )
519 )
520 coreconfigitem(
520 coreconfigitem(
521 b'convert',
521 b'convert',
522 b'ignoreancestorcheck',
522 b'ignoreancestorcheck',
523 default=False,
523 default=False,
524 experimental=True,
524 experimental=True,
525 )
525 )
526 coreconfigitem(
526 coreconfigitem(
527 b'convert',
527 b'convert',
528 b'localtimezone',
528 b'localtimezone',
529 default=False,
529 default=False,
530 )
530 )
531 coreconfigitem(
531 coreconfigitem(
532 b'convert',
532 b'convert',
533 b'p4.encoding',
533 b'p4.encoding',
534 default=dynamicdefault,
534 default=dynamicdefault,
535 )
535 )
536 coreconfigitem(
536 coreconfigitem(
537 b'convert',
537 b'convert',
538 b'p4.startrev',
538 b'p4.startrev',
539 default=0,
539 default=0,
540 )
540 )
541 coreconfigitem(
541 coreconfigitem(
542 b'convert',
542 b'convert',
543 b'skiptags',
543 b'skiptags',
544 default=False,
544 default=False,
545 )
545 )
546 coreconfigitem(
546 coreconfigitem(
547 b'convert',
547 b'convert',
548 b'svn.debugsvnlog',
548 b'svn.debugsvnlog',
549 default=True,
549 default=True,
550 )
550 )
551 coreconfigitem(
551 coreconfigitem(
552 b'convert',
552 b'convert',
553 b'svn.trunk',
553 b'svn.trunk',
554 default=None,
554 default=None,
555 )
555 )
556 coreconfigitem(
556 coreconfigitem(
557 b'convert',
557 b'convert',
558 b'svn.tags',
558 b'svn.tags',
559 default=None,
559 default=None,
560 )
560 )
561 coreconfigitem(
561 coreconfigitem(
562 b'convert',
562 b'convert',
563 b'svn.branches',
563 b'svn.branches',
564 default=None,
564 default=None,
565 )
565 )
566 coreconfigitem(
566 coreconfigitem(
567 b'convert',
567 b'convert',
568 b'svn.startrev',
568 b'svn.startrev',
569 default=0,
569 default=0,
570 )
570 )
571 coreconfigitem(
571 coreconfigitem(
572 b'convert',
572 b'convert',
573 b'svn.dangerous-set-commit-dates',
573 b'svn.dangerous-set-commit-dates',
574 default=False,
574 default=False,
575 )
575 )
576 coreconfigitem(
576 coreconfigitem(
577 b'debug',
577 b'debug',
578 b'dirstate.delaywrite',
578 b'dirstate.delaywrite',
579 default=0,
579 default=0,
580 )
580 )
581 coreconfigitem(
581 coreconfigitem(
582 b'debug',
582 b'debug',
583 b'revlog.verifyposition.changelog',
583 b'revlog.verifyposition.changelog',
584 default=b'',
584 default=b'',
585 )
585 )
586 coreconfigitem(
586 coreconfigitem(
587 b'debug',
587 b'debug',
588 b'revlog.debug-delta',
588 b'revlog.debug-delta',
589 default=False,
589 default=False,
590 )
590 )
591 coreconfigitem(
591 coreconfigitem(
592 b'defaults',
592 b'defaults',
593 b'.*',
593 b'.*',
594 default=None,
594 default=None,
595 generic=True,
595 generic=True,
596 )
596 )
597 coreconfigitem(
597 coreconfigitem(
598 b'devel',
598 b'devel',
599 b'all-warnings',
599 b'all-warnings',
600 default=False,
600 default=False,
601 )
601 )
602 coreconfigitem(
602 coreconfigitem(
603 b'devel',
603 b'devel',
604 b'bundle2.debug',
604 b'bundle2.debug',
605 default=False,
605 default=False,
606 )
606 )
607 coreconfigitem(
607 coreconfigitem(
608 b'devel',
608 b'devel',
609 b'bundle.delta',
609 b'bundle.delta',
610 default=b'',
610 default=b'',
611 )
611 )
612 coreconfigitem(
612 coreconfigitem(
613 b'devel',
613 b'devel',
614 b'cache-vfs',
614 b'cache-vfs',
615 default=None,
615 default=None,
616 )
616 )
617 coreconfigitem(
617 coreconfigitem(
618 b'devel',
618 b'devel',
619 b'check-locks',
619 b'check-locks',
620 default=False,
620 default=False,
621 )
621 )
622 coreconfigitem(
622 coreconfigitem(
623 b'devel',
623 b'devel',
624 b'check-relroot',
624 b'check-relroot',
625 default=False,
625 default=False,
626 )
626 )
627 # Track copy information for all file, not just "added" one (very slow)
627 # Track copy information for all file, not just "added" one (very slow)
628 coreconfigitem(
628 coreconfigitem(
629 b'devel',
629 b'devel',
630 b'copy-tracing.trace-all-files',
630 b'copy-tracing.trace-all-files',
631 default=False,
631 default=False,
632 )
632 )
633 coreconfigitem(
633 coreconfigitem(
634 b'devel',
634 b'devel',
635 b'default-date',
635 b'default-date',
636 default=None,
636 default=None,
637 )
637 )
638 coreconfigitem(
638 coreconfigitem(
639 b'devel',
639 b'devel',
640 b'deprec-warn',
640 b'deprec-warn',
641 default=False,
641 default=False,
642 )
642 )
643 coreconfigitem(
643 coreconfigitem(
644 b'devel',
644 b'devel',
645 b'disableloaddefaultcerts',
645 b'disableloaddefaultcerts',
646 default=False,
646 default=False,
647 )
647 )
648 coreconfigitem(
648 coreconfigitem(
649 b'devel',
649 b'devel',
650 b'warn-empty-changegroup',
650 b'warn-empty-changegroup',
651 default=False,
651 default=False,
652 )
652 )
653 coreconfigitem(
653 coreconfigitem(
654 b'devel',
654 b'devel',
655 b'legacy.exchange',
655 b'legacy.exchange',
656 default=list,
656 default=list,
657 )
657 )
658 # When True, revlogs use a special reference version of the nodemap, that is not
658 # When True, revlogs use a special reference version of the nodemap, that is not
659 # performant but is "known" to behave properly.
659 # performant but is "known" to behave properly.
660 coreconfigitem(
660 coreconfigitem(
661 b'devel',
661 b'devel',
662 b'persistent-nodemap',
662 b'persistent-nodemap',
663 default=False,
663 default=False,
664 )
664 )
665 coreconfigitem(
665 coreconfigitem(
666 b'devel',
666 b'devel',
667 b'servercafile',
667 b'servercafile',
668 default=b'',
668 default=b'',
669 )
669 )
670 coreconfigitem(
670 coreconfigitem(
671 b'devel',
671 b'devel',
672 b'serverexactprotocol',
672 b'serverexactprotocol',
673 default=b'',
673 default=b'',
674 )
674 )
675 coreconfigitem(
675 coreconfigitem(
676 b'devel',
676 b'devel',
677 b'serverrequirecert',
677 b'serverrequirecert',
678 default=False,
678 default=False,
679 )
679 )
680 coreconfigitem(
680 coreconfigitem(
681 b'devel',
681 b'devel',
682 b'strip-obsmarkers',
682 b'strip-obsmarkers',
683 default=True,
683 default=True,
684 )
684 )
685 coreconfigitem(
685 coreconfigitem(
686 b'devel',
686 b'devel',
687 b'warn-config',
687 b'warn-config',
688 default=None,
688 default=None,
689 )
689 )
690 coreconfigitem(
690 coreconfigitem(
691 b'devel',
691 b'devel',
692 b'warn-config-default',
692 b'warn-config-default',
693 default=None,
693 default=None,
694 )
694 )
695 coreconfigitem(
695 coreconfigitem(
696 b'devel',
696 b'devel',
697 b'user.obsmarker',
697 b'user.obsmarker',
698 default=None,
698 default=None,
699 )
699 )
700 coreconfigitem(
700 coreconfigitem(
701 b'devel',
701 b'devel',
702 b'warn-config-unknown',
702 b'warn-config-unknown',
703 default=None,
703 default=None,
704 )
704 )
705 coreconfigitem(
705 coreconfigitem(
706 b'devel',
706 b'devel',
707 b'debug.copies',
707 b'debug.copies',
708 default=False,
708 default=False,
709 )
709 )
710 coreconfigitem(
710 coreconfigitem(
711 b'devel',
711 b'devel',
712 b'copy-tracing.multi-thread',
712 b'copy-tracing.multi-thread',
713 default=True,
713 default=True,
714 )
714 )
715 coreconfigitem(
715 coreconfigitem(
716 b'devel',
716 b'devel',
717 b'debug.extensions',
717 b'debug.extensions',
718 default=False,
718 default=False,
719 )
719 )
720 coreconfigitem(
720 coreconfigitem(
721 b'devel',
721 b'devel',
722 b'debug.repo-filters',
722 b'debug.repo-filters',
723 default=False,
723 default=False,
724 )
724 )
725 coreconfigitem(
725 coreconfigitem(
726 b'devel',
726 b'devel',
727 b'debug.peer-request',
727 b'debug.peer-request',
728 default=False,
728 default=False,
729 )
729 )
730 # If discovery.exchange-heads is False, the discovery will not start with
730 # If discovery.exchange-heads is False, the discovery will not start with
731 # remote head fetching and local head querying.
731 # remote head fetching and local head querying.
732 coreconfigitem(
732 coreconfigitem(
733 b'devel',
733 b'devel',
734 b'discovery.exchange-heads',
734 b'discovery.exchange-heads',
735 default=True,
735 default=True,
736 )
736 )
737 # If discovery.grow-sample is False, the sample size used in set discovery will
737 # If discovery.grow-sample is False, the sample size used in set discovery will
738 # not be increased through the process
738 # not be increased through the process
739 coreconfigitem(
739 coreconfigitem(
740 b'devel',
740 b'devel',
741 b'discovery.grow-sample',
741 b'discovery.grow-sample',
742 default=True,
742 default=True,
743 )
743 )
744 # When discovery.grow-sample.dynamic is True, the default, the sample size is
744 # When discovery.grow-sample.dynamic is True, the default, the sample size is
745 # adapted to the shape of the undecided set (it is set to the max of:
745 # adapted to the shape of the undecided set (it is set to the max of:
746 # <target-size>, len(roots(undecided)), len(heads(undecided)
746 # <target-size>, len(roots(undecided)), len(heads(undecided)
747 coreconfigitem(
747 coreconfigitem(
748 b'devel',
748 b'devel',
749 b'discovery.grow-sample.dynamic',
749 b'discovery.grow-sample.dynamic',
750 default=True,
750 default=True,
751 )
751 )
752 # discovery.grow-sample.rate control the rate at which the sample grow
752 # discovery.grow-sample.rate control the rate at which the sample grow
753 coreconfigitem(
753 coreconfigitem(
754 b'devel',
754 b'devel',
755 b'discovery.grow-sample.rate',
755 b'discovery.grow-sample.rate',
756 default=1.05,
756 default=1.05,
757 )
757 )
758 # If discovery.randomize is False, random sampling during discovery are
758 # If discovery.randomize is False, random sampling during discovery are
759 # deterministic. It is meant for integration tests.
759 # deterministic. It is meant for integration tests.
760 coreconfigitem(
760 coreconfigitem(
761 b'devel',
761 b'devel',
762 b'discovery.randomize',
762 b'discovery.randomize',
763 default=True,
763 default=True,
764 )
764 )
765 # Control the initial size of the discovery sample
765 # Control the initial size of the discovery sample
766 coreconfigitem(
766 coreconfigitem(
767 b'devel',
767 b'devel',
768 b'discovery.sample-size',
768 b'discovery.sample-size',
769 default=200,
769 default=200,
770 )
770 )
771 # Control the initial size of the discovery for initial change
771 # Control the initial size of the discovery for initial change
772 coreconfigitem(
772 coreconfigitem(
773 b'devel',
773 b'devel',
774 b'discovery.sample-size.initial',
774 b'discovery.sample-size.initial',
775 default=100,
775 default=100,
776 )
776 )
777 _registerdiffopts(section=b'diff')
777 _registerdiffopts(section=b'diff')
778 coreconfigitem(
778 coreconfigitem(
779 b'diff',
779 b'diff',
780 b'merge',
780 b'merge',
781 default=False,
781 default=False,
782 experimental=True,
782 experimental=True,
783 )
783 )
784 coreconfigitem(
784 coreconfigitem(
785 b'email',
785 b'email',
786 b'bcc',
786 b'bcc',
787 default=None,
787 default=None,
788 )
788 )
789 coreconfigitem(
789 coreconfigitem(
790 b'email',
790 b'email',
791 b'cc',
791 b'cc',
792 default=None,
792 default=None,
793 )
793 )
794 coreconfigitem(
794 coreconfigitem(
795 b'email',
795 b'email',
796 b'charsets',
796 b'charsets',
797 default=list,
797 default=list,
798 )
798 )
799 coreconfigitem(
799 coreconfigitem(
800 b'email',
800 b'email',
801 b'from',
801 b'from',
802 default=None,
802 default=None,
803 )
803 )
804 coreconfigitem(
804 coreconfigitem(
805 b'email',
805 b'email',
806 b'method',
806 b'method',
807 default=b'smtp',
807 default=b'smtp',
808 )
808 )
809 coreconfigitem(
809 coreconfigitem(
810 b'email',
810 b'email',
811 b'reply-to',
811 b'reply-to',
812 default=None,
812 default=None,
813 )
813 )
814 coreconfigitem(
814 coreconfigitem(
815 b'email',
815 b'email',
816 b'to',
816 b'to',
817 default=None,
817 default=None,
818 )
818 )
819 coreconfigitem(
819 coreconfigitem(
820 b'experimental',
820 b'experimental',
821 b'archivemetatemplate',
821 b'archivemetatemplate',
822 default=dynamicdefault,
822 default=dynamicdefault,
823 )
823 )
824 coreconfigitem(
824 coreconfigitem(
825 b'experimental',
825 b'experimental',
826 b'auto-publish',
826 b'auto-publish',
827 default=b'publish',
827 default=b'publish',
828 )
828 )
829 coreconfigitem(
829 coreconfigitem(
830 b'experimental',
830 b'experimental',
831 b'bundle-phases',
831 b'bundle-phases',
832 default=False,
832 default=False,
833 )
833 )
834 coreconfigitem(
834 coreconfigitem(
835 b'experimental',
835 b'experimental',
836 b'bundle2-advertise',
836 b'bundle2-advertise',
837 default=True,
837 default=True,
838 )
838 )
839 coreconfigitem(
839 coreconfigitem(
840 b'experimental',
840 b'experimental',
841 b'bundle2-output-capture',
841 b'bundle2-output-capture',
842 default=False,
842 default=False,
843 )
843 )
844 coreconfigitem(
844 coreconfigitem(
845 b'experimental',
845 b'experimental',
846 b'bundle2.pushback',
846 b'bundle2.pushback',
847 default=False,
847 default=False,
848 )
848 )
849 coreconfigitem(
849 coreconfigitem(
850 b'experimental',
850 b'experimental',
851 b'bundle2lazylocking',
851 b'bundle2lazylocking',
852 default=False,
852 default=False,
853 )
853 )
854 coreconfigitem(
854 coreconfigitem(
855 b'experimental',
855 b'experimental',
856 b'bundlecomplevel',
856 b'bundlecomplevel',
857 default=None,
857 default=None,
858 )
858 )
859 coreconfigitem(
859 coreconfigitem(
860 b'experimental',
860 b'experimental',
861 b'bundlecomplevel.bzip2',
861 b'bundlecomplevel.bzip2',
862 default=None,
862 default=None,
863 )
863 )
864 coreconfigitem(
864 coreconfigitem(
865 b'experimental',
865 b'experimental',
866 b'bundlecomplevel.gzip',
866 b'bundlecomplevel.gzip',
867 default=None,
867 default=None,
868 )
868 )
869 coreconfigitem(
869 coreconfigitem(
870 b'experimental',
870 b'experimental',
871 b'bundlecomplevel.none',
871 b'bundlecomplevel.none',
872 default=None,
872 default=None,
873 )
873 )
874 coreconfigitem(
874 coreconfigitem(
875 b'experimental',
875 b'experimental',
876 b'bundlecomplevel.zstd',
876 b'bundlecomplevel.zstd',
877 default=None,
877 default=None,
878 )
878 )
879 coreconfigitem(
879 coreconfigitem(
880 b'experimental',
880 b'experimental',
881 b'bundlecompthreads',
881 b'bundlecompthreads',
882 default=None,
882 default=None,
883 )
883 )
884 coreconfigitem(
884 coreconfigitem(
885 b'experimental',
885 b'experimental',
886 b'bundlecompthreads.bzip2',
886 b'bundlecompthreads.bzip2',
887 default=None,
887 default=None,
888 )
888 )
889 coreconfigitem(
889 coreconfigitem(
890 b'experimental',
890 b'experimental',
891 b'bundlecompthreads.gzip',
891 b'bundlecompthreads.gzip',
892 default=None,
892 default=None,
893 )
893 )
894 coreconfigitem(
894 coreconfigitem(
895 b'experimental',
895 b'experimental',
896 b'bundlecompthreads.none',
896 b'bundlecompthreads.none',
897 default=None,
897 default=None,
898 )
898 )
899 coreconfigitem(
899 coreconfigitem(
900 b'experimental',
900 b'experimental',
901 b'bundlecompthreads.zstd',
901 b'bundlecompthreads.zstd',
902 default=None,
902 default=None,
903 )
903 )
904 coreconfigitem(
904 coreconfigitem(
905 b'experimental',
905 b'experimental',
906 b'changegroup3',
906 b'changegroup3',
907 default=False,
907 default=False,
908 )
908 )
909 coreconfigitem(
909 coreconfigitem(
910 b'experimental',
910 b'experimental',
911 b'changegroup4',
911 b'changegroup4',
912 default=False,
912 default=False,
913 )
913 )
914 coreconfigitem(
914 coreconfigitem(
915 b'experimental',
915 b'experimental',
916 b'cleanup-as-archived',
916 b'cleanup-as-archived',
917 default=False,
917 default=False,
918 )
918 )
919 coreconfigitem(
919 coreconfigitem(
920 b'experimental',
920 b'experimental',
921 b'clientcompressionengines',
921 b'clientcompressionengines',
922 default=list,
922 default=list,
923 )
923 )
924 coreconfigitem(
924 coreconfigitem(
925 b'experimental',
925 b'experimental',
926 b'copytrace',
926 b'copytrace',
927 default=b'on',
927 default=b'on',
928 )
928 )
929 coreconfigitem(
929 coreconfigitem(
930 b'experimental',
930 b'experimental',
931 b'copytrace.movecandidateslimit',
931 b'copytrace.movecandidateslimit',
932 default=100,
932 default=100,
933 )
933 )
934 coreconfigitem(
934 coreconfigitem(
935 b'experimental',
935 b'experimental',
936 b'copytrace.sourcecommitlimit',
936 b'copytrace.sourcecommitlimit',
937 default=100,
937 default=100,
938 )
938 )
939 coreconfigitem(
939 coreconfigitem(
940 b'experimental',
940 b'experimental',
941 b'copies.read-from',
941 b'copies.read-from',
942 default=b"filelog-only",
942 default=b"filelog-only",
943 )
943 )
944 coreconfigitem(
944 coreconfigitem(
945 b'experimental',
945 b'experimental',
946 b'copies.write-to',
946 b'copies.write-to',
947 default=b'filelog-only',
947 default=b'filelog-only',
948 )
948 )
949 coreconfigitem(
949 coreconfigitem(
950 b'experimental',
950 b'experimental',
951 b'crecordtest',
951 b'crecordtest',
952 default=None,
952 default=None,
953 )
953 )
954 coreconfigitem(
954 coreconfigitem(
955 b'experimental',
955 b'experimental',
956 b'directaccess',
956 b'directaccess',
957 default=False,
957 default=False,
958 )
958 )
959 coreconfigitem(
959 coreconfigitem(
960 b'experimental',
960 b'experimental',
961 b'directaccess.revnums',
961 b'directaccess.revnums',
962 default=False,
962 default=False,
963 )
963 )
964 coreconfigitem(
964 coreconfigitem(
965 b'experimental',
965 b'experimental',
966 b'editortmpinhg',
966 b'editortmpinhg',
967 default=False,
967 default=False,
968 )
968 )
969 coreconfigitem(
969 coreconfigitem(
970 b'experimental',
970 b'experimental',
971 b'evolution',
971 b'evolution',
972 default=list,
972 default=list,
973 )
973 )
974 coreconfigitem(
974 coreconfigitem(
975 b'experimental',
975 b'experimental',
976 b'evolution.allowdivergence',
976 b'evolution.allowdivergence',
977 default=False,
977 default=False,
978 alias=[(b'experimental', b'allowdivergence')],
978 alias=[(b'experimental', b'allowdivergence')],
979 )
979 )
980 coreconfigitem(
980 coreconfigitem(
981 b'experimental',
981 b'experimental',
982 b'evolution.allowunstable',
982 b'evolution.allowunstable',
983 default=None,
983 default=None,
984 )
984 )
985 coreconfigitem(
985 coreconfigitem(
986 b'experimental',
986 b'experimental',
987 b'evolution.createmarkers',
987 b'evolution.createmarkers',
988 default=None,
988 default=None,
989 )
989 )
990 coreconfigitem(
990 coreconfigitem(
991 b'experimental',
991 b'experimental',
992 b'evolution.effect-flags',
992 b'evolution.effect-flags',
993 default=True,
993 default=True,
994 alias=[(b'experimental', b'effect-flags')],
994 alias=[(b'experimental', b'effect-flags')],
995 )
995 )
996 coreconfigitem(
996 coreconfigitem(
997 b'experimental',
997 b'experimental',
998 b'evolution.exchange',
998 b'evolution.exchange',
999 default=None,
999 default=None,
1000 )
1000 )
1001 coreconfigitem(
1001 coreconfigitem(
1002 b'experimental',
1002 b'experimental',
1003 b'evolution.bundle-obsmarker',
1003 b'evolution.bundle-obsmarker',
1004 default=False,
1004 default=False,
1005 )
1005 )
1006 coreconfigitem(
1006 coreconfigitem(
1007 b'experimental',
1007 b'experimental',
1008 b'evolution.bundle-obsmarker:mandatory',
1008 b'evolution.bundle-obsmarker:mandatory',
1009 default=True,
1009 default=True,
1010 )
1010 )
1011 coreconfigitem(
1011 coreconfigitem(
1012 b'experimental',
1012 b'experimental',
1013 b'log.topo',
1013 b'log.topo',
1014 default=False,
1014 default=False,
1015 )
1015 )
1016 coreconfigitem(
1016 coreconfigitem(
1017 b'experimental',
1017 b'experimental',
1018 b'evolution.report-instabilities',
1018 b'evolution.report-instabilities',
1019 default=True,
1019 default=True,
1020 )
1020 )
1021 coreconfigitem(
1021 coreconfigitem(
1022 b'experimental',
1022 b'experimental',
1023 b'evolution.track-operation',
1023 b'evolution.track-operation',
1024 default=True,
1024 default=True,
1025 )
1025 )
1026 # repo-level config to exclude a revset visibility
1026 # repo-level config to exclude a revset visibility
1027 #
1027 #
1028 # The target use case is to use `share` to expose different subset of the same
1028 # The target use case is to use `share` to expose different subset of the same
1029 # repository, especially server side. See also `server.view`.
1029 # repository, especially server side. See also `server.view`.
1030 coreconfigitem(
1030 coreconfigitem(
1031 b'experimental',
1031 b'experimental',
1032 b'extra-filter-revs',
1032 b'extra-filter-revs',
1033 default=None,
1033 default=None,
1034 )
1034 )
1035 coreconfigitem(
1035 coreconfigitem(
1036 b'experimental',
1036 b'experimental',
1037 b'maxdeltachainspan',
1037 b'maxdeltachainspan',
1038 default=-1,
1038 default=-1,
1039 )
1039 )
1040 # tracks files which were undeleted (merge might delete them but we explicitly
1040 # tracks files which were undeleted (merge might delete them but we explicitly
1041 # kept/undeleted them) and creates new filenodes for them
1041 # kept/undeleted them) and creates new filenodes for them
1042 coreconfigitem(
1042 coreconfigitem(
1043 b'experimental',
1043 b'experimental',
1044 b'merge-track-salvaged',
1044 b'merge-track-salvaged',
1045 default=False,
1045 default=False,
1046 )
1046 )
1047 coreconfigitem(
1047 coreconfigitem(
1048 b'experimental',
1048 b'experimental',
1049 b'mmapindexthreshold',
1049 b'mmapindexthreshold',
1050 default=None,
1050 default=None,
1051 )
1051 )
1052 coreconfigitem(
1052 coreconfigitem(
1053 b'experimental',
1053 b'experimental',
1054 b'narrow',
1054 b'narrow',
1055 default=False,
1055 default=False,
1056 )
1056 )
1057 coreconfigitem(
1057 coreconfigitem(
1058 b'experimental',
1058 b'experimental',
1059 b'nonnormalparanoidcheck',
1059 b'nonnormalparanoidcheck',
1060 default=False,
1060 default=False,
1061 )
1061 )
1062 coreconfigitem(
1062 coreconfigitem(
1063 b'experimental',
1063 b'experimental',
1064 b'exportableenviron',
1064 b'exportableenviron',
1065 default=list,
1065 default=list,
1066 )
1066 )
1067 coreconfigitem(
1067 coreconfigitem(
1068 b'experimental',
1068 b'experimental',
1069 b'extendedheader.index',
1069 b'extendedheader.index',
1070 default=None,
1070 default=None,
1071 )
1071 )
1072 coreconfigitem(
1072 coreconfigitem(
1073 b'experimental',
1073 b'experimental',
1074 b'extendedheader.similarity',
1074 b'extendedheader.similarity',
1075 default=False,
1075 default=False,
1076 )
1076 )
1077 coreconfigitem(
1077 coreconfigitem(
1078 b'experimental',
1078 b'experimental',
1079 b'graphshorten',
1079 b'graphshorten',
1080 default=False,
1080 default=False,
1081 )
1081 )
1082 coreconfigitem(
1082 coreconfigitem(
1083 b'experimental',
1083 b'experimental',
1084 b'graphstyle.parent',
1084 b'graphstyle.parent',
1085 default=dynamicdefault,
1085 default=dynamicdefault,
1086 )
1086 )
1087 coreconfigitem(
1087 coreconfigitem(
1088 b'experimental',
1088 b'experimental',
1089 b'graphstyle.missing',
1089 b'graphstyle.missing',
1090 default=dynamicdefault,
1090 default=dynamicdefault,
1091 )
1091 )
1092 coreconfigitem(
1092 coreconfigitem(
1093 b'experimental',
1093 b'experimental',
1094 b'graphstyle.grandparent',
1094 b'graphstyle.grandparent',
1095 default=dynamicdefault,
1095 default=dynamicdefault,
1096 )
1096 )
1097 coreconfigitem(
1097 coreconfigitem(
1098 b'experimental',
1098 b'experimental',
1099 b'hook-track-tags',
1099 b'hook-track-tags',
1100 default=False,
1100 default=False,
1101 )
1101 )
1102 coreconfigitem(
1102 coreconfigitem(
1103 b'experimental',
1103 b'experimental',
1104 b'httppostargs',
1104 b'httppostargs',
1105 default=False,
1105 default=False,
1106 )
1106 )
1107 coreconfigitem(b'experimental', b'nointerrupt', default=False)
1107 coreconfigitem(b'experimental', b'nointerrupt', default=False)
1108 coreconfigitem(b'experimental', b'nointerrupt-interactiveonly', default=True)
1108 coreconfigitem(b'experimental', b'nointerrupt-interactiveonly', default=True)
1109
1109
1110 coreconfigitem(
1110 coreconfigitem(
1111 b'experimental',
1111 b'experimental',
1112 b'obsmarkers-exchange-debug',
1112 b'obsmarkers-exchange-debug',
1113 default=False,
1113 default=False,
1114 )
1114 )
1115 coreconfigitem(
1115 coreconfigitem(
1116 b'experimental',
1116 b'experimental',
1117 b'remotenames',
1117 b'remotenames',
1118 default=False,
1118 default=False,
1119 )
1119 )
1120 coreconfigitem(
1120 coreconfigitem(
1121 b'experimental',
1121 b'experimental',
1122 b'removeemptydirs',
1122 b'removeemptydirs',
1123 default=True,
1123 default=True,
1124 )
1124 )
1125 coreconfigitem(
1125 coreconfigitem(
1126 b'experimental',
1126 b'experimental',
1127 b'revert.interactive.select-to-keep',
1127 b'revert.interactive.select-to-keep',
1128 default=False,
1128 default=False,
1129 )
1129 )
1130 coreconfigitem(
1130 coreconfigitem(
1131 b'experimental',
1131 b'experimental',
1132 b'revisions.prefixhexnode',
1132 b'revisions.prefixhexnode',
1133 default=False,
1133 default=False,
1134 )
1134 )
1135 # "out of experimental" todo list.
1135 # "out of experimental" todo list.
1136 #
1136 #
1137 # * include management of a persistent nodemap in the main docket
1137 # * include management of a persistent nodemap in the main docket
1138 # * enforce a "no-truncate" policy for mmap safety
1138 # * enforce a "no-truncate" policy for mmap safety
1139 # - for censoring operation
1139 # - for censoring operation
1140 # - for stripping operation
1140 # - for stripping operation
1141 # - for rollback operation
1141 # - for rollback operation
1142 # * proper streaming (race free) of the docket file
1142 # * proper streaming (race free) of the docket file
1143 # * track garbage data to evemtually allow rewriting -existing- sidedata.
1143 # * track garbage data to evemtually allow rewriting -existing- sidedata.
1144 # * Exchange-wise, we will also need to do something more efficient than
1144 # * Exchange-wise, we will also need to do something more efficient than
1145 # keeping references to the affected revlogs, especially memory-wise when
1145 # keeping references to the affected revlogs, especially memory-wise when
1146 # rewriting sidedata.
1146 # rewriting sidedata.
1147 # * introduce a proper solution to reduce the number of filelog related files.
1147 # * introduce a proper solution to reduce the number of filelog related files.
1148 # * use caching for reading sidedata (similar to what we do for data).
1148 # * use caching for reading sidedata (similar to what we do for data).
1149 # * no longer set offset=0 if sidedata_size=0 (simplify cutoff computation).
1149 # * no longer set offset=0 if sidedata_size=0 (simplify cutoff computation).
1150 # * Improvement to consider
1150 # * Improvement to consider
1151 # - avoid compression header in chunk using the default compression?
1151 # - avoid compression header in chunk using the default compression?
1152 # - forbid "inline" compression mode entirely?
1152 # - forbid "inline" compression mode entirely?
1153 # - split the data offset and flag field (the 2 bytes save are mostly trouble)
1153 # - split the data offset and flag field (the 2 bytes save are mostly trouble)
1154 # - keep track of uncompressed -chunk- size (to preallocate memory better)
1154 # - keep track of uncompressed -chunk- size (to preallocate memory better)
1155 # - keep track of chain base or size (probably not that useful anymore)
1155 # - keep track of chain base or size (probably not that useful anymore)
1156 coreconfigitem(
1156 coreconfigitem(
1157 b'experimental',
1157 b'experimental',
1158 b'revlogv2',
1158 b'revlogv2',
1159 default=None,
1159 default=None,
1160 )
1160 )
1161 coreconfigitem(
1161 coreconfigitem(
1162 b'experimental',
1162 b'experimental',
1163 b'revisions.disambiguatewithin',
1163 b'revisions.disambiguatewithin',
1164 default=None,
1164 default=None,
1165 )
1165 )
1166 coreconfigitem(
1166 coreconfigitem(
1167 b'experimental',
1167 b'experimental',
1168 b'rust.index',
1168 b'rust.index',
1169 default=False,
1169 default=False,
1170 )
1170 )
1171 coreconfigitem(
1171 coreconfigitem(
1172 b'experimental',
1172 b'experimental',
1173 b'server.filesdata.recommended-batch-size',
1173 b'server.filesdata.recommended-batch-size',
1174 default=50000,
1174 default=50000,
1175 )
1175 )
1176 coreconfigitem(
1176 coreconfigitem(
1177 b'experimental',
1177 b'experimental',
1178 b'server.manifestdata.recommended-batch-size',
1178 b'server.manifestdata.recommended-batch-size',
1179 default=100000,
1179 default=100000,
1180 )
1180 )
1181 coreconfigitem(
1181 coreconfigitem(
1182 b'experimental',
1182 b'experimental',
1183 b'server.stream-narrow-clones',
1183 b'server.stream-narrow-clones',
1184 default=False,
1184 default=False,
1185 )
1185 )
1186 coreconfigitem(
1186 coreconfigitem(
1187 b'experimental',
1187 b'experimental',
1188 b'single-head-per-branch',
1188 b'single-head-per-branch',
1189 default=False,
1189 default=False,
1190 )
1190 )
1191 coreconfigitem(
1191 coreconfigitem(
1192 b'experimental',
1192 b'experimental',
1193 b'single-head-per-branch:account-closed-heads',
1193 b'single-head-per-branch:account-closed-heads',
1194 default=False,
1194 default=False,
1195 )
1195 )
1196 coreconfigitem(
1196 coreconfigitem(
1197 b'experimental',
1197 b'experimental',
1198 b'single-head-per-branch:public-changes-only',
1198 b'single-head-per-branch:public-changes-only',
1199 default=False,
1199 default=False,
1200 )
1200 )
1201 coreconfigitem(
1201 coreconfigitem(
1202 b'experimental',
1202 b'experimental',
1203 b'sparse-read',
1203 b'sparse-read',
1204 default=False,
1204 default=False,
1205 )
1205 )
1206 coreconfigitem(
1206 coreconfigitem(
1207 b'experimental',
1207 b'experimental',
1208 b'sparse-read.density-threshold',
1208 b'sparse-read.density-threshold',
1209 default=0.50,
1209 default=0.50,
1210 )
1210 )
1211 coreconfigitem(
1211 coreconfigitem(
1212 b'experimental',
1212 b'experimental',
1213 b'sparse-read.min-gap-size',
1213 b'sparse-read.min-gap-size',
1214 default=b'65K',
1214 default=b'65K',
1215 )
1215 )
1216 coreconfigitem(
1216 coreconfigitem(
1217 b'experimental',
1217 b'experimental',
1218 b'treemanifest',
1218 b'treemanifest',
1219 default=False,
1219 default=False,
1220 )
1220 )
1221 coreconfigitem(
1221 coreconfigitem(
1222 b'experimental',
1222 b'experimental',
1223 b'update.atomic-file',
1223 b'update.atomic-file',
1224 default=False,
1224 default=False,
1225 )
1225 )
1226 coreconfigitem(
1226 coreconfigitem(
1227 b'experimental',
1227 b'experimental',
1228 b'web.full-garbage-collection-rate',
1228 b'web.full-garbage-collection-rate',
1229 default=1, # still forcing a full collection on each request
1229 default=1, # still forcing a full collection on each request
1230 )
1230 )
1231 coreconfigitem(
1231 coreconfigitem(
1232 b'experimental',
1232 b'experimental',
1233 b'worker.wdir-get-thread-safe',
1233 b'worker.wdir-get-thread-safe',
1234 default=False,
1234 default=False,
1235 )
1235 )
1236 coreconfigitem(
1236 coreconfigitem(
1237 b'experimental',
1237 b'experimental',
1238 b'worker.repository-upgrade',
1238 b'worker.repository-upgrade',
1239 default=False,
1239 default=False,
1240 )
1240 )
1241 coreconfigitem(
1241 coreconfigitem(
1242 b'experimental',
1242 b'experimental',
1243 b'xdiff',
1243 b'xdiff',
1244 default=False,
1244 default=False,
1245 )
1245 )
1246 coreconfigitem(
1246 coreconfigitem(
1247 b'extensions',
1247 b'extensions',
1248 b'[^:]*',
1248 b'[^:]*',
1249 default=None,
1249 default=None,
1250 generic=True,
1250 generic=True,
1251 )
1251 )
1252 coreconfigitem(
1252 coreconfigitem(
1253 b'extensions',
1253 b'extensions',
1254 b'[^:]*:required',
1254 b'[^:]*:required',
1255 default=False,
1255 default=False,
1256 generic=True,
1256 generic=True,
1257 )
1257 )
1258 coreconfigitem(
1258 coreconfigitem(
1259 b'extdata',
1259 b'extdata',
1260 b'.*',
1260 b'.*',
1261 default=None,
1261 default=None,
1262 generic=True,
1262 generic=True,
1263 )
1263 )
1264 coreconfigitem(
1264 coreconfigitem(
1265 b'format',
1265 b'format',
1266 b'bookmarks-in-store',
1266 b'bookmarks-in-store',
1267 default=False,
1267 default=False,
1268 )
1268 )
1269 coreconfigitem(
1269 coreconfigitem(
1270 b'format',
1270 b'format',
1271 b'chunkcachesize',
1271 b'chunkcachesize',
1272 default=None,
1272 default=None,
1273 experimental=True,
1273 experimental=True,
1274 )
1274 )
1275 coreconfigitem(
1275 coreconfigitem(
1276 # Enable this dirstate format *when creating a new repository*.
1276 # Enable this dirstate format *when creating a new repository*.
1277 # Which format to use for existing repos is controlled by .hg/requires
1277 # Which format to use for existing repos is controlled by .hg/requires
1278 b'format',
1278 b'format',
1279 b'use-dirstate-v2',
1279 b'use-dirstate-v2',
1280 default=False,
1280 default=False,
1281 experimental=True,
1281 experimental=True,
1282 alias=[(b'format', b'exp-rc-dirstate-v2')],
1282 alias=[(b'format', b'exp-rc-dirstate-v2')],
1283 )
1283 )
1284 coreconfigitem(
1284 coreconfigitem(
1285 b'format',
1285 b'format',
1286 b'use-dirstate-v2.automatic-upgrade-of-mismatching-repositories',
1286 b'use-dirstate-v2.automatic-upgrade-of-mismatching-repositories',
1287 default=False,
1287 default=False,
1288 experimental=True,
1288 experimental=True,
1289 )
1289 )
1290 coreconfigitem(
1290 coreconfigitem(
1291 b'format',
1291 b'format',
1292 b'use-dirstate-v2.automatic-upgrade-of-mismatching-repositories:quiet',
1293 default=False,
1294 experimental=True,
1295 )
1296 coreconfigitem(
1297 b'format',
1292 b'use-dirstate-tracked-hint',
1298 b'use-dirstate-tracked-hint',
1293 default=False,
1299 default=False,
1294 experimental=True,
1300 experimental=True,
1295 )
1301 )
1296 coreconfigitem(
1302 coreconfigitem(
1297 b'format',
1303 b'format',
1298 b'use-dirstate-tracked-hint.version',
1304 b'use-dirstate-tracked-hint.version',
1299 default=1,
1305 default=1,
1300 experimental=True,
1306 experimental=True,
1301 )
1307 )
1302 coreconfigitem(
1308 coreconfigitem(
1303 b'format',
1309 b'format',
1304 b'use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories',
1310 b'use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories',
1305 default=False,
1311 default=False,
1306 experimental=True,
1312 experimental=True,
1307 )
1313 )
1308 coreconfigitem(
1314 coreconfigitem(
1309 b'format',
1315 b'format',
1310 b'dotencode',
1316 b'dotencode',
1311 default=True,
1317 default=True,
1312 )
1318 )
1313 coreconfigitem(
1319 coreconfigitem(
1314 b'format',
1320 b'format',
1315 b'generaldelta',
1321 b'generaldelta',
1316 default=False,
1322 default=False,
1317 experimental=True,
1323 experimental=True,
1318 )
1324 )
1319 coreconfigitem(
1325 coreconfigitem(
1320 b'format',
1326 b'format',
1321 b'manifestcachesize',
1327 b'manifestcachesize',
1322 default=None,
1328 default=None,
1323 experimental=True,
1329 experimental=True,
1324 )
1330 )
1325 coreconfigitem(
1331 coreconfigitem(
1326 b'format',
1332 b'format',
1327 b'maxchainlen',
1333 b'maxchainlen',
1328 default=dynamicdefault,
1334 default=dynamicdefault,
1329 experimental=True,
1335 experimental=True,
1330 )
1336 )
1331 coreconfigitem(
1337 coreconfigitem(
1332 b'format',
1338 b'format',
1333 b'obsstore-version',
1339 b'obsstore-version',
1334 default=None,
1340 default=None,
1335 )
1341 )
1336 coreconfigitem(
1342 coreconfigitem(
1337 b'format',
1343 b'format',
1338 b'sparse-revlog',
1344 b'sparse-revlog',
1339 default=True,
1345 default=True,
1340 )
1346 )
1341 coreconfigitem(
1347 coreconfigitem(
1342 b'format',
1348 b'format',
1343 b'revlog-compression',
1349 b'revlog-compression',
1344 default=lambda: [b'zstd', b'zlib'],
1350 default=lambda: [b'zstd', b'zlib'],
1345 alias=[(b'experimental', b'format.compression')],
1351 alias=[(b'experimental', b'format.compression')],
1346 )
1352 )
1347 # Experimental TODOs:
1353 # Experimental TODOs:
1348 #
1354 #
1349 # * Same as for revlogv2 (but for the reduction of the number of files)
1355 # * Same as for revlogv2 (but for the reduction of the number of files)
1350 # * Actually computing the rank of changesets
1356 # * Actually computing the rank of changesets
1351 # * Improvement to investigate
1357 # * Improvement to investigate
1352 # - storing .hgtags fnode
1358 # - storing .hgtags fnode
1353 # - storing branch related identifier
1359 # - storing branch related identifier
1354
1360
1355 coreconfigitem(
1361 coreconfigitem(
1356 b'format',
1362 b'format',
1357 b'exp-use-changelog-v2',
1363 b'exp-use-changelog-v2',
1358 default=None,
1364 default=None,
1359 experimental=True,
1365 experimental=True,
1360 )
1366 )
1361 coreconfigitem(
1367 coreconfigitem(
1362 b'format',
1368 b'format',
1363 b'usefncache',
1369 b'usefncache',
1364 default=True,
1370 default=True,
1365 )
1371 )
1366 coreconfigitem(
1372 coreconfigitem(
1367 b'format',
1373 b'format',
1368 b'usegeneraldelta',
1374 b'usegeneraldelta',
1369 default=True,
1375 default=True,
1370 )
1376 )
1371 coreconfigitem(
1377 coreconfigitem(
1372 b'format',
1378 b'format',
1373 b'usestore',
1379 b'usestore',
1374 default=True,
1380 default=True,
1375 )
1381 )
1376
1382
1377
1383
1378 def _persistent_nodemap_default():
1384 def _persistent_nodemap_default():
1379 """compute `use-persistent-nodemap` default value
1385 """compute `use-persistent-nodemap` default value
1380
1386
1381 The feature is disabled unless a fast implementation is available.
1387 The feature is disabled unless a fast implementation is available.
1382 """
1388 """
1383 from . import policy
1389 from . import policy
1384
1390
1385 return policy.importrust('revlog') is not None
1391 return policy.importrust('revlog') is not None
1386
1392
1387
1393
1388 coreconfigitem(
1394 coreconfigitem(
1389 b'format',
1395 b'format',
1390 b'use-persistent-nodemap',
1396 b'use-persistent-nodemap',
1391 default=_persistent_nodemap_default,
1397 default=_persistent_nodemap_default,
1392 )
1398 )
1393 coreconfigitem(
1399 coreconfigitem(
1394 b'format',
1400 b'format',
1395 b'exp-use-copies-side-data-changeset',
1401 b'exp-use-copies-side-data-changeset',
1396 default=False,
1402 default=False,
1397 experimental=True,
1403 experimental=True,
1398 )
1404 )
1399 coreconfigitem(
1405 coreconfigitem(
1400 b'format',
1406 b'format',
1401 b'use-share-safe',
1407 b'use-share-safe',
1402 default=True,
1408 default=True,
1403 )
1409 )
1404 coreconfigitem(
1410 coreconfigitem(
1405 b'format',
1411 b'format',
1406 b'use-share-safe.automatic-upgrade-of-mismatching-repositories',
1412 b'use-share-safe.automatic-upgrade-of-mismatching-repositories',
1407 default=False,
1413 default=False,
1408 experimental=True,
1414 experimental=True,
1409 )
1415 )
1410 coreconfigitem(
1416 coreconfigitem(
1411 b'format',
1417 b'format',
1412 b'use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet',
1418 b'use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet',
1413 default=False,
1419 default=False,
1414 experimental=True,
1420 experimental=True,
1415 )
1421 )
1416 coreconfigitem(
1422 coreconfigitem(
1417 b'format',
1423 b'format',
1418 b'internal-phase',
1424 b'internal-phase',
1419 default=False,
1425 default=False,
1420 experimental=True,
1426 experimental=True,
1421 )
1427 )
1422 coreconfigitem(
1428 coreconfigitem(
1423 b'fsmonitor',
1429 b'fsmonitor',
1424 b'warn_when_unused',
1430 b'warn_when_unused',
1425 default=True,
1431 default=True,
1426 )
1432 )
1427 coreconfigitem(
1433 coreconfigitem(
1428 b'fsmonitor',
1434 b'fsmonitor',
1429 b'warn_update_file_count',
1435 b'warn_update_file_count',
1430 default=50000,
1436 default=50000,
1431 )
1437 )
1432 coreconfigitem(
1438 coreconfigitem(
1433 b'fsmonitor',
1439 b'fsmonitor',
1434 b'warn_update_file_count_rust',
1440 b'warn_update_file_count_rust',
1435 default=400000,
1441 default=400000,
1436 )
1442 )
1437 coreconfigitem(
1443 coreconfigitem(
1438 b'help',
1444 b'help',
1439 br'hidden-command\..*',
1445 br'hidden-command\..*',
1440 default=False,
1446 default=False,
1441 generic=True,
1447 generic=True,
1442 )
1448 )
1443 coreconfigitem(
1449 coreconfigitem(
1444 b'help',
1450 b'help',
1445 br'hidden-topic\..*',
1451 br'hidden-topic\..*',
1446 default=False,
1452 default=False,
1447 generic=True,
1453 generic=True,
1448 )
1454 )
1449 coreconfigitem(
1455 coreconfigitem(
1450 b'hooks',
1456 b'hooks',
1451 b'[^:]*',
1457 b'[^:]*',
1452 default=dynamicdefault,
1458 default=dynamicdefault,
1453 generic=True,
1459 generic=True,
1454 )
1460 )
1455 coreconfigitem(
1461 coreconfigitem(
1456 b'hooks',
1462 b'hooks',
1457 b'.*:run-with-plain',
1463 b'.*:run-with-plain',
1458 default=True,
1464 default=True,
1459 generic=True,
1465 generic=True,
1460 )
1466 )
1461 coreconfigitem(
1467 coreconfigitem(
1462 b'hgweb-paths',
1468 b'hgweb-paths',
1463 b'.*',
1469 b'.*',
1464 default=list,
1470 default=list,
1465 generic=True,
1471 generic=True,
1466 )
1472 )
1467 coreconfigitem(
1473 coreconfigitem(
1468 b'hostfingerprints',
1474 b'hostfingerprints',
1469 b'.*',
1475 b'.*',
1470 default=list,
1476 default=list,
1471 generic=True,
1477 generic=True,
1472 )
1478 )
1473 coreconfigitem(
1479 coreconfigitem(
1474 b'hostsecurity',
1480 b'hostsecurity',
1475 b'ciphers',
1481 b'ciphers',
1476 default=None,
1482 default=None,
1477 )
1483 )
1478 coreconfigitem(
1484 coreconfigitem(
1479 b'hostsecurity',
1485 b'hostsecurity',
1480 b'minimumprotocol',
1486 b'minimumprotocol',
1481 default=dynamicdefault,
1487 default=dynamicdefault,
1482 )
1488 )
1483 coreconfigitem(
1489 coreconfigitem(
1484 b'hostsecurity',
1490 b'hostsecurity',
1485 b'.*:minimumprotocol$',
1491 b'.*:minimumprotocol$',
1486 default=dynamicdefault,
1492 default=dynamicdefault,
1487 generic=True,
1493 generic=True,
1488 )
1494 )
1489 coreconfigitem(
1495 coreconfigitem(
1490 b'hostsecurity',
1496 b'hostsecurity',
1491 b'.*:ciphers$',
1497 b'.*:ciphers$',
1492 default=dynamicdefault,
1498 default=dynamicdefault,
1493 generic=True,
1499 generic=True,
1494 )
1500 )
1495 coreconfigitem(
1501 coreconfigitem(
1496 b'hostsecurity',
1502 b'hostsecurity',
1497 b'.*:fingerprints$',
1503 b'.*:fingerprints$',
1498 default=list,
1504 default=list,
1499 generic=True,
1505 generic=True,
1500 )
1506 )
1501 coreconfigitem(
1507 coreconfigitem(
1502 b'hostsecurity',
1508 b'hostsecurity',
1503 b'.*:verifycertsfile$',
1509 b'.*:verifycertsfile$',
1504 default=None,
1510 default=None,
1505 generic=True,
1511 generic=True,
1506 )
1512 )
1507
1513
1508 coreconfigitem(
1514 coreconfigitem(
1509 b'http_proxy',
1515 b'http_proxy',
1510 b'always',
1516 b'always',
1511 default=False,
1517 default=False,
1512 )
1518 )
1513 coreconfigitem(
1519 coreconfigitem(
1514 b'http_proxy',
1520 b'http_proxy',
1515 b'host',
1521 b'host',
1516 default=None,
1522 default=None,
1517 )
1523 )
1518 coreconfigitem(
1524 coreconfigitem(
1519 b'http_proxy',
1525 b'http_proxy',
1520 b'no',
1526 b'no',
1521 default=list,
1527 default=list,
1522 )
1528 )
1523 coreconfigitem(
1529 coreconfigitem(
1524 b'http_proxy',
1530 b'http_proxy',
1525 b'passwd',
1531 b'passwd',
1526 default=None,
1532 default=None,
1527 )
1533 )
1528 coreconfigitem(
1534 coreconfigitem(
1529 b'http_proxy',
1535 b'http_proxy',
1530 b'user',
1536 b'user',
1531 default=None,
1537 default=None,
1532 )
1538 )
1533
1539
1534 coreconfigitem(
1540 coreconfigitem(
1535 b'http',
1541 b'http',
1536 b'timeout',
1542 b'timeout',
1537 default=None,
1543 default=None,
1538 )
1544 )
1539
1545
1540 coreconfigitem(
1546 coreconfigitem(
1541 b'logtoprocess',
1547 b'logtoprocess',
1542 b'commandexception',
1548 b'commandexception',
1543 default=None,
1549 default=None,
1544 )
1550 )
1545 coreconfigitem(
1551 coreconfigitem(
1546 b'logtoprocess',
1552 b'logtoprocess',
1547 b'commandfinish',
1553 b'commandfinish',
1548 default=None,
1554 default=None,
1549 )
1555 )
1550 coreconfigitem(
1556 coreconfigitem(
1551 b'logtoprocess',
1557 b'logtoprocess',
1552 b'command',
1558 b'command',
1553 default=None,
1559 default=None,
1554 )
1560 )
1555 coreconfigitem(
1561 coreconfigitem(
1556 b'logtoprocess',
1562 b'logtoprocess',
1557 b'develwarn',
1563 b'develwarn',
1558 default=None,
1564 default=None,
1559 )
1565 )
1560 coreconfigitem(
1566 coreconfigitem(
1561 b'logtoprocess',
1567 b'logtoprocess',
1562 b'uiblocked',
1568 b'uiblocked',
1563 default=None,
1569 default=None,
1564 )
1570 )
1565 coreconfigitem(
1571 coreconfigitem(
1566 b'merge',
1572 b'merge',
1567 b'checkunknown',
1573 b'checkunknown',
1568 default=b'abort',
1574 default=b'abort',
1569 )
1575 )
1570 coreconfigitem(
1576 coreconfigitem(
1571 b'merge',
1577 b'merge',
1572 b'checkignored',
1578 b'checkignored',
1573 default=b'abort',
1579 default=b'abort',
1574 )
1580 )
1575 coreconfigitem(
1581 coreconfigitem(
1576 b'experimental',
1582 b'experimental',
1577 b'merge.checkpathconflicts',
1583 b'merge.checkpathconflicts',
1578 default=False,
1584 default=False,
1579 )
1585 )
1580 coreconfigitem(
1586 coreconfigitem(
1581 b'merge',
1587 b'merge',
1582 b'followcopies',
1588 b'followcopies',
1583 default=True,
1589 default=True,
1584 )
1590 )
1585 coreconfigitem(
1591 coreconfigitem(
1586 b'merge',
1592 b'merge',
1587 b'on-failure',
1593 b'on-failure',
1588 default=b'continue',
1594 default=b'continue',
1589 )
1595 )
1590 coreconfigitem(
1596 coreconfigitem(
1591 b'merge',
1597 b'merge',
1592 b'preferancestor',
1598 b'preferancestor',
1593 default=lambda: [b'*'],
1599 default=lambda: [b'*'],
1594 experimental=True,
1600 experimental=True,
1595 )
1601 )
1596 coreconfigitem(
1602 coreconfigitem(
1597 b'merge',
1603 b'merge',
1598 b'strict-capability-check',
1604 b'strict-capability-check',
1599 default=False,
1605 default=False,
1600 )
1606 )
1601 coreconfigitem(
1607 coreconfigitem(
1602 b'merge',
1608 b'merge',
1603 b'disable-partial-tools',
1609 b'disable-partial-tools',
1604 default=False,
1610 default=False,
1605 experimental=True,
1611 experimental=True,
1606 )
1612 )
1607 coreconfigitem(
1613 coreconfigitem(
1608 b'partial-merge-tools',
1614 b'partial-merge-tools',
1609 b'.*',
1615 b'.*',
1610 default=None,
1616 default=None,
1611 generic=True,
1617 generic=True,
1612 experimental=True,
1618 experimental=True,
1613 )
1619 )
1614 coreconfigitem(
1620 coreconfigitem(
1615 b'partial-merge-tools',
1621 b'partial-merge-tools',
1616 br'.*\.patterns',
1622 br'.*\.patterns',
1617 default=dynamicdefault,
1623 default=dynamicdefault,
1618 generic=True,
1624 generic=True,
1619 priority=-1,
1625 priority=-1,
1620 experimental=True,
1626 experimental=True,
1621 )
1627 )
1622 coreconfigitem(
1628 coreconfigitem(
1623 b'partial-merge-tools',
1629 b'partial-merge-tools',
1624 br'.*\.executable$',
1630 br'.*\.executable$',
1625 default=dynamicdefault,
1631 default=dynamicdefault,
1626 generic=True,
1632 generic=True,
1627 priority=-1,
1633 priority=-1,
1628 experimental=True,
1634 experimental=True,
1629 )
1635 )
1630 coreconfigitem(
1636 coreconfigitem(
1631 b'partial-merge-tools',
1637 b'partial-merge-tools',
1632 br'.*\.order',
1638 br'.*\.order',
1633 default=0,
1639 default=0,
1634 generic=True,
1640 generic=True,
1635 priority=-1,
1641 priority=-1,
1636 experimental=True,
1642 experimental=True,
1637 )
1643 )
1638 coreconfigitem(
1644 coreconfigitem(
1639 b'partial-merge-tools',
1645 b'partial-merge-tools',
1640 br'.*\.args',
1646 br'.*\.args',
1641 default=b"$local $base $other",
1647 default=b"$local $base $other",
1642 generic=True,
1648 generic=True,
1643 priority=-1,
1649 priority=-1,
1644 experimental=True,
1650 experimental=True,
1645 )
1651 )
1646 coreconfigitem(
1652 coreconfigitem(
1647 b'partial-merge-tools',
1653 b'partial-merge-tools',
1648 br'.*\.disable',
1654 br'.*\.disable',
1649 default=False,
1655 default=False,
1650 generic=True,
1656 generic=True,
1651 priority=-1,
1657 priority=-1,
1652 experimental=True,
1658 experimental=True,
1653 )
1659 )
1654 coreconfigitem(
1660 coreconfigitem(
1655 b'merge-tools',
1661 b'merge-tools',
1656 b'.*',
1662 b'.*',
1657 default=None,
1663 default=None,
1658 generic=True,
1664 generic=True,
1659 )
1665 )
1660 coreconfigitem(
1666 coreconfigitem(
1661 b'merge-tools',
1667 b'merge-tools',
1662 br'.*\.args$',
1668 br'.*\.args$',
1663 default=b"$local $base $other",
1669 default=b"$local $base $other",
1664 generic=True,
1670 generic=True,
1665 priority=-1,
1671 priority=-1,
1666 )
1672 )
1667 coreconfigitem(
1673 coreconfigitem(
1668 b'merge-tools',
1674 b'merge-tools',
1669 br'.*\.binary$',
1675 br'.*\.binary$',
1670 default=False,
1676 default=False,
1671 generic=True,
1677 generic=True,
1672 priority=-1,
1678 priority=-1,
1673 )
1679 )
1674 coreconfigitem(
1680 coreconfigitem(
1675 b'merge-tools',
1681 b'merge-tools',
1676 br'.*\.check$',
1682 br'.*\.check$',
1677 default=list,
1683 default=list,
1678 generic=True,
1684 generic=True,
1679 priority=-1,
1685 priority=-1,
1680 )
1686 )
1681 coreconfigitem(
1687 coreconfigitem(
1682 b'merge-tools',
1688 b'merge-tools',
1683 br'.*\.checkchanged$',
1689 br'.*\.checkchanged$',
1684 default=False,
1690 default=False,
1685 generic=True,
1691 generic=True,
1686 priority=-1,
1692 priority=-1,
1687 )
1693 )
1688 coreconfigitem(
1694 coreconfigitem(
1689 b'merge-tools',
1695 b'merge-tools',
1690 br'.*\.executable$',
1696 br'.*\.executable$',
1691 default=dynamicdefault,
1697 default=dynamicdefault,
1692 generic=True,
1698 generic=True,
1693 priority=-1,
1699 priority=-1,
1694 )
1700 )
1695 coreconfigitem(
1701 coreconfigitem(
1696 b'merge-tools',
1702 b'merge-tools',
1697 br'.*\.fixeol$',
1703 br'.*\.fixeol$',
1698 default=False,
1704 default=False,
1699 generic=True,
1705 generic=True,
1700 priority=-1,
1706 priority=-1,
1701 )
1707 )
1702 coreconfigitem(
1708 coreconfigitem(
1703 b'merge-tools',
1709 b'merge-tools',
1704 br'.*\.gui$',
1710 br'.*\.gui$',
1705 default=False,
1711 default=False,
1706 generic=True,
1712 generic=True,
1707 priority=-1,
1713 priority=-1,
1708 )
1714 )
1709 coreconfigitem(
1715 coreconfigitem(
1710 b'merge-tools',
1716 b'merge-tools',
1711 br'.*\.mergemarkers$',
1717 br'.*\.mergemarkers$',
1712 default=b'basic',
1718 default=b'basic',
1713 generic=True,
1719 generic=True,
1714 priority=-1,
1720 priority=-1,
1715 )
1721 )
1716 coreconfigitem(
1722 coreconfigitem(
1717 b'merge-tools',
1723 b'merge-tools',
1718 br'.*\.mergemarkertemplate$',
1724 br'.*\.mergemarkertemplate$',
1719 default=dynamicdefault, # take from command-templates.mergemarker
1725 default=dynamicdefault, # take from command-templates.mergemarker
1720 generic=True,
1726 generic=True,
1721 priority=-1,
1727 priority=-1,
1722 )
1728 )
1723 coreconfigitem(
1729 coreconfigitem(
1724 b'merge-tools',
1730 b'merge-tools',
1725 br'.*\.priority$',
1731 br'.*\.priority$',
1726 default=0,
1732 default=0,
1727 generic=True,
1733 generic=True,
1728 priority=-1,
1734 priority=-1,
1729 )
1735 )
1730 coreconfigitem(
1736 coreconfigitem(
1731 b'merge-tools',
1737 b'merge-tools',
1732 br'.*\.premerge$',
1738 br'.*\.premerge$',
1733 default=dynamicdefault,
1739 default=dynamicdefault,
1734 generic=True,
1740 generic=True,
1735 priority=-1,
1741 priority=-1,
1736 )
1742 )
1737 coreconfigitem(
1743 coreconfigitem(
1738 b'merge-tools',
1744 b'merge-tools',
1739 br'.*\.symlink$',
1745 br'.*\.symlink$',
1740 default=False,
1746 default=False,
1741 generic=True,
1747 generic=True,
1742 priority=-1,
1748 priority=-1,
1743 )
1749 )
1744 coreconfigitem(
1750 coreconfigitem(
1745 b'pager',
1751 b'pager',
1746 b'attend-.*',
1752 b'attend-.*',
1747 default=dynamicdefault,
1753 default=dynamicdefault,
1748 generic=True,
1754 generic=True,
1749 )
1755 )
1750 coreconfigitem(
1756 coreconfigitem(
1751 b'pager',
1757 b'pager',
1752 b'ignore',
1758 b'ignore',
1753 default=list,
1759 default=list,
1754 )
1760 )
1755 coreconfigitem(
1761 coreconfigitem(
1756 b'pager',
1762 b'pager',
1757 b'pager',
1763 b'pager',
1758 default=dynamicdefault,
1764 default=dynamicdefault,
1759 )
1765 )
1760 coreconfigitem(
1766 coreconfigitem(
1761 b'patch',
1767 b'patch',
1762 b'eol',
1768 b'eol',
1763 default=b'strict',
1769 default=b'strict',
1764 )
1770 )
1765 coreconfigitem(
1771 coreconfigitem(
1766 b'patch',
1772 b'patch',
1767 b'fuzz',
1773 b'fuzz',
1768 default=2,
1774 default=2,
1769 )
1775 )
1770 coreconfigitem(
1776 coreconfigitem(
1771 b'paths',
1777 b'paths',
1772 b'default',
1778 b'default',
1773 default=None,
1779 default=None,
1774 )
1780 )
1775 coreconfigitem(
1781 coreconfigitem(
1776 b'paths',
1782 b'paths',
1777 b'default-push',
1783 b'default-push',
1778 default=None,
1784 default=None,
1779 )
1785 )
1780 coreconfigitem(
1786 coreconfigitem(
1781 b'paths',
1787 b'paths',
1782 b'.*',
1788 b'.*',
1783 default=None,
1789 default=None,
1784 generic=True,
1790 generic=True,
1785 )
1791 )
1786 coreconfigitem(
1792 coreconfigitem(
1787 b'paths',
1793 b'paths',
1788 b'.*:bookmarks.mode',
1794 b'.*:bookmarks.mode',
1789 default='default',
1795 default='default',
1790 generic=True,
1796 generic=True,
1791 )
1797 )
1792 coreconfigitem(
1798 coreconfigitem(
1793 b'paths',
1799 b'paths',
1794 b'.*:multi-urls',
1800 b'.*:multi-urls',
1795 default=False,
1801 default=False,
1796 generic=True,
1802 generic=True,
1797 )
1803 )
1798 coreconfigitem(
1804 coreconfigitem(
1799 b'paths',
1805 b'paths',
1800 b'.*:pushrev',
1806 b'.*:pushrev',
1801 default=None,
1807 default=None,
1802 generic=True,
1808 generic=True,
1803 )
1809 )
1804 coreconfigitem(
1810 coreconfigitem(
1805 b'paths',
1811 b'paths',
1806 b'.*:pushurl',
1812 b'.*:pushurl',
1807 default=None,
1813 default=None,
1808 generic=True,
1814 generic=True,
1809 )
1815 )
1810 coreconfigitem(
1816 coreconfigitem(
1811 b'phases',
1817 b'phases',
1812 b'checksubrepos',
1818 b'checksubrepos',
1813 default=b'follow',
1819 default=b'follow',
1814 )
1820 )
1815 coreconfigitem(
1821 coreconfigitem(
1816 b'phases',
1822 b'phases',
1817 b'new-commit',
1823 b'new-commit',
1818 default=b'draft',
1824 default=b'draft',
1819 )
1825 )
1820 coreconfigitem(
1826 coreconfigitem(
1821 b'phases',
1827 b'phases',
1822 b'publish',
1828 b'publish',
1823 default=True,
1829 default=True,
1824 )
1830 )
1825 coreconfigitem(
1831 coreconfigitem(
1826 b'profiling',
1832 b'profiling',
1827 b'enabled',
1833 b'enabled',
1828 default=False,
1834 default=False,
1829 )
1835 )
1830 coreconfigitem(
1836 coreconfigitem(
1831 b'profiling',
1837 b'profiling',
1832 b'format',
1838 b'format',
1833 default=b'text',
1839 default=b'text',
1834 )
1840 )
1835 coreconfigitem(
1841 coreconfigitem(
1836 b'profiling',
1842 b'profiling',
1837 b'freq',
1843 b'freq',
1838 default=1000,
1844 default=1000,
1839 )
1845 )
1840 coreconfigitem(
1846 coreconfigitem(
1841 b'profiling',
1847 b'profiling',
1842 b'limit',
1848 b'limit',
1843 default=30,
1849 default=30,
1844 )
1850 )
1845 coreconfigitem(
1851 coreconfigitem(
1846 b'profiling',
1852 b'profiling',
1847 b'nested',
1853 b'nested',
1848 default=0,
1854 default=0,
1849 )
1855 )
1850 coreconfigitem(
1856 coreconfigitem(
1851 b'profiling',
1857 b'profiling',
1852 b'output',
1858 b'output',
1853 default=None,
1859 default=None,
1854 )
1860 )
1855 coreconfigitem(
1861 coreconfigitem(
1856 b'profiling',
1862 b'profiling',
1857 b'showmax',
1863 b'showmax',
1858 default=0.999,
1864 default=0.999,
1859 )
1865 )
1860 coreconfigitem(
1866 coreconfigitem(
1861 b'profiling',
1867 b'profiling',
1862 b'showmin',
1868 b'showmin',
1863 default=dynamicdefault,
1869 default=dynamicdefault,
1864 )
1870 )
1865 coreconfigitem(
1871 coreconfigitem(
1866 b'profiling',
1872 b'profiling',
1867 b'showtime',
1873 b'showtime',
1868 default=True,
1874 default=True,
1869 )
1875 )
1870 coreconfigitem(
1876 coreconfigitem(
1871 b'profiling',
1877 b'profiling',
1872 b'sort',
1878 b'sort',
1873 default=b'inlinetime',
1879 default=b'inlinetime',
1874 )
1880 )
1875 coreconfigitem(
1881 coreconfigitem(
1876 b'profiling',
1882 b'profiling',
1877 b'statformat',
1883 b'statformat',
1878 default=b'hotpath',
1884 default=b'hotpath',
1879 )
1885 )
1880 coreconfigitem(
1886 coreconfigitem(
1881 b'profiling',
1887 b'profiling',
1882 b'time-track',
1888 b'time-track',
1883 default=dynamicdefault,
1889 default=dynamicdefault,
1884 )
1890 )
1885 coreconfigitem(
1891 coreconfigitem(
1886 b'profiling',
1892 b'profiling',
1887 b'type',
1893 b'type',
1888 default=b'stat',
1894 default=b'stat',
1889 )
1895 )
1890 coreconfigitem(
1896 coreconfigitem(
1891 b'progress',
1897 b'progress',
1892 b'assume-tty',
1898 b'assume-tty',
1893 default=False,
1899 default=False,
1894 )
1900 )
1895 coreconfigitem(
1901 coreconfigitem(
1896 b'progress',
1902 b'progress',
1897 b'changedelay',
1903 b'changedelay',
1898 default=1,
1904 default=1,
1899 )
1905 )
1900 coreconfigitem(
1906 coreconfigitem(
1901 b'progress',
1907 b'progress',
1902 b'clear-complete',
1908 b'clear-complete',
1903 default=True,
1909 default=True,
1904 )
1910 )
1905 coreconfigitem(
1911 coreconfigitem(
1906 b'progress',
1912 b'progress',
1907 b'debug',
1913 b'debug',
1908 default=False,
1914 default=False,
1909 )
1915 )
1910 coreconfigitem(
1916 coreconfigitem(
1911 b'progress',
1917 b'progress',
1912 b'delay',
1918 b'delay',
1913 default=3,
1919 default=3,
1914 )
1920 )
1915 coreconfigitem(
1921 coreconfigitem(
1916 b'progress',
1922 b'progress',
1917 b'disable',
1923 b'disable',
1918 default=False,
1924 default=False,
1919 )
1925 )
1920 coreconfigitem(
1926 coreconfigitem(
1921 b'progress',
1927 b'progress',
1922 b'estimateinterval',
1928 b'estimateinterval',
1923 default=60.0,
1929 default=60.0,
1924 )
1930 )
1925 coreconfigitem(
1931 coreconfigitem(
1926 b'progress',
1932 b'progress',
1927 b'format',
1933 b'format',
1928 default=lambda: [b'topic', b'bar', b'number', b'estimate'],
1934 default=lambda: [b'topic', b'bar', b'number', b'estimate'],
1929 )
1935 )
1930 coreconfigitem(
1936 coreconfigitem(
1931 b'progress',
1937 b'progress',
1932 b'refresh',
1938 b'refresh',
1933 default=0.1,
1939 default=0.1,
1934 )
1940 )
1935 coreconfigitem(
1941 coreconfigitem(
1936 b'progress',
1942 b'progress',
1937 b'width',
1943 b'width',
1938 default=dynamicdefault,
1944 default=dynamicdefault,
1939 )
1945 )
1940 coreconfigitem(
1946 coreconfigitem(
1941 b'pull',
1947 b'pull',
1942 b'confirm',
1948 b'confirm',
1943 default=False,
1949 default=False,
1944 )
1950 )
1945 coreconfigitem(
1951 coreconfigitem(
1946 b'push',
1952 b'push',
1947 b'pushvars.server',
1953 b'pushvars.server',
1948 default=False,
1954 default=False,
1949 )
1955 )
1950 coreconfigitem(
1956 coreconfigitem(
1951 b'rewrite',
1957 b'rewrite',
1952 b'backup-bundle',
1958 b'backup-bundle',
1953 default=True,
1959 default=True,
1954 alias=[(b'ui', b'history-editing-backup')],
1960 alias=[(b'ui', b'history-editing-backup')],
1955 )
1961 )
1956 coreconfigitem(
1962 coreconfigitem(
1957 b'rewrite',
1963 b'rewrite',
1958 b'update-timestamp',
1964 b'update-timestamp',
1959 default=False,
1965 default=False,
1960 )
1966 )
1961 coreconfigitem(
1967 coreconfigitem(
1962 b'rewrite',
1968 b'rewrite',
1963 b'empty-successor',
1969 b'empty-successor',
1964 default=b'skip',
1970 default=b'skip',
1965 experimental=True,
1971 experimental=True,
1966 )
1972 )
1967 # experimental as long as format.use-dirstate-v2 is.
1973 # experimental as long as format.use-dirstate-v2 is.
1968 coreconfigitem(
1974 coreconfigitem(
1969 b'storage',
1975 b'storage',
1970 b'dirstate-v2.slow-path',
1976 b'dirstate-v2.slow-path',
1971 default=b"abort",
1977 default=b"abort",
1972 experimental=True,
1978 experimental=True,
1973 )
1979 )
1974 coreconfigitem(
1980 coreconfigitem(
1975 b'storage',
1981 b'storage',
1976 b'new-repo-backend',
1982 b'new-repo-backend',
1977 default=b'revlogv1',
1983 default=b'revlogv1',
1978 experimental=True,
1984 experimental=True,
1979 )
1985 )
1980 coreconfigitem(
1986 coreconfigitem(
1981 b'storage',
1987 b'storage',
1982 b'revlog.optimize-delta-parent-choice',
1988 b'revlog.optimize-delta-parent-choice',
1983 default=True,
1989 default=True,
1984 alias=[(b'format', b'aggressivemergedeltas')],
1990 alias=[(b'format', b'aggressivemergedeltas')],
1985 )
1991 )
1986 coreconfigitem(
1992 coreconfigitem(
1987 b'storage',
1993 b'storage',
1988 b'revlog.issue6528.fix-incoming',
1994 b'revlog.issue6528.fix-incoming',
1989 default=True,
1995 default=True,
1990 )
1996 )
1991 # experimental as long as rust is experimental (or a C version is implemented)
1997 # experimental as long as rust is experimental (or a C version is implemented)
1992 coreconfigitem(
1998 coreconfigitem(
1993 b'storage',
1999 b'storage',
1994 b'revlog.persistent-nodemap.mmap',
2000 b'revlog.persistent-nodemap.mmap',
1995 default=True,
2001 default=True,
1996 )
2002 )
1997 # experimental as long as format.use-persistent-nodemap is.
2003 # experimental as long as format.use-persistent-nodemap is.
1998 coreconfigitem(
2004 coreconfigitem(
1999 b'storage',
2005 b'storage',
2000 b'revlog.persistent-nodemap.slow-path',
2006 b'revlog.persistent-nodemap.slow-path',
2001 default=b"abort",
2007 default=b"abort",
2002 )
2008 )
2003
2009
2004 coreconfigitem(
2010 coreconfigitem(
2005 b'storage',
2011 b'storage',
2006 b'revlog.reuse-external-delta',
2012 b'revlog.reuse-external-delta',
2007 default=True,
2013 default=True,
2008 )
2014 )
2009 coreconfigitem(
2015 coreconfigitem(
2010 b'storage',
2016 b'storage',
2011 b'revlog.reuse-external-delta-parent',
2017 b'revlog.reuse-external-delta-parent',
2012 default=None,
2018 default=None,
2013 )
2019 )
2014 coreconfigitem(
2020 coreconfigitem(
2015 b'storage',
2021 b'storage',
2016 b'revlog.zlib.level',
2022 b'revlog.zlib.level',
2017 default=None,
2023 default=None,
2018 )
2024 )
2019 coreconfigitem(
2025 coreconfigitem(
2020 b'storage',
2026 b'storage',
2021 b'revlog.zstd.level',
2027 b'revlog.zstd.level',
2022 default=None,
2028 default=None,
2023 )
2029 )
2024 coreconfigitem(
2030 coreconfigitem(
2025 b'server',
2031 b'server',
2026 b'bookmarks-pushkey-compat',
2032 b'bookmarks-pushkey-compat',
2027 default=True,
2033 default=True,
2028 )
2034 )
2029 coreconfigitem(
2035 coreconfigitem(
2030 b'server',
2036 b'server',
2031 b'bundle1',
2037 b'bundle1',
2032 default=True,
2038 default=True,
2033 )
2039 )
2034 coreconfigitem(
2040 coreconfigitem(
2035 b'server',
2041 b'server',
2036 b'bundle1gd',
2042 b'bundle1gd',
2037 default=None,
2043 default=None,
2038 )
2044 )
2039 coreconfigitem(
2045 coreconfigitem(
2040 b'server',
2046 b'server',
2041 b'bundle1.pull',
2047 b'bundle1.pull',
2042 default=None,
2048 default=None,
2043 )
2049 )
2044 coreconfigitem(
2050 coreconfigitem(
2045 b'server',
2051 b'server',
2046 b'bundle1gd.pull',
2052 b'bundle1gd.pull',
2047 default=None,
2053 default=None,
2048 )
2054 )
2049 coreconfigitem(
2055 coreconfigitem(
2050 b'server',
2056 b'server',
2051 b'bundle1.push',
2057 b'bundle1.push',
2052 default=None,
2058 default=None,
2053 )
2059 )
2054 coreconfigitem(
2060 coreconfigitem(
2055 b'server',
2061 b'server',
2056 b'bundle1gd.push',
2062 b'bundle1gd.push',
2057 default=None,
2063 default=None,
2058 )
2064 )
2059 coreconfigitem(
2065 coreconfigitem(
2060 b'server',
2066 b'server',
2061 b'bundle2.stream',
2067 b'bundle2.stream',
2062 default=True,
2068 default=True,
2063 alias=[(b'experimental', b'bundle2.stream')],
2069 alias=[(b'experimental', b'bundle2.stream')],
2064 )
2070 )
2065 coreconfigitem(
2071 coreconfigitem(
2066 b'server',
2072 b'server',
2067 b'compressionengines',
2073 b'compressionengines',
2068 default=list,
2074 default=list,
2069 )
2075 )
2070 coreconfigitem(
2076 coreconfigitem(
2071 b'server',
2077 b'server',
2072 b'concurrent-push-mode',
2078 b'concurrent-push-mode',
2073 default=b'check-related',
2079 default=b'check-related',
2074 )
2080 )
2075 coreconfigitem(
2081 coreconfigitem(
2076 b'server',
2082 b'server',
2077 b'disablefullbundle',
2083 b'disablefullbundle',
2078 default=False,
2084 default=False,
2079 )
2085 )
2080 coreconfigitem(
2086 coreconfigitem(
2081 b'server',
2087 b'server',
2082 b'maxhttpheaderlen',
2088 b'maxhttpheaderlen',
2083 default=1024,
2089 default=1024,
2084 )
2090 )
2085 coreconfigitem(
2091 coreconfigitem(
2086 b'server',
2092 b'server',
2087 b'pullbundle',
2093 b'pullbundle',
2088 default=False,
2094 default=False,
2089 )
2095 )
2090 coreconfigitem(
2096 coreconfigitem(
2091 b'server',
2097 b'server',
2092 b'preferuncompressed',
2098 b'preferuncompressed',
2093 default=False,
2099 default=False,
2094 )
2100 )
2095 coreconfigitem(
2101 coreconfigitem(
2096 b'server',
2102 b'server',
2097 b'streamunbundle',
2103 b'streamunbundle',
2098 default=False,
2104 default=False,
2099 )
2105 )
2100 coreconfigitem(
2106 coreconfigitem(
2101 b'server',
2107 b'server',
2102 b'uncompressed',
2108 b'uncompressed',
2103 default=True,
2109 default=True,
2104 )
2110 )
2105 coreconfigitem(
2111 coreconfigitem(
2106 b'server',
2112 b'server',
2107 b'uncompressedallowsecret',
2113 b'uncompressedallowsecret',
2108 default=False,
2114 default=False,
2109 )
2115 )
2110 coreconfigitem(
2116 coreconfigitem(
2111 b'server',
2117 b'server',
2112 b'view',
2118 b'view',
2113 default=b'served',
2119 default=b'served',
2114 )
2120 )
2115 coreconfigitem(
2121 coreconfigitem(
2116 b'server',
2122 b'server',
2117 b'validate',
2123 b'validate',
2118 default=False,
2124 default=False,
2119 )
2125 )
2120 coreconfigitem(
2126 coreconfigitem(
2121 b'server',
2127 b'server',
2122 b'zliblevel',
2128 b'zliblevel',
2123 default=-1,
2129 default=-1,
2124 )
2130 )
2125 coreconfigitem(
2131 coreconfigitem(
2126 b'server',
2132 b'server',
2127 b'zstdlevel',
2133 b'zstdlevel',
2128 default=3,
2134 default=3,
2129 )
2135 )
2130 coreconfigitem(
2136 coreconfigitem(
2131 b'share',
2137 b'share',
2132 b'pool',
2138 b'pool',
2133 default=None,
2139 default=None,
2134 )
2140 )
2135 coreconfigitem(
2141 coreconfigitem(
2136 b'share',
2142 b'share',
2137 b'poolnaming',
2143 b'poolnaming',
2138 default=b'identity',
2144 default=b'identity',
2139 )
2145 )
2140 coreconfigitem(
2146 coreconfigitem(
2141 b'share',
2147 b'share',
2142 b'safe-mismatch.source-not-safe',
2148 b'safe-mismatch.source-not-safe',
2143 default=b'abort',
2149 default=b'abort',
2144 )
2150 )
2145 coreconfigitem(
2151 coreconfigitem(
2146 b'share',
2152 b'share',
2147 b'safe-mismatch.source-safe',
2153 b'safe-mismatch.source-safe',
2148 default=b'abort',
2154 default=b'abort',
2149 )
2155 )
2150 coreconfigitem(
2156 coreconfigitem(
2151 b'share',
2157 b'share',
2152 b'safe-mismatch.source-not-safe.warn',
2158 b'safe-mismatch.source-not-safe.warn',
2153 default=True,
2159 default=True,
2154 )
2160 )
2155 coreconfigitem(
2161 coreconfigitem(
2156 b'share',
2162 b'share',
2157 b'safe-mismatch.source-safe.warn',
2163 b'safe-mismatch.source-safe.warn',
2158 default=True,
2164 default=True,
2159 )
2165 )
2160 coreconfigitem(
2166 coreconfigitem(
2161 b'shelve',
2167 b'shelve',
2162 b'maxbackups',
2168 b'maxbackups',
2163 default=10,
2169 default=10,
2164 )
2170 )
2165 coreconfigitem(
2171 coreconfigitem(
2166 b'smtp',
2172 b'smtp',
2167 b'host',
2173 b'host',
2168 default=None,
2174 default=None,
2169 )
2175 )
2170 coreconfigitem(
2176 coreconfigitem(
2171 b'smtp',
2177 b'smtp',
2172 b'local_hostname',
2178 b'local_hostname',
2173 default=None,
2179 default=None,
2174 )
2180 )
2175 coreconfigitem(
2181 coreconfigitem(
2176 b'smtp',
2182 b'smtp',
2177 b'password',
2183 b'password',
2178 default=None,
2184 default=None,
2179 )
2185 )
2180 coreconfigitem(
2186 coreconfigitem(
2181 b'smtp',
2187 b'smtp',
2182 b'port',
2188 b'port',
2183 default=dynamicdefault,
2189 default=dynamicdefault,
2184 )
2190 )
2185 coreconfigitem(
2191 coreconfigitem(
2186 b'smtp',
2192 b'smtp',
2187 b'tls',
2193 b'tls',
2188 default=b'none',
2194 default=b'none',
2189 )
2195 )
2190 coreconfigitem(
2196 coreconfigitem(
2191 b'smtp',
2197 b'smtp',
2192 b'username',
2198 b'username',
2193 default=None,
2199 default=None,
2194 )
2200 )
2195 coreconfigitem(
2201 coreconfigitem(
2196 b'sparse',
2202 b'sparse',
2197 b'missingwarning',
2203 b'missingwarning',
2198 default=True,
2204 default=True,
2199 experimental=True,
2205 experimental=True,
2200 )
2206 )
2201 coreconfigitem(
2207 coreconfigitem(
2202 b'subrepos',
2208 b'subrepos',
2203 b'allowed',
2209 b'allowed',
2204 default=dynamicdefault, # to make backporting simpler
2210 default=dynamicdefault, # to make backporting simpler
2205 )
2211 )
2206 coreconfigitem(
2212 coreconfigitem(
2207 b'subrepos',
2213 b'subrepos',
2208 b'hg:allowed',
2214 b'hg:allowed',
2209 default=dynamicdefault,
2215 default=dynamicdefault,
2210 )
2216 )
2211 coreconfigitem(
2217 coreconfigitem(
2212 b'subrepos',
2218 b'subrepos',
2213 b'git:allowed',
2219 b'git:allowed',
2214 default=dynamicdefault,
2220 default=dynamicdefault,
2215 )
2221 )
2216 coreconfigitem(
2222 coreconfigitem(
2217 b'subrepos',
2223 b'subrepos',
2218 b'svn:allowed',
2224 b'svn:allowed',
2219 default=dynamicdefault,
2225 default=dynamicdefault,
2220 )
2226 )
2221 coreconfigitem(
2227 coreconfigitem(
2222 b'templates',
2228 b'templates',
2223 b'.*',
2229 b'.*',
2224 default=None,
2230 default=None,
2225 generic=True,
2231 generic=True,
2226 )
2232 )
2227 coreconfigitem(
2233 coreconfigitem(
2228 b'templateconfig',
2234 b'templateconfig',
2229 b'.*',
2235 b'.*',
2230 default=dynamicdefault,
2236 default=dynamicdefault,
2231 generic=True,
2237 generic=True,
2232 )
2238 )
2233 coreconfigitem(
2239 coreconfigitem(
2234 b'trusted',
2240 b'trusted',
2235 b'groups',
2241 b'groups',
2236 default=list,
2242 default=list,
2237 )
2243 )
2238 coreconfigitem(
2244 coreconfigitem(
2239 b'trusted',
2245 b'trusted',
2240 b'users',
2246 b'users',
2241 default=list,
2247 default=list,
2242 )
2248 )
2243 coreconfigitem(
2249 coreconfigitem(
2244 b'ui',
2250 b'ui',
2245 b'_usedassubrepo',
2251 b'_usedassubrepo',
2246 default=False,
2252 default=False,
2247 )
2253 )
2248 coreconfigitem(
2254 coreconfigitem(
2249 b'ui',
2255 b'ui',
2250 b'allowemptycommit',
2256 b'allowemptycommit',
2251 default=False,
2257 default=False,
2252 )
2258 )
2253 coreconfigitem(
2259 coreconfigitem(
2254 b'ui',
2260 b'ui',
2255 b'archivemeta',
2261 b'archivemeta',
2256 default=True,
2262 default=True,
2257 )
2263 )
2258 coreconfigitem(
2264 coreconfigitem(
2259 b'ui',
2265 b'ui',
2260 b'askusername',
2266 b'askusername',
2261 default=False,
2267 default=False,
2262 )
2268 )
2263 coreconfigitem(
2269 coreconfigitem(
2264 b'ui',
2270 b'ui',
2265 b'available-memory',
2271 b'available-memory',
2266 default=None,
2272 default=None,
2267 )
2273 )
2268
2274
2269 coreconfigitem(
2275 coreconfigitem(
2270 b'ui',
2276 b'ui',
2271 b'clonebundlefallback',
2277 b'clonebundlefallback',
2272 default=False,
2278 default=False,
2273 )
2279 )
2274 coreconfigitem(
2280 coreconfigitem(
2275 b'ui',
2281 b'ui',
2276 b'clonebundleprefers',
2282 b'clonebundleprefers',
2277 default=list,
2283 default=list,
2278 )
2284 )
2279 coreconfigitem(
2285 coreconfigitem(
2280 b'ui',
2286 b'ui',
2281 b'clonebundles',
2287 b'clonebundles',
2282 default=True,
2288 default=True,
2283 )
2289 )
2284 coreconfigitem(
2290 coreconfigitem(
2285 b'ui',
2291 b'ui',
2286 b'color',
2292 b'color',
2287 default=b'auto',
2293 default=b'auto',
2288 )
2294 )
2289 coreconfigitem(
2295 coreconfigitem(
2290 b'ui',
2296 b'ui',
2291 b'commitsubrepos',
2297 b'commitsubrepos',
2292 default=False,
2298 default=False,
2293 )
2299 )
2294 coreconfigitem(
2300 coreconfigitem(
2295 b'ui',
2301 b'ui',
2296 b'debug',
2302 b'debug',
2297 default=False,
2303 default=False,
2298 )
2304 )
2299 coreconfigitem(
2305 coreconfigitem(
2300 b'ui',
2306 b'ui',
2301 b'debugger',
2307 b'debugger',
2302 default=None,
2308 default=None,
2303 )
2309 )
2304 coreconfigitem(
2310 coreconfigitem(
2305 b'ui',
2311 b'ui',
2306 b'editor',
2312 b'editor',
2307 default=dynamicdefault,
2313 default=dynamicdefault,
2308 )
2314 )
2309 coreconfigitem(
2315 coreconfigitem(
2310 b'ui',
2316 b'ui',
2311 b'detailed-exit-code',
2317 b'detailed-exit-code',
2312 default=False,
2318 default=False,
2313 experimental=True,
2319 experimental=True,
2314 )
2320 )
2315 coreconfigitem(
2321 coreconfigitem(
2316 b'ui',
2322 b'ui',
2317 b'fallbackencoding',
2323 b'fallbackencoding',
2318 default=None,
2324 default=None,
2319 )
2325 )
2320 coreconfigitem(
2326 coreconfigitem(
2321 b'ui',
2327 b'ui',
2322 b'forcecwd',
2328 b'forcecwd',
2323 default=None,
2329 default=None,
2324 )
2330 )
2325 coreconfigitem(
2331 coreconfigitem(
2326 b'ui',
2332 b'ui',
2327 b'forcemerge',
2333 b'forcemerge',
2328 default=None,
2334 default=None,
2329 )
2335 )
2330 coreconfigitem(
2336 coreconfigitem(
2331 b'ui',
2337 b'ui',
2332 b'formatdebug',
2338 b'formatdebug',
2333 default=False,
2339 default=False,
2334 )
2340 )
2335 coreconfigitem(
2341 coreconfigitem(
2336 b'ui',
2342 b'ui',
2337 b'formatjson',
2343 b'formatjson',
2338 default=False,
2344 default=False,
2339 )
2345 )
2340 coreconfigitem(
2346 coreconfigitem(
2341 b'ui',
2347 b'ui',
2342 b'formatted',
2348 b'formatted',
2343 default=None,
2349 default=None,
2344 )
2350 )
2345 coreconfigitem(
2351 coreconfigitem(
2346 b'ui',
2352 b'ui',
2347 b'interactive',
2353 b'interactive',
2348 default=None,
2354 default=None,
2349 )
2355 )
2350 coreconfigitem(
2356 coreconfigitem(
2351 b'ui',
2357 b'ui',
2352 b'interface',
2358 b'interface',
2353 default=None,
2359 default=None,
2354 )
2360 )
2355 coreconfigitem(
2361 coreconfigitem(
2356 b'ui',
2362 b'ui',
2357 b'interface.chunkselector',
2363 b'interface.chunkselector',
2358 default=None,
2364 default=None,
2359 )
2365 )
2360 coreconfigitem(
2366 coreconfigitem(
2361 b'ui',
2367 b'ui',
2362 b'large-file-limit',
2368 b'large-file-limit',
2363 default=10 * (2 ** 20),
2369 default=10 * (2 ** 20),
2364 )
2370 )
2365 coreconfigitem(
2371 coreconfigitem(
2366 b'ui',
2372 b'ui',
2367 b'logblockedtimes',
2373 b'logblockedtimes',
2368 default=False,
2374 default=False,
2369 )
2375 )
2370 coreconfigitem(
2376 coreconfigitem(
2371 b'ui',
2377 b'ui',
2372 b'merge',
2378 b'merge',
2373 default=None,
2379 default=None,
2374 )
2380 )
2375 coreconfigitem(
2381 coreconfigitem(
2376 b'ui',
2382 b'ui',
2377 b'mergemarkers',
2383 b'mergemarkers',
2378 default=b'basic',
2384 default=b'basic',
2379 )
2385 )
2380 coreconfigitem(
2386 coreconfigitem(
2381 b'ui',
2387 b'ui',
2382 b'message-output',
2388 b'message-output',
2383 default=b'stdio',
2389 default=b'stdio',
2384 )
2390 )
2385 coreconfigitem(
2391 coreconfigitem(
2386 b'ui',
2392 b'ui',
2387 b'nontty',
2393 b'nontty',
2388 default=False,
2394 default=False,
2389 )
2395 )
2390 coreconfigitem(
2396 coreconfigitem(
2391 b'ui',
2397 b'ui',
2392 b'origbackuppath',
2398 b'origbackuppath',
2393 default=None,
2399 default=None,
2394 )
2400 )
2395 coreconfigitem(
2401 coreconfigitem(
2396 b'ui',
2402 b'ui',
2397 b'paginate',
2403 b'paginate',
2398 default=True,
2404 default=True,
2399 )
2405 )
2400 coreconfigitem(
2406 coreconfigitem(
2401 b'ui',
2407 b'ui',
2402 b'patch',
2408 b'patch',
2403 default=None,
2409 default=None,
2404 )
2410 )
2405 coreconfigitem(
2411 coreconfigitem(
2406 b'ui',
2412 b'ui',
2407 b'portablefilenames',
2413 b'portablefilenames',
2408 default=b'warn',
2414 default=b'warn',
2409 )
2415 )
2410 coreconfigitem(
2416 coreconfigitem(
2411 b'ui',
2417 b'ui',
2412 b'promptecho',
2418 b'promptecho',
2413 default=False,
2419 default=False,
2414 )
2420 )
2415 coreconfigitem(
2421 coreconfigitem(
2416 b'ui',
2422 b'ui',
2417 b'quiet',
2423 b'quiet',
2418 default=False,
2424 default=False,
2419 )
2425 )
2420 coreconfigitem(
2426 coreconfigitem(
2421 b'ui',
2427 b'ui',
2422 b'quietbookmarkmove',
2428 b'quietbookmarkmove',
2423 default=False,
2429 default=False,
2424 )
2430 )
2425 coreconfigitem(
2431 coreconfigitem(
2426 b'ui',
2432 b'ui',
2427 b'relative-paths',
2433 b'relative-paths',
2428 default=b'legacy',
2434 default=b'legacy',
2429 )
2435 )
2430 coreconfigitem(
2436 coreconfigitem(
2431 b'ui',
2437 b'ui',
2432 b'remotecmd',
2438 b'remotecmd',
2433 default=b'hg',
2439 default=b'hg',
2434 )
2440 )
2435 coreconfigitem(
2441 coreconfigitem(
2436 b'ui',
2442 b'ui',
2437 b'report_untrusted',
2443 b'report_untrusted',
2438 default=True,
2444 default=True,
2439 )
2445 )
2440 coreconfigitem(
2446 coreconfigitem(
2441 b'ui',
2447 b'ui',
2442 b'rollback',
2448 b'rollback',
2443 default=True,
2449 default=True,
2444 )
2450 )
2445 coreconfigitem(
2451 coreconfigitem(
2446 b'ui',
2452 b'ui',
2447 b'signal-safe-lock',
2453 b'signal-safe-lock',
2448 default=True,
2454 default=True,
2449 )
2455 )
2450 coreconfigitem(
2456 coreconfigitem(
2451 b'ui',
2457 b'ui',
2452 b'slash',
2458 b'slash',
2453 default=False,
2459 default=False,
2454 )
2460 )
2455 coreconfigitem(
2461 coreconfigitem(
2456 b'ui',
2462 b'ui',
2457 b'ssh',
2463 b'ssh',
2458 default=b'ssh',
2464 default=b'ssh',
2459 )
2465 )
2460 coreconfigitem(
2466 coreconfigitem(
2461 b'ui',
2467 b'ui',
2462 b'ssherrorhint',
2468 b'ssherrorhint',
2463 default=None,
2469 default=None,
2464 )
2470 )
2465 coreconfigitem(
2471 coreconfigitem(
2466 b'ui',
2472 b'ui',
2467 b'statuscopies',
2473 b'statuscopies',
2468 default=False,
2474 default=False,
2469 )
2475 )
2470 coreconfigitem(
2476 coreconfigitem(
2471 b'ui',
2477 b'ui',
2472 b'strict',
2478 b'strict',
2473 default=False,
2479 default=False,
2474 )
2480 )
2475 coreconfigitem(
2481 coreconfigitem(
2476 b'ui',
2482 b'ui',
2477 b'style',
2483 b'style',
2478 default=b'',
2484 default=b'',
2479 )
2485 )
2480 coreconfigitem(
2486 coreconfigitem(
2481 b'ui',
2487 b'ui',
2482 b'supportcontact',
2488 b'supportcontact',
2483 default=None,
2489 default=None,
2484 )
2490 )
2485 coreconfigitem(
2491 coreconfigitem(
2486 b'ui',
2492 b'ui',
2487 b'textwidth',
2493 b'textwidth',
2488 default=78,
2494 default=78,
2489 )
2495 )
2490 coreconfigitem(
2496 coreconfigitem(
2491 b'ui',
2497 b'ui',
2492 b'timeout',
2498 b'timeout',
2493 default=b'600',
2499 default=b'600',
2494 )
2500 )
2495 coreconfigitem(
2501 coreconfigitem(
2496 b'ui',
2502 b'ui',
2497 b'timeout.warn',
2503 b'timeout.warn',
2498 default=0,
2504 default=0,
2499 )
2505 )
2500 coreconfigitem(
2506 coreconfigitem(
2501 b'ui',
2507 b'ui',
2502 b'timestamp-output',
2508 b'timestamp-output',
2503 default=False,
2509 default=False,
2504 )
2510 )
2505 coreconfigitem(
2511 coreconfigitem(
2506 b'ui',
2512 b'ui',
2507 b'traceback',
2513 b'traceback',
2508 default=False,
2514 default=False,
2509 )
2515 )
2510 coreconfigitem(
2516 coreconfigitem(
2511 b'ui',
2517 b'ui',
2512 b'tweakdefaults',
2518 b'tweakdefaults',
2513 default=False,
2519 default=False,
2514 )
2520 )
2515 coreconfigitem(b'ui', b'username', alias=[(b'ui', b'user')])
2521 coreconfigitem(b'ui', b'username', alias=[(b'ui', b'user')])
2516 coreconfigitem(
2522 coreconfigitem(
2517 b'ui',
2523 b'ui',
2518 b'verbose',
2524 b'verbose',
2519 default=False,
2525 default=False,
2520 )
2526 )
2521 coreconfigitem(
2527 coreconfigitem(
2522 b'verify',
2528 b'verify',
2523 b'skipflags',
2529 b'skipflags',
2524 default=None,
2530 default=None,
2525 )
2531 )
2526 coreconfigitem(
2532 coreconfigitem(
2527 b'web',
2533 b'web',
2528 b'allowbz2',
2534 b'allowbz2',
2529 default=False,
2535 default=False,
2530 )
2536 )
2531 coreconfigitem(
2537 coreconfigitem(
2532 b'web',
2538 b'web',
2533 b'allowgz',
2539 b'allowgz',
2534 default=False,
2540 default=False,
2535 )
2541 )
2536 coreconfigitem(
2542 coreconfigitem(
2537 b'web',
2543 b'web',
2538 b'allow-pull',
2544 b'allow-pull',
2539 alias=[(b'web', b'allowpull')],
2545 alias=[(b'web', b'allowpull')],
2540 default=True,
2546 default=True,
2541 )
2547 )
2542 coreconfigitem(
2548 coreconfigitem(
2543 b'web',
2549 b'web',
2544 b'allow-push',
2550 b'allow-push',
2545 alias=[(b'web', b'allow_push')],
2551 alias=[(b'web', b'allow_push')],
2546 default=list,
2552 default=list,
2547 )
2553 )
2548 coreconfigitem(
2554 coreconfigitem(
2549 b'web',
2555 b'web',
2550 b'allowzip',
2556 b'allowzip',
2551 default=False,
2557 default=False,
2552 )
2558 )
2553 coreconfigitem(
2559 coreconfigitem(
2554 b'web',
2560 b'web',
2555 b'archivesubrepos',
2561 b'archivesubrepos',
2556 default=False,
2562 default=False,
2557 )
2563 )
2558 coreconfigitem(
2564 coreconfigitem(
2559 b'web',
2565 b'web',
2560 b'cache',
2566 b'cache',
2561 default=True,
2567 default=True,
2562 )
2568 )
2563 coreconfigitem(
2569 coreconfigitem(
2564 b'web',
2570 b'web',
2565 b'comparisoncontext',
2571 b'comparisoncontext',
2566 default=5,
2572 default=5,
2567 )
2573 )
2568 coreconfigitem(
2574 coreconfigitem(
2569 b'web',
2575 b'web',
2570 b'contact',
2576 b'contact',
2571 default=None,
2577 default=None,
2572 )
2578 )
2573 coreconfigitem(
2579 coreconfigitem(
2574 b'web',
2580 b'web',
2575 b'deny_push',
2581 b'deny_push',
2576 default=list,
2582 default=list,
2577 )
2583 )
2578 coreconfigitem(
2584 coreconfigitem(
2579 b'web',
2585 b'web',
2580 b'guessmime',
2586 b'guessmime',
2581 default=False,
2587 default=False,
2582 )
2588 )
2583 coreconfigitem(
2589 coreconfigitem(
2584 b'web',
2590 b'web',
2585 b'hidden',
2591 b'hidden',
2586 default=False,
2592 default=False,
2587 )
2593 )
2588 coreconfigitem(
2594 coreconfigitem(
2589 b'web',
2595 b'web',
2590 b'labels',
2596 b'labels',
2591 default=list,
2597 default=list,
2592 )
2598 )
2593 coreconfigitem(
2599 coreconfigitem(
2594 b'web',
2600 b'web',
2595 b'logoimg',
2601 b'logoimg',
2596 default=b'hglogo.png',
2602 default=b'hglogo.png',
2597 )
2603 )
2598 coreconfigitem(
2604 coreconfigitem(
2599 b'web',
2605 b'web',
2600 b'logourl',
2606 b'logourl',
2601 default=b'https://mercurial-scm.org/',
2607 default=b'https://mercurial-scm.org/',
2602 )
2608 )
2603 coreconfigitem(
2609 coreconfigitem(
2604 b'web',
2610 b'web',
2605 b'accesslog',
2611 b'accesslog',
2606 default=b'-',
2612 default=b'-',
2607 )
2613 )
2608 coreconfigitem(
2614 coreconfigitem(
2609 b'web',
2615 b'web',
2610 b'address',
2616 b'address',
2611 default=b'',
2617 default=b'',
2612 )
2618 )
2613 coreconfigitem(
2619 coreconfigitem(
2614 b'web',
2620 b'web',
2615 b'allow-archive',
2621 b'allow-archive',
2616 alias=[(b'web', b'allow_archive')],
2622 alias=[(b'web', b'allow_archive')],
2617 default=list,
2623 default=list,
2618 )
2624 )
2619 coreconfigitem(
2625 coreconfigitem(
2620 b'web',
2626 b'web',
2621 b'allow_read',
2627 b'allow_read',
2622 default=list,
2628 default=list,
2623 )
2629 )
2624 coreconfigitem(
2630 coreconfigitem(
2625 b'web',
2631 b'web',
2626 b'baseurl',
2632 b'baseurl',
2627 default=None,
2633 default=None,
2628 )
2634 )
2629 coreconfigitem(
2635 coreconfigitem(
2630 b'web',
2636 b'web',
2631 b'cacerts',
2637 b'cacerts',
2632 default=None,
2638 default=None,
2633 )
2639 )
2634 coreconfigitem(
2640 coreconfigitem(
2635 b'web',
2641 b'web',
2636 b'certificate',
2642 b'certificate',
2637 default=None,
2643 default=None,
2638 )
2644 )
2639 coreconfigitem(
2645 coreconfigitem(
2640 b'web',
2646 b'web',
2641 b'collapse',
2647 b'collapse',
2642 default=False,
2648 default=False,
2643 )
2649 )
2644 coreconfigitem(
2650 coreconfigitem(
2645 b'web',
2651 b'web',
2646 b'csp',
2652 b'csp',
2647 default=None,
2653 default=None,
2648 )
2654 )
2649 coreconfigitem(
2655 coreconfigitem(
2650 b'web',
2656 b'web',
2651 b'deny_read',
2657 b'deny_read',
2652 default=list,
2658 default=list,
2653 )
2659 )
2654 coreconfigitem(
2660 coreconfigitem(
2655 b'web',
2661 b'web',
2656 b'descend',
2662 b'descend',
2657 default=True,
2663 default=True,
2658 )
2664 )
2659 coreconfigitem(
2665 coreconfigitem(
2660 b'web',
2666 b'web',
2661 b'description',
2667 b'description',
2662 default=b"",
2668 default=b"",
2663 )
2669 )
2664 coreconfigitem(
2670 coreconfigitem(
2665 b'web',
2671 b'web',
2666 b'encoding',
2672 b'encoding',
2667 default=lambda: encoding.encoding,
2673 default=lambda: encoding.encoding,
2668 )
2674 )
2669 coreconfigitem(
2675 coreconfigitem(
2670 b'web',
2676 b'web',
2671 b'errorlog',
2677 b'errorlog',
2672 default=b'-',
2678 default=b'-',
2673 )
2679 )
2674 coreconfigitem(
2680 coreconfigitem(
2675 b'web',
2681 b'web',
2676 b'ipv6',
2682 b'ipv6',
2677 default=False,
2683 default=False,
2678 )
2684 )
2679 coreconfigitem(
2685 coreconfigitem(
2680 b'web',
2686 b'web',
2681 b'maxchanges',
2687 b'maxchanges',
2682 default=10,
2688 default=10,
2683 )
2689 )
2684 coreconfigitem(
2690 coreconfigitem(
2685 b'web',
2691 b'web',
2686 b'maxfiles',
2692 b'maxfiles',
2687 default=10,
2693 default=10,
2688 )
2694 )
2689 coreconfigitem(
2695 coreconfigitem(
2690 b'web',
2696 b'web',
2691 b'maxshortchanges',
2697 b'maxshortchanges',
2692 default=60,
2698 default=60,
2693 )
2699 )
2694 coreconfigitem(
2700 coreconfigitem(
2695 b'web',
2701 b'web',
2696 b'motd',
2702 b'motd',
2697 default=b'',
2703 default=b'',
2698 )
2704 )
2699 coreconfigitem(
2705 coreconfigitem(
2700 b'web',
2706 b'web',
2701 b'name',
2707 b'name',
2702 default=dynamicdefault,
2708 default=dynamicdefault,
2703 )
2709 )
2704 coreconfigitem(
2710 coreconfigitem(
2705 b'web',
2711 b'web',
2706 b'port',
2712 b'port',
2707 default=8000,
2713 default=8000,
2708 )
2714 )
2709 coreconfigitem(
2715 coreconfigitem(
2710 b'web',
2716 b'web',
2711 b'prefix',
2717 b'prefix',
2712 default=b'',
2718 default=b'',
2713 )
2719 )
2714 coreconfigitem(
2720 coreconfigitem(
2715 b'web',
2721 b'web',
2716 b'push_ssl',
2722 b'push_ssl',
2717 default=True,
2723 default=True,
2718 )
2724 )
2719 coreconfigitem(
2725 coreconfigitem(
2720 b'web',
2726 b'web',
2721 b'refreshinterval',
2727 b'refreshinterval',
2722 default=20,
2728 default=20,
2723 )
2729 )
2724 coreconfigitem(
2730 coreconfigitem(
2725 b'web',
2731 b'web',
2726 b'server-header',
2732 b'server-header',
2727 default=None,
2733 default=None,
2728 )
2734 )
2729 coreconfigitem(
2735 coreconfigitem(
2730 b'web',
2736 b'web',
2731 b'static',
2737 b'static',
2732 default=None,
2738 default=None,
2733 )
2739 )
2734 coreconfigitem(
2740 coreconfigitem(
2735 b'web',
2741 b'web',
2736 b'staticurl',
2742 b'staticurl',
2737 default=None,
2743 default=None,
2738 )
2744 )
2739 coreconfigitem(
2745 coreconfigitem(
2740 b'web',
2746 b'web',
2741 b'stripes',
2747 b'stripes',
2742 default=1,
2748 default=1,
2743 )
2749 )
2744 coreconfigitem(
2750 coreconfigitem(
2745 b'web',
2751 b'web',
2746 b'style',
2752 b'style',
2747 default=b'paper',
2753 default=b'paper',
2748 )
2754 )
2749 coreconfigitem(
2755 coreconfigitem(
2750 b'web',
2756 b'web',
2751 b'templates',
2757 b'templates',
2752 default=None,
2758 default=None,
2753 )
2759 )
2754 coreconfigitem(
2760 coreconfigitem(
2755 b'web',
2761 b'web',
2756 b'view',
2762 b'view',
2757 default=b'served',
2763 default=b'served',
2758 experimental=True,
2764 experimental=True,
2759 )
2765 )
2760 coreconfigitem(
2766 coreconfigitem(
2761 b'worker',
2767 b'worker',
2762 b'backgroundclose',
2768 b'backgroundclose',
2763 default=dynamicdefault,
2769 default=dynamicdefault,
2764 )
2770 )
2765 # Windows defaults to a limit of 512 open files. A buffer of 128
2771 # Windows defaults to a limit of 512 open files. A buffer of 128
2766 # should give us enough headway.
2772 # should give us enough headway.
2767 coreconfigitem(
2773 coreconfigitem(
2768 b'worker',
2774 b'worker',
2769 b'backgroundclosemaxqueue',
2775 b'backgroundclosemaxqueue',
2770 default=384,
2776 default=384,
2771 )
2777 )
2772 coreconfigitem(
2778 coreconfigitem(
2773 b'worker',
2779 b'worker',
2774 b'backgroundcloseminfilecount',
2780 b'backgroundcloseminfilecount',
2775 default=2048,
2781 default=2048,
2776 )
2782 )
2777 coreconfigitem(
2783 coreconfigitem(
2778 b'worker',
2784 b'worker',
2779 b'backgroundclosethreadcount',
2785 b'backgroundclosethreadcount',
2780 default=4,
2786 default=4,
2781 )
2787 )
2782 coreconfigitem(
2788 coreconfigitem(
2783 b'worker',
2789 b'worker',
2784 b'enabled',
2790 b'enabled',
2785 default=True,
2791 default=True,
2786 )
2792 )
2787 coreconfigitem(
2793 coreconfigitem(
2788 b'worker',
2794 b'worker',
2789 b'numcpus',
2795 b'numcpus',
2790 default=None,
2796 default=None,
2791 )
2797 )
2792
2798
2793 # Rebase related configuration moved to core because other extension are doing
2799 # Rebase related configuration moved to core because other extension are doing
2794 # strange things. For example, shelve import the extensions to reuse some bit
2800 # strange things. For example, shelve import the extensions to reuse some bit
2795 # without formally loading it.
2801 # without formally loading it.
2796 coreconfigitem(
2802 coreconfigitem(
2797 b'commands',
2803 b'commands',
2798 b'rebase.requiredest',
2804 b'rebase.requiredest',
2799 default=False,
2805 default=False,
2800 )
2806 )
2801 coreconfigitem(
2807 coreconfigitem(
2802 b'experimental',
2808 b'experimental',
2803 b'rebaseskipobsolete',
2809 b'rebaseskipobsolete',
2804 default=True,
2810 default=True,
2805 )
2811 )
2806 coreconfigitem(
2812 coreconfigitem(
2807 b'rebase',
2813 b'rebase',
2808 b'singletransaction',
2814 b'singletransaction',
2809 default=False,
2815 default=False,
2810 )
2816 )
2811 coreconfigitem(
2817 coreconfigitem(
2812 b'rebase',
2818 b'rebase',
2813 b'experimental.inmemory',
2819 b'experimental.inmemory',
2814 default=False,
2820 default=False,
2815 )
2821 )
@@ -1,3274 +1,3277 b''
1 The Mercurial system uses a set of configuration files to control
1 The Mercurial system uses a set of configuration files to control
2 aspects of its behavior.
2 aspects of its behavior.
3
3
4 Troubleshooting
4 Troubleshooting
5 ===============
5 ===============
6
6
7 If you're having problems with your configuration,
7 If you're having problems with your configuration,
8 :hg:`config --source` can help you understand what is introducing
8 :hg:`config --source` can help you understand what is introducing
9 a setting into your environment.
9 a setting into your environment.
10
10
11 See :hg:`help config.syntax` and :hg:`help config.files`
11 See :hg:`help config.syntax` and :hg:`help config.files`
12 for information about how and where to override things.
12 for information about how and where to override things.
13
13
14 Structure
14 Structure
15 =========
15 =========
16
16
17 The configuration files use a simple ini-file format. A configuration
17 The configuration files use a simple ini-file format. A configuration
18 file consists of sections, led by a ``[section]`` header and followed
18 file consists of sections, led by a ``[section]`` header and followed
19 by ``name = value`` entries::
19 by ``name = value`` entries::
20
20
21 [ui]
21 [ui]
22 username = Firstname Lastname <firstname.lastname@example.net>
22 username = Firstname Lastname <firstname.lastname@example.net>
23 verbose = True
23 verbose = True
24
24
25 The above entries will be referred to as ``ui.username`` and
25 The above entries will be referred to as ``ui.username`` and
26 ``ui.verbose``, respectively. See :hg:`help config.syntax`.
26 ``ui.verbose``, respectively. See :hg:`help config.syntax`.
27
27
28 Files
28 Files
29 =====
29 =====
30
30
31 Mercurial reads configuration data from several files, if they exist.
31 Mercurial reads configuration data from several files, if they exist.
32 These files do not exist by default and you will have to create the
32 These files do not exist by default and you will have to create the
33 appropriate configuration files yourself:
33 appropriate configuration files yourself:
34
34
35 Local configuration is put into the per-repository ``<repo>/.hg/hgrc`` file.
35 Local configuration is put into the per-repository ``<repo>/.hg/hgrc`` file.
36
36
37 Global configuration like the username setting is typically put into:
37 Global configuration like the username setting is typically put into:
38
38
39 .. container:: windows
39 .. container:: windows
40
40
41 - ``%USERPROFILE%\mercurial.ini`` (on Windows)
41 - ``%USERPROFILE%\mercurial.ini`` (on Windows)
42
42
43 .. container:: unix.plan9
43 .. container:: unix.plan9
44
44
45 - ``$HOME/.hgrc`` (on Unix, Plan9)
45 - ``$HOME/.hgrc`` (on Unix, Plan9)
46
46
47 The names of these files depend on the system on which Mercurial is
47 The names of these files depend on the system on which Mercurial is
48 installed. ``*.rc`` files from a single directory are read in
48 installed. ``*.rc`` files from a single directory are read in
49 alphabetical order, later ones overriding earlier ones. Where multiple
49 alphabetical order, later ones overriding earlier ones. Where multiple
50 paths are given below, settings from earlier paths override later
50 paths are given below, settings from earlier paths override later
51 ones.
51 ones.
52
52
53 .. container:: verbose.unix
53 .. container:: verbose.unix
54
54
55 On Unix, the following files are consulted:
55 On Unix, the following files are consulted:
56
56
57 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
57 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
58 - ``<repo>/.hg/hgrc`` (per-repository)
58 - ``<repo>/.hg/hgrc`` (per-repository)
59 - ``$HOME/.hgrc`` (per-user)
59 - ``$HOME/.hgrc`` (per-user)
60 - ``${XDG_CONFIG_HOME:-$HOME/.config}/hg/hgrc`` (per-user)
60 - ``${XDG_CONFIG_HOME:-$HOME/.config}/hg/hgrc`` (per-user)
61 - ``<install-root>/etc/mercurial/hgrc`` (per-installation)
61 - ``<install-root>/etc/mercurial/hgrc`` (per-installation)
62 - ``<install-root>/etc/mercurial/hgrc.d/*.rc`` (per-installation)
62 - ``<install-root>/etc/mercurial/hgrc.d/*.rc`` (per-installation)
63 - ``/etc/mercurial/hgrc`` (per-system)
63 - ``/etc/mercurial/hgrc`` (per-system)
64 - ``/etc/mercurial/hgrc.d/*.rc`` (per-system)
64 - ``/etc/mercurial/hgrc.d/*.rc`` (per-system)
65 - ``<internal>/*.rc`` (defaults)
65 - ``<internal>/*.rc`` (defaults)
66
66
67 .. container:: verbose.windows
67 .. container:: verbose.windows
68
68
69 On Windows, the following files are consulted:
69 On Windows, the following files are consulted:
70
70
71 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
71 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
72 - ``<repo>/.hg/hgrc`` (per-repository)
72 - ``<repo>/.hg/hgrc`` (per-repository)
73 - ``%USERPROFILE%\.hgrc`` (per-user)
73 - ``%USERPROFILE%\.hgrc`` (per-user)
74 - ``%USERPROFILE%\Mercurial.ini`` (per-user)
74 - ``%USERPROFILE%\Mercurial.ini`` (per-user)
75 - ``%HOME%\.hgrc`` (per-user)
75 - ``%HOME%\.hgrc`` (per-user)
76 - ``%HOME%\Mercurial.ini`` (per-user)
76 - ``%HOME%\Mercurial.ini`` (per-user)
77 - ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` (per-system)
77 - ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` (per-system)
78 - ``<install-dir>\hgrc.d\*.rc`` (per-installation)
78 - ``<install-dir>\hgrc.d\*.rc`` (per-installation)
79 - ``<install-dir>\Mercurial.ini`` (per-installation)
79 - ``<install-dir>\Mercurial.ini`` (per-installation)
80 - ``%PROGRAMDATA%\Mercurial\hgrc`` (per-system)
80 - ``%PROGRAMDATA%\Mercurial\hgrc`` (per-system)
81 - ``%PROGRAMDATA%\Mercurial\Mercurial.ini`` (per-system)
81 - ``%PROGRAMDATA%\Mercurial\Mercurial.ini`` (per-system)
82 - ``%PROGRAMDATA%\Mercurial\hgrc.d\*.rc`` (per-system)
82 - ``%PROGRAMDATA%\Mercurial\hgrc.d\*.rc`` (per-system)
83 - ``<internal>/*.rc`` (defaults)
83 - ``<internal>/*.rc`` (defaults)
84
84
85 .. note::
85 .. note::
86
86
87 The registry key ``HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mercurial``
87 The registry key ``HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mercurial``
88 is used when running 32-bit Python on 64-bit Windows.
88 is used when running 32-bit Python on 64-bit Windows.
89
89
90 .. container:: verbose.plan9
90 .. container:: verbose.plan9
91
91
92 On Plan9, the following files are consulted:
92 On Plan9, the following files are consulted:
93
93
94 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
94 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
95 - ``<repo>/.hg/hgrc`` (per-repository)
95 - ``<repo>/.hg/hgrc`` (per-repository)
96 - ``$home/lib/hgrc`` (per-user)
96 - ``$home/lib/hgrc`` (per-user)
97 - ``<install-root>/lib/mercurial/hgrc`` (per-installation)
97 - ``<install-root>/lib/mercurial/hgrc`` (per-installation)
98 - ``<install-root>/lib/mercurial/hgrc.d/*.rc`` (per-installation)
98 - ``<install-root>/lib/mercurial/hgrc.d/*.rc`` (per-installation)
99 - ``/lib/mercurial/hgrc`` (per-system)
99 - ``/lib/mercurial/hgrc`` (per-system)
100 - ``/lib/mercurial/hgrc.d/*.rc`` (per-system)
100 - ``/lib/mercurial/hgrc.d/*.rc`` (per-system)
101 - ``<internal>/*.rc`` (defaults)
101 - ``<internal>/*.rc`` (defaults)
102
102
103 Per-repository configuration options only apply in a
103 Per-repository configuration options only apply in a
104 particular repository. This file is not version-controlled, and
104 particular repository. This file is not version-controlled, and
105 will not get transferred during a "clone" operation. Options in
105 will not get transferred during a "clone" operation. Options in
106 this file override options in all other configuration files.
106 this file override options in all other configuration files.
107
107
108 .. container:: unix.plan9
108 .. container:: unix.plan9
109
109
110 On Plan 9 and Unix, most of this file will be ignored if it doesn't
110 On Plan 9 and Unix, most of this file will be ignored if it doesn't
111 belong to a trusted user or to a trusted group. See
111 belong to a trusted user or to a trusted group. See
112 :hg:`help config.trusted` for more details.
112 :hg:`help config.trusted` for more details.
113
113
114 Per-user configuration file(s) are for the user running Mercurial. Options
114 Per-user configuration file(s) are for the user running Mercurial. Options
115 in these files apply to all Mercurial commands executed by this user in any
115 in these files apply to all Mercurial commands executed by this user in any
116 directory. Options in these files override per-system and per-installation
116 directory. Options in these files override per-system and per-installation
117 options.
117 options.
118
118
119 Per-installation configuration files are searched for in the
119 Per-installation configuration files are searched for in the
120 directory where Mercurial is installed. ``<install-root>`` is the
120 directory where Mercurial is installed. ``<install-root>`` is the
121 parent directory of the **hg** executable (or symlink) being run.
121 parent directory of the **hg** executable (or symlink) being run.
122
122
123 .. container:: unix.plan9
123 .. container:: unix.plan9
124
124
125 For example, if installed in ``/shared/tools/bin/hg``, Mercurial
125 For example, if installed in ``/shared/tools/bin/hg``, Mercurial
126 will look in ``/shared/tools/etc/mercurial/hgrc``. Options in these
126 will look in ``/shared/tools/etc/mercurial/hgrc``. Options in these
127 files apply to all Mercurial commands executed by any user in any
127 files apply to all Mercurial commands executed by any user in any
128 directory.
128 directory.
129
129
130 Per-installation configuration files are for the system on
130 Per-installation configuration files are for the system on
131 which Mercurial is running. Options in these files apply to all
131 which Mercurial is running. Options in these files apply to all
132 Mercurial commands executed by any user in any directory. Registry
132 Mercurial commands executed by any user in any directory. Registry
133 keys contain PATH-like strings, every part of which must reference
133 keys contain PATH-like strings, every part of which must reference
134 a ``Mercurial.ini`` file or be a directory where ``*.rc`` files will
134 a ``Mercurial.ini`` file or be a directory where ``*.rc`` files will
135 be read. Mercurial checks each of these locations in the specified
135 be read. Mercurial checks each of these locations in the specified
136 order until one or more configuration files are detected.
136 order until one or more configuration files are detected.
137
137
138 Per-system configuration files are for the system on which Mercurial
138 Per-system configuration files are for the system on which Mercurial
139 is running. Options in these files apply to all Mercurial commands
139 is running. Options in these files apply to all Mercurial commands
140 executed by any user in any directory. Options in these files
140 executed by any user in any directory. Options in these files
141 override per-installation options.
141 override per-installation options.
142
142
143 Mercurial comes with some default configuration. The default configuration
143 Mercurial comes with some default configuration. The default configuration
144 files are installed with Mercurial and will be overwritten on upgrades. Default
144 files are installed with Mercurial and will be overwritten on upgrades. Default
145 configuration files should never be edited by users or administrators but can
145 configuration files should never be edited by users or administrators but can
146 be overridden in other configuration files. So far the directory only contains
146 be overridden in other configuration files. So far the directory only contains
147 merge tool configuration but packagers can also put other default configuration
147 merge tool configuration but packagers can also put other default configuration
148 there.
148 there.
149
149
150 On versions 5.7 and later, if share-safe functionality is enabled,
150 On versions 5.7 and later, if share-safe functionality is enabled,
151 shares will read config file of share source too.
151 shares will read config file of share source too.
152 `<share-source/.hg/hgrc>` is read before reading `<repo/.hg/hgrc>`.
152 `<share-source/.hg/hgrc>` is read before reading `<repo/.hg/hgrc>`.
153
153
154 For configs which should not be shared, `<repo/.hg/hgrc-not-shared>`
154 For configs which should not be shared, `<repo/.hg/hgrc-not-shared>`
155 should be used.
155 should be used.
156
156
157 Syntax
157 Syntax
158 ======
158 ======
159
159
160 A configuration file consists of sections, led by a ``[section]`` header
160 A configuration file consists of sections, led by a ``[section]`` header
161 and followed by ``name = value`` entries (sometimes called
161 and followed by ``name = value`` entries (sometimes called
162 ``configuration keys``)::
162 ``configuration keys``)::
163
163
164 [spam]
164 [spam]
165 eggs=ham
165 eggs=ham
166 green=
166 green=
167 eggs
167 eggs
168
168
169 Each line contains one entry. If the lines that follow are indented,
169 Each line contains one entry. If the lines that follow are indented,
170 they are treated as continuations of that entry. Leading whitespace is
170 they are treated as continuations of that entry. Leading whitespace is
171 removed from values. Empty lines are skipped. Lines beginning with
171 removed from values. Empty lines are skipped. Lines beginning with
172 ``#`` or ``;`` are ignored and may be used to provide comments.
172 ``#`` or ``;`` are ignored and may be used to provide comments.
173
173
174 Configuration keys can be set multiple times, in which case Mercurial
174 Configuration keys can be set multiple times, in which case Mercurial
175 will use the value that was configured last. As an example::
175 will use the value that was configured last. As an example::
176
176
177 [spam]
177 [spam]
178 eggs=large
178 eggs=large
179 ham=serrano
179 ham=serrano
180 eggs=small
180 eggs=small
181
181
182 This would set the configuration key named ``eggs`` to ``small``.
182 This would set the configuration key named ``eggs`` to ``small``.
183
183
184 It is also possible to define a section multiple times. A section can
184 It is also possible to define a section multiple times. A section can
185 be redefined on the same and/or on different configuration files. For
185 be redefined on the same and/or on different configuration files. For
186 example::
186 example::
187
187
188 [foo]
188 [foo]
189 eggs=large
189 eggs=large
190 ham=serrano
190 ham=serrano
191 eggs=small
191 eggs=small
192
192
193 [bar]
193 [bar]
194 eggs=ham
194 eggs=ham
195 green=
195 green=
196 eggs
196 eggs
197
197
198 [foo]
198 [foo]
199 ham=prosciutto
199 ham=prosciutto
200 eggs=medium
200 eggs=medium
201 bread=toasted
201 bread=toasted
202
202
203 This would set the ``eggs``, ``ham``, and ``bread`` configuration keys
203 This would set the ``eggs``, ``ham``, and ``bread`` configuration keys
204 of the ``foo`` section to ``medium``, ``prosciutto``, and ``toasted``,
204 of the ``foo`` section to ``medium``, ``prosciutto``, and ``toasted``,
205 respectively. As you can see there only thing that matters is the last
205 respectively. As you can see there only thing that matters is the last
206 value that was set for each of the configuration keys.
206 value that was set for each of the configuration keys.
207
207
208 If a configuration key is set multiple times in different
208 If a configuration key is set multiple times in different
209 configuration files the final value will depend on the order in which
209 configuration files the final value will depend on the order in which
210 the different configuration files are read, with settings from earlier
210 the different configuration files are read, with settings from earlier
211 paths overriding later ones as described on the ``Files`` section
211 paths overriding later ones as described on the ``Files`` section
212 above.
212 above.
213
213
214 A line of the form ``%include file`` will include ``file`` into the
214 A line of the form ``%include file`` will include ``file`` into the
215 current configuration file. The inclusion is recursive, which means
215 current configuration file. The inclusion is recursive, which means
216 that included files can include other files. Filenames are relative to
216 that included files can include other files. Filenames are relative to
217 the configuration file in which the ``%include`` directive is found.
217 the configuration file in which the ``%include`` directive is found.
218 Environment variables and ``~user`` constructs are expanded in
218 Environment variables and ``~user`` constructs are expanded in
219 ``file``. This lets you do something like::
219 ``file``. This lets you do something like::
220
220
221 %include ~/.hgrc.d/$HOST.rc
221 %include ~/.hgrc.d/$HOST.rc
222
222
223 to include a different configuration file on each computer you use.
223 to include a different configuration file on each computer you use.
224
224
225 A line with ``%unset name`` will remove ``name`` from the current
225 A line with ``%unset name`` will remove ``name`` from the current
226 section, if it has been set previously.
226 section, if it has been set previously.
227
227
228 The values are either free-form text strings, lists of text strings,
228 The values are either free-form text strings, lists of text strings,
229 or Boolean values. Boolean values can be set to true using any of "1",
229 or Boolean values. Boolean values can be set to true using any of "1",
230 "yes", "true", or "on" and to false using "0", "no", "false", or "off"
230 "yes", "true", or "on" and to false using "0", "no", "false", or "off"
231 (all case insensitive).
231 (all case insensitive).
232
232
233 List values are separated by whitespace or comma, except when values are
233 List values are separated by whitespace or comma, except when values are
234 placed in double quotation marks::
234 placed in double quotation marks::
235
235
236 allow_read = "John Doe, PhD", brian, betty
236 allow_read = "John Doe, PhD", brian, betty
237
237
238 Quotation marks can be escaped by prefixing them with a backslash. Only
238 Quotation marks can be escaped by prefixing them with a backslash. Only
239 quotation marks at the beginning of a word is counted as a quotation
239 quotation marks at the beginning of a word is counted as a quotation
240 (e.g., ``foo"bar baz`` is the list of ``foo"bar`` and ``baz``).
240 (e.g., ``foo"bar baz`` is the list of ``foo"bar`` and ``baz``).
241
241
242 Sections
242 Sections
243 ========
243 ========
244
244
245 This section describes the different sections that may appear in a
245 This section describes the different sections that may appear in a
246 Mercurial configuration file, the purpose of each section, its possible
246 Mercurial configuration file, the purpose of each section, its possible
247 keys, and their possible values.
247 keys, and their possible values.
248
248
249 ``alias``
249 ``alias``
250 ---------
250 ---------
251
251
252 Defines command aliases.
252 Defines command aliases.
253
253
254 Aliases allow you to define your own commands in terms of other
254 Aliases allow you to define your own commands in terms of other
255 commands (or aliases), optionally including arguments. Positional
255 commands (or aliases), optionally including arguments. Positional
256 arguments in the form of ``$1``, ``$2``, etc. in the alias definition
256 arguments in the form of ``$1``, ``$2``, etc. in the alias definition
257 are expanded by Mercurial before execution. Positional arguments not
257 are expanded by Mercurial before execution. Positional arguments not
258 already used by ``$N`` in the definition are put at the end of the
258 already used by ``$N`` in the definition are put at the end of the
259 command to be executed.
259 command to be executed.
260
260
261 Alias definitions consist of lines of the form::
261 Alias definitions consist of lines of the form::
262
262
263 <alias> = <command> [<argument>]...
263 <alias> = <command> [<argument>]...
264
264
265 For example, this definition::
265 For example, this definition::
266
266
267 latest = log --limit 5
267 latest = log --limit 5
268
268
269 creates a new command ``latest`` that shows only the five most recent
269 creates a new command ``latest`` that shows only the five most recent
270 changesets. You can define subsequent aliases using earlier ones::
270 changesets. You can define subsequent aliases using earlier ones::
271
271
272 stable5 = latest -b stable
272 stable5 = latest -b stable
273
273
274 .. note::
274 .. note::
275
275
276 It is possible to create aliases with the same names as
276 It is possible to create aliases with the same names as
277 existing commands, which will then override the original
277 existing commands, which will then override the original
278 definitions. This is almost always a bad idea!
278 definitions. This is almost always a bad idea!
279
279
280 An alias can start with an exclamation point (``!``) to make it a
280 An alias can start with an exclamation point (``!``) to make it a
281 shell alias. A shell alias is executed with the shell and will let you
281 shell alias. A shell alias is executed with the shell and will let you
282 run arbitrary commands. As an example, ::
282 run arbitrary commands. As an example, ::
283
283
284 echo = !echo $@
284 echo = !echo $@
285
285
286 will let you do ``hg echo foo`` to have ``foo`` printed in your
286 will let you do ``hg echo foo`` to have ``foo`` printed in your
287 terminal. A better example might be::
287 terminal. A better example might be::
288
288
289 purge = !$HG status --no-status --unknown -0 re: | xargs -0 rm -f
289 purge = !$HG status --no-status --unknown -0 re: | xargs -0 rm -f
290
290
291 which will make ``hg purge`` delete all unknown files in the
291 which will make ``hg purge`` delete all unknown files in the
292 repository in the same manner as the purge extension.
292 repository in the same manner as the purge extension.
293
293
294 Positional arguments like ``$1``, ``$2``, etc. in the alias definition
294 Positional arguments like ``$1``, ``$2``, etc. in the alias definition
295 expand to the command arguments. Unmatched arguments are
295 expand to the command arguments. Unmatched arguments are
296 removed. ``$0`` expands to the alias name and ``$@`` expands to all
296 removed. ``$0`` expands to the alias name and ``$@`` expands to all
297 arguments separated by a space. ``"$@"`` (with quotes) expands to all
297 arguments separated by a space. ``"$@"`` (with quotes) expands to all
298 arguments quoted individually and separated by a space. These expansions
298 arguments quoted individually and separated by a space. These expansions
299 happen before the command is passed to the shell.
299 happen before the command is passed to the shell.
300
300
301 Shell aliases are executed in an environment where ``$HG`` expands to
301 Shell aliases are executed in an environment where ``$HG`` expands to
302 the path of the Mercurial that was used to execute the alias. This is
302 the path of the Mercurial that was used to execute the alias. This is
303 useful when you want to call further Mercurial commands in a shell
303 useful when you want to call further Mercurial commands in a shell
304 alias, as was done above for the purge alias. In addition,
304 alias, as was done above for the purge alias. In addition,
305 ``$HG_ARGS`` expands to the arguments given to Mercurial. In the ``hg
305 ``$HG_ARGS`` expands to the arguments given to Mercurial. In the ``hg
306 echo foo`` call above, ``$HG_ARGS`` would expand to ``echo foo``.
306 echo foo`` call above, ``$HG_ARGS`` would expand to ``echo foo``.
307
307
308 .. note::
308 .. note::
309
309
310 Some global configuration options such as ``-R`` are
310 Some global configuration options such as ``-R`` are
311 processed before shell aliases and will thus not be passed to
311 processed before shell aliases and will thus not be passed to
312 aliases.
312 aliases.
313
313
314
314
315 ``annotate``
315 ``annotate``
316 ------------
316 ------------
317
317
318 Settings used when displaying file annotations. All values are
318 Settings used when displaying file annotations. All values are
319 Booleans and default to False. See :hg:`help config.diff` for
319 Booleans and default to False. See :hg:`help config.diff` for
320 related options for the diff command.
320 related options for the diff command.
321
321
322 ``ignorews``
322 ``ignorews``
323 Ignore white space when comparing lines.
323 Ignore white space when comparing lines.
324
324
325 ``ignorewseol``
325 ``ignorewseol``
326 Ignore white space at the end of a line when comparing lines.
326 Ignore white space at the end of a line when comparing lines.
327
327
328 ``ignorewsamount``
328 ``ignorewsamount``
329 Ignore changes in the amount of white space.
329 Ignore changes in the amount of white space.
330
330
331 ``ignoreblanklines``
331 ``ignoreblanklines``
332 Ignore changes whose lines are all blank.
332 Ignore changes whose lines are all blank.
333
333
334
334
335 ``auth``
335 ``auth``
336 --------
336 --------
337
337
338 Authentication credentials and other authentication-like configuration
338 Authentication credentials and other authentication-like configuration
339 for HTTP connections. This section allows you to store usernames and
339 for HTTP connections. This section allows you to store usernames and
340 passwords for use when logging *into* HTTP servers. See
340 passwords for use when logging *into* HTTP servers. See
341 :hg:`help config.web` if you want to configure *who* can login to
341 :hg:`help config.web` if you want to configure *who* can login to
342 your HTTP server.
342 your HTTP server.
343
343
344 The following options apply to all hosts.
344 The following options apply to all hosts.
345
345
346 ``cookiefile``
346 ``cookiefile``
347 Path to a file containing HTTP cookie lines. Cookies matching a
347 Path to a file containing HTTP cookie lines. Cookies matching a
348 host will be sent automatically.
348 host will be sent automatically.
349
349
350 The file format uses the Mozilla cookies.txt format, which defines cookies
350 The file format uses the Mozilla cookies.txt format, which defines cookies
351 on their own lines. Each line contains 7 fields delimited by the tab
351 on their own lines. Each line contains 7 fields delimited by the tab
352 character (domain, is_domain_cookie, path, is_secure, expires, name,
352 character (domain, is_domain_cookie, path, is_secure, expires, name,
353 value). For more info, do an Internet search for "Netscape cookies.txt
353 value). For more info, do an Internet search for "Netscape cookies.txt
354 format."
354 format."
355
355
356 Note: the cookies parser does not handle port numbers on domains. You
356 Note: the cookies parser does not handle port numbers on domains. You
357 will need to remove ports from the domain for the cookie to be recognized.
357 will need to remove ports from the domain for the cookie to be recognized.
358 This could result in a cookie being disclosed to an unwanted server.
358 This could result in a cookie being disclosed to an unwanted server.
359
359
360 The cookies file is read-only.
360 The cookies file is read-only.
361
361
362 Other options in this section are grouped by name and have the following
362 Other options in this section are grouped by name and have the following
363 format::
363 format::
364
364
365 <name>.<argument> = <value>
365 <name>.<argument> = <value>
366
366
367 where ``<name>`` is used to group arguments into authentication
367 where ``<name>`` is used to group arguments into authentication
368 entries. Example::
368 entries. Example::
369
369
370 foo.prefix = hg.intevation.de/mercurial
370 foo.prefix = hg.intevation.de/mercurial
371 foo.username = foo
371 foo.username = foo
372 foo.password = bar
372 foo.password = bar
373 foo.schemes = http https
373 foo.schemes = http https
374
374
375 bar.prefix = secure.example.org
375 bar.prefix = secure.example.org
376 bar.key = path/to/file.key
376 bar.key = path/to/file.key
377 bar.cert = path/to/file.cert
377 bar.cert = path/to/file.cert
378 bar.schemes = https
378 bar.schemes = https
379
379
380 Supported arguments:
380 Supported arguments:
381
381
382 ``prefix``
382 ``prefix``
383 Either ``*`` or a URI prefix with or without the scheme part.
383 Either ``*`` or a URI prefix with or without the scheme part.
384 The authentication entry with the longest matching prefix is used
384 The authentication entry with the longest matching prefix is used
385 (where ``*`` matches everything and counts as a match of length
385 (where ``*`` matches everything and counts as a match of length
386 1). If the prefix doesn't include a scheme, the match is performed
386 1). If the prefix doesn't include a scheme, the match is performed
387 against the URI with its scheme stripped as well, and the schemes
387 against the URI with its scheme stripped as well, and the schemes
388 argument, q.v., is then subsequently consulted.
388 argument, q.v., is then subsequently consulted.
389
389
390 ``username``
390 ``username``
391 Optional. Username to authenticate with. If not given, and the
391 Optional. Username to authenticate with. If not given, and the
392 remote site requires basic or digest authentication, the user will
392 remote site requires basic or digest authentication, the user will
393 be prompted for it. Environment variables are expanded in the
393 be prompted for it. Environment variables are expanded in the
394 username letting you do ``foo.username = $USER``. If the URI
394 username letting you do ``foo.username = $USER``. If the URI
395 includes a username, only ``[auth]`` entries with a matching
395 includes a username, only ``[auth]`` entries with a matching
396 username or without a username will be considered.
396 username or without a username will be considered.
397
397
398 ``password``
398 ``password``
399 Optional. Password to authenticate with. If not given, and the
399 Optional. Password to authenticate with. If not given, and the
400 remote site requires basic or digest authentication, the user
400 remote site requires basic or digest authentication, the user
401 will be prompted for it.
401 will be prompted for it.
402
402
403 ``key``
403 ``key``
404 Optional. PEM encoded client certificate key file. Environment
404 Optional. PEM encoded client certificate key file. Environment
405 variables are expanded in the filename.
405 variables are expanded in the filename.
406
406
407 ``cert``
407 ``cert``
408 Optional. PEM encoded client certificate chain file. Environment
408 Optional. PEM encoded client certificate chain file. Environment
409 variables are expanded in the filename.
409 variables are expanded in the filename.
410
410
411 ``schemes``
411 ``schemes``
412 Optional. Space separated list of URI schemes to use this
412 Optional. Space separated list of URI schemes to use this
413 authentication entry with. Only used if the prefix doesn't include
413 authentication entry with. Only used if the prefix doesn't include
414 a scheme. Supported schemes are http and https. They will match
414 a scheme. Supported schemes are http and https. They will match
415 static-http and static-https respectively, as well.
415 static-http and static-https respectively, as well.
416 (default: https)
416 (default: https)
417
417
418 If no suitable authentication entry is found, the user is prompted
418 If no suitable authentication entry is found, the user is prompted
419 for credentials as usual if required by the remote.
419 for credentials as usual if required by the remote.
420
420
421 ``cmdserver``
421 ``cmdserver``
422 -------------
422 -------------
423
423
424 Controls command server settings. (ADVANCED)
424 Controls command server settings. (ADVANCED)
425
425
426 ``message-encodings``
426 ``message-encodings``
427 List of encodings for the ``m`` (message) channel. The first encoding
427 List of encodings for the ``m`` (message) channel. The first encoding
428 supported by the server will be selected and advertised in the hello
428 supported by the server will be selected and advertised in the hello
429 message. This is useful only when ``ui.message-output`` is set to
429 message. This is useful only when ``ui.message-output`` is set to
430 ``channel``. Supported encodings are ``cbor``.
430 ``channel``. Supported encodings are ``cbor``.
431
431
432 ``shutdown-on-interrupt``
432 ``shutdown-on-interrupt``
433 If set to false, the server's main loop will continue running after
433 If set to false, the server's main loop will continue running after
434 SIGINT received. ``runcommand`` requests can still be interrupted by
434 SIGINT received. ``runcommand`` requests can still be interrupted by
435 SIGINT. Close the write end of the pipe to shut down the server
435 SIGINT. Close the write end of the pipe to shut down the server
436 process gracefully.
436 process gracefully.
437 (default: True)
437 (default: True)
438
438
439 ``color``
439 ``color``
440 ---------
440 ---------
441
441
442 Configure the Mercurial color mode. For details about how to define your custom
442 Configure the Mercurial color mode. For details about how to define your custom
443 effect and style see :hg:`help color`.
443 effect and style see :hg:`help color`.
444
444
445 ``mode``
445 ``mode``
446 String: control the method used to output color. One of ``auto``, ``ansi``,
446 String: control the method used to output color. One of ``auto``, ``ansi``,
447 ``win32``, ``terminfo`` or ``debug``. In auto mode, Mercurial will
447 ``win32``, ``terminfo`` or ``debug``. In auto mode, Mercurial will
448 use ANSI mode by default (or win32 mode prior to Windows 10) if it detects a
448 use ANSI mode by default (or win32 mode prior to Windows 10) if it detects a
449 terminal. Any invalid value will disable color.
449 terminal. Any invalid value will disable color.
450
450
451 ``pagermode``
451 ``pagermode``
452 String: optional override of ``color.mode`` used with pager.
452 String: optional override of ``color.mode`` used with pager.
453
453
454 On some systems, terminfo mode may cause problems when using
454 On some systems, terminfo mode may cause problems when using
455 color with ``less -R`` as a pager program. less with the -R option
455 color with ``less -R`` as a pager program. less with the -R option
456 will only display ECMA-48 color codes, and terminfo mode may sometimes
456 will only display ECMA-48 color codes, and terminfo mode may sometimes
457 emit codes that less doesn't understand. You can work around this by
457 emit codes that less doesn't understand. You can work around this by
458 either using ansi mode (or auto mode), or by using less -r (which will
458 either using ansi mode (or auto mode), or by using less -r (which will
459 pass through all terminal control codes, not just color control
459 pass through all terminal control codes, not just color control
460 codes).
460 codes).
461
461
462 On some systems (such as MSYS in Windows), the terminal may support
462 On some systems (such as MSYS in Windows), the terminal may support
463 a different color mode than the pager program.
463 a different color mode than the pager program.
464
464
465 ``commands``
465 ``commands``
466 ------------
466 ------------
467
467
468 ``commit.post-status``
468 ``commit.post-status``
469 Show status of files in the working directory after successful commit.
469 Show status of files in the working directory after successful commit.
470 (default: False)
470 (default: False)
471
471
472 ``merge.require-rev``
472 ``merge.require-rev``
473 Require that the revision to merge the current commit with be specified on
473 Require that the revision to merge the current commit with be specified on
474 the command line. If this is enabled and a revision is not specified, the
474 the command line. If this is enabled and a revision is not specified, the
475 command aborts.
475 command aborts.
476 (default: False)
476 (default: False)
477
477
478 ``push.require-revs``
478 ``push.require-revs``
479 Require revisions to push be specified using one or more mechanisms such as
479 Require revisions to push be specified using one or more mechanisms such as
480 specifying them positionally on the command line, using ``-r``, ``-b``,
480 specifying them positionally on the command line, using ``-r``, ``-b``,
481 and/or ``-B`` on the command line, or using ``paths.<path>:pushrev`` in the
481 and/or ``-B`` on the command line, or using ``paths.<path>:pushrev`` in the
482 configuration. If this is enabled and revisions are not specified, the
482 configuration. If this is enabled and revisions are not specified, the
483 command aborts.
483 command aborts.
484 (default: False)
484 (default: False)
485
485
486 ``resolve.confirm``
486 ``resolve.confirm``
487 Confirm before performing action if no filename is passed.
487 Confirm before performing action if no filename is passed.
488 (default: False)
488 (default: False)
489
489
490 ``resolve.explicit-re-merge``
490 ``resolve.explicit-re-merge``
491 Require uses of ``hg resolve`` to specify which action it should perform,
491 Require uses of ``hg resolve`` to specify which action it should perform,
492 instead of re-merging files by default.
492 instead of re-merging files by default.
493 (default: False)
493 (default: False)
494
494
495 ``resolve.mark-check``
495 ``resolve.mark-check``
496 Determines what level of checking :hg:`resolve --mark` will perform before
496 Determines what level of checking :hg:`resolve --mark` will perform before
497 marking files as resolved. Valid values are ``none`, ``warn``, and
497 marking files as resolved. Valid values are ``none`, ``warn``, and
498 ``abort``. ``warn`` will output a warning listing the file(s) that still
498 ``abort``. ``warn`` will output a warning listing the file(s) that still
499 have conflict markers in them, but will still mark everything resolved.
499 have conflict markers in them, but will still mark everything resolved.
500 ``abort`` will output the same warning but will not mark things as resolved.
500 ``abort`` will output the same warning but will not mark things as resolved.
501 If --all is passed and this is set to ``abort``, only a warning will be
501 If --all is passed and this is set to ``abort``, only a warning will be
502 shown (an error will not be raised).
502 shown (an error will not be raised).
503 (default: ``none``)
503 (default: ``none``)
504
504
505 ``status.relative``
505 ``status.relative``
506 Make paths in :hg:`status` output relative to the current directory.
506 Make paths in :hg:`status` output relative to the current directory.
507 (default: False)
507 (default: False)
508
508
509 ``status.terse``
509 ``status.terse``
510 Default value for the --terse flag, which condenses status output.
510 Default value for the --terse flag, which condenses status output.
511 (default: empty)
511 (default: empty)
512
512
513 ``update.check``
513 ``update.check``
514 Determines what level of checking :hg:`update` will perform before moving
514 Determines what level of checking :hg:`update` will perform before moving
515 to a destination revision. Valid values are ``abort``, ``none``,
515 to a destination revision. Valid values are ``abort``, ``none``,
516 ``linear``, and ``noconflict``.
516 ``linear``, and ``noconflict``.
517
517
518 - ``abort`` always fails if the working directory has uncommitted changes.
518 - ``abort`` always fails if the working directory has uncommitted changes.
519
519
520 - ``none`` performs no checking, and may result in a merge with uncommitted changes.
520 - ``none`` performs no checking, and may result in a merge with uncommitted changes.
521
521
522 - ``linear`` allows any update as long as it follows a straight line in the
522 - ``linear`` allows any update as long as it follows a straight line in the
523 revision history, and may trigger a merge with uncommitted changes.
523 revision history, and may trigger a merge with uncommitted changes.
524
524
525 - ``noconflict`` will allow any update which would not trigger a merge with
525 - ``noconflict`` will allow any update which would not trigger a merge with
526 uncommitted changes, if any are present.
526 uncommitted changes, if any are present.
527
527
528 (default: ``linear``)
528 (default: ``linear``)
529
529
530 ``update.requiredest``
530 ``update.requiredest``
531 Require that the user pass a destination when running :hg:`update`.
531 Require that the user pass a destination when running :hg:`update`.
532 For example, :hg:`update .::` will be allowed, but a plain :hg:`update`
532 For example, :hg:`update .::` will be allowed, but a plain :hg:`update`
533 will be disallowed.
533 will be disallowed.
534 (default: False)
534 (default: False)
535
535
536 ``committemplate``
536 ``committemplate``
537 ------------------
537 ------------------
538
538
539 ``changeset``
539 ``changeset``
540 String: configuration in this section is used as the template to
540 String: configuration in this section is used as the template to
541 customize the text shown in the editor when committing.
541 customize the text shown in the editor when committing.
542
542
543 In addition to pre-defined template keywords, commit log specific one
543 In addition to pre-defined template keywords, commit log specific one
544 below can be used for customization:
544 below can be used for customization:
545
545
546 ``extramsg``
546 ``extramsg``
547 String: Extra message (typically 'Leave message empty to abort
547 String: Extra message (typically 'Leave message empty to abort
548 commit.'). This may be changed by some commands or extensions.
548 commit.'). This may be changed by some commands or extensions.
549
549
550 For example, the template configuration below shows as same text as
550 For example, the template configuration below shows as same text as
551 one shown by default::
551 one shown by default::
552
552
553 [committemplate]
553 [committemplate]
554 changeset = {desc}\n\n
554 changeset = {desc}\n\n
555 HG: Enter commit message. Lines beginning with 'HG:' are removed.
555 HG: Enter commit message. Lines beginning with 'HG:' are removed.
556 HG: {extramsg}
556 HG: {extramsg}
557 HG: --
557 HG: --
558 HG: user: {author}\n{ifeq(p2rev, "-1", "",
558 HG: user: {author}\n{ifeq(p2rev, "-1", "",
559 "HG: branch merge\n")
559 "HG: branch merge\n")
560 }HG: branch '{branch}'\n{if(activebookmark,
560 }HG: branch '{branch}'\n{if(activebookmark,
561 "HG: bookmark '{activebookmark}'\n") }{subrepos %
561 "HG: bookmark '{activebookmark}'\n") }{subrepos %
562 "HG: subrepo {subrepo}\n" }{file_adds %
562 "HG: subrepo {subrepo}\n" }{file_adds %
563 "HG: added {file}\n" }{file_mods %
563 "HG: added {file}\n" }{file_mods %
564 "HG: changed {file}\n" }{file_dels %
564 "HG: changed {file}\n" }{file_dels %
565 "HG: removed {file}\n" }{if(files, "",
565 "HG: removed {file}\n" }{if(files, "",
566 "HG: no files changed\n")}
566 "HG: no files changed\n")}
567
567
568 ``diff()``
568 ``diff()``
569 String: show the diff (see :hg:`help templates` for detail)
569 String: show the diff (see :hg:`help templates` for detail)
570
570
571 Sometimes it is helpful to show the diff of the changeset in the editor without
571 Sometimes it is helpful to show the diff of the changeset in the editor without
572 having to prefix 'HG: ' to each line so that highlighting works correctly. For
572 having to prefix 'HG: ' to each line so that highlighting works correctly. For
573 this, Mercurial provides a special string which will ignore everything below
573 this, Mercurial provides a special string which will ignore everything below
574 it::
574 it::
575
575
576 HG: ------------------------ >8 ------------------------
576 HG: ------------------------ >8 ------------------------
577
577
578 For example, the template configuration below will show the diff below the
578 For example, the template configuration below will show the diff below the
579 extra message::
579 extra message::
580
580
581 [committemplate]
581 [committemplate]
582 changeset = {desc}\n\n
582 changeset = {desc}\n\n
583 HG: Enter commit message. Lines beginning with 'HG:' are removed.
583 HG: Enter commit message. Lines beginning with 'HG:' are removed.
584 HG: {extramsg}
584 HG: {extramsg}
585 HG: ------------------------ >8 ------------------------
585 HG: ------------------------ >8 ------------------------
586 HG: Do not touch the line above.
586 HG: Do not touch the line above.
587 HG: Everything below will be removed.
587 HG: Everything below will be removed.
588 {diff()}
588 {diff()}
589
589
590 .. note::
590 .. note::
591
591
592 For some problematic encodings (see :hg:`help win32mbcs` for
592 For some problematic encodings (see :hg:`help win32mbcs` for
593 detail), this customization should be configured carefully, to
593 detail), this customization should be configured carefully, to
594 avoid showing broken characters.
594 avoid showing broken characters.
595
595
596 For example, if a multibyte character ending with backslash (0x5c) is
596 For example, if a multibyte character ending with backslash (0x5c) is
597 followed by the ASCII character 'n' in the customized template,
597 followed by the ASCII character 'n' in the customized template,
598 the sequence of backslash and 'n' is treated as line-feed unexpectedly
598 the sequence of backslash and 'n' is treated as line-feed unexpectedly
599 (and the multibyte character is broken, too).
599 (and the multibyte character is broken, too).
600
600
601 Customized template is used for commands below (``--edit`` may be
601 Customized template is used for commands below (``--edit`` may be
602 required):
602 required):
603
603
604 - :hg:`backout`
604 - :hg:`backout`
605 - :hg:`commit`
605 - :hg:`commit`
606 - :hg:`fetch` (for merge commit only)
606 - :hg:`fetch` (for merge commit only)
607 - :hg:`graft`
607 - :hg:`graft`
608 - :hg:`histedit`
608 - :hg:`histedit`
609 - :hg:`import`
609 - :hg:`import`
610 - :hg:`qfold`, :hg:`qnew` and :hg:`qrefresh`
610 - :hg:`qfold`, :hg:`qnew` and :hg:`qrefresh`
611 - :hg:`rebase`
611 - :hg:`rebase`
612 - :hg:`shelve`
612 - :hg:`shelve`
613 - :hg:`sign`
613 - :hg:`sign`
614 - :hg:`tag`
614 - :hg:`tag`
615 - :hg:`transplant`
615 - :hg:`transplant`
616
616
617 Configuring items below instead of ``changeset`` allows showing
617 Configuring items below instead of ``changeset`` allows showing
618 customized message only for specific actions, or showing different
618 customized message only for specific actions, or showing different
619 messages for each action.
619 messages for each action.
620
620
621 - ``changeset.backout`` for :hg:`backout`
621 - ``changeset.backout`` for :hg:`backout`
622 - ``changeset.commit.amend.merge`` for :hg:`commit --amend` on merges
622 - ``changeset.commit.amend.merge`` for :hg:`commit --amend` on merges
623 - ``changeset.commit.amend.normal`` for :hg:`commit --amend` on other
623 - ``changeset.commit.amend.normal`` for :hg:`commit --amend` on other
624 - ``changeset.commit.normal.merge`` for :hg:`commit` on merges
624 - ``changeset.commit.normal.merge`` for :hg:`commit` on merges
625 - ``changeset.commit.normal.normal`` for :hg:`commit` on other
625 - ``changeset.commit.normal.normal`` for :hg:`commit` on other
626 - ``changeset.fetch`` for :hg:`fetch` (impling merge commit)
626 - ``changeset.fetch`` for :hg:`fetch` (impling merge commit)
627 - ``changeset.gpg.sign`` for :hg:`sign`
627 - ``changeset.gpg.sign`` for :hg:`sign`
628 - ``changeset.graft`` for :hg:`graft`
628 - ``changeset.graft`` for :hg:`graft`
629 - ``changeset.histedit.edit`` for ``edit`` of :hg:`histedit`
629 - ``changeset.histedit.edit`` for ``edit`` of :hg:`histedit`
630 - ``changeset.histedit.fold`` for ``fold`` of :hg:`histedit`
630 - ``changeset.histedit.fold`` for ``fold`` of :hg:`histedit`
631 - ``changeset.histedit.mess`` for ``mess`` of :hg:`histedit`
631 - ``changeset.histedit.mess`` for ``mess`` of :hg:`histedit`
632 - ``changeset.histedit.pick`` for ``pick`` of :hg:`histedit`
632 - ``changeset.histedit.pick`` for ``pick`` of :hg:`histedit`
633 - ``changeset.import.bypass`` for :hg:`import --bypass`
633 - ``changeset.import.bypass`` for :hg:`import --bypass`
634 - ``changeset.import.normal.merge`` for :hg:`import` on merges
634 - ``changeset.import.normal.merge`` for :hg:`import` on merges
635 - ``changeset.import.normal.normal`` for :hg:`import` on other
635 - ``changeset.import.normal.normal`` for :hg:`import` on other
636 - ``changeset.mq.qnew`` for :hg:`qnew`
636 - ``changeset.mq.qnew`` for :hg:`qnew`
637 - ``changeset.mq.qfold`` for :hg:`qfold`
637 - ``changeset.mq.qfold`` for :hg:`qfold`
638 - ``changeset.mq.qrefresh`` for :hg:`qrefresh`
638 - ``changeset.mq.qrefresh`` for :hg:`qrefresh`
639 - ``changeset.rebase.collapse`` for :hg:`rebase --collapse`
639 - ``changeset.rebase.collapse`` for :hg:`rebase --collapse`
640 - ``changeset.rebase.merge`` for :hg:`rebase` on merges
640 - ``changeset.rebase.merge`` for :hg:`rebase` on merges
641 - ``changeset.rebase.normal`` for :hg:`rebase` on other
641 - ``changeset.rebase.normal`` for :hg:`rebase` on other
642 - ``changeset.shelve.shelve`` for :hg:`shelve`
642 - ``changeset.shelve.shelve`` for :hg:`shelve`
643 - ``changeset.tag.add`` for :hg:`tag` without ``--remove``
643 - ``changeset.tag.add`` for :hg:`tag` without ``--remove``
644 - ``changeset.tag.remove`` for :hg:`tag --remove`
644 - ``changeset.tag.remove`` for :hg:`tag --remove`
645 - ``changeset.transplant.merge`` for :hg:`transplant` on merges
645 - ``changeset.transplant.merge`` for :hg:`transplant` on merges
646 - ``changeset.transplant.normal`` for :hg:`transplant` on other
646 - ``changeset.transplant.normal`` for :hg:`transplant` on other
647
647
648 These dot-separated lists of names are treated as hierarchical ones.
648 These dot-separated lists of names are treated as hierarchical ones.
649 For example, ``changeset.tag.remove`` customizes the commit message
649 For example, ``changeset.tag.remove`` customizes the commit message
650 only for :hg:`tag --remove`, but ``changeset.tag`` customizes the
650 only for :hg:`tag --remove`, but ``changeset.tag`` customizes the
651 commit message for :hg:`tag` regardless of ``--remove`` option.
651 commit message for :hg:`tag` regardless of ``--remove`` option.
652
652
653 When the external editor is invoked for a commit, the corresponding
653 When the external editor is invoked for a commit, the corresponding
654 dot-separated list of names without the ``changeset.`` prefix
654 dot-separated list of names without the ``changeset.`` prefix
655 (e.g. ``commit.normal.normal``) is in the ``HGEDITFORM`` environment
655 (e.g. ``commit.normal.normal``) is in the ``HGEDITFORM`` environment
656 variable.
656 variable.
657
657
658 In this section, items other than ``changeset`` can be referred from
658 In this section, items other than ``changeset`` can be referred from
659 others. For example, the configuration to list committed files up
659 others. For example, the configuration to list committed files up
660 below can be referred as ``{listupfiles}``::
660 below can be referred as ``{listupfiles}``::
661
661
662 [committemplate]
662 [committemplate]
663 listupfiles = {file_adds %
663 listupfiles = {file_adds %
664 "HG: added {file}\n" }{file_mods %
664 "HG: added {file}\n" }{file_mods %
665 "HG: changed {file}\n" }{file_dels %
665 "HG: changed {file}\n" }{file_dels %
666 "HG: removed {file}\n" }{if(files, "",
666 "HG: removed {file}\n" }{if(files, "",
667 "HG: no files changed\n")}
667 "HG: no files changed\n")}
668
668
669 ``decode/encode``
669 ``decode/encode``
670 -----------------
670 -----------------
671
671
672 Filters for transforming files on checkout/checkin. This would
672 Filters for transforming files on checkout/checkin. This would
673 typically be used for newline processing or other
673 typically be used for newline processing or other
674 localization/canonicalization of files.
674 localization/canonicalization of files.
675
675
676 Filters consist of a filter pattern followed by a filter command.
676 Filters consist of a filter pattern followed by a filter command.
677 Filter patterns are globs by default, rooted at the repository root.
677 Filter patterns are globs by default, rooted at the repository root.
678 For example, to match any file ending in ``.txt`` in the root
678 For example, to match any file ending in ``.txt`` in the root
679 directory only, use the pattern ``*.txt``. To match any file ending
679 directory only, use the pattern ``*.txt``. To match any file ending
680 in ``.c`` anywhere in the repository, use the pattern ``**.c``.
680 in ``.c`` anywhere in the repository, use the pattern ``**.c``.
681 For each file only the first matching filter applies.
681 For each file only the first matching filter applies.
682
682
683 The filter command can start with a specifier, either ``pipe:`` or
683 The filter command can start with a specifier, either ``pipe:`` or
684 ``tempfile:``. If no specifier is given, ``pipe:`` is used by default.
684 ``tempfile:``. If no specifier is given, ``pipe:`` is used by default.
685
685
686 A ``pipe:`` command must accept data on stdin and return the transformed
686 A ``pipe:`` command must accept data on stdin and return the transformed
687 data on stdout.
687 data on stdout.
688
688
689 Pipe example::
689 Pipe example::
690
690
691 [encode]
691 [encode]
692 # uncompress gzip files on checkin to improve delta compression
692 # uncompress gzip files on checkin to improve delta compression
693 # note: not necessarily a good idea, just an example
693 # note: not necessarily a good idea, just an example
694 *.gz = pipe: gunzip
694 *.gz = pipe: gunzip
695
695
696 [decode]
696 [decode]
697 # recompress gzip files when writing them to the working dir (we
697 # recompress gzip files when writing them to the working dir (we
698 # can safely omit "pipe:", because it's the default)
698 # can safely omit "pipe:", because it's the default)
699 *.gz = gzip
699 *.gz = gzip
700
700
701 A ``tempfile:`` command is a template. The string ``INFILE`` is replaced
701 A ``tempfile:`` command is a template. The string ``INFILE`` is replaced
702 with the name of a temporary file that contains the data to be
702 with the name of a temporary file that contains the data to be
703 filtered by the command. The string ``OUTFILE`` is replaced with the name
703 filtered by the command. The string ``OUTFILE`` is replaced with the name
704 of an empty temporary file, where the filtered data must be written by
704 of an empty temporary file, where the filtered data must be written by
705 the command.
705 the command.
706
706
707 .. container:: windows
707 .. container:: windows
708
708
709 .. note::
709 .. note::
710
710
711 The tempfile mechanism is recommended for Windows systems,
711 The tempfile mechanism is recommended for Windows systems,
712 where the standard shell I/O redirection operators often have
712 where the standard shell I/O redirection operators often have
713 strange effects and may corrupt the contents of your files.
713 strange effects and may corrupt the contents of your files.
714
714
715 This filter mechanism is used internally by the ``eol`` extension to
715 This filter mechanism is used internally by the ``eol`` extension to
716 translate line ending characters between Windows (CRLF) and Unix (LF)
716 translate line ending characters between Windows (CRLF) and Unix (LF)
717 format. We suggest you use the ``eol`` extension for convenience.
717 format. We suggest you use the ``eol`` extension for convenience.
718
718
719
719
720 ``defaults``
720 ``defaults``
721 ------------
721 ------------
722
722
723 (defaults are deprecated. Don't use them. Use aliases instead.)
723 (defaults are deprecated. Don't use them. Use aliases instead.)
724
724
725 Use the ``[defaults]`` section to define command defaults, i.e. the
725 Use the ``[defaults]`` section to define command defaults, i.e. the
726 default options/arguments to pass to the specified commands.
726 default options/arguments to pass to the specified commands.
727
727
728 The following example makes :hg:`log` run in verbose mode, and
728 The following example makes :hg:`log` run in verbose mode, and
729 :hg:`status` show only the modified files, by default::
729 :hg:`status` show only the modified files, by default::
730
730
731 [defaults]
731 [defaults]
732 log = -v
732 log = -v
733 status = -m
733 status = -m
734
734
735 The actual commands, instead of their aliases, must be used when
735 The actual commands, instead of their aliases, must be used when
736 defining command defaults. The command defaults will also be applied
736 defining command defaults. The command defaults will also be applied
737 to the aliases of the commands defined.
737 to the aliases of the commands defined.
738
738
739
739
740 ``diff``
740 ``diff``
741 --------
741 --------
742
742
743 Settings used when displaying diffs. Everything except for ``unified``
743 Settings used when displaying diffs. Everything except for ``unified``
744 is a Boolean and defaults to False. See :hg:`help config.annotate`
744 is a Boolean and defaults to False. See :hg:`help config.annotate`
745 for related options for the annotate command.
745 for related options for the annotate command.
746
746
747 ``git``
747 ``git``
748 Use git extended diff format.
748 Use git extended diff format.
749
749
750 ``nobinary``
750 ``nobinary``
751 Omit git binary patches.
751 Omit git binary patches.
752
752
753 ``nodates``
753 ``nodates``
754 Don't include dates in diff headers.
754 Don't include dates in diff headers.
755
755
756 ``noprefix``
756 ``noprefix``
757 Omit 'a/' and 'b/' prefixes from filenames. Ignored in plain mode.
757 Omit 'a/' and 'b/' prefixes from filenames. Ignored in plain mode.
758
758
759 ``showfunc``
759 ``showfunc``
760 Show which function each change is in.
760 Show which function each change is in.
761
761
762 ``ignorews``
762 ``ignorews``
763 Ignore white space when comparing lines.
763 Ignore white space when comparing lines.
764
764
765 ``ignorewsamount``
765 ``ignorewsamount``
766 Ignore changes in the amount of white space.
766 Ignore changes in the amount of white space.
767
767
768 ``ignoreblanklines``
768 ``ignoreblanklines``
769 Ignore changes whose lines are all blank.
769 Ignore changes whose lines are all blank.
770
770
771 ``unified``
771 ``unified``
772 Number of lines of context to show.
772 Number of lines of context to show.
773
773
774 ``word-diff``
774 ``word-diff``
775 Highlight changed words.
775 Highlight changed words.
776
776
777 ``email``
777 ``email``
778 ---------
778 ---------
779
779
780 Settings for extensions that send email messages.
780 Settings for extensions that send email messages.
781
781
782 ``from``
782 ``from``
783 Optional. Email address to use in "From" header and SMTP envelope
783 Optional. Email address to use in "From" header and SMTP envelope
784 of outgoing messages.
784 of outgoing messages.
785
785
786 ``to``
786 ``to``
787 Optional. Comma-separated list of recipients' email addresses.
787 Optional. Comma-separated list of recipients' email addresses.
788
788
789 ``cc``
789 ``cc``
790 Optional. Comma-separated list of carbon copy recipients'
790 Optional. Comma-separated list of carbon copy recipients'
791 email addresses.
791 email addresses.
792
792
793 ``bcc``
793 ``bcc``
794 Optional. Comma-separated list of blind carbon copy recipients'
794 Optional. Comma-separated list of blind carbon copy recipients'
795 email addresses.
795 email addresses.
796
796
797 ``method``
797 ``method``
798 Optional. Method to use to send email messages. If value is ``smtp``
798 Optional. Method to use to send email messages. If value is ``smtp``
799 (default), use SMTP (see the ``[smtp]`` section for configuration).
799 (default), use SMTP (see the ``[smtp]`` section for configuration).
800 Otherwise, use as name of program to run that acts like sendmail
800 Otherwise, use as name of program to run that acts like sendmail
801 (takes ``-f`` option for sender, list of recipients on command line,
801 (takes ``-f`` option for sender, list of recipients on command line,
802 message on stdin). Normally, setting this to ``sendmail`` or
802 message on stdin). Normally, setting this to ``sendmail`` or
803 ``/usr/sbin/sendmail`` is enough to use sendmail to send messages.
803 ``/usr/sbin/sendmail`` is enough to use sendmail to send messages.
804
804
805 ``charsets``
805 ``charsets``
806 Optional. Comma-separated list of character sets considered
806 Optional. Comma-separated list of character sets considered
807 convenient for recipients. Addresses, headers, and parts not
807 convenient for recipients. Addresses, headers, and parts not
808 containing patches of outgoing messages will be encoded in the
808 containing patches of outgoing messages will be encoded in the
809 first character set to which conversion from local encoding
809 first character set to which conversion from local encoding
810 (``$HGENCODING``, ``ui.fallbackencoding``) succeeds. If correct
810 (``$HGENCODING``, ``ui.fallbackencoding``) succeeds. If correct
811 conversion fails, the text in question is sent as is.
811 conversion fails, the text in question is sent as is.
812 (default: '')
812 (default: '')
813
813
814 Order of outgoing email character sets:
814 Order of outgoing email character sets:
815
815
816 1. ``us-ascii``: always first, regardless of settings
816 1. ``us-ascii``: always first, regardless of settings
817 2. ``email.charsets``: in order given by user
817 2. ``email.charsets``: in order given by user
818 3. ``ui.fallbackencoding``: if not in email.charsets
818 3. ``ui.fallbackencoding``: if not in email.charsets
819 4. ``$HGENCODING``: if not in email.charsets
819 4. ``$HGENCODING``: if not in email.charsets
820 5. ``utf-8``: always last, regardless of settings
820 5. ``utf-8``: always last, regardless of settings
821
821
822 Email example::
822 Email example::
823
823
824 [email]
824 [email]
825 from = Joseph User <joe.user@example.com>
825 from = Joseph User <joe.user@example.com>
826 method = /usr/sbin/sendmail
826 method = /usr/sbin/sendmail
827 # charsets for western Europeans
827 # charsets for western Europeans
828 # us-ascii, utf-8 omitted, as they are tried first and last
828 # us-ascii, utf-8 omitted, as they are tried first and last
829 charsets = iso-8859-1, iso-8859-15, windows-1252
829 charsets = iso-8859-1, iso-8859-15, windows-1252
830
830
831
831
832 ``extensions``
832 ``extensions``
833 --------------
833 --------------
834
834
835 Mercurial has an extension mechanism for adding new features. To
835 Mercurial has an extension mechanism for adding new features. To
836 enable an extension, create an entry for it in this section.
836 enable an extension, create an entry for it in this section.
837
837
838 If you know that the extension is already in Python's search path,
838 If you know that the extension is already in Python's search path,
839 you can give the name of the module, followed by ``=``, with nothing
839 you can give the name of the module, followed by ``=``, with nothing
840 after the ``=``.
840 after the ``=``.
841
841
842 Otherwise, give a name that you choose, followed by ``=``, followed by
842 Otherwise, give a name that you choose, followed by ``=``, followed by
843 the path to the ``.py`` file (including the file name extension) that
843 the path to the ``.py`` file (including the file name extension) that
844 defines the extension.
844 defines the extension.
845
845
846 To explicitly disable an extension that is enabled in an hgrc of
846 To explicitly disable an extension that is enabled in an hgrc of
847 broader scope, prepend its path with ``!``, as in ``foo = !/ext/path``
847 broader scope, prepend its path with ``!``, as in ``foo = !/ext/path``
848 or ``foo = !`` when path is not supplied.
848 or ``foo = !`` when path is not supplied.
849
849
850 Example for ``~/.hgrc``::
850 Example for ``~/.hgrc``::
851
851
852 [extensions]
852 [extensions]
853 # (the churn extension will get loaded from Mercurial's path)
853 # (the churn extension will get loaded from Mercurial's path)
854 churn =
854 churn =
855 # (this extension will get loaded from the file specified)
855 # (this extension will get loaded from the file specified)
856 myfeature = ~/.hgext/myfeature.py
856 myfeature = ~/.hgext/myfeature.py
857
857
858 If an extension fails to load, a warning will be issued, and Mercurial will
858 If an extension fails to load, a warning will be issued, and Mercurial will
859 proceed. To enforce that an extension must be loaded, one can set the `required`
859 proceed. To enforce that an extension must be loaded, one can set the `required`
860 suboption in the config::
860 suboption in the config::
861
861
862 [extensions]
862 [extensions]
863 myfeature = ~/.hgext/myfeature.py
863 myfeature = ~/.hgext/myfeature.py
864 myfeature:required = yes
864 myfeature:required = yes
865
865
866 To debug extension loading issue, one can add `--traceback` to their mercurial
866 To debug extension loading issue, one can add `--traceback` to their mercurial
867 invocation.
867 invocation.
868
868
869 A default setting can we set using the special `*` extension key::
869 A default setting can we set using the special `*` extension key::
870
870
871 [extensions]
871 [extensions]
872 *:required = yes
872 *:required = yes
873 myfeature = ~/.hgext/myfeature.py
873 myfeature = ~/.hgext/myfeature.py
874 rebase=
874 rebase=
875
875
876
876
877 ``format``
877 ``format``
878 ----------
878 ----------
879
879
880 Configuration that controls the repository format. Newer format options are more
880 Configuration that controls the repository format. Newer format options are more
881 powerful, but incompatible with some older versions of Mercurial. Format options
881 powerful, but incompatible with some older versions of Mercurial. Format options
882 are considered at repository initialization only. You need to make a new clone
882 are considered at repository initialization only. You need to make a new clone
883 for config changes to be taken into account.
883 for config changes to be taken into account.
884
884
885 For more details about repository format and version compatibility, see
885 For more details about repository format and version compatibility, see
886 https://www.mercurial-scm.org/wiki/MissingRequirement
886 https://www.mercurial-scm.org/wiki/MissingRequirement
887
887
888 ``usegeneraldelta``
888 ``usegeneraldelta``
889 Enable or disable the "generaldelta" repository format which improves
889 Enable or disable the "generaldelta" repository format which improves
890 repository compression by allowing "revlog" to store deltas against
890 repository compression by allowing "revlog" to store deltas against
891 arbitrary revisions instead of the previously stored one. This provides
891 arbitrary revisions instead of the previously stored one. This provides
892 significant improvement for repositories with branches.
892 significant improvement for repositories with branches.
893
893
894 Repositories with this on-disk format require Mercurial version 1.9.
894 Repositories with this on-disk format require Mercurial version 1.9.
895
895
896 Enabled by default.
896 Enabled by default.
897
897
898 ``dotencode``
898 ``dotencode``
899 Enable or disable the "dotencode" repository format which enhances
899 Enable or disable the "dotencode" repository format which enhances
900 the "fncache" repository format (which has to be enabled to use
900 the "fncache" repository format (which has to be enabled to use
901 dotencode) to avoid issues with filenames starting with "._" on
901 dotencode) to avoid issues with filenames starting with "._" on
902 Mac OS X and spaces on Windows.
902 Mac OS X and spaces on Windows.
903
903
904 Repositories with this on-disk format require Mercurial version 1.7.
904 Repositories with this on-disk format require Mercurial version 1.7.
905
905
906 Enabled by default.
906 Enabled by default.
907
907
908 ``usefncache``
908 ``usefncache``
909 Enable or disable the "fncache" repository format which enhances
909 Enable or disable the "fncache" repository format which enhances
910 the "store" repository format (which has to be enabled to use
910 the "store" repository format (which has to be enabled to use
911 fncache) to allow longer filenames and avoids using Windows
911 fncache) to allow longer filenames and avoids using Windows
912 reserved names, e.g. "nul".
912 reserved names, e.g. "nul".
913
913
914 Repositories with this on-disk format require Mercurial version 1.1.
914 Repositories with this on-disk format require Mercurial version 1.1.
915
915
916 Enabled by default.
916 Enabled by default.
917
917
918 ``use-dirstate-v2``
918 ``use-dirstate-v2``
919 Enable or disable the experimental "dirstate-v2" feature. The dirstate
919 Enable or disable the experimental "dirstate-v2" feature. The dirstate
920 functionality is shared by all commands interacting with the working copy.
920 functionality is shared by all commands interacting with the working copy.
921 The new version is more robust, faster and stores more information.
921 The new version is more robust, faster and stores more information.
922
922
923 The performance-improving version of this feature is currently only
923 The performance-improving version of this feature is currently only
924 implemented in Rust (see :hg:`help rust`), so people not using a version of
924 implemented in Rust (see :hg:`help rust`), so people not using a version of
925 Mercurial compiled with the Rust parts might actually suffer some slowdown.
925 Mercurial compiled with the Rust parts might actually suffer some slowdown.
926 For this reason, such versions will by default refuse to access repositories
926 For this reason, such versions will by default refuse to access repositories
927 with "dirstate-v2" enabled.
927 with "dirstate-v2" enabled.
928
928
929 This behavior can be adjusted via configuration: check
929 This behavior can be adjusted via configuration: check
930 :hg:`help config.storage.dirstate-v2.slow-path` for details.
930 :hg:`help config.storage.dirstate-v2.slow-path` for details.
931
931
932 Repositories with this on-disk format require Mercurial 6.0 or above.
932 Repositories with this on-disk format require Mercurial 6.0 or above.
933
933
934 By default this format variant is disabled if the fast implementation is not
934 By default this format variant is disabled if the fast implementation is not
935 available, and enabled by default if the fast implementation is available.
935 available, and enabled by default if the fast implementation is available.
936
936
937 To accomodate installations of Mercurial without the fast implementation,
937 To accomodate installations of Mercurial without the fast implementation,
938 you can downgrade your repository. To do so run the following command:
938 you can downgrade your repository. To do so run the following command:
939
939
940 $ hg debugupgraderepo \
940 $ hg debugupgraderepo \
941 --run \
941 --run \
942 --config format.use-dirstate-v2=False \
942 --config format.use-dirstate-v2=False \
943 --config storage.dirstate-v2.slow-path=allow
943 --config storage.dirstate-v2.slow-path=allow
944
944
945 For a more comprehensive guide, see :hg:`help internals.dirstate-v2`.
945 For a more comprehensive guide, see :hg:`help internals.dirstate-v2`.
946
946
947 ``use-dirstate-v2.automatic-upgrade-of-mismatching-repositories``
947 ``use-dirstate-v2.automatic-upgrade-of-mismatching-repositories``
948 When enabled, an automatic upgrade will be triggered when a repository format
948 When enabled, an automatic upgrade will be triggered when a repository format
949 does not match its `use-dirstate-v2` config.
949 does not match its `use-dirstate-v2` config.
950
950
951 This is an advanced behavior that most users will not need. We recommend you
951 This is an advanced behavior that most users will not need. We recommend you
952 don't use this unless you are a seasoned administrator of a Mercurial install
952 don't use this unless you are a seasoned administrator of a Mercurial install
953 base.
953 base.
954
954
955 Automatic upgrade means that any process accessing the repository will
955 Automatic upgrade means that any process accessing the repository will
956 upgrade the repository format to use `dirstate-v2`. This only triggers if a
956 upgrade the repository format to use `dirstate-v2`. This only triggers if a
957 change is needed. This also applies to operations that would have been
957 change is needed. This also applies to operations that would have been
958 read-only (like hg status).
958 read-only (like hg status).
959
959
960 If the repository cannot be locked, the automatic-upgrade operation will be
960 If the repository cannot be locked, the automatic-upgrade operation will be
961 skipped. The next operation will attempt it again.
961 skipped. The next operation will attempt it again.
962
962
963 This configuration will apply for moves in any direction, either adding the
963 This configuration will apply for moves in any direction, either adding the
964 `dirstate-v2` format if `format.use-dirstate-v2=yes` or removing the
964 `dirstate-v2` format if `format.use-dirstate-v2=yes` or removing the
965 `dirstate-v2` requirement if `format.use-dirstate-v2=no`. So we recommend
965 `dirstate-v2` requirement if `format.use-dirstate-v2=no`. So we recommend
966 setting both this value and `format.use-dirstate-v2` at the same time.
966 setting both this value and `format.use-dirstate-v2` at the same time.
967
967
968 ``use-dirstate-v2.automatic-upgrade-of-mismatching-repositories:quiet``
969 Hide message when performing such automatic upgrade.
970
968 ``use-dirstate-tracked-hint``
971 ``use-dirstate-tracked-hint``
969 Enable or disable the writing of "tracked key" file alongside the dirstate.
972 Enable or disable the writing of "tracked key" file alongside the dirstate.
970 (default to disabled)
973 (default to disabled)
971
974
972 That "tracked-hint" can help external automations to detect changes to the
975 That "tracked-hint" can help external automations to detect changes to the
973 set of tracked files. (i.e the result of `hg files` or `hg status -macd`)
976 set of tracked files. (i.e the result of `hg files` or `hg status -macd`)
974
977
975 The tracked-hint is written in a new `.hg/dirstate-tracked-hint`. That file
978 The tracked-hint is written in a new `.hg/dirstate-tracked-hint`. That file
976 contains two lines:
979 contains two lines:
977 - the first line is the file version (currently: 1),
980 - the first line is the file version (currently: 1),
978 - the second line contains the "tracked-hint".
981 - the second line contains the "tracked-hint".
979 That file is written right after the dirstate is written.
982 That file is written right after the dirstate is written.
980
983
981 The tracked-hint changes whenever the set of file tracked in the dirstate
984 The tracked-hint changes whenever the set of file tracked in the dirstate
982 changes. The general idea is:
985 changes. The general idea is:
983 - if the hint is identical, the set of tracked file SHOULD be identical,
986 - if the hint is identical, the set of tracked file SHOULD be identical,
984 - if the hint is different, the set of tracked file MIGHT be different.
987 - if the hint is different, the set of tracked file MIGHT be different.
985
988
986 The "hint is identical" case uses `SHOULD` as the dirstate and the hint file
989 The "hint is identical" case uses `SHOULD` as the dirstate and the hint file
987 are two distinct files and therefore that cannot be read or written to in an
990 are two distinct files and therefore that cannot be read or written to in an
988 atomic way. If the key is identical, nothing garantees that the dirstate is
991 atomic way. If the key is identical, nothing garantees that the dirstate is
989 not updated right after the hint file. This is considered a negligible
992 not updated right after the hint file. This is considered a negligible
990 limitation for the intended usecase. It is actually possible to prevent this
993 limitation for the intended usecase. It is actually possible to prevent this
991 race by taking the repository lock during read operations.
994 race by taking the repository lock during read operations.
992
995
993 They are two "ways" to use this feature:
996 They are two "ways" to use this feature:
994
997
995 1) monitoring changes to the `.hg/dirstate-tracked-hint`, if the file
998 1) monitoring changes to the `.hg/dirstate-tracked-hint`, if the file
996 changes, the tracked set might have changed.
999 changes, the tracked set might have changed.
997
1000
998 2) storing the value and comparing it to a later value.
1001 2) storing the value and comparing it to a later value.
999
1002
1000
1003
1001 ``use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories``
1004 ``use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories``
1002 When enabled, an automatic upgrade will be triggered when a repository format
1005 When enabled, an automatic upgrade will be triggered when a repository format
1003 does not match its `use-dirstate-tracked-hint` config.
1006 does not match its `use-dirstate-tracked-hint` config.
1004
1007
1005 This is an advanced behavior that most users will not need. We recommend you
1008 This is an advanced behavior that most users will not need. We recommend you
1006 don't use this unless you are a seasoned administrator of a Mercurial install
1009 don't use this unless you are a seasoned administrator of a Mercurial install
1007 base.
1010 base.
1008
1011
1009 Automatic upgrade means that any process accessing the repository will
1012 Automatic upgrade means that any process accessing the repository will
1010 upgrade the repository format to use `dirstate-tracked-hint`. This only
1013 upgrade the repository format to use `dirstate-tracked-hint`. This only
1011 triggers if a change is needed. This also applies to operations that would
1014 triggers if a change is needed. This also applies to operations that would
1012 have been read-only (like hg status).
1015 have been read-only (like hg status).
1013
1016
1014 If the repository cannot be locked, the automatic-upgrade operation will be
1017 If the repository cannot be locked, the automatic-upgrade operation will be
1015 skipped. The next operation will attempt it again.
1018 skipped. The next operation will attempt it again.
1016
1019
1017 This configuration will apply for moves in any direction, either adding the
1020 This configuration will apply for moves in any direction, either adding the
1018 `dirstate-tracked-hint` format if `format.use-dirstate-tracked-hint=yes` or
1021 `dirstate-tracked-hint` format if `format.use-dirstate-tracked-hint=yes` or
1019 removing the `dirstate-tracked-hint` requirement if
1022 removing the `dirstate-tracked-hint` requirement if
1020 `format.use-dirstate-tracked-hint=no`. So we recommend setting both this
1023 `format.use-dirstate-tracked-hint=no`. So we recommend setting both this
1021 value and `format.use-dirstate-tracked-hint` at the same time.
1024 value and `format.use-dirstate-tracked-hint` at the same time.
1022
1025
1023
1026
1024 ``use-persistent-nodemap``
1027 ``use-persistent-nodemap``
1025 Enable or disable the "persistent-nodemap" feature which improves
1028 Enable or disable the "persistent-nodemap" feature which improves
1026 performance if the Rust extensions are available.
1029 performance if the Rust extensions are available.
1027
1030
1028 The "persistent-nodemap" persist the "node -> rev" on disk removing the
1031 The "persistent-nodemap" persist the "node -> rev" on disk removing the
1029 need to dynamically build that mapping for each Mercurial invocation. This
1032 need to dynamically build that mapping for each Mercurial invocation. This
1030 significantly reduces the startup cost of various local and server-side
1033 significantly reduces the startup cost of various local and server-side
1031 operation for larger repositories.
1034 operation for larger repositories.
1032
1035
1033 The performance-improving version of this feature is currently only
1036 The performance-improving version of this feature is currently only
1034 implemented in Rust (see :hg:`help rust`), so people not using a version of
1037 implemented in Rust (see :hg:`help rust`), so people not using a version of
1035 Mercurial compiled with the Rust parts might actually suffer some slowdown.
1038 Mercurial compiled with the Rust parts might actually suffer some slowdown.
1036 For this reason, such versions will by default refuse to access repositories
1039 For this reason, such versions will by default refuse to access repositories
1037 with "persistent-nodemap".
1040 with "persistent-nodemap".
1038
1041
1039 This behavior can be adjusted via configuration: check
1042 This behavior can be adjusted via configuration: check
1040 :hg:`help config.storage.revlog.persistent-nodemap.slow-path` for details.
1043 :hg:`help config.storage.revlog.persistent-nodemap.slow-path` for details.
1041
1044
1042 Repositories with this on-disk format require Mercurial 5.4 or above.
1045 Repositories with this on-disk format require Mercurial 5.4 or above.
1043
1046
1044 By default this format variant is disabled if the fast implementation is not
1047 By default this format variant is disabled if the fast implementation is not
1045 available, and enabled by default if the fast implementation is available.
1048 available, and enabled by default if the fast implementation is available.
1046
1049
1047 To accomodate installations of Mercurial without the fast implementation,
1050 To accomodate installations of Mercurial without the fast implementation,
1048 you can downgrade your repository. To do so run the following command:
1051 you can downgrade your repository. To do so run the following command:
1049
1052
1050 $ hg debugupgraderepo \
1053 $ hg debugupgraderepo \
1051 --run \
1054 --run \
1052 --config format.use-persistent-nodemap=False \
1055 --config format.use-persistent-nodemap=False \
1053 --config storage.revlog.persistent-nodemap.slow-path=allow
1056 --config storage.revlog.persistent-nodemap.slow-path=allow
1054
1057
1055 ``use-share-safe``
1058 ``use-share-safe``
1056 Enforce "safe" behaviors for all "shares" that access this repository.
1059 Enforce "safe" behaviors for all "shares" that access this repository.
1057
1060
1058 With this feature, "shares" using this repository as a source will:
1061 With this feature, "shares" using this repository as a source will:
1059
1062
1060 * read the source repository's configuration (`<source>/.hg/hgrc`).
1063 * read the source repository's configuration (`<source>/.hg/hgrc`).
1061 * read and use the source repository's "requirements"
1064 * read and use the source repository's "requirements"
1062 (except the working copy specific one).
1065 (except the working copy specific one).
1063
1066
1064 Without this feature, "shares" using this repository as a source will:
1067 Without this feature, "shares" using this repository as a source will:
1065
1068
1066 * keep tracking the repository "requirements" in the share only, ignoring
1069 * keep tracking the repository "requirements" in the share only, ignoring
1067 the source "requirements", possibly diverging from them.
1070 the source "requirements", possibly diverging from them.
1068 * ignore source repository config. This can create problems, like silently
1071 * ignore source repository config. This can create problems, like silently
1069 ignoring important hooks.
1072 ignoring important hooks.
1070
1073
1071 Beware that existing shares will not be upgraded/downgraded, and by
1074 Beware that existing shares will not be upgraded/downgraded, and by
1072 default, Mercurial will refuse to interact with them until the mismatch
1075 default, Mercurial will refuse to interact with them until the mismatch
1073 is resolved. See :hg:`help config.share.safe-mismatch.source-safe` and
1076 is resolved. See :hg:`help config.share.safe-mismatch.source-safe` and
1074 :hg:`help config.share.safe-mismatch.source-not-safe` for details.
1077 :hg:`help config.share.safe-mismatch.source-not-safe` for details.
1075
1078
1076 Introduced in Mercurial 5.7.
1079 Introduced in Mercurial 5.7.
1077
1080
1078 Enabled by default in Mercurial 6.1.
1081 Enabled by default in Mercurial 6.1.
1079
1082
1080 ``use-share-safe.automatic-upgrade-of-mismatching-repositories``
1083 ``use-share-safe.automatic-upgrade-of-mismatching-repositories``
1081 When enabled, an automatic upgrade will be triggered when a repository format
1084 When enabled, an automatic upgrade will be triggered when a repository format
1082 does not match its `use-share-safe` config.
1085 does not match its `use-share-safe` config.
1083
1086
1084 This is an advanced behavior that most users will not need. We recommend you
1087 This is an advanced behavior that most users will not need. We recommend you
1085 don't use this unless you are a seasoned administrator of a Mercurial install
1088 don't use this unless you are a seasoned administrator of a Mercurial install
1086 base.
1089 base.
1087
1090
1088 Automatic upgrade means that any process accessing the repository will
1091 Automatic upgrade means that any process accessing the repository will
1089 upgrade the repository format to use `share-safe`. This only triggers if a
1092 upgrade the repository format to use `share-safe`. This only triggers if a
1090 change is needed. This also applies to operation that would have been
1093 change is needed. This also applies to operation that would have been
1091 read-only (like hg status).
1094 read-only (like hg status).
1092
1095
1093 If the repository cannot be locked, the automatic-upgrade operation will be
1096 If the repository cannot be locked, the automatic-upgrade operation will be
1094 skipped. The next operation will attempt it again.
1097 skipped. The next operation will attempt it again.
1095
1098
1096 This configuration will apply for moves in any direction, either adding the
1099 This configuration will apply for moves in any direction, either adding the
1097 `share-safe` format if `format.use-share-safe=yes` or removing the
1100 `share-safe` format if `format.use-share-safe=yes` or removing the
1098 `share-safe` requirement if `format.use-share-safe=no`. So we recommend
1101 `share-safe` requirement if `format.use-share-safe=no`. So we recommend
1099 setting both this value and `format.use-share-safe` at the same time.
1102 setting both this value and `format.use-share-safe` at the same time.
1100
1103
1101 ``use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet``
1104 ``use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet``
1102 Hide message when performing such automatic upgrade.
1105 Hide message when performing such automatic upgrade.
1103
1106
1104 ``usestore``
1107 ``usestore``
1105 Enable or disable the "store" repository format which improves
1108 Enable or disable the "store" repository format which improves
1106 compatibility with systems that fold case or otherwise mangle
1109 compatibility with systems that fold case or otherwise mangle
1107 filenames. Disabling this option will allow you to store longer filenames
1110 filenames. Disabling this option will allow you to store longer filenames
1108 in some situations at the expense of compatibility.
1111 in some situations at the expense of compatibility.
1109
1112
1110 Repositories with this on-disk format require Mercurial version 0.9.4.
1113 Repositories with this on-disk format require Mercurial version 0.9.4.
1111
1114
1112 Enabled by default.
1115 Enabled by default.
1113
1116
1114 ``sparse-revlog``
1117 ``sparse-revlog``
1115 Enable or disable the ``sparse-revlog`` delta strategy. This format improves
1118 Enable or disable the ``sparse-revlog`` delta strategy. This format improves
1116 delta re-use inside revlog. For very branchy repositories, it results in a
1119 delta re-use inside revlog. For very branchy repositories, it results in a
1117 smaller store. For repositories with many revisions, it also helps
1120 smaller store. For repositories with many revisions, it also helps
1118 performance (by using shortened delta chains.)
1121 performance (by using shortened delta chains.)
1119
1122
1120 Repositories with this on-disk format require Mercurial version 4.7
1123 Repositories with this on-disk format require Mercurial version 4.7
1121
1124
1122 Enabled by default.
1125 Enabled by default.
1123
1126
1124 ``revlog-compression``
1127 ``revlog-compression``
1125 Compression algorithm used by revlog. Supported values are `zlib` and
1128 Compression algorithm used by revlog. Supported values are `zlib` and
1126 `zstd`. The `zlib` engine is the historical default of Mercurial. `zstd` is
1129 `zstd`. The `zlib` engine is the historical default of Mercurial. `zstd` is
1127 a newer format that is usually a net win over `zlib`, operating faster at
1130 a newer format that is usually a net win over `zlib`, operating faster at
1128 better compression rates. Use `zstd` to reduce CPU usage. Multiple values
1131 better compression rates. Use `zstd` to reduce CPU usage. Multiple values
1129 can be specified, the first available one will be used.
1132 can be specified, the first available one will be used.
1130
1133
1131 On some systems, the Mercurial installation may lack `zstd` support.
1134 On some systems, the Mercurial installation may lack `zstd` support.
1132
1135
1133 Default is `zstd` if available, `zlib` otherwise.
1136 Default is `zstd` if available, `zlib` otherwise.
1134
1137
1135 ``bookmarks-in-store``
1138 ``bookmarks-in-store``
1136 Store bookmarks in .hg/store/. This means that bookmarks are shared when
1139 Store bookmarks in .hg/store/. This means that bookmarks are shared when
1137 using `hg share` regardless of the `-B` option.
1140 using `hg share` regardless of the `-B` option.
1138
1141
1139 Repositories with this on-disk format require Mercurial version 5.1.
1142 Repositories with this on-disk format require Mercurial version 5.1.
1140
1143
1141 Disabled by default.
1144 Disabled by default.
1142
1145
1143
1146
1144 ``graph``
1147 ``graph``
1145 ---------
1148 ---------
1146
1149
1147 Web graph view configuration. This section let you change graph
1150 Web graph view configuration. This section let you change graph
1148 elements display properties by branches, for instance to make the
1151 elements display properties by branches, for instance to make the
1149 ``default`` branch stand out.
1152 ``default`` branch stand out.
1150
1153
1151 Each line has the following format::
1154 Each line has the following format::
1152
1155
1153 <branch>.<argument> = <value>
1156 <branch>.<argument> = <value>
1154
1157
1155 where ``<branch>`` is the name of the branch being
1158 where ``<branch>`` is the name of the branch being
1156 customized. Example::
1159 customized. Example::
1157
1160
1158 [graph]
1161 [graph]
1159 # 2px width
1162 # 2px width
1160 default.width = 2
1163 default.width = 2
1161 # red color
1164 # red color
1162 default.color = FF0000
1165 default.color = FF0000
1163
1166
1164 Supported arguments:
1167 Supported arguments:
1165
1168
1166 ``width``
1169 ``width``
1167 Set branch edges width in pixels.
1170 Set branch edges width in pixels.
1168
1171
1169 ``color``
1172 ``color``
1170 Set branch edges color in hexadecimal RGB notation.
1173 Set branch edges color in hexadecimal RGB notation.
1171
1174
1172 ``hooks``
1175 ``hooks``
1173 ---------
1176 ---------
1174
1177
1175 Commands or Python functions that get automatically executed by
1178 Commands or Python functions that get automatically executed by
1176 various actions such as starting or finishing a commit. Multiple
1179 various actions such as starting or finishing a commit. Multiple
1177 hooks can be run for the same action by appending a suffix to the
1180 hooks can be run for the same action by appending a suffix to the
1178 action. Overriding a site-wide hook can be done by changing its
1181 action. Overriding a site-wide hook can be done by changing its
1179 value or setting it to an empty string. Hooks can be prioritized
1182 value or setting it to an empty string. Hooks can be prioritized
1180 by adding a prefix of ``priority.`` to the hook name on a new line
1183 by adding a prefix of ``priority.`` to the hook name on a new line
1181 and setting the priority. The default priority is 0.
1184 and setting the priority. The default priority is 0.
1182
1185
1183 Example ``.hg/hgrc``::
1186 Example ``.hg/hgrc``::
1184
1187
1185 [hooks]
1188 [hooks]
1186 # update working directory after adding changesets
1189 # update working directory after adding changesets
1187 changegroup.update = hg update
1190 changegroup.update = hg update
1188 # do not use the site-wide hook
1191 # do not use the site-wide hook
1189 incoming =
1192 incoming =
1190 incoming.email = /my/email/hook
1193 incoming.email = /my/email/hook
1191 incoming.autobuild = /my/build/hook
1194 incoming.autobuild = /my/build/hook
1192 # force autobuild hook to run before other incoming hooks
1195 # force autobuild hook to run before other incoming hooks
1193 priority.incoming.autobuild = 1
1196 priority.incoming.autobuild = 1
1194 ### control HGPLAIN setting when running autobuild hook
1197 ### control HGPLAIN setting when running autobuild hook
1195 # HGPLAIN always set (default from Mercurial 5.7)
1198 # HGPLAIN always set (default from Mercurial 5.7)
1196 incoming.autobuild:run-with-plain = yes
1199 incoming.autobuild:run-with-plain = yes
1197 # HGPLAIN never set
1200 # HGPLAIN never set
1198 incoming.autobuild:run-with-plain = no
1201 incoming.autobuild:run-with-plain = no
1199 # HGPLAIN inherited from environment (default before Mercurial 5.7)
1202 # HGPLAIN inherited from environment (default before Mercurial 5.7)
1200 incoming.autobuild:run-with-plain = auto
1203 incoming.autobuild:run-with-plain = auto
1201
1204
1202 Most hooks are run with environment variables set that give useful
1205 Most hooks are run with environment variables set that give useful
1203 additional information. For each hook below, the environment variables
1206 additional information. For each hook below, the environment variables
1204 it is passed are listed with names in the form ``$HG_foo``. The
1207 it is passed are listed with names in the form ``$HG_foo``. The
1205 ``$HG_HOOKTYPE`` and ``$HG_HOOKNAME`` variables are set for all hooks.
1208 ``$HG_HOOKTYPE`` and ``$HG_HOOKNAME`` variables are set for all hooks.
1206 They contain the type of hook which triggered the run and the full name
1209 They contain the type of hook which triggered the run and the full name
1207 of the hook in the config, respectively. In the example above, this will
1210 of the hook in the config, respectively. In the example above, this will
1208 be ``$HG_HOOKTYPE=incoming`` and ``$HG_HOOKNAME=incoming.email``.
1211 be ``$HG_HOOKTYPE=incoming`` and ``$HG_HOOKNAME=incoming.email``.
1209
1212
1210 .. container:: windows
1213 .. container:: windows
1211
1214
1212 Some basic Unix syntax can be enabled for portability, including ``$VAR``
1215 Some basic Unix syntax can be enabled for portability, including ``$VAR``
1213 and ``${VAR}`` style variables. A ``~`` followed by ``\`` or ``/`` will
1216 and ``${VAR}`` style variables. A ``~`` followed by ``\`` or ``/`` will
1214 be expanded to ``%USERPROFILE%`` to simulate a subset of tilde expansion
1217 be expanded to ``%USERPROFILE%`` to simulate a subset of tilde expansion
1215 on Unix. To use a literal ``$`` or ``~``, it must be escaped with a back
1218 on Unix. To use a literal ``$`` or ``~``, it must be escaped with a back
1216 slash or inside of a strong quote. Strong quotes will be replaced by
1219 slash or inside of a strong quote. Strong quotes will be replaced by
1217 double quotes after processing.
1220 double quotes after processing.
1218
1221
1219 This feature is enabled by adding a prefix of ``tonative.`` to the hook
1222 This feature is enabled by adding a prefix of ``tonative.`` to the hook
1220 name on a new line, and setting it to ``True``. For example::
1223 name on a new line, and setting it to ``True``. For example::
1221
1224
1222 [hooks]
1225 [hooks]
1223 incoming.autobuild = /my/build/hook
1226 incoming.autobuild = /my/build/hook
1224 # enable translation to cmd.exe syntax for autobuild hook
1227 # enable translation to cmd.exe syntax for autobuild hook
1225 tonative.incoming.autobuild = True
1228 tonative.incoming.autobuild = True
1226
1229
1227 ``changegroup``
1230 ``changegroup``
1228 Run after a changegroup has been added via push, pull or unbundle. The ID of
1231 Run after a changegroup has been added via push, pull or unbundle. The ID of
1229 the first new changeset is in ``$HG_NODE`` and last is in ``$HG_NODE_LAST``.
1232 the first new changeset is in ``$HG_NODE`` and last is in ``$HG_NODE_LAST``.
1230 The URL from which changes came is in ``$HG_URL``.
1233 The URL from which changes came is in ``$HG_URL``.
1231
1234
1232 ``commit``
1235 ``commit``
1233 Run after a changeset has been created in the local repository. The ID
1236 Run after a changeset has been created in the local repository. The ID
1234 of the newly created changeset is in ``$HG_NODE``. Parent changeset
1237 of the newly created changeset is in ``$HG_NODE``. Parent changeset
1235 IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1238 IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1236
1239
1237 ``incoming``
1240 ``incoming``
1238 Run after a changeset has been pulled, pushed, or unbundled into
1241 Run after a changeset has been pulled, pushed, or unbundled into
1239 the local repository. The ID of the newly arrived changeset is in
1242 the local repository. The ID of the newly arrived changeset is in
1240 ``$HG_NODE``. The URL that was source of the changes is in ``$HG_URL``.
1243 ``$HG_NODE``. The URL that was source of the changes is in ``$HG_URL``.
1241
1244
1242 ``outgoing``
1245 ``outgoing``
1243 Run after sending changes from the local repository to another. The ID of
1246 Run after sending changes from the local repository to another. The ID of
1244 first changeset sent is in ``$HG_NODE``. The source of operation is in
1247 first changeset sent is in ``$HG_NODE``. The source of operation is in
1245 ``$HG_SOURCE``. Also see :hg:`help config.hooks.preoutgoing`.
1248 ``$HG_SOURCE``. Also see :hg:`help config.hooks.preoutgoing`.
1246
1249
1247 ``post-<command>``
1250 ``post-<command>``
1248 Run after successful invocations of the associated command. The
1251 Run after successful invocations of the associated command. The
1249 contents of the command line are passed as ``$HG_ARGS`` and the result
1252 contents of the command line are passed as ``$HG_ARGS`` and the result
1250 code in ``$HG_RESULT``. Parsed command line arguments are passed as
1253 code in ``$HG_RESULT``. Parsed command line arguments are passed as
1251 ``$HG_PATS`` and ``$HG_OPTS``. These contain string representations of
1254 ``$HG_PATS`` and ``$HG_OPTS``. These contain string representations of
1252 the python data internally passed to <command>. ``$HG_OPTS`` is a
1255 the python data internally passed to <command>. ``$HG_OPTS`` is a
1253 dictionary of options (with unspecified options set to their defaults).
1256 dictionary of options (with unspecified options set to their defaults).
1254 ``$HG_PATS`` is a list of arguments. Hook failure is ignored.
1257 ``$HG_PATS`` is a list of arguments. Hook failure is ignored.
1255
1258
1256 ``fail-<command>``
1259 ``fail-<command>``
1257 Run after a failed invocation of an associated command. The contents
1260 Run after a failed invocation of an associated command. The contents
1258 of the command line are passed as ``$HG_ARGS``. Parsed command line
1261 of the command line are passed as ``$HG_ARGS``. Parsed command line
1259 arguments are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain
1262 arguments are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain
1260 string representations of the python data internally passed to
1263 string representations of the python data internally passed to
1261 <command>. ``$HG_OPTS`` is a dictionary of options (with unspecified
1264 <command>. ``$HG_OPTS`` is a dictionary of options (with unspecified
1262 options set to their defaults). ``$HG_PATS`` is a list of arguments.
1265 options set to their defaults). ``$HG_PATS`` is a list of arguments.
1263 Hook failure is ignored.
1266 Hook failure is ignored.
1264
1267
1265 ``pre-<command>``
1268 ``pre-<command>``
1266 Run before executing the associated command. The contents of the
1269 Run before executing the associated command. The contents of the
1267 command line are passed as ``$HG_ARGS``. Parsed command line arguments
1270 command line are passed as ``$HG_ARGS``. Parsed command line arguments
1268 are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain string
1271 are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain string
1269 representations of the data internally passed to <command>. ``$HG_OPTS``
1272 representations of the data internally passed to <command>. ``$HG_OPTS``
1270 is a dictionary of options (with unspecified options set to their
1273 is a dictionary of options (with unspecified options set to their
1271 defaults). ``$HG_PATS`` is a list of arguments. If the hook returns
1274 defaults). ``$HG_PATS`` is a list of arguments. If the hook returns
1272 failure, the command doesn't execute and Mercurial returns the failure
1275 failure, the command doesn't execute and Mercurial returns the failure
1273 code.
1276 code.
1274
1277
1275 ``prechangegroup``
1278 ``prechangegroup``
1276 Run before a changegroup is added via push, pull or unbundle. Exit
1279 Run before a changegroup is added via push, pull or unbundle. Exit
1277 status 0 allows the changegroup to proceed. A non-zero status will
1280 status 0 allows the changegroup to proceed. A non-zero status will
1278 cause the push, pull or unbundle to fail. The URL from which changes
1281 cause the push, pull or unbundle to fail. The URL from which changes
1279 will come is in ``$HG_URL``.
1282 will come is in ``$HG_URL``.
1280
1283
1281 ``precommit``
1284 ``precommit``
1282 Run before starting a local commit. Exit status 0 allows the
1285 Run before starting a local commit. Exit status 0 allows the
1283 commit to proceed. A non-zero status will cause the commit to fail.
1286 commit to proceed. A non-zero status will cause the commit to fail.
1284 Parent changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1287 Parent changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1285
1288
1286 ``prelistkeys``
1289 ``prelistkeys``
1287 Run before listing pushkeys (like bookmarks) in the
1290 Run before listing pushkeys (like bookmarks) in the
1288 repository. A non-zero status will cause failure. The key namespace is
1291 repository. A non-zero status will cause failure. The key namespace is
1289 in ``$HG_NAMESPACE``.
1292 in ``$HG_NAMESPACE``.
1290
1293
1291 ``preoutgoing``
1294 ``preoutgoing``
1292 Run before collecting changes to send from the local repository to
1295 Run before collecting changes to send from the local repository to
1293 another. A non-zero status will cause failure. This lets you prevent
1296 another. A non-zero status will cause failure. This lets you prevent
1294 pull over HTTP or SSH. It can also prevent propagating commits (via
1297 pull over HTTP or SSH. It can also prevent propagating commits (via
1295 local pull, push (outbound) or bundle commands), but not completely,
1298 local pull, push (outbound) or bundle commands), but not completely,
1296 since you can just copy files instead. The source of operation is in
1299 since you can just copy files instead. The source of operation is in
1297 ``$HG_SOURCE``. If "serve", the operation is happening on behalf of a remote
1300 ``$HG_SOURCE``. If "serve", the operation is happening on behalf of a remote
1298 SSH or HTTP repository. If "push", "pull" or "bundle", the operation
1301 SSH or HTTP repository. If "push", "pull" or "bundle", the operation
1299 is happening on behalf of a repository on same system.
1302 is happening on behalf of a repository on same system.
1300
1303
1301 ``prepushkey``
1304 ``prepushkey``
1302 Run before a pushkey (like a bookmark) is added to the
1305 Run before a pushkey (like a bookmark) is added to the
1303 repository. A non-zero status will cause the key to be rejected. The
1306 repository. A non-zero status will cause the key to be rejected. The
1304 key namespace is in ``$HG_NAMESPACE``, the key is in ``$HG_KEY``,
1307 key namespace is in ``$HG_NAMESPACE``, the key is in ``$HG_KEY``,
1305 the old value (if any) is in ``$HG_OLD``, and the new value is in
1308 the old value (if any) is in ``$HG_OLD``, and the new value is in
1306 ``$HG_NEW``.
1309 ``$HG_NEW``.
1307
1310
1308 ``pretag``
1311 ``pretag``
1309 Run before creating a tag. Exit status 0 allows the tag to be
1312 Run before creating a tag. Exit status 0 allows the tag to be
1310 created. A non-zero status will cause the tag to fail. The ID of the
1313 created. A non-zero status will cause the tag to fail. The ID of the
1311 changeset to tag is in ``$HG_NODE``. The name of tag is in ``$HG_TAG``. The
1314 changeset to tag is in ``$HG_NODE``. The name of tag is in ``$HG_TAG``. The
1312 tag is local if ``$HG_LOCAL=1``, or in the repository if ``$HG_LOCAL=0``.
1315 tag is local if ``$HG_LOCAL=1``, or in the repository if ``$HG_LOCAL=0``.
1313
1316
1314 ``pretxnopen``
1317 ``pretxnopen``
1315 Run before any new repository transaction is open. The reason for the
1318 Run before any new repository transaction is open. The reason for the
1316 transaction will be in ``$HG_TXNNAME``, and a unique identifier for the
1319 transaction will be in ``$HG_TXNNAME``, and a unique identifier for the
1317 transaction will be in ``$HG_TXNID``. A non-zero status will prevent the
1320 transaction will be in ``$HG_TXNID``. A non-zero status will prevent the
1318 transaction from being opened.
1321 transaction from being opened.
1319
1322
1320 ``pretxnclose``
1323 ``pretxnclose``
1321 Run right before the transaction is actually finalized. Any repository change
1324 Run right before the transaction is actually finalized. Any repository change
1322 will be visible to the hook program. This lets you validate the transaction
1325 will be visible to the hook program. This lets you validate the transaction
1323 content or change it. Exit status 0 allows the commit to proceed. A non-zero
1326 content or change it. Exit status 0 allows the commit to proceed. A non-zero
1324 status will cause the transaction to be rolled back. The reason for the
1327 status will cause the transaction to be rolled back. The reason for the
1325 transaction opening will be in ``$HG_TXNNAME``, and a unique identifier for
1328 transaction opening will be in ``$HG_TXNNAME``, and a unique identifier for
1326 the transaction will be in ``$HG_TXNID``. The rest of the available data will
1329 the transaction will be in ``$HG_TXNID``. The rest of the available data will
1327 vary according the transaction type. Changes unbundled to the repository will
1330 vary according the transaction type. Changes unbundled to the repository will
1328 add ``$HG_URL`` and ``$HG_SOURCE``. New changesets will add ``$HG_NODE`` (the
1331 add ``$HG_URL`` and ``$HG_SOURCE``. New changesets will add ``$HG_NODE`` (the
1329 ID of the first added changeset), ``$HG_NODE_LAST`` (the ID of the last added
1332 ID of the first added changeset), ``$HG_NODE_LAST`` (the ID of the last added
1330 changeset). Bookmark and phase changes will set ``$HG_BOOKMARK_MOVED`` and
1333 changeset). Bookmark and phase changes will set ``$HG_BOOKMARK_MOVED`` and
1331 ``$HG_PHASES_MOVED`` to ``1`` respectively. The number of new obsmarkers, if
1334 ``$HG_PHASES_MOVED`` to ``1`` respectively. The number of new obsmarkers, if
1332 any, will be in ``$HG_NEW_OBSMARKERS``, etc.
1335 any, will be in ``$HG_NEW_OBSMARKERS``, etc.
1333
1336
1334 ``pretxnclose-bookmark``
1337 ``pretxnclose-bookmark``
1335 Run right before a bookmark change is actually finalized. Any repository
1338 Run right before a bookmark change is actually finalized. Any repository
1336 change will be visible to the hook program. This lets you validate the
1339 change will be visible to the hook program. This lets you validate the
1337 transaction content or change it. Exit status 0 allows the commit to
1340 transaction content or change it. Exit status 0 allows the commit to
1338 proceed. A non-zero status will cause the transaction to be rolled back.
1341 proceed. A non-zero status will cause the transaction to be rolled back.
1339 The name of the bookmark will be available in ``$HG_BOOKMARK``, the new
1342 The name of the bookmark will be available in ``$HG_BOOKMARK``, the new
1340 bookmark location will be available in ``$HG_NODE`` while the previous
1343 bookmark location will be available in ``$HG_NODE`` while the previous
1341 location will be available in ``$HG_OLDNODE``. In case of a bookmark
1344 location will be available in ``$HG_OLDNODE``. In case of a bookmark
1342 creation ``$HG_OLDNODE`` will be empty. In case of deletion ``$HG_NODE``
1345 creation ``$HG_OLDNODE`` will be empty. In case of deletion ``$HG_NODE``
1343 will be empty.
1346 will be empty.
1344 In addition, the reason for the transaction opening will be in
1347 In addition, the reason for the transaction opening will be in
1345 ``$HG_TXNNAME``, and a unique identifier for the transaction will be in
1348 ``$HG_TXNNAME``, and a unique identifier for the transaction will be in
1346 ``$HG_TXNID``.
1349 ``$HG_TXNID``.
1347
1350
1348 ``pretxnclose-phase``
1351 ``pretxnclose-phase``
1349 Run right before a phase change is actually finalized. Any repository change
1352 Run right before a phase change is actually finalized. Any repository change
1350 will be visible to the hook program. This lets you validate the transaction
1353 will be visible to the hook program. This lets you validate the transaction
1351 content or change it. Exit status 0 allows the commit to proceed. A non-zero
1354 content or change it. Exit status 0 allows the commit to proceed. A non-zero
1352 status will cause the transaction to be rolled back. The hook is called
1355 status will cause the transaction to be rolled back. The hook is called
1353 multiple times, once for each revision affected by a phase change.
1356 multiple times, once for each revision affected by a phase change.
1354 The affected node is available in ``$HG_NODE``, the phase in ``$HG_PHASE``
1357 The affected node is available in ``$HG_NODE``, the phase in ``$HG_PHASE``
1355 while the previous ``$HG_OLDPHASE``. In case of new node, ``$HG_OLDPHASE``
1358 while the previous ``$HG_OLDPHASE``. In case of new node, ``$HG_OLDPHASE``
1356 will be empty. In addition, the reason for the transaction opening will be in
1359 will be empty. In addition, the reason for the transaction opening will be in
1357 ``$HG_TXNNAME``, and a unique identifier for the transaction will be in
1360 ``$HG_TXNNAME``, and a unique identifier for the transaction will be in
1358 ``$HG_TXNID``. The hook is also run for newly added revisions. In this case
1361 ``$HG_TXNID``. The hook is also run for newly added revisions. In this case
1359 the ``$HG_OLDPHASE`` entry will be empty.
1362 the ``$HG_OLDPHASE`` entry will be empty.
1360
1363
1361 ``txnclose``
1364 ``txnclose``
1362 Run after any repository transaction has been committed. At this
1365 Run after any repository transaction has been committed. At this
1363 point, the transaction can no longer be rolled back. The hook will run
1366 point, the transaction can no longer be rolled back. The hook will run
1364 after the lock is released. See :hg:`help config.hooks.pretxnclose` for
1367 after the lock is released. See :hg:`help config.hooks.pretxnclose` for
1365 details about available variables.
1368 details about available variables.
1366
1369
1367 ``txnclose-bookmark``
1370 ``txnclose-bookmark``
1368 Run after any bookmark change has been committed. At this point, the
1371 Run after any bookmark change has been committed. At this point, the
1369 transaction can no longer be rolled back. The hook will run after the lock
1372 transaction can no longer be rolled back. The hook will run after the lock
1370 is released. See :hg:`help config.hooks.pretxnclose-bookmark` for details
1373 is released. See :hg:`help config.hooks.pretxnclose-bookmark` for details
1371 about available variables.
1374 about available variables.
1372
1375
1373 ``txnclose-phase``
1376 ``txnclose-phase``
1374 Run after any phase change has been committed. At this point, the
1377 Run after any phase change has been committed. At this point, the
1375 transaction can no longer be rolled back. The hook will run after the lock
1378 transaction can no longer be rolled back. The hook will run after the lock
1376 is released. See :hg:`help config.hooks.pretxnclose-phase` for details about
1379 is released. See :hg:`help config.hooks.pretxnclose-phase` for details about
1377 available variables.
1380 available variables.
1378
1381
1379 ``txnabort``
1382 ``txnabort``
1380 Run when a transaction is aborted. See :hg:`help config.hooks.pretxnclose`
1383 Run when a transaction is aborted. See :hg:`help config.hooks.pretxnclose`
1381 for details about available variables.
1384 for details about available variables.
1382
1385
1383 ``pretxnchangegroup``
1386 ``pretxnchangegroup``
1384 Run after a changegroup has been added via push, pull or unbundle, but before
1387 Run after a changegroup has been added via push, pull or unbundle, but before
1385 the transaction has been committed. The changegroup is visible to the hook
1388 the transaction has been committed. The changegroup is visible to the hook
1386 program. This allows validation of incoming changes before accepting them.
1389 program. This allows validation of incoming changes before accepting them.
1387 The ID of the first new changeset is in ``$HG_NODE`` and last is in
1390 The ID of the first new changeset is in ``$HG_NODE`` and last is in
1388 ``$HG_NODE_LAST``. Exit status 0 allows the transaction to commit. A non-zero
1391 ``$HG_NODE_LAST``. Exit status 0 allows the transaction to commit. A non-zero
1389 status will cause the transaction to be rolled back, and the push, pull or
1392 status will cause the transaction to be rolled back, and the push, pull or
1390 unbundle will fail. The URL that was the source of changes is in ``$HG_URL``.
1393 unbundle will fail. The URL that was the source of changes is in ``$HG_URL``.
1391
1394
1392 ``pretxncommit``
1395 ``pretxncommit``
1393 Run after a changeset has been created, but before the transaction is
1396 Run after a changeset has been created, but before the transaction is
1394 committed. The changeset is visible to the hook program. This allows
1397 committed. The changeset is visible to the hook program. This allows
1395 validation of the commit message and changes. Exit status 0 allows the
1398 validation of the commit message and changes. Exit status 0 allows the
1396 commit to proceed. A non-zero status will cause the transaction to
1399 commit to proceed. A non-zero status will cause the transaction to
1397 be rolled back. The ID of the new changeset is in ``$HG_NODE``. The parent
1400 be rolled back. The ID of the new changeset is in ``$HG_NODE``. The parent
1398 changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1401 changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1399
1402
1400 ``preupdate``
1403 ``preupdate``
1401 Run before updating the working directory. Exit status 0 allows
1404 Run before updating the working directory. Exit status 0 allows
1402 the update to proceed. A non-zero status will prevent the update.
1405 the update to proceed. A non-zero status will prevent the update.
1403 The changeset ID of first new parent is in ``$HG_PARENT1``. If updating to a
1406 The changeset ID of first new parent is in ``$HG_PARENT1``. If updating to a
1404 merge, the ID of second new parent is in ``$HG_PARENT2``.
1407 merge, the ID of second new parent is in ``$HG_PARENT2``.
1405
1408
1406 ``listkeys``
1409 ``listkeys``
1407 Run after listing pushkeys (like bookmarks) in the repository. The
1410 Run after listing pushkeys (like bookmarks) in the repository. The
1408 key namespace is in ``$HG_NAMESPACE``. ``$HG_VALUES`` is a
1411 key namespace is in ``$HG_NAMESPACE``. ``$HG_VALUES`` is a
1409 dictionary containing the keys and values.
1412 dictionary containing the keys and values.
1410
1413
1411 ``pushkey``
1414 ``pushkey``
1412 Run after a pushkey (like a bookmark) is added to the
1415 Run after a pushkey (like a bookmark) is added to the
1413 repository. The key namespace is in ``$HG_NAMESPACE``, the key is in
1416 repository. The key namespace is in ``$HG_NAMESPACE``, the key is in
1414 ``$HG_KEY``, the old value (if any) is in ``$HG_OLD``, and the new
1417 ``$HG_KEY``, the old value (if any) is in ``$HG_OLD``, and the new
1415 value is in ``$HG_NEW``.
1418 value is in ``$HG_NEW``.
1416
1419
1417 ``tag``
1420 ``tag``
1418 Run after a tag is created. The ID of the tagged changeset is in ``$HG_NODE``.
1421 Run after a tag is created. The ID of the tagged changeset is in ``$HG_NODE``.
1419 The name of tag is in ``$HG_TAG``. The tag is local if ``$HG_LOCAL=1``, or in
1422 The name of tag is in ``$HG_TAG``. The tag is local if ``$HG_LOCAL=1``, or in
1420 the repository if ``$HG_LOCAL=0``.
1423 the repository if ``$HG_LOCAL=0``.
1421
1424
1422 ``update``
1425 ``update``
1423 Run after updating the working directory. The changeset ID of first
1426 Run after updating the working directory. The changeset ID of first
1424 new parent is in ``$HG_PARENT1``. If updating to a merge, the ID of second new
1427 new parent is in ``$HG_PARENT1``. If updating to a merge, the ID of second new
1425 parent is in ``$HG_PARENT2``. If the update succeeded, ``$HG_ERROR=0``. If the
1428 parent is in ``$HG_PARENT2``. If the update succeeded, ``$HG_ERROR=0``. If the
1426 update failed (e.g. because conflicts were not resolved), ``$HG_ERROR=1``.
1429 update failed (e.g. because conflicts were not resolved), ``$HG_ERROR=1``.
1427
1430
1428 .. note::
1431 .. note::
1429
1432
1430 It is generally better to use standard hooks rather than the
1433 It is generally better to use standard hooks rather than the
1431 generic pre- and post- command hooks, as they are guaranteed to be
1434 generic pre- and post- command hooks, as they are guaranteed to be
1432 called in the appropriate contexts for influencing transactions.
1435 called in the appropriate contexts for influencing transactions.
1433 Also, hooks like "commit" will be called in all contexts that
1436 Also, hooks like "commit" will be called in all contexts that
1434 generate a commit (e.g. tag) and not just the commit command.
1437 generate a commit (e.g. tag) and not just the commit command.
1435
1438
1436 .. note::
1439 .. note::
1437
1440
1438 Environment variables with empty values may not be passed to
1441 Environment variables with empty values may not be passed to
1439 hooks on platforms such as Windows. As an example, ``$HG_PARENT2``
1442 hooks on platforms such as Windows. As an example, ``$HG_PARENT2``
1440 will have an empty value under Unix-like platforms for non-merge
1443 will have an empty value under Unix-like platforms for non-merge
1441 changesets, while it will not be available at all under Windows.
1444 changesets, while it will not be available at all under Windows.
1442
1445
1443 The syntax for Python hooks is as follows::
1446 The syntax for Python hooks is as follows::
1444
1447
1445 hookname = python:modulename.submodule.callable
1448 hookname = python:modulename.submodule.callable
1446 hookname = python:/path/to/python/module.py:callable
1449 hookname = python:/path/to/python/module.py:callable
1447
1450
1448 Python hooks are run within the Mercurial process. Each hook is
1451 Python hooks are run within the Mercurial process. Each hook is
1449 called with at least three keyword arguments: a ui object (keyword
1452 called with at least three keyword arguments: a ui object (keyword
1450 ``ui``), a repository object (keyword ``repo``), and a ``hooktype``
1453 ``ui``), a repository object (keyword ``repo``), and a ``hooktype``
1451 keyword that tells what kind of hook is used. Arguments listed as
1454 keyword that tells what kind of hook is used. Arguments listed as
1452 environment variables above are passed as keyword arguments, with no
1455 environment variables above are passed as keyword arguments, with no
1453 ``HG_`` prefix, and names in lower case.
1456 ``HG_`` prefix, and names in lower case.
1454
1457
1455 If a Python hook returns a "true" value or raises an exception, this
1458 If a Python hook returns a "true" value or raises an exception, this
1456 is treated as a failure.
1459 is treated as a failure.
1457
1460
1458
1461
1459 ``hostfingerprints``
1462 ``hostfingerprints``
1460 --------------------
1463 --------------------
1461
1464
1462 (Deprecated. Use ``[hostsecurity]``'s ``fingerprints`` options instead.)
1465 (Deprecated. Use ``[hostsecurity]``'s ``fingerprints`` options instead.)
1463
1466
1464 Fingerprints of the certificates of known HTTPS servers.
1467 Fingerprints of the certificates of known HTTPS servers.
1465
1468
1466 A HTTPS connection to a server with a fingerprint configured here will
1469 A HTTPS connection to a server with a fingerprint configured here will
1467 only succeed if the servers certificate matches the fingerprint.
1470 only succeed if the servers certificate matches the fingerprint.
1468 This is very similar to how ssh known hosts works.
1471 This is very similar to how ssh known hosts works.
1469
1472
1470 The fingerprint is the SHA-1 hash value of the DER encoded certificate.
1473 The fingerprint is the SHA-1 hash value of the DER encoded certificate.
1471 Multiple values can be specified (separated by spaces or commas). This can
1474 Multiple values can be specified (separated by spaces or commas). This can
1472 be used to define both old and new fingerprints while a host transitions
1475 be used to define both old and new fingerprints while a host transitions
1473 to a new certificate.
1476 to a new certificate.
1474
1477
1475 The CA chain and web.cacerts is not used for servers with a fingerprint.
1478 The CA chain and web.cacerts is not used for servers with a fingerprint.
1476
1479
1477 For example::
1480 For example::
1478
1481
1479 [hostfingerprints]
1482 [hostfingerprints]
1480 hg.intevation.de = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1483 hg.intevation.de = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1481 hg.intevation.org = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1484 hg.intevation.org = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1482
1485
1483 ``hostsecurity``
1486 ``hostsecurity``
1484 ----------------
1487 ----------------
1485
1488
1486 Used to specify global and per-host security settings for connecting to
1489 Used to specify global and per-host security settings for connecting to
1487 other machines.
1490 other machines.
1488
1491
1489 The following options control default behavior for all hosts.
1492 The following options control default behavior for all hosts.
1490
1493
1491 ``ciphers``
1494 ``ciphers``
1492 Defines the cryptographic ciphers to use for connections.
1495 Defines the cryptographic ciphers to use for connections.
1493
1496
1494 Value must be a valid OpenSSL Cipher List Format as documented at
1497 Value must be a valid OpenSSL Cipher List Format as documented at
1495 https://www.openssl.org/docs/manmaster/apps/ciphers.html#CIPHER-LIST-FORMAT.
1498 https://www.openssl.org/docs/manmaster/apps/ciphers.html#CIPHER-LIST-FORMAT.
1496
1499
1497 This setting is for advanced users only. Setting to incorrect values
1500 This setting is for advanced users only. Setting to incorrect values
1498 can significantly lower connection security or decrease performance.
1501 can significantly lower connection security or decrease performance.
1499 You have been warned.
1502 You have been warned.
1500
1503
1501 This option requires Python 2.7.
1504 This option requires Python 2.7.
1502
1505
1503 ``minimumprotocol``
1506 ``minimumprotocol``
1504 Defines the minimum channel encryption protocol to use.
1507 Defines the minimum channel encryption protocol to use.
1505
1508
1506 By default, the highest version of TLS supported by both client and server
1509 By default, the highest version of TLS supported by both client and server
1507 is used.
1510 is used.
1508
1511
1509 Allowed values are: ``tls1.0``, ``tls1.1``, ``tls1.2``.
1512 Allowed values are: ``tls1.0``, ``tls1.1``, ``tls1.2``.
1510
1513
1511 When running on an old Python version, only ``tls1.0`` is allowed since
1514 When running on an old Python version, only ``tls1.0`` is allowed since
1512 old versions of Python only support up to TLS 1.0.
1515 old versions of Python only support up to TLS 1.0.
1513
1516
1514 When running a Python that supports modern TLS versions, the default is
1517 When running a Python that supports modern TLS versions, the default is
1515 ``tls1.1``. ``tls1.0`` can still be used to allow TLS 1.0. However, this
1518 ``tls1.1``. ``tls1.0`` can still be used to allow TLS 1.0. However, this
1516 weakens security and should only be used as a feature of last resort if
1519 weakens security and should only be used as a feature of last resort if
1517 a server does not support TLS 1.1+.
1520 a server does not support TLS 1.1+.
1518
1521
1519 Options in the ``[hostsecurity]`` section can have the form
1522 Options in the ``[hostsecurity]`` section can have the form
1520 ``hostname``:``setting``. This allows multiple settings to be defined on a
1523 ``hostname``:``setting``. This allows multiple settings to be defined on a
1521 per-host basis.
1524 per-host basis.
1522
1525
1523 The following per-host settings can be defined.
1526 The following per-host settings can be defined.
1524
1527
1525 ``ciphers``
1528 ``ciphers``
1526 This behaves like ``ciphers`` as described above except it only applies
1529 This behaves like ``ciphers`` as described above except it only applies
1527 to the host on which it is defined.
1530 to the host on which it is defined.
1528
1531
1529 ``fingerprints``
1532 ``fingerprints``
1530 A list of hashes of the DER encoded peer/remote certificate. Values have
1533 A list of hashes of the DER encoded peer/remote certificate. Values have
1531 the form ``algorithm``:``fingerprint``. e.g.
1534 the form ``algorithm``:``fingerprint``. e.g.
1532 ``sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2``.
1535 ``sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2``.
1533 In addition, colons (``:``) can appear in the fingerprint part.
1536 In addition, colons (``:``) can appear in the fingerprint part.
1534
1537
1535 The following algorithms/prefixes are supported: ``sha1``, ``sha256``,
1538 The following algorithms/prefixes are supported: ``sha1``, ``sha256``,
1536 ``sha512``.
1539 ``sha512``.
1537
1540
1538 Use of ``sha256`` or ``sha512`` is preferred.
1541 Use of ``sha256`` or ``sha512`` is preferred.
1539
1542
1540 If a fingerprint is specified, the CA chain is not validated for this
1543 If a fingerprint is specified, the CA chain is not validated for this
1541 host and Mercurial will require the remote certificate to match one
1544 host and Mercurial will require the remote certificate to match one
1542 of the fingerprints specified. This means if the server updates its
1545 of the fingerprints specified. This means if the server updates its
1543 certificate, Mercurial will abort until a new fingerprint is defined.
1546 certificate, Mercurial will abort until a new fingerprint is defined.
1544 This can provide stronger security than traditional CA-based validation
1547 This can provide stronger security than traditional CA-based validation
1545 at the expense of convenience.
1548 at the expense of convenience.
1546
1549
1547 This option takes precedence over ``verifycertsfile``.
1550 This option takes precedence over ``verifycertsfile``.
1548
1551
1549 ``minimumprotocol``
1552 ``minimumprotocol``
1550 This behaves like ``minimumprotocol`` as described above except it
1553 This behaves like ``minimumprotocol`` as described above except it
1551 only applies to the host on which it is defined.
1554 only applies to the host on which it is defined.
1552
1555
1553 ``verifycertsfile``
1556 ``verifycertsfile``
1554 Path to file a containing a list of PEM encoded certificates used to
1557 Path to file a containing a list of PEM encoded certificates used to
1555 verify the server certificate. Environment variables and ``~user``
1558 verify the server certificate. Environment variables and ``~user``
1556 constructs are expanded in the filename.
1559 constructs are expanded in the filename.
1557
1560
1558 The server certificate or the certificate's certificate authority (CA)
1561 The server certificate or the certificate's certificate authority (CA)
1559 must match a certificate from this file or certificate verification
1562 must match a certificate from this file or certificate verification
1560 will fail and connections to the server will be refused.
1563 will fail and connections to the server will be refused.
1561
1564
1562 If defined, only certificates provided by this file will be used:
1565 If defined, only certificates provided by this file will be used:
1563 ``web.cacerts`` and any system/default certificates will not be
1566 ``web.cacerts`` and any system/default certificates will not be
1564 used.
1567 used.
1565
1568
1566 This option has no effect if the per-host ``fingerprints`` option
1569 This option has no effect if the per-host ``fingerprints`` option
1567 is set.
1570 is set.
1568
1571
1569 The format of the file is as follows::
1572 The format of the file is as follows::
1570
1573
1571 -----BEGIN CERTIFICATE-----
1574 -----BEGIN CERTIFICATE-----
1572 ... (certificate in base64 PEM encoding) ...
1575 ... (certificate in base64 PEM encoding) ...
1573 -----END CERTIFICATE-----
1576 -----END CERTIFICATE-----
1574 -----BEGIN CERTIFICATE-----
1577 -----BEGIN CERTIFICATE-----
1575 ... (certificate in base64 PEM encoding) ...
1578 ... (certificate in base64 PEM encoding) ...
1576 -----END CERTIFICATE-----
1579 -----END CERTIFICATE-----
1577
1580
1578 For example::
1581 For example::
1579
1582
1580 [hostsecurity]
1583 [hostsecurity]
1581 hg.example.com:fingerprints = sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
1584 hg.example.com:fingerprints = sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
1582 hg2.example.com:fingerprints = sha1:914f1aff87249c09b6859b88b1906d30756491ca, sha1:fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1585 hg2.example.com:fingerprints = sha1:914f1aff87249c09b6859b88b1906d30756491ca, sha1:fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1583 hg3.example.com:fingerprints = sha256:9a:b0:dc:e2:75:ad:8a:b7:84:58:e5:1f:07:32:f1:87:e6:bd:24:22:af:b7:ce:8e:9c:b4:10:cf:b9:f4:0e:d2
1586 hg3.example.com:fingerprints = sha256:9a:b0:dc:e2:75:ad:8a:b7:84:58:e5:1f:07:32:f1:87:e6:bd:24:22:af:b7:ce:8e:9c:b4:10:cf:b9:f4:0e:d2
1584 foo.example.com:verifycertsfile = /etc/ssl/trusted-ca-certs.pem
1587 foo.example.com:verifycertsfile = /etc/ssl/trusted-ca-certs.pem
1585
1588
1586 To change the default minimum protocol version to TLS 1.2 but to allow TLS 1.1
1589 To change the default minimum protocol version to TLS 1.2 but to allow TLS 1.1
1587 when connecting to ``hg.example.com``::
1590 when connecting to ``hg.example.com``::
1588
1591
1589 [hostsecurity]
1592 [hostsecurity]
1590 minimumprotocol = tls1.2
1593 minimumprotocol = tls1.2
1591 hg.example.com:minimumprotocol = tls1.1
1594 hg.example.com:minimumprotocol = tls1.1
1592
1595
1593 ``http_proxy``
1596 ``http_proxy``
1594 --------------
1597 --------------
1595
1598
1596 Used to access web-based Mercurial repositories through a HTTP
1599 Used to access web-based Mercurial repositories through a HTTP
1597 proxy.
1600 proxy.
1598
1601
1599 ``host``
1602 ``host``
1600 Host name and (optional) port of the proxy server, for example
1603 Host name and (optional) port of the proxy server, for example
1601 "myproxy:8000".
1604 "myproxy:8000".
1602
1605
1603 ``no``
1606 ``no``
1604 Optional. Comma-separated list of host names that should bypass
1607 Optional. Comma-separated list of host names that should bypass
1605 the proxy.
1608 the proxy.
1606
1609
1607 ``passwd``
1610 ``passwd``
1608 Optional. Password to authenticate with at the proxy server.
1611 Optional. Password to authenticate with at the proxy server.
1609
1612
1610 ``user``
1613 ``user``
1611 Optional. User name to authenticate with at the proxy server.
1614 Optional. User name to authenticate with at the proxy server.
1612
1615
1613 ``always``
1616 ``always``
1614 Optional. Always use the proxy, even for localhost and any entries
1617 Optional. Always use the proxy, even for localhost and any entries
1615 in ``http_proxy.no``. (default: False)
1618 in ``http_proxy.no``. (default: False)
1616
1619
1617 ``http``
1620 ``http``
1618 ----------
1621 ----------
1619
1622
1620 Used to configure access to Mercurial repositories via HTTP.
1623 Used to configure access to Mercurial repositories via HTTP.
1621
1624
1622 ``timeout``
1625 ``timeout``
1623 If set, blocking operations will timeout after that many seconds.
1626 If set, blocking operations will timeout after that many seconds.
1624 (default: None)
1627 (default: None)
1625
1628
1626 ``merge``
1629 ``merge``
1627 ---------
1630 ---------
1628
1631
1629 This section specifies behavior during merges and updates.
1632 This section specifies behavior during merges and updates.
1630
1633
1631 ``checkignored``
1634 ``checkignored``
1632 Controls behavior when an ignored file on disk has the same name as a tracked
1635 Controls behavior when an ignored file on disk has the same name as a tracked
1633 file in the changeset being merged or updated to, and has different
1636 file in the changeset being merged or updated to, and has different
1634 contents. Options are ``abort``, ``warn`` and ``ignore``. With ``abort``,
1637 contents. Options are ``abort``, ``warn`` and ``ignore``. With ``abort``,
1635 abort on such files. With ``warn``, warn on such files and back them up as
1638 abort on such files. With ``warn``, warn on such files and back them up as
1636 ``.orig``. With ``ignore``, don't print a warning and back them up as
1639 ``.orig``. With ``ignore``, don't print a warning and back them up as
1637 ``.orig``. (default: ``abort``)
1640 ``.orig``. (default: ``abort``)
1638
1641
1639 ``checkunknown``
1642 ``checkunknown``
1640 Controls behavior when an unknown file that isn't ignored has the same name
1643 Controls behavior when an unknown file that isn't ignored has the same name
1641 as a tracked file in the changeset being merged or updated to, and has
1644 as a tracked file in the changeset being merged or updated to, and has
1642 different contents. Similar to ``merge.checkignored``, except for files that
1645 different contents. Similar to ``merge.checkignored``, except for files that
1643 are not ignored. (default: ``abort``)
1646 are not ignored. (default: ``abort``)
1644
1647
1645 ``on-failure``
1648 ``on-failure``
1646 When set to ``continue`` (the default), the merge process attempts to
1649 When set to ``continue`` (the default), the merge process attempts to
1647 merge all unresolved files using the merge chosen tool, regardless of
1650 merge all unresolved files using the merge chosen tool, regardless of
1648 whether previous file merge attempts during the process succeeded or not.
1651 whether previous file merge attempts during the process succeeded or not.
1649 Setting this to ``prompt`` will prompt after any merge failure continue
1652 Setting this to ``prompt`` will prompt after any merge failure continue
1650 or halt the merge process. Setting this to ``halt`` will automatically
1653 or halt the merge process. Setting this to ``halt`` will automatically
1651 halt the merge process on any merge tool failure. The merge process
1654 halt the merge process on any merge tool failure. The merge process
1652 can be restarted by using the ``resolve`` command. When a merge is
1655 can be restarted by using the ``resolve`` command. When a merge is
1653 halted, the repository is left in a normal ``unresolved`` merge state.
1656 halted, the repository is left in a normal ``unresolved`` merge state.
1654 (default: ``continue``)
1657 (default: ``continue``)
1655
1658
1656 ``strict-capability-check``
1659 ``strict-capability-check``
1657 Whether capabilities of internal merge tools are checked strictly
1660 Whether capabilities of internal merge tools are checked strictly
1658 or not, while examining rules to decide merge tool to be used.
1661 or not, while examining rules to decide merge tool to be used.
1659 (default: False)
1662 (default: False)
1660
1663
1661 ``merge-patterns``
1664 ``merge-patterns``
1662 ------------------
1665 ------------------
1663
1666
1664 This section specifies merge tools to associate with particular file
1667 This section specifies merge tools to associate with particular file
1665 patterns. Tools matched here will take precedence over the default
1668 patterns. Tools matched here will take precedence over the default
1666 merge tool. Patterns are globs by default, rooted at the repository
1669 merge tool. Patterns are globs by default, rooted at the repository
1667 root.
1670 root.
1668
1671
1669 Example::
1672 Example::
1670
1673
1671 [merge-patterns]
1674 [merge-patterns]
1672 **.c = kdiff3
1675 **.c = kdiff3
1673 **.jpg = myimgmerge
1676 **.jpg = myimgmerge
1674
1677
1675 ``merge-tools``
1678 ``merge-tools``
1676 ---------------
1679 ---------------
1677
1680
1678 This section configures external merge tools to use for file-level
1681 This section configures external merge tools to use for file-level
1679 merges. This section has likely been preconfigured at install time.
1682 merges. This section has likely been preconfigured at install time.
1680 Use :hg:`config merge-tools` to check the existing configuration.
1683 Use :hg:`config merge-tools` to check the existing configuration.
1681 Also see :hg:`help merge-tools` for more details.
1684 Also see :hg:`help merge-tools` for more details.
1682
1685
1683 Example ``~/.hgrc``::
1686 Example ``~/.hgrc``::
1684
1687
1685 [merge-tools]
1688 [merge-tools]
1686 # Override stock tool location
1689 # Override stock tool location
1687 kdiff3.executable = ~/bin/kdiff3
1690 kdiff3.executable = ~/bin/kdiff3
1688 # Specify command line
1691 # Specify command line
1689 kdiff3.args = $base $local $other -o $output
1692 kdiff3.args = $base $local $other -o $output
1690 # Give higher priority
1693 # Give higher priority
1691 kdiff3.priority = 1
1694 kdiff3.priority = 1
1692
1695
1693 # Changing the priority of preconfigured tool
1696 # Changing the priority of preconfigured tool
1694 meld.priority = 0
1697 meld.priority = 0
1695
1698
1696 # Disable a preconfigured tool
1699 # Disable a preconfigured tool
1697 vimdiff.disabled = yes
1700 vimdiff.disabled = yes
1698
1701
1699 # Define new tool
1702 # Define new tool
1700 myHtmlTool.args = -m $local $other $base $output
1703 myHtmlTool.args = -m $local $other $base $output
1701 myHtmlTool.regkey = Software\FooSoftware\HtmlMerge
1704 myHtmlTool.regkey = Software\FooSoftware\HtmlMerge
1702 myHtmlTool.priority = 1
1705 myHtmlTool.priority = 1
1703
1706
1704 Supported arguments:
1707 Supported arguments:
1705
1708
1706 ``priority``
1709 ``priority``
1707 The priority in which to evaluate this tool.
1710 The priority in which to evaluate this tool.
1708 (default: 0)
1711 (default: 0)
1709
1712
1710 ``executable``
1713 ``executable``
1711 Either just the name of the executable or its pathname.
1714 Either just the name of the executable or its pathname.
1712
1715
1713 .. container:: windows
1716 .. container:: windows
1714
1717
1715 On Windows, the path can use environment variables with ${ProgramFiles}
1718 On Windows, the path can use environment variables with ${ProgramFiles}
1716 syntax.
1719 syntax.
1717
1720
1718 (default: the tool name)
1721 (default: the tool name)
1719
1722
1720 ``args``
1723 ``args``
1721 The arguments to pass to the tool executable. You can refer to the
1724 The arguments to pass to the tool executable. You can refer to the
1722 files being merged as well as the output file through these
1725 files being merged as well as the output file through these
1723 variables: ``$base``, ``$local``, ``$other``, ``$output``.
1726 variables: ``$base``, ``$local``, ``$other``, ``$output``.
1724
1727
1725 The meaning of ``$local`` and ``$other`` can vary depending on which action is
1728 The meaning of ``$local`` and ``$other`` can vary depending on which action is
1726 being performed. During an update or merge, ``$local`` represents the original
1729 being performed. During an update or merge, ``$local`` represents the original
1727 state of the file, while ``$other`` represents the commit you are updating to or
1730 state of the file, while ``$other`` represents the commit you are updating to or
1728 the commit you are merging with. During a rebase, ``$local`` represents the
1731 the commit you are merging with. During a rebase, ``$local`` represents the
1729 destination of the rebase, and ``$other`` represents the commit being rebased.
1732 destination of the rebase, and ``$other`` represents the commit being rebased.
1730
1733
1731 Some operations define custom labels to assist with identifying the revisions,
1734 Some operations define custom labels to assist with identifying the revisions,
1732 accessible via ``$labellocal``, ``$labelother``, and ``$labelbase``. If custom
1735 accessible via ``$labellocal``, ``$labelother``, and ``$labelbase``. If custom
1733 labels are not available, these will be ``local``, ``other``, and ``base``,
1736 labels are not available, these will be ``local``, ``other``, and ``base``,
1734 respectively.
1737 respectively.
1735 (default: ``$local $base $other``)
1738 (default: ``$local $base $other``)
1736
1739
1737 ``premerge``
1740 ``premerge``
1738 Attempt to run internal non-interactive 3-way merge tool before
1741 Attempt to run internal non-interactive 3-way merge tool before
1739 launching external tool. Options are ``true``, ``false``, ``keep``,
1742 launching external tool. Options are ``true``, ``false``, ``keep``,
1740 ``keep-merge3``, or ``keep-mergediff`` (experimental). The ``keep`` option
1743 ``keep-merge3``, or ``keep-mergediff`` (experimental). The ``keep`` option
1741 will leave markers in the file if the premerge fails. The ``keep-merge3``
1744 will leave markers in the file if the premerge fails. The ``keep-merge3``
1742 will do the same but include information about the base of the merge in the
1745 will do the same but include information about the base of the merge in the
1743 marker (see internal :merge3 in :hg:`help merge-tools`). The
1746 marker (see internal :merge3 in :hg:`help merge-tools`). The
1744 ``keep-mergediff`` option is similar but uses a different marker style
1747 ``keep-mergediff`` option is similar but uses a different marker style
1745 (see internal :merge3 in :hg:`help merge-tools`). (default: True)
1748 (see internal :merge3 in :hg:`help merge-tools`). (default: True)
1746
1749
1747 ``binary``
1750 ``binary``
1748 This tool can merge binary files. (default: False, unless tool
1751 This tool can merge binary files. (default: False, unless tool
1749 was selected by file pattern match)
1752 was selected by file pattern match)
1750
1753
1751 ``symlink``
1754 ``symlink``
1752 This tool can merge symlinks. (default: False)
1755 This tool can merge symlinks. (default: False)
1753
1756
1754 ``check``
1757 ``check``
1755 A list of merge success-checking options:
1758 A list of merge success-checking options:
1756
1759
1757 ``changed``
1760 ``changed``
1758 Ask whether merge was successful when the merged file shows no changes.
1761 Ask whether merge was successful when the merged file shows no changes.
1759 ``conflicts``
1762 ``conflicts``
1760 Check whether there are conflicts even though the tool reported success.
1763 Check whether there are conflicts even though the tool reported success.
1761 ``prompt``
1764 ``prompt``
1762 Always prompt for merge success, regardless of success reported by tool.
1765 Always prompt for merge success, regardless of success reported by tool.
1763
1766
1764 ``fixeol``
1767 ``fixeol``
1765 Attempt to fix up EOL changes caused by the merge tool.
1768 Attempt to fix up EOL changes caused by the merge tool.
1766 (default: False)
1769 (default: False)
1767
1770
1768 ``gui``
1771 ``gui``
1769 This tool requires a graphical interface to run. (default: False)
1772 This tool requires a graphical interface to run. (default: False)
1770
1773
1771 ``mergemarkers``
1774 ``mergemarkers``
1772 Controls whether the labels passed via ``$labellocal``, ``$labelother``, and
1775 Controls whether the labels passed via ``$labellocal``, ``$labelother``, and
1773 ``$labelbase`` are ``detailed`` (respecting ``mergemarkertemplate``) or
1776 ``$labelbase`` are ``detailed`` (respecting ``mergemarkertemplate``) or
1774 ``basic``. If ``premerge`` is ``keep`` or ``keep-merge3``, the conflict
1777 ``basic``. If ``premerge`` is ``keep`` or ``keep-merge3``, the conflict
1775 markers generated during premerge will be ``detailed`` if either this option or
1778 markers generated during premerge will be ``detailed`` if either this option or
1776 the corresponding option in the ``[ui]`` section is ``detailed``.
1779 the corresponding option in the ``[ui]`` section is ``detailed``.
1777 (default: ``basic``)
1780 (default: ``basic``)
1778
1781
1779 ``mergemarkertemplate``
1782 ``mergemarkertemplate``
1780 This setting can be used to override ``mergemarker`` from the
1783 This setting can be used to override ``mergemarker`` from the
1781 ``[command-templates]`` section on a per-tool basis; this applies to the
1784 ``[command-templates]`` section on a per-tool basis; this applies to the
1782 ``$label``-prefixed variables and to the conflict markers that are generated
1785 ``$label``-prefixed variables and to the conflict markers that are generated
1783 if ``premerge`` is ``keep` or ``keep-merge3``. See the corresponding variable
1786 if ``premerge`` is ``keep` or ``keep-merge3``. See the corresponding variable
1784 in ``[ui]`` for more information.
1787 in ``[ui]`` for more information.
1785
1788
1786 .. container:: windows
1789 .. container:: windows
1787
1790
1788 ``regkey``
1791 ``regkey``
1789 Windows registry key which describes install location of this
1792 Windows registry key which describes install location of this
1790 tool. Mercurial will search for this key first under
1793 tool. Mercurial will search for this key first under
1791 ``HKEY_CURRENT_USER`` and then under ``HKEY_LOCAL_MACHINE``.
1794 ``HKEY_CURRENT_USER`` and then under ``HKEY_LOCAL_MACHINE``.
1792 (default: None)
1795 (default: None)
1793
1796
1794 ``regkeyalt``
1797 ``regkeyalt``
1795 An alternate Windows registry key to try if the first key is not
1798 An alternate Windows registry key to try if the first key is not
1796 found. The alternate key uses the same ``regname`` and ``regappend``
1799 found. The alternate key uses the same ``regname`` and ``regappend``
1797 semantics of the primary key. The most common use for this key
1800 semantics of the primary key. The most common use for this key
1798 is to search for 32bit applications on 64bit operating systems.
1801 is to search for 32bit applications on 64bit operating systems.
1799 (default: None)
1802 (default: None)
1800
1803
1801 ``regname``
1804 ``regname``
1802 Name of value to read from specified registry key.
1805 Name of value to read from specified registry key.
1803 (default: the unnamed (default) value)
1806 (default: the unnamed (default) value)
1804
1807
1805 ``regappend``
1808 ``regappend``
1806 String to append to the value read from the registry, typically
1809 String to append to the value read from the registry, typically
1807 the executable name of the tool.
1810 the executable name of the tool.
1808 (default: None)
1811 (default: None)
1809
1812
1810 ``pager``
1813 ``pager``
1811 ---------
1814 ---------
1812
1815
1813 Setting used to control when to paginate and with what external tool. See
1816 Setting used to control when to paginate and with what external tool. See
1814 :hg:`help pager` for details.
1817 :hg:`help pager` for details.
1815
1818
1816 ``pager``
1819 ``pager``
1817 Define the external tool used as pager.
1820 Define the external tool used as pager.
1818
1821
1819 If no pager is set, Mercurial uses the environment variable $PAGER.
1822 If no pager is set, Mercurial uses the environment variable $PAGER.
1820 If neither pager.pager, nor $PAGER is set, a default pager will be
1823 If neither pager.pager, nor $PAGER is set, a default pager will be
1821 used, typically `less` on Unix and `more` on Windows. Example::
1824 used, typically `less` on Unix and `more` on Windows. Example::
1822
1825
1823 [pager]
1826 [pager]
1824 pager = less -FRX
1827 pager = less -FRX
1825
1828
1826 ``ignore``
1829 ``ignore``
1827 List of commands to disable the pager for. Example::
1830 List of commands to disable the pager for. Example::
1828
1831
1829 [pager]
1832 [pager]
1830 ignore = version, help, update
1833 ignore = version, help, update
1831
1834
1832 ``patch``
1835 ``patch``
1833 ---------
1836 ---------
1834
1837
1835 Settings used when applying patches, for instance through the 'import'
1838 Settings used when applying patches, for instance through the 'import'
1836 command or with Mercurial Queues extension.
1839 command or with Mercurial Queues extension.
1837
1840
1838 ``eol``
1841 ``eol``
1839 When set to 'strict' patch content and patched files end of lines
1842 When set to 'strict' patch content and patched files end of lines
1840 are preserved. When set to ``lf`` or ``crlf``, both files end of
1843 are preserved. When set to ``lf`` or ``crlf``, both files end of
1841 lines are ignored when patching and the result line endings are
1844 lines are ignored when patching and the result line endings are
1842 normalized to either LF (Unix) or CRLF (Windows). When set to
1845 normalized to either LF (Unix) or CRLF (Windows). When set to
1843 ``auto``, end of lines are again ignored while patching but line
1846 ``auto``, end of lines are again ignored while patching but line
1844 endings in patched files are normalized to their original setting
1847 endings in patched files are normalized to their original setting
1845 on a per-file basis. If target file does not exist or has no end
1848 on a per-file basis. If target file does not exist or has no end
1846 of line, patch line endings are preserved.
1849 of line, patch line endings are preserved.
1847 (default: strict)
1850 (default: strict)
1848
1851
1849 ``fuzz``
1852 ``fuzz``
1850 The number of lines of 'fuzz' to allow when applying patches. This
1853 The number of lines of 'fuzz' to allow when applying patches. This
1851 controls how much context the patcher is allowed to ignore when
1854 controls how much context the patcher is allowed to ignore when
1852 trying to apply a patch.
1855 trying to apply a patch.
1853 (default: 2)
1856 (default: 2)
1854
1857
1855 ``paths``
1858 ``paths``
1856 ---------
1859 ---------
1857
1860
1858 Assigns symbolic names and behavior to repositories.
1861 Assigns symbolic names and behavior to repositories.
1859
1862
1860 Options are symbolic names defining the URL or directory that is the
1863 Options are symbolic names defining the URL or directory that is the
1861 location of the repository. Example::
1864 location of the repository. Example::
1862
1865
1863 [paths]
1866 [paths]
1864 my_server = https://example.com/my_repo
1867 my_server = https://example.com/my_repo
1865 local_path = /home/me/repo
1868 local_path = /home/me/repo
1866
1869
1867 These symbolic names can be used from the command line. To pull
1870 These symbolic names can be used from the command line. To pull
1868 from ``my_server``: :hg:`pull my_server`. To push to ``local_path``:
1871 from ``my_server``: :hg:`pull my_server`. To push to ``local_path``:
1869 :hg:`push local_path`. You can check :hg:`help urls` for details about
1872 :hg:`push local_path`. You can check :hg:`help urls` for details about
1870 valid URLs.
1873 valid URLs.
1871
1874
1872 Options containing colons (``:``) denote sub-options that can influence
1875 Options containing colons (``:``) denote sub-options that can influence
1873 behavior for that specific path. Example::
1876 behavior for that specific path. Example::
1874
1877
1875 [paths]
1878 [paths]
1876 my_server = https://example.com/my_path
1879 my_server = https://example.com/my_path
1877 my_server:pushurl = ssh://example.com/my_path
1880 my_server:pushurl = ssh://example.com/my_path
1878
1881
1879 Paths using the `path://otherpath` scheme will inherit the sub-options value from
1882 Paths using the `path://otherpath` scheme will inherit the sub-options value from
1880 the path they point to.
1883 the path they point to.
1881
1884
1882 The following sub-options can be defined:
1885 The following sub-options can be defined:
1883
1886
1884 ``multi-urls``
1887 ``multi-urls``
1885 A boolean option. When enabled the value of the `[paths]` entry will be
1888 A boolean option. When enabled the value of the `[paths]` entry will be
1886 parsed as a list and the alias will resolve to multiple destination. If some
1889 parsed as a list and the alias will resolve to multiple destination. If some
1887 of the list entry use the `path://` syntax, the suboption will be inherited
1890 of the list entry use the `path://` syntax, the suboption will be inherited
1888 individually.
1891 individually.
1889
1892
1890 ``pushurl``
1893 ``pushurl``
1891 The URL to use for push operations. If not defined, the location
1894 The URL to use for push operations. If not defined, the location
1892 defined by the path's main entry is used.
1895 defined by the path's main entry is used.
1893
1896
1894 ``pushrev``
1897 ``pushrev``
1895 A revset defining which revisions to push by default.
1898 A revset defining which revisions to push by default.
1896
1899
1897 When :hg:`push` is executed without a ``-r`` argument, the revset
1900 When :hg:`push` is executed without a ``-r`` argument, the revset
1898 defined by this sub-option is evaluated to determine what to push.
1901 defined by this sub-option is evaluated to determine what to push.
1899
1902
1900 For example, a value of ``.`` will push the working directory's
1903 For example, a value of ``.`` will push the working directory's
1901 revision by default.
1904 revision by default.
1902
1905
1903 Revsets specifying bookmarks will not result in the bookmark being
1906 Revsets specifying bookmarks will not result in the bookmark being
1904 pushed.
1907 pushed.
1905
1908
1906 ``bookmarks.mode``
1909 ``bookmarks.mode``
1907 How bookmark will be dealt during the exchange. It support the following value
1910 How bookmark will be dealt during the exchange. It support the following value
1908
1911
1909 - ``default``: the default behavior, local and remote bookmarks are "merged"
1912 - ``default``: the default behavior, local and remote bookmarks are "merged"
1910 on push/pull.
1913 on push/pull.
1911
1914
1912 - ``mirror``: when pulling, replace local bookmarks by remote bookmarks. This
1915 - ``mirror``: when pulling, replace local bookmarks by remote bookmarks. This
1913 is useful to replicate a repository, or as an optimization.
1916 is useful to replicate a repository, or as an optimization.
1914
1917
1915 - ``ignore``: ignore bookmarks during exchange.
1918 - ``ignore``: ignore bookmarks during exchange.
1916 (This currently only affect pulling)
1919 (This currently only affect pulling)
1917
1920
1918 The following special named paths exist:
1921 The following special named paths exist:
1919
1922
1920 ``default``
1923 ``default``
1921 The URL or directory to use when no source or remote is specified.
1924 The URL or directory to use when no source or remote is specified.
1922
1925
1923 :hg:`clone` will automatically define this path to the location the
1926 :hg:`clone` will automatically define this path to the location the
1924 repository was cloned from.
1927 repository was cloned from.
1925
1928
1926 ``default-push``
1929 ``default-push``
1927 (deprecated) The URL or directory for the default :hg:`push` location.
1930 (deprecated) The URL or directory for the default :hg:`push` location.
1928 ``default:pushurl`` should be used instead.
1931 ``default:pushurl`` should be used instead.
1929
1932
1930 ``phases``
1933 ``phases``
1931 ----------
1934 ----------
1932
1935
1933 Specifies default handling of phases. See :hg:`help phases` for more
1936 Specifies default handling of phases. See :hg:`help phases` for more
1934 information about working with phases.
1937 information about working with phases.
1935
1938
1936 ``publish``
1939 ``publish``
1937 Controls draft phase behavior when working as a server. When true,
1940 Controls draft phase behavior when working as a server. When true,
1938 pushed changesets are set to public in both client and server and
1941 pushed changesets are set to public in both client and server and
1939 pulled or cloned changesets are set to public in the client.
1942 pulled or cloned changesets are set to public in the client.
1940 (default: True)
1943 (default: True)
1941
1944
1942 ``new-commit``
1945 ``new-commit``
1943 Phase of newly-created commits.
1946 Phase of newly-created commits.
1944 (default: draft)
1947 (default: draft)
1945
1948
1946 ``checksubrepos``
1949 ``checksubrepos``
1947 Check the phase of the current revision of each subrepository. Allowed
1950 Check the phase of the current revision of each subrepository. Allowed
1948 values are "ignore", "follow" and "abort". For settings other than
1951 values are "ignore", "follow" and "abort". For settings other than
1949 "ignore", the phase of the current revision of each subrepository is
1952 "ignore", the phase of the current revision of each subrepository is
1950 checked before committing the parent repository. If any of those phases is
1953 checked before committing the parent repository. If any of those phases is
1951 greater than the phase of the parent repository (e.g. if a subrepo is in a
1954 greater than the phase of the parent repository (e.g. if a subrepo is in a
1952 "secret" phase while the parent repo is in "draft" phase), the commit is
1955 "secret" phase while the parent repo is in "draft" phase), the commit is
1953 either aborted (if checksubrepos is set to "abort") or the higher phase is
1956 either aborted (if checksubrepos is set to "abort") or the higher phase is
1954 used for the parent repository commit (if set to "follow").
1957 used for the parent repository commit (if set to "follow").
1955 (default: follow)
1958 (default: follow)
1956
1959
1957
1960
1958 ``profiling``
1961 ``profiling``
1959 -------------
1962 -------------
1960
1963
1961 Specifies profiling type, format, and file output. Two profilers are
1964 Specifies profiling type, format, and file output. Two profilers are
1962 supported: an instrumenting profiler (named ``ls``), and a sampling
1965 supported: an instrumenting profiler (named ``ls``), and a sampling
1963 profiler (named ``stat``).
1966 profiler (named ``stat``).
1964
1967
1965 In this section description, 'profiling data' stands for the raw data
1968 In this section description, 'profiling data' stands for the raw data
1966 collected during profiling, while 'profiling report' stands for a
1969 collected during profiling, while 'profiling report' stands for a
1967 statistical text report generated from the profiling data.
1970 statistical text report generated from the profiling data.
1968
1971
1969 ``enabled``
1972 ``enabled``
1970 Enable the profiler.
1973 Enable the profiler.
1971 (default: false)
1974 (default: false)
1972
1975
1973 This is equivalent to passing ``--profile`` on the command line.
1976 This is equivalent to passing ``--profile`` on the command line.
1974
1977
1975 ``type``
1978 ``type``
1976 The type of profiler to use.
1979 The type of profiler to use.
1977 (default: stat)
1980 (default: stat)
1978
1981
1979 ``ls``
1982 ``ls``
1980 Use Python's built-in instrumenting profiler. This profiler
1983 Use Python's built-in instrumenting profiler. This profiler
1981 works on all platforms, but each line number it reports is the
1984 works on all platforms, but each line number it reports is the
1982 first line of a function. This restriction makes it difficult to
1985 first line of a function. This restriction makes it difficult to
1983 identify the expensive parts of a non-trivial function.
1986 identify the expensive parts of a non-trivial function.
1984 ``stat``
1987 ``stat``
1985 Use a statistical profiler, statprof. This profiler is most
1988 Use a statistical profiler, statprof. This profiler is most
1986 useful for profiling commands that run for longer than about 0.1
1989 useful for profiling commands that run for longer than about 0.1
1987 seconds.
1990 seconds.
1988
1991
1989 ``format``
1992 ``format``
1990 Profiling format. Specific to the ``ls`` instrumenting profiler.
1993 Profiling format. Specific to the ``ls`` instrumenting profiler.
1991 (default: text)
1994 (default: text)
1992
1995
1993 ``text``
1996 ``text``
1994 Generate a profiling report. When saving to a file, it should be
1997 Generate a profiling report. When saving to a file, it should be
1995 noted that only the report is saved, and the profiling data is
1998 noted that only the report is saved, and the profiling data is
1996 not kept.
1999 not kept.
1997 ``kcachegrind``
2000 ``kcachegrind``
1998 Format profiling data for kcachegrind use: when saving to a
2001 Format profiling data for kcachegrind use: when saving to a
1999 file, the generated file can directly be loaded into
2002 file, the generated file can directly be loaded into
2000 kcachegrind.
2003 kcachegrind.
2001
2004
2002 ``statformat``
2005 ``statformat``
2003 Profiling format for the ``stat`` profiler.
2006 Profiling format for the ``stat`` profiler.
2004 (default: hotpath)
2007 (default: hotpath)
2005
2008
2006 ``hotpath``
2009 ``hotpath``
2007 Show a tree-based display containing the hot path of execution (where
2010 Show a tree-based display containing the hot path of execution (where
2008 most time was spent).
2011 most time was spent).
2009 ``bymethod``
2012 ``bymethod``
2010 Show a table of methods ordered by how frequently they are active.
2013 Show a table of methods ordered by how frequently they are active.
2011 ``byline``
2014 ``byline``
2012 Show a table of lines in files ordered by how frequently they are active.
2015 Show a table of lines in files ordered by how frequently they are active.
2013 ``json``
2016 ``json``
2014 Render profiling data as JSON.
2017 Render profiling data as JSON.
2015
2018
2016 ``freq``
2019 ``freq``
2017 Sampling frequency. Specific to the ``stat`` sampling profiler.
2020 Sampling frequency. Specific to the ``stat`` sampling profiler.
2018 (default: 1000)
2021 (default: 1000)
2019
2022
2020 ``output``
2023 ``output``
2021 File path where profiling data or report should be saved. If the
2024 File path where profiling data or report should be saved. If the
2022 file exists, it is replaced. (default: None, data is printed on
2025 file exists, it is replaced. (default: None, data is printed on
2023 stderr)
2026 stderr)
2024
2027
2025 ``sort``
2028 ``sort``
2026 Sort field. Specific to the ``ls`` instrumenting profiler.
2029 Sort field. Specific to the ``ls`` instrumenting profiler.
2027 One of ``callcount``, ``reccallcount``, ``totaltime`` and
2030 One of ``callcount``, ``reccallcount``, ``totaltime`` and
2028 ``inlinetime``.
2031 ``inlinetime``.
2029 (default: inlinetime)
2032 (default: inlinetime)
2030
2033
2031 ``time-track``
2034 ``time-track``
2032 Control if the stat profiler track ``cpu`` or ``real`` time.
2035 Control if the stat profiler track ``cpu`` or ``real`` time.
2033 (default: ``cpu`` on Windows, otherwise ``real``)
2036 (default: ``cpu`` on Windows, otherwise ``real``)
2034
2037
2035 ``limit``
2038 ``limit``
2036 Number of lines to show. Specific to the ``ls`` instrumenting profiler.
2039 Number of lines to show. Specific to the ``ls`` instrumenting profiler.
2037 (default: 30)
2040 (default: 30)
2038
2041
2039 ``nested``
2042 ``nested``
2040 Show at most this number of lines of drill-down info after each main entry.
2043 Show at most this number of lines of drill-down info after each main entry.
2041 This can help explain the difference between Total and Inline.
2044 This can help explain the difference between Total and Inline.
2042 Specific to the ``ls`` instrumenting profiler.
2045 Specific to the ``ls`` instrumenting profiler.
2043 (default: 0)
2046 (default: 0)
2044
2047
2045 ``showmin``
2048 ``showmin``
2046 Minimum fraction of samples an entry must have for it to be displayed.
2049 Minimum fraction of samples an entry must have for it to be displayed.
2047 Can be specified as a float between ``0.0`` and ``1.0`` or can have a
2050 Can be specified as a float between ``0.0`` and ``1.0`` or can have a
2048 ``%`` afterwards to allow values up to ``100``. e.g. ``5%``.
2051 ``%`` afterwards to allow values up to ``100``. e.g. ``5%``.
2049
2052
2050 Only used by the ``stat`` profiler.
2053 Only used by the ``stat`` profiler.
2051
2054
2052 For the ``hotpath`` format, default is ``0.05``.
2055 For the ``hotpath`` format, default is ``0.05``.
2053 For the ``chrome`` format, default is ``0.005``.
2056 For the ``chrome`` format, default is ``0.005``.
2054
2057
2055 The option is unused on other formats.
2058 The option is unused on other formats.
2056
2059
2057 ``showmax``
2060 ``showmax``
2058 Maximum fraction of samples an entry can have before it is ignored in
2061 Maximum fraction of samples an entry can have before it is ignored in
2059 display. Values format is the same as ``showmin``.
2062 display. Values format is the same as ``showmin``.
2060
2063
2061 Only used by the ``stat`` profiler.
2064 Only used by the ``stat`` profiler.
2062
2065
2063 For the ``chrome`` format, default is ``0.999``.
2066 For the ``chrome`` format, default is ``0.999``.
2064
2067
2065 The option is unused on other formats.
2068 The option is unused on other formats.
2066
2069
2067 ``showtime``
2070 ``showtime``
2068 Show time taken as absolute durations, in addition to percentages.
2071 Show time taken as absolute durations, in addition to percentages.
2069 Only used by the ``hotpath`` format.
2072 Only used by the ``hotpath`` format.
2070 (default: true)
2073 (default: true)
2071
2074
2072 ``progress``
2075 ``progress``
2073 ------------
2076 ------------
2074
2077
2075 Mercurial commands can draw progress bars that are as informative as
2078 Mercurial commands can draw progress bars that are as informative as
2076 possible. Some progress bars only offer indeterminate information, while others
2079 possible. Some progress bars only offer indeterminate information, while others
2077 have a definite end point.
2080 have a definite end point.
2078
2081
2079 ``debug``
2082 ``debug``
2080 Whether to print debug info when updating the progress bar. (default: False)
2083 Whether to print debug info when updating the progress bar. (default: False)
2081
2084
2082 ``delay``
2085 ``delay``
2083 Number of seconds (float) before showing the progress bar. (default: 3)
2086 Number of seconds (float) before showing the progress bar. (default: 3)
2084
2087
2085 ``changedelay``
2088 ``changedelay``
2086 Minimum delay before showing a new topic. When set to less than 3 * refresh,
2089 Minimum delay before showing a new topic. When set to less than 3 * refresh,
2087 that value will be used instead. (default: 1)
2090 that value will be used instead. (default: 1)
2088
2091
2089 ``estimateinterval``
2092 ``estimateinterval``
2090 Maximum sampling interval in seconds for speed and estimated time
2093 Maximum sampling interval in seconds for speed and estimated time
2091 calculation. (default: 60)
2094 calculation. (default: 60)
2092
2095
2093 ``refresh``
2096 ``refresh``
2094 Time in seconds between refreshes of the progress bar. (default: 0.1)
2097 Time in seconds between refreshes of the progress bar. (default: 0.1)
2095
2098
2096 ``format``
2099 ``format``
2097 Format of the progress bar.
2100 Format of the progress bar.
2098
2101
2099 Valid entries for the format field are ``topic``, ``bar``, ``number``,
2102 Valid entries for the format field are ``topic``, ``bar``, ``number``,
2100 ``unit``, ``estimate``, ``speed``, and ``item``. ``item`` defaults to the
2103 ``unit``, ``estimate``, ``speed``, and ``item``. ``item`` defaults to the
2101 last 20 characters of the item, but this can be changed by adding either
2104 last 20 characters of the item, but this can be changed by adding either
2102 ``-<num>`` which would take the last num characters, or ``+<num>`` for the
2105 ``-<num>`` which would take the last num characters, or ``+<num>`` for the
2103 first num characters.
2106 first num characters.
2104
2107
2105 (default: topic bar number estimate)
2108 (default: topic bar number estimate)
2106
2109
2107 ``width``
2110 ``width``
2108 If set, the maximum width of the progress information (that is, min(width,
2111 If set, the maximum width of the progress information (that is, min(width,
2109 term width) will be used).
2112 term width) will be used).
2110
2113
2111 ``clear-complete``
2114 ``clear-complete``
2112 Clear the progress bar after it's done. (default: True)
2115 Clear the progress bar after it's done. (default: True)
2113
2116
2114 ``disable``
2117 ``disable``
2115 If true, don't show a progress bar.
2118 If true, don't show a progress bar.
2116
2119
2117 ``assume-tty``
2120 ``assume-tty``
2118 If true, ALWAYS show a progress bar, unless disable is given.
2121 If true, ALWAYS show a progress bar, unless disable is given.
2119
2122
2120 ``rebase``
2123 ``rebase``
2121 ----------
2124 ----------
2122
2125
2123 ``evolution.allowdivergence``
2126 ``evolution.allowdivergence``
2124 Default to False, when True allow creating divergence when performing
2127 Default to False, when True allow creating divergence when performing
2125 rebase of obsolete changesets.
2128 rebase of obsolete changesets.
2126
2129
2127 ``revsetalias``
2130 ``revsetalias``
2128 ---------------
2131 ---------------
2129
2132
2130 Alias definitions for revsets. See :hg:`help revsets` for details.
2133 Alias definitions for revsets. See :hg:`help revsets` for details.
2131
2134
2132 ``rewrite``
2135 ``rewrite``
2133 -----------
2136 -----------
2134
2137
2135 ``backup-bundle``
2138 ``backup-bundle``
2136 Whether to save stripped changesets to a bundle file. (default: True)
2139 Whether to save stripped changesets to a bundle file. (default: True)
2137
2140
2138 ``update-timestamp``
2141 ``update-timestamp``
2139 If true, updates the date and time of the changeset to current. It is only
2142 If true, updates the date and time of the changeset to current. It is only
2140 applicable for `hg amend`, `hg commit --amend` and `hg uncommit` in the
2143 applicable for `hg amend`, `hg commit --amend` and `hg uncommit` in the
2141 current version.
2144 current version.
2142
2145
2143 ``empty-successor``
2146 ``empty-successor``
2144
2147
2145 Control what happens with empty successors that are the result of rewrite
2148 Control what happens with empty successors that are the result of rewrite
2146 operations. If set to ``skip``, the successor is not created. If set to
2149 operations. If set to ``skip``, the successor is not created. If set to
2147 ``keep``, the empty successor is created and kept.
2150 ``keep``, the empty successor is created and kept.
2148
2151
2149 Currently, only the rebase and absorb commands consider this configuration.
2152 Currently, only the rebase and absorb commands consider this configuration.
2150 (EXPERIMENTAL)
2153 (EXPERIMENTAL)
2151
2154
2152 ``share``
2155 ``share``
2153 ---------
2156 ---------
2154
2157
2155 ``safe-mismatch.source-safe``
2158 ``safe-mismatch.source-safe``
2156 Controls what happens when the shared repository does not use the
2159 Controls what happens when the shared repository does not use the
2157 share-safe mechanism but its source repository does.
2160 share-safe mechanism but its source repository does.
2158
2161
2159 Possible values are `abort` (default), `allow`, `upgrade-abort` and
2162 Possible values are `abort` (default), `allow`, `upgrade-abort` and
2160 `upgrade-allow`.
2163 `upgrade-allow`.
2161
2164
2162 ``abort``
2165 ``abort``
2163 Disallows running any command and aborts
2166 Disallows running any command and aborts
2164 ``allow``
2167 ``allow``
2165 Respects the feature presence in the share source
2168 Respects the feature presence in the share source
2166 ``upgrade-abort``
2169 ``upgrade-abort``
2167 tries to upgrade the share to use share-safe; if it fails, aborts
2170 tries to upgrade the share to use share-safe; if it fails, aborts
2168 ``upgrade-allow``
2171 ``upgrade-allow``
2169 tries to upgrade the share; if it fails, continue by
2172 tries to upgrade the share; if it fails, continue by
2170 respecting the share source setting
2173 respecting the share source setting
2171
2174
2172 Check :hg:`help config.format.use-share-safe` for details about the
2175 Check :hg:`help config.format.use-share-safe` for details about the
2173 share-safe feature.
2176 share-safe feature.
2174
2177
2175 ``safe-mismatch.source-safe.warn``
2178 ``safe-mismatch.source-safe.warn``
2176 Shows a warning on operations if the shared repository does not use
2179 Shows a warning on operations if the shared repository does not use
2177 share-safe, but the source repository does.
2180 share-safe, but the source repository does.
2178 (default: True)
2181 (default: True)
2179
2182
2180 ``safe-mismatch.source-not-safe``
2183 ``safe-mismatch.source-not-safe``
2181 Controls what happens when the shared repository uses the share-safe
2184 Controls what happens when the shared repository uses the share-safe
2182 mechanism but its source does not.
2185 mechanism but its source does not.
2183
2186
2184 Possible values are `abort` (default), `allow`, `downgrade-abort` and
2187 Possible values are `abort` (default), `allow`, `downgrade-abort` and
2185 `downgrade-allow`.
2188 `downgrade-allow`.
2186
2189
2187 ``abort``
2190 ``abort``
2188 Disallows running any command and aborts
2191 Disallows running any command and aborts
2189 ``allow``
2192 ``allow``
2190 Respects the feature presence in the share source
2193 Respects the feature presence in the share source
2191 ``downgrade-abort``
2194 ``downgrade-abort``
2192 tries to downgrade the share to not use share-safe; if it fails, aborts
2195 tries to downgrade the share to not use share-safe; if it fails, aborts
2193 ``downgrade-allow``
2196 ``downgrade-allow``
2194 tries to downgrade the share to not use share-safe;
2197 tries to downgrade the share to not use share-safe;
2195 if it fails, continue by respecting the shared source setting
2198 if it fails, continue by respecting the shared source setting
2196
2199
2197 Check :hg:`help config.format.use-share-safe` for details about the
2200 Check :hg:`help config.format.use-share-safe` for details about the
2198 share-safe feature.
2201 share-safe feature.
2199
2202
2200 ``safe-mismatch.source-not-safe.warn``
2203 ``safe-mismatch.source-not-safe.warn``
2201 Shows a warning on operations if the shared repository uses share-safe,
2204 Shows a warning on operations if the shared repository uses share-safe,
2202 but the source repository does not.
2205 but the source repository does not.
2203 (default: True)
2206 (default: True)
2204
2207
2205 ``storage``
2208 ``storage``
2206 -----------
2209 -----------
2207
2210
2208 Control the strategy Mercurial uses internally to store history. Options in this
2211 Control the strategy Mercurial uses internally to store history. Options in this
2209 category impact performance and repository size.
2212 category impact performance and repository size.
2210
2213
2211 ``revlog.issue6528.fix-incoming``
2214 ``revlog.issue6528.fix-incoming``
2212 Version 5.8 of Mercurial had a bug leading to altering the parent of file
2215 Version 5.8 of Mercurial had a bug leading to altering the parent of file
2213 revision with copy information (or any other metadata) on exchange. This
2216 revision with copy information (or any other metadata) on exchange. This
2214 leads to the copy metadata to be overlooked by various internal logic. The
2217 leads to the copy metadata to be overlooked by various internal logic. The
2215 issue was fixed in Mercurial 5.8.1.
2218 issue was fixed in Mercurial 5.8.1.
2216 (See https://bz.mercurial-scm.org/show_bug.cgi?id=6528 for details)
2219 (See https://bz.mercurial-scm.org/show_bug.cgi?id=6528 for details)
2217
2220
2218 As a result Mercurial is now checking and fixing incoming file revisions to
2221 As a result Mercurial is now checking and fixing incoming file revisions to
2219 make sure there parents are in the right order. This behavior can be
2222 make sure there parents are in the right order. This behavior can be
2220 disabled by setting this option to `no`. This apply to revisions added
2223 disabled by setting this option to `no`. This apply to revisions added
2221 through push, pull, clone and unbundle.
2224 through push, pull, clone and unbundle.
2222
2225
2223 To fix affected revisions that already exist within the repository, one can
2226 To fix affected revisions that already exist within the repository, one can
2224 use :hg:`debug-repair-issue-6528`.
2227 use :hg:`debug-repair-issue-6528`.
2225
2228
2226 ``revlog.optimize-delta-parent-choice``
2229 ``revlog.optimize-delta-parent-choice``
2227 When storing a merge revision, both parents will be equally considered as
2230 When storing a merge revision, both parents will be equally considered as
2228 a possible delta base. This results in better delta selection and improved
2231 a possible delta base. This results in better delta selection and improved
2229 revlog compression. This option is enabled by default.
2232 revlog compression. This option is enabled by default.
2230
2233
2231 Turning this option off can result in large increase of repository size for
2234 Turning this option off can result in large increase of repository size for
2232 repository with many merges.
2235 repository with many merges.
2233
2236
2234 ``revlog.persistent-nodemap.mmap``
2237 ``revlog.persistent-nodemap.mmap``
2235 Whether to use the Operating System "memory mapping" feature (when
2238 Whether to use the Operating System "memory mapping" feature (when
2236 possible) to access the persistent nodemap data. This improve performance
2239 possible) to access the persistent nodemap data. This improve performance
2237 and reduce memory pressure.
2240 and reduce memory pressure.
2238
2241
2239 Default to True.
2242 Default to True.
2240
2243
2241 For details on the "persistent-nodemap" feature, see:
2244 For details on the "persistent-nodemap" feature, see:
2242 :hg:`help config.format.use-persistent-nodemap`.
2245 :hg:`help config.format.use-persistent-nodemap`.
2243
2246
2244 ``revlog.persistent-nodemap.slow-path``
2247 ``revlog.persistent-nodemap.slow-path``
2245 Control the behavior of Merucrial when using a repository with "persistent"
2248 Control the behavior of Merucrial when using a repository with "persistent"
2246 nodemap with an installation of Mercurial without a fast implementation for
2249 nodemap with an installation of Mercurial without a fast implementation for
2247 the feature:
2250 the feature:
2248
2251
2249 ``allow``: Silently use the slower implementation to access the repository.
2252 ``allow``: Silently use the slower implementation to access the repository.
2250 ``warn``: Warn, but use the slower implementation to access the repository.
2253 ``warn``: Warn, but use the slower implementation to access the repository.
2251 ``abort``: Prevent access to such repositories. (This is the default)
2254 ``abort``: Prevent access to such repositories. (This is the default)
2252
2255
2253 For details on the "persistent-nodemap" feature, see:
2256 For details on the "persistent-nodemap" feature, see:
2254 :hg:`help config.format.use-persistent-nodemap`.
2257 :hg:`help config.format.use-persistent-nodemap`.
2255
2258
2256 ``revlog.reuse-external-delta-parent``
2259 ``revlog.reuse-external-delta-parent``
2257 Control the order in which delta parents are considered when adding new
2260 Control the order in which delta parents are considered when adding new
2258 revisions from an external source.
2261 revisions from an external source.
2259 (typically: apply bundle from `hg pull` or `hg push`).
2262 (typically: apply bundle from `hg pull` or `hg push`).
2260
2263
2261 New revisions are usually provided as a delta against other revisions. By
2264 New revisions are usually provided as a delta against other revisions. By
2262 default, Mercurial will try to reuse this delta first, therefore using the
2265 default, Mercurial will try to reuse this delta first, therefore using the
2263 same "delta parent" as the source. Directly using delta's from the source
2266 same "delta parent" as the source. Directly using delta's from the source
2264 reduces CPU usage and usually speeds up operation. However, in some case,
2267 reduces CPU usage and usually speeds up operation. However, in some case,
2265 the source might have sub-optimal delta bases and forcing their reevaluation
2268 the source might have sub-optimal delta bases and forcing their reevaluation
2266 is useful. For example, pushes from an old client could have sub-optimal
2269 is useful. For example, pushes from an old client could have sub-optimal
2267 delta's parent that the server want to optimize. (lack of general delta, bad
2270 delta's parent that the server want to optimize. (lack of general delta, bad
2268 parents, choice, lack of sparse-revlog, etc).
2271 parents, choice, lack of sparse-revlog, etc).
2269
2272
2270 This option is enabled by default. Turning it off will ensure bad delta
2273 This option is enabled by default. Turning it off will ensure bad delta
2271 parent choices from older client do not propagate to this repository, at
2274 parent choices from older client do not propagate to this repository, at
2272 the cost of a small increase in CPU consumption.
2275 the cost of a small increase in CPU consumption.
2273
2276
2274 Note: this option only control the order in which delta parents are
2277 Note: this option only control the order in which delta parents are
2275 considered. Even when disabled, the existing delta from the source will be
2278 considered. Even when disabled, the existing delta from the source will be
2276 reused if the same delta parent is selected.
2279 reused if the same delta parent is selected.
2277
2280
2278 ``revlog.reuse-external-delta``
2281 ``revlog.reuse-external-delta``
2279 Control the reuse of delta from external source.
2282 Control the reuse of delta from external source.
2280 (typically: apply bundle from `hg pull` or `hg push`).
2283 (typically: apply bundle from `hg pull` or `hg push`).
2281
2284
2282 New revisions are usually provided as a delta against another revision. By
2285 New revisions are usually provided as a delta against another revision. By
2283 default, Mercurial will not recompute the same delta again, trusting
2286 default, Mercurial will not recompute the same delta again, trusting
2284 externally provided deltas. There have been rare cases of small adjustment
2287 externally provided deltas. There have been rare cases of small adjustment
2285 to the diffing algorithm in the past. So in some rare case, recomputing
2288 to the diffing algorithm in the past. So in some rare case, recomputing
2286 delta provided by ancient clients can provides better results. Disabling
2289 delta provided by ancient clients can provides better results. Disabling
2287 this option means going through a full delta recomputation for all incoming
2290 this option means going through a full delta recomputation for all incoming
2288 revisions. It means a large increase in CPU usage and will slow operations
2291 revisions. It means a large increase in CPU usage and will slow operations
2289 down.
2292 down.
2290
2293
2291 This option is enabled by default. When disabled, it also disables the
2294 This option is enabled by default. When disabled, it also disables the
2292 related ``storage.revlog.reuse-external-delta-parent`` option.
2295 related ``storage.revlog.reuse-external-delta-parent`` option.
2293
2296
2294 ``revlog.zlib.level``
2297 ``revlog.zlib.level``
2295 Zlib compression level used when storing data into the repository. Accepted
2298 Zlib compression level used when storing data into the repository. Accepted
2296 Value range from 1 (lowest compression) to 9 (highest compression). Zlib
2299 Value range from 1 (lowest compression) to 9 (highest compression). Zlib
2297 default value is 6.
2300 default value is 6.
2298
2301
2299
2302
2300 ``revlog.zstd.level``
2303 ``revlog.zstd.level``
2301 zstd compression level used when storing data into the repository. Accepted
2304 zstd compression level used when storing data into the repository. Accepted
2302 Value range from 1 (lowest compression) to 22 (highest compression).
2305 Value range from 1 (lowest compression) to 22 (highest compression).
2303 (default 3)
2306 (default 3)
2304
2307
2305 ``server``
2308 ``server``
2306 ----------
2309 ----------
2307
2310
2308 Controls generic server settings.
2311 Controls generic server settings.
2309
2312
2310 ``bookmarks-pushkey-compat``
2313 ``bookmarks-pushkey-compat``
2311 Trigger pushkey hook when being pushed bookmark updates. This config exist
2314 Trigger pushkey hook when being pushed bookmark updates. This config exist
2312 for compatibility purpose (default to True)
2315 for compatibility purpose (default to True)
2313
2316
2314 If you use ``pushkey`` and ``pre-pushkey`` hooks to control bookmark
2317 If you use ``pushkey`` and ``pre-pushkey`` hooks to control bookmark
2315 movement we recommend you migrate them to ``txnclose-bookmark`` and
2318 movement we recommend you migrate them to ``txnclose-bookmark`` and
2316 ``pretxnclose-bookmark``.
2319 ``pretxnclose-bookmark``.
2317
2320
2318 ``compressionengines``
2321 ``compressionengines``
2319 List of compression engines and their relative priority to advertise
2322 List of compression engines and their relative priority to advertise
2320 to clients.
2323 to clients.
2321
2324
2322 The order of compression engines determines their priority, the first
2325 The order of compression engines determines their priority, the first
2323 having the highest priority. If a compression engine is not listed
2326 having the highest priority. If a compression engine is not listed
2324 here, it won't be advertised to clients.
2327 here, it won't be advertised to clients.
2325
2328
2326 If not set (the default), built-in defaults are used. Run
2329 If not set (the default), built-in defaults are used. Run
2327 :hg:`debuginstall` to list available compression engines and their
2330 :hg:`debuginstall` to list available compression engines and their
2328 default wire protocol priority.
2331 default wire protocol priority.
2329
2332
2330 Older Mercurial clients only support zlib compression and this setting
2333 Older Mercurial clients only support zlib compression and this setting
2331 has no effect for legacy clients.
2334 has no effect for legacy clients.
2332
2335
2333 ``uncompressed``
2336 ``uncompressed``
2334 Whether to allow clients to clone a repository using the
2337 Whether to allow clients to clone a repository using the
2335 uncompressed streaming protocol. This transfers about 40% more
2338 uncompressed streaming protocol. This transfers about 40% more
2336 data than a regular clone, but uses less memory and CPU on both
2339 data than a regular clone, but uses less memory and CPU on both
2337 server and client. Over a LAN (100 Mbps or better) or a very fast
2340 server and client. Over a LAN (100 Mbps or better) or a very fast
2338 WAN, an uncompressed streaming clone is a lot faster (~10x) than a
2341 WAN, an uncompressed streaming clone is a lot faster (~10x) than a
2339 regular clone. Over most WAN connections (anything slower than
2342 regular clone. Over most WAN connections (anything slower than
2340 about 6 Mbps), uncompressed streaming is slower, because of the
2343 about 6 Mbps), uncompressed streaming is slower, because of the
2341 extra data transfer overhead. This mode will also temporarily hold
2344 extra data transfer overhead. This mode will also temporarily hold
2342 the write lock while determining what data to transfer.
2345 the write lock while determining what data to transfer.
2343 (default: True)
2346 (default: True)
2344
2347
2345 ``uncompressedallowsecret``
2348 ``uncompressedallowsecret``
2346 Whether to allow stream clones when the repository contains secret
2349 Whether to allow stream clones when the repository contains secret
2347 changesets. (default: False)
2350 changesets. (default: False)
2348
2351
2349 ``preferuncompressed``
2352 ``preferuncompressed``
2350 When set, clients will try to use the uncompressed streaming
2353 When set, clients will try to use the uncompressed streaming
2351 protocol. (default: False)
2354 protocol. (default: False)
2352
2355
2353 ``disablefullbundle``
2356 ``disablefullbundle``
2354 When set, servers will refuse attempts to do pull-based clones.
2357 When set, servers will refuse attempts to do pull-based clones.
2355 If this option is set, ``preferuncompressed`` and/or clone bundles
2358 If this option is set, ``preferuncompressed`` and/or clone bundles
2356 are highly recommended. Partial clones will still be allowed.
2359 are highly recommended. Partial clones will still be allowed.
2357 (default: False)
2360 (default: False)
2358
2361
2359 ``streamunbundle``
2362 ``streamunbundle``
2360 When set, servers will apply data sent from the client directly,
2363 When set, servers will apply data sent from the client directly,
2361 otherwise it will be written to a temporary file first. This option
2364 otherwise it will be written to a temporary file first. This option
2362 effectively prevents concurrent pushes.
2365 effectively prevents concurrent pushes.
2363
2366
2364 ``pullbundle``
2367 ``pullbundle``
2365 When set, the server will check pullbundles.manifest for bundles
2368 When set, the server will check pullbundles.manifest for bundles
2366 covering the requested heads and common nodes. The first matching
2369 covering the requested heads and common nodes. The first matching
2367 entry will be streamed to the client.
2370 entry will be streamed to the client.
2368
2371
2369 For HTTP transport, the stream will still use zlib compression
2372 For HTTP transport, the stream will still use zlib compression
2370 for older clients.
2373 for older clients.
2371
2374
2372 ``concurrent-push-mode``
2375 ``concurrent-push-mode``
2373 Level of allowed race condition between two pushing clients.
2376 Level of allowed race condition between two pushing clients.
2374
2377
2375 - 'strict': push is abort if another client touched the repository
2378 - 'strict': push is abort if another client touched the repository
2376 while the push was preparing.
2379 while the push was preparing.
2377 - 'check-related': push is only aborted if it affects head that got also
2380 - 'check-related': push is only aborted if it affects head that got also
2378 affected while the push was preparing. (default since 5.4)
2381 affected while the push was preparing. (default since 5.4)
2379
2382
2380 'check-related' only takes effect for compatible clients (version
2383 'check-related' only takes effect for compatible clients (version
2381 4.3 and later). Older clients will use 'strict'.
2384 4.3 and later). Older clients will use 'strict'.
2382
2385
2383 ``validate``
2386 ``validate``
2384 Whether to validate the completeness of pushed changesets by
2387 Whether to validate the completeness of pushed changesets by
2385 checking that all new file revisions specified in manifests are
2388 checking that all new file revisions specified in manifests are
2386 present. (default: False)
2389 present. (default: False)
2387
2390
2388 ``maxhttpheaderlen``
2391 ``maxhttpheaderlen``
2389 Instruct HTTP clients not to send request headers longer than this
2392 Instruct HTTP clients not to send request headers longer than this
2390 many bytes. (default: 1024)
2393 many bytes. (default: 1024)
2391
2394
2392 ``bundle1``
2395 ``bundle1``
2393 Whether to allow clients to push and pull using the legacy bundle1
2396 Whether to allow clients to push and pull using the legacy bundle1
2394 exchange format. (default: True)
2397 exchange format. (default: True)
2395
2398
2396 ``bundle1gd``
2399 ``bundle1gd``
2397 Like ``bundle1`` but only used if the repository is using the
2400 Like ``bundle1`` but only used if the repository is using the
2398 *generaldelta* storage format. (default: True)
2401 *generaldelta* storage format. (default: True)
2399
2402
2400 ``bundle1.push``
2403 ``bundle1.push``
2401 Whether to allow clients to push using the legacy bundle1 exchange
2404 Whether to allow clients to push using the legacy bundle1 exchange
2402 format. (default: True)
2405 format. (default: True)
2403
2406
2404 ``bundle1gd.push``
2407 ``bundle1gd.push``
2405 Like ``bundle1.push`` but only used if the repository is using the
2408 Like ``bundle1.push`` but only used if the repository is using the
2406 *generaldelta* storage format. (default: True)
2409 *generaldelta* storage format. (default: True)
2407
2410
2408 ``bundle1.pull``
2411 ``bundle1.pull``
2409 Whether to allow clients to pull using the legacy bundle1 exchange
2412 Whether to allow clients to pull using the legacy bundle1 exchange
2410 format. (default: True)
2413 format. (default: True)
2411
2414
2412 ``bundle1gd.pull``
2415 ``bundle1gd.pull``
2413 Like ``bundle1.pull`` but only used if the repository is using the
2416 Like ``bundle1.pull`` but only used if the repository is using the
2414 *generaldelta* storage format. (default: True)
2417 *generaldelta* storage format. (default: True)
2415
2418
2416 Large repositories using the *generaldelta* storage format should
2419 Large repositories using the *generaldelta* storage format should
2417 consider setting this option because converting *generaldelta*
2420 consider setting this option because converting *generaldelta*
2418 repositories to the exchange format required by the bundle1 data
2421 repositories to the exchange format required by the bundle1 data
2419 format can consume a lot of CPU.
2422 format can consume a lot of CPU.
2420
2423
2421 ``bundle2.stream``
2424 ``bundle2.stream``
2422 Whether to allow clients to pull using the bundle2 streaming protocol.
2425 Whether to allow clients to pull using the bundle2 streaming protocol.
2423 (default: True)
2426 (default: True)
2424
2427
2425 ``zliblevel``
2428 ``zliblevel``
2426 Integer between ``-1`` and ``9`` that controls the zlib compression level
2429 Integer between ``-1`` and ``9`` that controls the zlib compression level
2427 for wire protocol commands that send zlib compressed output (notably the
2430 for wire protocol commands that send zlib compressed output (notably the
2428 commands that send repository history data).
2431 commands that send repository history data).
2429
2432
2430 The default (``-1``) uses the default zlib compression level, which is
2433 The default (``-1``) uses the default zlib compression level, which is
2431 likely equivalent to ``6``. ``0`` means no compression. ``9`` means
2434 likely equivalent to ``6``. ``0`` means no compression. ``9`` means
2432 maximum compression.
2435 maximum compression.
2433
2436
2434 Setting this option allows server operators to make trade-offs between
2437 Setting this option allows server operators to make trade-offs between
2435 bandwidth and CPU used. Lowering the compression lowers CPU utilization
2438 bandwidth and CPU used. Lowering the compression lowers CPU utilization
2436 but sends more bytes to clients.
2439 but sends more bytes to clients.
2437
2440
2438 This option only impacts the HTTP server.
2441 This option only impacts the HTTP server.
2439
2442
2440 ``zstdlevel``
2443 ``zstdlevel``
2441 Integer between ``1`` and ``22`` that controls the zstd compression level
2444 Integer between ``1`` and ``22`` that controls the zstd compression level
2442 for wire protocol commands. ``1`` is the minimal amount of compression and
2445 for wire protocol commands. ``1`` is the minimal amount of compression and
2443 ``22`` is the highest amount of compression.
2446 ``22`` is the highest amount of compression.
2444
2447
2445 The default (``3``) should be significantly faster than zlib while likely
2448 The default (``3``) should be significantly faster than zlib while likely
2446 delivering better compression ratios.
2449 delivering better compression ratios.
2447
2450
2448 This option only impacts the HTTP server.
2451 This option only impacts the HTTP server.
2449
2452
2450 See also ``server.zliblevel``.
2453 See also ``server.zliblevel``.
2451
2454
2452 ``view``
2455 ``view``
2453 Repository filter used when exchanging revisions with the peer.
2456 Repository filter used when exchanging revisions with the peer.
2454
2457
2455 The default view (``served``) excludes secret and hidden changesets.
2458 The default view (``served``) excludes secret and hidden changesets.
2456 Another useful value is ``immutable`` (no draft, secret or hidden
2459 Another useful value is ``immutable`` (no draft, secret or hidden
2457 changesets). (EXPERIMENTAL)
2460 changesets). (EXPERIMENTAL)
2458
2461
2459 ``smtp``
2462 ``smtp``
2460 --------
2463 --------
2461
2464
2462 Configuration for extensions that need to send email messages.
2465 Configuration for extensions that need to send email messages.
2463
2466
2464 ``host``
2467 ``host``
2465 Host name of mail server, e.g. "mail.example.com".
2468 Host name of mail server, e.g. "mail.example.com".
2466
2469
2467 ``port``
2470 ``port``
2468 Optional. Port to connect to on mail server. (default: 465 if
2471 Optional. Port to connect to on mail server. (default: 465 if
2469 ``tls`` is smtps; 25 otherwise)
2472 ``tls`` is smtps; 25 otherwise)
2470
2473
2471 ``tls``
2474 ``tls``
2472 Optional. Method to enable TLS when connecting to mail server: starttls,
2475 Optional. Method to enable TLS when connecting to mail server: starttls,
2473 smtps or none. (default: none)
2476 smtps or none. (default: none)
2474
2477
2475 ``username``
2478 ``username``
2476 Optional. User name for authenticating with the SMTP server.
2479 Optional. User name for authenticating with the SMTP server.
2477 (default: None)
2480 (default: None)
2478
2481
2479 ``password``
2482 ``password``
2480 Optional. Password for authenticating with the SMTP server. If not
2483 Optional. Password for authenticating with the SMTP server. If not
2481 specified, interactive sessions will prompt the user for a
2484 specified, interactive sessions will prompt the user for a
2482 password; non-interactive sessions will fail. (default: None)
2485 password; non-interactive sessions will fail. (default: None)
2483
2486
2484 ``local_hostname``
2487 ``local_hostname``
2485 Optional. The hostname that the sender can use to identify
2488 Optional. The hostname that the sender can use to identify
2486 itself to the MTA.
2489 itself to the MTA.
2487
2490
2488
2491
2489 ``subpaths``
2492 ``subpaths``
2490 ------------
2493 ------------
2491
2494
2492 Subrepository source URLs can go stale if a remote server changes name
2495 Subrepository source URLs can go stale if a remote server changes name
2493 or becomes temporarily unavailable. This section lets you define
2496 or becomes temporarily unavailable. This section lets you define
2494 rewrite rules of the form::
2497 rewrite rules of the form::
2495
2498
2496 <pattern> = <replacement>
2499 <pattern> = <replacement>
2497
2500
2498 where ``pattern`` is a regular expression matching a subrepository
2501 where ``pattern`` is a regular expression matching a subrepository
2499 source URL and ``replacement`` is the replacement string used to
2502 source URL and ``replacement`` is the replacement string used to
2500 rewrite it. Groups can be matched in ``pattern`` and referenced in
2503 rewrite it. Groups can be matched in ``pattern`` and referenced in
2501 ``replacements``. For instance::
2504 ``replacements``. For instance::
2502
2505
2503 http://server/(.*)-hg/ = http://hg.server/\1/
2506 http://server/(.*)-hg/ = http://hg.server/\1/
2504
2507
2505 rewrites ``http://server/foo-hg/`` into ``http://hg.server/foo/``.
2508 rewrites ``http://server/foo-hg/`` into ``http://hg.server/foo/``.
2506
2509
2507 Relative subrepository paths are first made absolute, and the
2510 Relative subrepository paths are first made absolute, and the
2508 rewrite rules are then applied on the full (absolute) path. If ``pattern``
2511 rewrite rules are then applied on the full (absolute) path. If ``pattern``
2509 doesn't match the full path, an attempt is made to apply it on the
2512 doesn't match the full path, an attempt is made to apply it on the
2510 relative path alone. The rules are applied in definition order.
2513 relative path alone. The rules are applied in definition order.
2511
2514
2512 ``subrepos``
2515 ``subrepos``
2513 ------------
2516 ------------
2514
2517
2515 This section contains options that control the behavior of the
2518 This section contains options that control the behavior of the
2516 subrepositories feature. See also :hg:`help subrepos`.
2519 subrepositories feature. See also :hg:`help subrepos`.
2517
2520
2518 Security note: auditing in Mercurial is known to be insufficient to
2521 Security note: auditing in Mercurial is known to be insufficient to
2519 prevent clone-time code execution with carefully constructed Git
2522 prevent clone-time code execution with carefully constructed Git
2520 subrepos. It is unknown if a similar detect is present in Subversion
2523 subrepos. It is unknown if a similar detect is present in Subversion
2521 subrepos. Both Git and Subversion subrepos are disabled by default
2524 subrepos. Both Git and Subversion subrepos are disabled by default
2522 out of security concerns. These subrepo types can be enabled using
2525 out of security concerns. These subrepo types can be enabled using
2523 the respective options below.
2526 the respective options below.
2524
2527
2525 ``allowed``
2528 ``allowed``
2526 Whether subrepositories are allowed in the working directory.
2529 Whether subrepositories are allowed in the working directory.
2527
2530
2528 When false, commands involving subrepositories (like :hg:`update`)
2531 When false, commands involving subrepositories (like :hg:`update`)
2529 will fail for all subrepository types.
2532 will fail for all subrepository types.
2530 (default: true)
2533 (default: true)
2531
2534
2532 ``hg:allowed``
2535 ``hg:allowed``
2533 Whether Mercurial subrepositories are allowed in the working
2536 Whether Mercurial subrepositories are allowed in the working
2534 directory. This option only has an effect if ``subrepos.allowed``
2537 directory. This option only has an effect if ``subrepos.allowed``
2535 is true.
2538 is true.
2536 (default: true)
2539 (default: true)
2537
2540
2538 ``git:allowed``
2541 ``git:allowed``
2539 Whether Git subrepositories are allowed in the working directory.
2542 Whether Git subrepositories are allowed in the working directory.
2540 This option only has an effect if ``subrepos.allowed`` is true.
2543 This option only has an effect if ``subrepos.allowed`` is true.
2541
2544
2542 See the security note above before enabling Git subrepos.
2545 See the security note above before enabling Git subrepos.
2543 (default: false)
2546 (default: false)
2544
2547
2545 ``svn:allowed``
2548 ``svn:allowed``
2546 Whether Subversion subrepositories are allowed in the working
2549 Whether Subversion subrepositories are allowed in the working
2547 directory. This option only has an effect if ``subrepos.allowed``
2550 directory. This option only has an effect if ``subrepos.allowed``
2548 is true.
2551 is true.
2549
2552
2550 See the security note above before enabling Subversion subrepos.
2553 See the security note above before enabling Subversion subrepos.
2551 (default: false)
2554 (default: false)
2552
2555
2553 ``templatealias``
2556 ``templatealias``
2554 -----------------
2557 -----------------
2555
2558
2556 Alias definitions for templates. See :hg:`help templates` for details.
2559 Alias definitions for templates. See :hg:`help templates` for details.
2557
2560
2558 ``templates``
2561 ``templates``
2559 -------------
2562 -------------
2560
2563
2561 Use the ``[templates]`` section to define template strings.
2564 Use the ``[templates]`` section to define template strings.
2562 See :hg:`help templates` for details.
2565 See :hg:`help templates` for details.
2563
2566
2564 ``trusted``
2567 ``trusted``
2565 -----------
2568 -----------
2566
2569
2567 Mercurial will not use the settings in the
2570 Mercurial will not use the settings in the
2568 ``.hg/hgrc`` file from a repository if it doesn't belong to a trusted
2571 ``.hg/hgrc`` file from a repository if it doesn't belong to a trusted
2569 user or to a trusted group, as various hgrc features allow arbitrary
2572 user or to a trusted group, as various hgrc features allow arbitrary
2570 commands to be run. This issue is often encountered when configuring
2573 commands to be run. This issue is often encountered when configuring
2571 hooks or extensions for shared repositories or servers. However,
2574 hooks or extensions for shared repositories or servers. However,
2572 the web interface will use some safe settings from the ``[web]``
2575 the web interface will use some safe settings from the ``[web]``
2573 section.
2576 section.
2574
2577
2575 This section specifies what users and groups are trusted. The
2578 This section specifies what users and groups are trusted. The
2576 current user is always trusted. To trust everybody, list a user or a
2579 current user is always trusted. To trust everybody, list a user or a
2577 group with name ``*``. These settings must be placed in an
2580 group with name ``*``. These settings must be placed in an
2578 *already-trusted file* to take effect, such as ``$HOME/.hgrc`` of the
2581 *already-trusted file* to take effect, such as ``$HOME/.hgrc`` of the
2579 user or service running Mercurial.
2582 user or service running Mercurial.
2580
2583
2581 ``users``
2584 ``users``
2582 Comma-separated list of trusted users.
2585 Comma-separated list of trusted users.
2583
2586
2584 ``groups``
2587 ``groups``
2585 Comma-separated list of trusted groups.
2588 Comma-separated list of trusted groups.
2586
2589
2587
2590
2588 ``ui``
2591 ``ui``
2589 ------
2592 ------
2590
2593
2591 User interface controls.
2594 User interface controls.
2592
2595
2593 ``archivemeta``
2596 ``archivemeta``
2594 Whether to include the .hg_archival.txt file containing meta data
2597 Whether to include the .hg_archival.txt file containing meta data
2595 (hashes for the repository base and for tip) in archives created
2598 (hashes for the repository base and for tip) in archives created
2596 by the :hg:`archive` command or downloaded via hgweb.
2599 by the :hg:`archive` command or downloaded via hgweb.
2597 (default: True)
2600 (default: True)
2598
2601
2599 ``askusername``
2602 ``askusername``
2600 Whether to prompt for a username when committing. If True, and
2603 Whether to prompt for a username when committing. If True, and
2601 neither ``$HGUSER`` nor ``$EMAIL`` has been specified, then the user will
2604 neither ``$HGUSER`` nor ``$EMAIL`` has been specified, then the user will
2602 be prompted to enter a username. If no username is entered, the
2605 be prompted to enter a username. If no username is entered, the
2603 default ``USER@HOST`` is used instead.
2606 default ``USER@HOST`` is used instead.
2604 (default: False)
2607 (default: False)
2605
2608
2606 ``clonebundles``
2609 ``clonebundles``
2607 Whether the "clone bundles" feature is enabled.
2610 Whether the "clone bundles" feature is enabled.
2608
2611
2609 When enabled, :hg:`clone` may download and apply a server-advertised
2612 When enabled, :hg:`clone` may download and apply a server-advertised
2610 bundle file from a URL instead of using the normal exchange mechanism.
2613 bundle file from a URL instead of using the normal exchange mechanism.
2611
2614
2612 This can likely result in faster and more reliable clones.
2615 This can likely result in faster and more reliable clones.
2613
2616
2614 (default: True)
2617 (default: True)
2615
2618
2616 ``clonebundlefallback``
2619 ``clonebundlefallback``
2617 Whether failure to apply an advertised "clone bundle" from a server
2620 Whether failure to apply an advertised "clone bundle" from a server
2618 should result in fallback to a regular clone.
2621 should result in fallback to a regular clone.
2619
2622
2620 This is disabled by default because servers advertising "clone
2623 This is disabled by default because servers advertising "clone
2621 bundles" often do so to reduce server load. If advertised bundles
2624 bundles" often do so to reduce server load. If advertised bundles
2622 start mass failing and clients automatically fall back to a regular
2625 start mass failing and clients automatically fall back to a regular
2623 clone, this would add significant and unexpected load to the server
2626 clone, this would add significant and unexpected load to the server
2624 since the server is expecting clone operations to be offloaded to
2627 since the server is expecting clone operations to be offloaded to
2625 pre-generated bundles. Failing fast (the default behavior) ensures
2628 pre-generated bundles. Failing fast (the default behavior) ensures
2626 clients don't overwhelm the server when "clone bundle" application
2629 clients don't overwhelm the server when "clone bundle" application
2627 fails.
2630 fails.
2628
2631
2629 (default: False)
2632 (default: False)
2630
2633
2631 ``clonebundleprefers``
2634 ``clonebundleprefers``
2632 Defines preferences for which "clone bundles" to use.
2635 Defines preferences for which "clone bundles" to use.
2633
2636
2634 Servers advertising "clone bundles" may advertise multiple available
2637 Servers advertising "clone bundles" may advertise multiple available
2635 bundles. Each bundle may have different attributes, such as the bundle
2638 bundles. Each bundle may have different attributes, such as the bundle
2636 type and compression format. This option is used to prefer a particular
2639 type and compression format. This option is used to prefer a particular
2637 bundle over another.
2640 bundle over another.
2638
2641
2639 The following keys are defined by Mercurial:
2642 The following keys are defined by Mercurial:
2640
2643
2641 BUNDLESPEC
2644 BUNDLESPEC
2642 A bundle type specifier. These are strings passed to :hg:`bundle -t`.
2645 A bundle type specifier. These are strings passed to :hg:`bundle -t`.
2643 e.g. ``gzip-v2`` or ``bzip2-v1``.
2646 e.g. ``gzip-v2`` or ``bzip2-v1``.
2644
2647
2645 COMPRESSION
2648 COMPRESSION
2646 The compression format of the bundle. e.g. ``gzip`` and ``bzip2``.
2649 The compression format of the bundle. e.g. ``gzip`` and ``bzip2``.
2647
2650
2648 Server operators may define custom keys.
2651 Server operators may define custom keys.
2649
2652
2650 Example values: ``COMPRESSION=bzip2``,
2653 Example values: ``COMPRESSION=bzip2``,
2651 ``BUNDLESPEC=gzip-v2, COMPRESSION=gzip``.
2654 ``BUNDLESPEC=gzip-v2, COMPRESSION=gzip``.
2652
2655
2653 By default, the first bundle advertised by the server is used.
2656 By default, the first bundle advertised by the server is used.
2654
2657
2655 ``color``
2658 ``color``
2656 When to colorize output. Possible value are Boolean ("yes" or "no"), or
2659 When to colorize output. Possible value are Boolean ("yes" or "no"), or
2657 "debug", or "always". (default: "yes"). "yes" will use color whenever it
2660 "debug", or "always". (default: "yes"). "yes" will use color whenever it
2658 seems possible. See :hg:`help color` for details.
2661 seems possible. See :hg:`help color` for details.
2659
2662
2660 ``commitsubrepos``
2663 ``commitsubrepos``
2661 Whether to commit modified subrepositories when committing the
2664 Whether to commit modified subrepositories when committing the
2662 parent repository. If False and one subrepository has uncommitted
2665 parent repository. If False and one subrepository has uncommitted
2663 changes, abort the commit.
2666 changes, abort the commit.
2664 (default: False)
2667 (default: False)
2665
2668
2666 ``debug``
2669 ``debug``
2667 Print debugging information. (default: False)
2670 Print debugging information. (default: False)
2668
2671
2669 ``editor``
2672 ``editor``
2670 The editor to use during a commit. (default: ``$EDITOR`` or ``vi``)
2673 The editor to use during a commit. (default: ``$EDITOR`` or ``vi``)
2671
2674
2672 ``fallbackencoding``
2675 ``fallbackencoding``
2673 Encoding to try if it's not possible to decode the changelog using
2676 Encoding to try if it's not possible to decode the changelog using
2674 UTF-8. (default: ISO-8859-1)
2677 UTF-8. (default: ISO-8859-1)
2675
2678
2676 ``graphnodetemplate``
2679 ``graphnodetemplate``
2677 (DEPRECATED) Use ``command-templates.graphnode`` instead.
2680 (DEPRECATED) Use ``command-templates.graphnode`` instead.
2678
2681
2679 ``ignore``
2682 ``ignore``
2680 A file to read per-user ignore patterns from. This file should be
2683 A file to read per-user ignore patterns from. This file should be
2681 in the same format as a repository-wide .hgignore file. Filenames
2684 in the same format as a repository-wide .hgignore file. Filenames
2682 are relative to the repository root. This option supports hook syntax,
2685 are relative to the repository root. This option supports hook syntax,
2683 so if you want to specify multiple ignore files, you can do so by
2686 so if you want to specify multiple ignore files, you can do so by
2684 setting something like ``ignore.other = ~/.hgignore2``. For details
2687 setting something like ``ignore.other = ~/.hgignore2``. For details
2685 of the ignore file format, see the ``hgignore(5)`` man page.
2688 of the ignore file format, see the ``hgignore(5)`` man page.
2686
2689
2687 ``interactive``
2690 ``interactive``
2688 Allow to prompt the user. (default: True)
2691 Allow to prompt the user. (default: True)
2689
2692
2690 ``interface``
2693 ``interface``
2691 Select the default interface for interactive features (default: text).
2694 Select the default interface for interactive features (default: text).
2692 Possible values are 'text' and 'curses'.
2695 Possible values are 'text' and 'curses'.
2693
2696
2694 ``interface.chunkselector``
2697 ``interface.chunkselector``
2695 Select the interface for change recording (e.g. :hg:`commit -i`).
2698 Select the interface for change recording (e.g. :hg:`commit -i`).
2696 Possible values are 'text' and 'curses'.
2699 Possible values are 'text' and 'curses'.
2697 This config overrides the interface specified by ui.interface.
2700 This config overrides the interface specified by ui.interface.
2698
2701
2699 ``large-file-limit``
2702 ``large-file-limit``
2700 Largest file size that gives no memory use warning.
2703 Largest file size that gives no memory use warning.
2701 Possible values are integers or 0 to disable the check.
2704 Possible values are integers or 0 to disable the check.
2702 Value is expressed in bytes by default, one can use standard units for
2705 Value is expressed in bytes by default, one can use standard units for
2703 convenience (e.g. 10MB, 0.1GB, etc) (default: 10MB)
2706 convenience (e.g. 10MB, 0.1GB, etc) (default: 10MB)
2704
2707
2705 ``logtemplate``
2708 ``logtemplate``
2706 (DEPRECATED) Use ``command-templates.log`` instead.
2709 (DEPRECATED) Use ``command-templates.log`` instead.
2707
2710
2708 ``merge``
2711 ``merge``
2709 The conflict resolution program to use during a manual merge.
2712 The conflict resolution program to use during a manual merge.
2710 For more information on merge tools see :hg:`help merge-tools`.
2713 For more information on merge tools see :hg:`help merge-tools`.
2711 For configuring merge tools see the ``[merge-tools]`` section.
2714 For configuring merge tools see the ``[merge-tools]`` section.
2712
2715
2713 ``mergemarkers``
2716 ``mergemarkers``
2714 Sets the merge conflict marker label styling. The ``detailed`` style
2717 Sets the merge conflict marker label styling. The ``detailed`` style
2715 uses the ``command-templates.mergemarker`` setting to style the labels.
2718 uses the ``command-templates.mergemarker`` setting to style the labels.
2716 The ``basic`` style just uses 'local' and 'other' as the marker label.
2719 The ``basic`` style just uses 'local' and 'other' as the marker label.
2717 One of ``basic`` or ``detailed``.
2720 One of ``basic`` or ``detailed``.
2718 (default: ``basic``)
2721 (default: ``basic``)
2719
2722
2720 ``mergemarkertemplate``
2723 ``mergemarkertemplate``
2721 (DEPRECATED) Use ``command-templates.mergemarker`` instead.
2724 (DEPRECATED) Use ``command-templates.mergemarker`` instead.
2722
2725
2723 ``message-output``
2726 ``message-output``
2724 Where to write status and error messages. (default: ``stdio``)
2727 Where to write status and error messages. (default: ``stdio``)
2725
2728
2726 ``channel``
2729 ``channel``
2727 Use separate channel for structured output. (Command-server only)
2730 Use separate channel for structured output. (Command-server only)
2728 ``stderr``
2731 ``stderr``
2729 Everything to stderr.
2732 Everything to stderr.
2730 ``stdio``
2733 ``stdio``
2731 Status to stdout, and error to stderr.
2734 Status to stdout, and error to stderr.
2732
2735
2733 ``origbackuppath``
2736 ``origbackuppath``
2734 The path to a directory used to store generated .orig files. If the path is
2737 The path to a directory used to store generated .orig files. If the path is
2735 not a directory, one will be created. If set, files stored in this
2738 not a directory, one will be created. If set, files stored in this
2736 directory have the same name as the original file and do not have a .orig
2739 directory have the same name as the original file and do not have a .orig
2737 suffix.
2740 suffix.
2738
2741
2739 ``paginate``
2742 ``paginate``
2740 Control the pagination of command output (default: True). See :hg:`help pager`
2743 Control the pagination of command output (default: True). See :hg:`help pager`
2741 for details.
2744 for details.
2742
2745
2743 ``patch``
2746 ``patch``
2744 An optional external tool that ``hg import`` and some extensions
2747 An optional external tool that ``hg import`` and some extensions
2745 will use for applying patches. By default Mercurial uses an
2748 will use for applying patches. By default Mercurial uses an
2746 internal patch utility. The external tool must work as the common
2749 internal patch utility. The external tool must work as the common
2747 Unix ``patch`` program. In particular, it must accept a ``-p``
2750 Unix ``patch`` program. In particular, it must accept a ``-p``
2748 argument to strip patch headers, a ``-d`` argument to specify the
2751 argument to strip patch headers, a ``-d`` argument to specify the
2749 current directory, a file name to patch, and a patch file to take
2752 current directory, a file name to patch, and a patch file to take
2750 from stdin.
2753 from stdin.
2751
2754
2752 It is possible to specify a patch tool together with extra
2755 It is possible to specify a patch tool together with extra
2753 arguments. For example, setting this option to ``patch --merge``
2756 arguments. For example, setting this option to ``patch --merge``
2754 will use the ``patch`` program with its 2-way merge option.
2757 will use the ``patch`` program with its 2-way merge option.
2755
2758
2756 ``portablefilenames``
2759 ``portablefilenames``
2757 Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``.
2760 Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``.
2758 (default: ``warn``)
2761 (default: ``warn``)
2759
2762
2760 ``warn``
2763 ``warn``
2761 Print a warning message on POSIX platforms, if a file with a non-portable
2764 Print a warning message on POSIX platforms, if a file with a non-portable
2762 filename is added (e.g. a file with a name that can't be created on
2765 filename is added (e.g. a file with a name that can't be created on
2763 Windows because it contains reserved parts like ``AUX``, reserved
2766 Windows because it contains reserved parts like ``AUX``, reserved
2764 characters like ``:``, or would cause a case collision with an existing
2767 characters like ``:``, or would cause a case collision with an existing
2765 file).
2768 file).
2766
2769
2767 ``ignore``
2770 ``ignore``
2768 Don't print a warning.
2771 Don't print a warning.
2769
2772
2770 ``abort``
2773 ``abort``
2771 The command is aborted.
2774 The command is aborted.
2772
2775
2773 ``true``
2776 ``true``
2774 Alias for ``warn``.
2777 Alias for ``warn``.
2775
2778
2776 ``false``
2779 ``false``
2777 Alias for ``ignore``.
2780 Alias for ``ignore``.
2778
2781
2779 .. container:: windows
2782 .. container:: windows
2780
2783
2781 On Windows, this configuration option is ignored and the command aborted.
2784 On Windows, this configuration option is ignored and the command aborted.
2782
2785
2783 ``pre-merge-tool-output-template``
2786 ``pre-merge-tool-output-template``
2784 (DEPRECATED) Use ``command-template.pre-merge-tool-output`` instead.
2787 (DEPRECATED) Use ``command-template.pre-merge-tool-output`` instead.
2785
2788
2786 ``quiet``
2789 ``quiet``
2787 Reduce the amount of output printed.
2790 Reduce the amount of output printed.
2788 (default: False)
2791 (default: False)
2789
2792
2790 ``relative-paths``
2793 ``relative-paths``
2791 Prefer relative paths in the UI.
2794 Prefer relative paths in the UI.
2792
2795
2793 ``remotecmd``
2796 ``remotecmd``
2794 Remote command to use for clone/push/pull operations.
2797 Remote command to use for clone/push/pull operations.
2795 (default: ``hg``)
2798 (default: ``hg``)
2796
2799
2797 ``report_untrusted``
2800 ``report_untrusted``
2798 Warn if a ``.hg/hgrc`` file is ignored due to not being owned by a
2801 Warn if a ``.hg/hgrc`` file is ignored due to not being owned by a
2799 trusted user or group.
2802 trusted user or group.
2800 (default: True)
2803 (default: True)
2801
2804
2802 ``slash``
2805 ``slash``
2803 (Deprecated. Use ``slashpath`` template filter instead.)
2806 (Deprecated. Use ``slashpath`` template filter instead.)
2804
2807
2805 Display paths using a slash (``/``) as the path separator. This
2808 Display paths using a slash (``/``) as the path separator. This
2806 only makes a difference on systems where the default path
2809 only makes a difference on systems where the default path
2807 separator is not the slash character (e.g. Windows uses the
2810 separator is not the slash character (e.g. Windows uses the
2808 backslash character (``\``)).
2811 backslash character (``\``)).
2809 (default: False)
2812 (default: False)
2810
2813
2811 ``statuscopies``
2814 ``statuscopies``
2812 Display copies in the status command.
2815 Display copies in the status command.
2813
2816
2814 ``ssh``
2817 ``ssh``
2815 Command to use for SSH connections. (default: ``ssh``)
2818 Command to use for SSH connections. (default: ``ssh``)
2816
2819
2817 ``ssherrorhint``
2820 ``ssherrorhint``
2818 A hint shown to the user in the case of SSH error (e.g.
2821 A hint shown to the user in the case of SSH error (e.g.
2819 ``Please see http://company/internalwiki/ssh.html``)
2822 ``Please see http://company/internalwiki/ssh.html``)
2820
2823
2821 ``strict``
2824 ``strict``
2822 Require exact command names, instead of allowing unambiguous
2825 Require exact command names, instead of allowing unambiguous
2823 abbreviations. (default: False)
2826 abbreviations. (default: False)
2824
2827
2825 ``style``
2828 ``style``
2826 Name of style to use for command output.
2829 Name of style to use for command output.
2827
2830
2828 ``supportcontact``
2831 ``supportcontact``
2829 A URL where users should report a Mercurial traceback. Use this if you are a
2832 A URL where users should report a Mercurial traceback. Use this if you are a
2830 large organisation with its own Mercurial deployment process and crash
2833 large organisation with its own Mercurial deployment process and crash
2831 reports should be addressed to your internal support.
2834 reports should be addressed to your internal support.
2832
2835
2833 ``textwidth``
2836 ``textwidth``
2834 Maximum width of help text. A longer line generated by ``hg help`` or
2837 Maximum width of help text. A longer line generated by ``hg help`` or
2835 ``hg subcommand --help`` will be broken after white space to get this
2838 ``hg subcommand --help`` will be broken after white space to get this
2836 width or the terminal width, whichever comes first.
2839 width or the terminal width, whichever comes first.
2837 A non-positive value will disable this and the terminal width will be
2840 A non-positive value will disable this and the terminal width will be
2838 used. (default: 78)
2841 used. (default: 78)
2839
2842
2840 ``timeout``
2843 ``timeout``
2841 The timeout used when a lock is held (in seconds), a negative value
2844 The timeout used when a lock is held (in seconds), a negative value
2842 means no timeout. (default: 600)
2845 means no timeout. (default: 600)
2843
2846
2844 ``timeout.warn``
2847 ``timeout.warn``
2845 Time (in seconds) before a warning is printed about held lock. A negative
2848 Time (in seconds) before a warning is printed about held lock. A negative
2846 value means no warning. (default: 0)
2849 value means no warning. (default: 0)
2847
2850
2848 ``traceback``
2851 ``traceback``
2849 Mercurial always prints a traceback when an unknown exception
2852 Mercurial always prints a traceback when an unknown exception
2850 occurs. Setting this to True will make Mercurial print a traceback
2853 occurs. Setting this to True will make Mercurial print a traceback
2851 on all exceptions, even those recognized by Mercurial (such as
2854 on all exceptions, even those recognized by Mercurial (such as
2852 IOError or MemoryError). (default: False)
2855 IOError or MemoryError). (default: False)
2853
2856
2854 ``tweakdefaults``
2857 ``tweakdefaults``
2855
2858
2856 By default Mercurial's behavior changes very little from release
2859 By default Mercurial's behavior changes very little from release
2857 to release, but over time the recommended config settings
2860 to release, but over time the recommended config settings
2858 shift. Enable this config to opt in to get automatic tweaks to
2861 shift. Enable this config to opt in to get automatic tweaks to
2859 Mercurial's behavior over time. This config setting will have no
2862 Mercurial's behavior over time. This config setting will have no
2860 effect if ``HGPLAIN`` is set or ``HGPLAINEXCEPT`` is set and does
2863 effect if ``HGPLAIN`` is set or ``HGPLAINEXCEPT`` is set and does
2861 not include ``tweakdefaults``. (default: False)
2864 not include ``tweakdefaults``. (default: False)
2862
2865
2863 It currently means::
2866 It currently means::
2864
2867
2865 .. tweakdefaultsmarker
2868 .. tweakdefaultsmarker
2866
2869
2867 ``username``
2870 ``username``
2868 The committer of a changeset created when running "commit".
2871 The committer of a changeset created when running "commit".
2869 Typically a person's name and email address, e.g. ``Fred Widget
2872 Typically a person's name and email address, e.g. ``Fred Widget
2870 <fred@example.com>``. Environment variables in the
2873 <fred@example.com>``. Environment variables in the
2871 username are expanded.
2874 username are expanded.
2872
2875
2873 (default: ``$EMAIL`` or ``username@hostname``. If the username in
2876 (default: ``$EMAIL`` or ``username@hostname``. If the username in
2874 hgrc is empty, e.g. if the system admin set ``username =`` in the
2877 hgrc is empty, e.g. if the system admin set ``username =`` in the
2875 system hgrc, it has to be specified manually or in a different
2878 system hgrc, it has to be specified manually or in a different
2876 hgrc file)
2879 hgrc file)
2877
2880
2878 ``verbose``
2881 ``verbose``
2879 Increase the amount of output printed. (default: False)
2882 Increase the amount of output printed. (default: False)
2880
2883
2881
2884
2882 ``command-templates``
2885 ``command-templates``
2883 ---------------------
2886 ---------------------
2884
2887
2885 Templates used for customizing the output of commands.
2888 Templates used for customizing the output of commands.
2886
2889
2887 ``graphnode``
2890 ``graphnode``
2888 The template used to print changeset nodes in an ASCII revision graph.
2891 The template used to print changeset nodes in an ASCII revision graph.
2889 (default: ``{graphnode}``)
2892 (default: ``{graphnode}``)
2890
2893
2891 ``log``
2894 ``log``
2892 Template string for commands that print changesets.
2895 Template string for commands that print changesets.
2893
2896
2894 ``mergemarker``
2897 ``mergemarker``
2895 The template used to print the commit description next to each conflict
2898 The template used to print the commit description next to each conflict
2896 marker during merge conflicts. See :hg:`help templates` for the template
2899 marker during merge conflicts. See :hg:`help templates` for the template
2897 format.
2900 format.
2898
2901
2899 Defaults to showing the hash, tags, branches, bookmarks, author, and
2902 Defaults to showing the hash, tags, branches, bookmarks, author, and
2900 the first line of the commit description.
2903 the first line of the commit description.
2901
2904
2902 If you use non-ASCII characters in names for tags, branches, bookmarks,
2905 If you use non-ASCII characters in names for tags, branches, bookmarks,
2903 authors, and/or commit descriptions, you must pay attention to encodings of
2906 authors, and/or commit descriptions, you must pay attention to encodings of
2904 managed files. At template expansion, non-ASCII characters use the encoding
2907 managed files. At template expansion, non-ASCII characters use the encoding
2905 specified by the ``--encoding`` global option, ``HGENCODING`` or other
2908 specified by the ``--encoding`` global option, ``HGENCODING`` or other
2906 environment variables that govern your locale. If the encoding of the merge
2909 environment variables that govern your locale. If the encoding of the merge
2907 markers is different from the encoding of the merged files,
2910 markers is different from the encoding of the merged files,
2908 serious problems may occur.
2911 serious problems may occur.
2909
2912
2910 Can be overridden per-merge-tool, see the ``[merge-tools]`` section.
2913 Can be overridden per-merge-tool, see the ``[merge-tools]`` section.
2911
2914
2912 ``oneline-summary``
2915 ``oneline-summary``
2913 A template used by `hg rebase` and other commands for showing a one-line
2916 A template used by `hg rebase` and other commands for showing a one-line
2914 summary of a commit. If the template configured here is longer than one
2917 summary of a commit. If the template configured here is longer than one
2915 line, then only the first line is used.
2918 line, then only the first line is used.
2916
2919
2917 The template can be overridden per command by defining a template in
2920 The template can be overridden per command by defining a template in
2918 `oneline-summary.<command>`, where `<command>` can be e.g. "rebase".
2921 `oneline-summary.<command>`, where `<command>` can be e.g. "rebase".
2919
2922
2920 ``pre-merge-tool-output``
2923 ``pre-merge-tool-output``
2921 A template that is printed before executing an external merge tool. This can
2924 A template that is printed before executing an external merge tool. This can
2922 be used to print out additional context that might be useful to have during
2925 be used to print out additional context that might be useful to have during
2923 the conflict resolution, such as the description of the various commits
2926 the conflict resolution, such as the description of the various commits
2924 involved or bookmarks/tags.
2927 involved or bookmarks/tags.
2925
2928
2926 Additional information is available in the ``local`, ``base``, and ``other``
2929 Additional information is available in the ``local`, ``base``, and ``other``
2927 dicts. For example: ``{local.label}``, ``{base.name}``, or
2930 dicts. For example: ``{local.label}``, ``{base.name}``, or
2928 ``{other.islink}``.
2931 ``{other.islink}``.
2929
2932
2930
2933
2931 ``web``
2934 ``web``
2932 -------
2935 -------
2933
2936
2934 Web interface configuration. The settings in this section apply to
2937 Web interface configuration. The settings in this section apply to
2935 both the builtin webserver (started by :hg:`serve`) and the script you
2938 both the builtin webserver (started by :hg:`serve`) and the script you
2936 run through a webserver (``hgweb.cgi`` and the derivatives for FastCGI
2939 run through a webserver (``hgweb.cgi`` and the derivatives for FastCGI
2937 and WSGI).
2940 and WSGI).
2938
2941
2939 The Mercurial webserver does no authentication (it does not prompt for
2942 The Mercurial webserver does no authentication (it does not prompt for
2940 usernames and passwords to validate *who* users are), but it does do
2943 usernames and passwords to validate *who* users are), but it does do
2941 authorization (it grants or denies access for *authenticated users*
2944 authorization (it grants or denies access for *authenticated users*
2942 based on settings in this section). You must either configure your
2945 based on settings in this section). You must either configure your
2943 webserver to do authentication for you, or disable the authorization
2946 webserver to do authentication for you, or disable the authorization
2944 checks.
2947 checks.
2945
2948
2946 For a quick setup in a trusted environment, e.g., a private LAN, where
2949 For a quick setup in a trusted environment, e.g., a private LAN, where
2947 you want it to accept pushes from anybody, you can use the following
2950 you want it to accept pushes from anybody, you can use the following
2948 command line::
2951 command line::
2949
2952
2950 $ hg --config web.allow-push=* --config web.push_ssl=False serve
2953 $ hg --config web.allow-push=* --config web.push_ssl=False serve
2951
2954
2952 Note that this will allow anybody to push anything to the server and
2955 Note that this will allow anybody to push anything to the server and
2953 that this should not be used for public servers.
2956 that this should not be used for public servers.
2954
2957
2955 The full set of options is:
2958 The full set of options is:
2956
2959
2957 ``accesslog``
2960 ``accesslog``
2958 Where to output the access log. (default: stdout)
2961 Where to output the access log. (default: stdout)
2959
2962
2960 ``address``
2963 ``address``
2961 Interface address to bind to. (default: all)
2964 Interface address to bind to. (default: all)
2962
2965
2963 ``allow-archive``
2966 ``allow-archive``
2964 List of archive format (bz2, gz, zip) allowed for downloading.
2967 List of archive format (bz2, gz, zip) allowed for downloading.
2965 (default: empty)
2968 (default: empty)
2966
2969
2967 ``allowbz2``
2970 ``allowbz2``
2968 (DEPRECATED) Whether to allow .tar.bz2 downloading of repository
2971 (DEPRECATED) Whether to allow .tar.bz2 downloading of repository
2969 revisions.
2972 revisions.
2970 (default: False)
2973 (default: False)
2971
2974
2972 ``allowgz``
2975 ``allowgz``
2973 (DEPRECATED) Whether to allow .tar.gz downloading of repository
2976 (DEPRECATED) Whether to allow .tar.gz downloading of repository
2974 revisions.
2977 revisions.
2975 (default: False)
2978 (default: False)
2976
2979
2977 ``allow-pull``
2980 ``allow-pull``
2978 Whether to allow pulling from the repository. (default: True)
2981 Whether to allow pulling from the repository. (default: True)
2979
2982
2980 ``allow-push``
2983 ``allow-push``
2981 Whether to allow pushing to the repository. If empty or not set,
2984 Whether to allow pushing to the repository. If empty or not set,
2982 pushing is not allowed. If the special value ``*``, any remote
2985 pushing is not allowed. If the special value ``*``, any remote
2983 user can push, including unauthenticated users. Otherwise, the
2986 user can push, including unauthenticated users. Otherwise, the
2984 remote user must have been authenticated, and the authenticated
2987 remote user must have been authenticated, and the authenticated
2985 user name must be present in this list. The contents of the
2988 user name must be present in this list. The contents of the
2986 allow-push list are examined after the deny_push list.
2989 allow-push list are examined after the deny_push list.
2987
2990
2988 ``allow_read``
2991 ``allow_read``
2989 If the user has not already been denied repository access due to
2992 If the user has not already been denied repository access due to
2990 the contents of deny_read, this list determines whether to grant
2993 the contents of deny_read, this list determines whether to grant
2991 repository access to the user. If this list is not empty, and the
2994 repository access to the user. If this list is not empty, and the
2992 user is unauthenticated or not present in the list, then access is
2995 user is unauthenticated or not present in the list, then access is
2993 denied for the user. If the list is empty or not set, then access
2996 denied for the user. If the list is empty or not set, then access
2994 is permitted to all users by default. Setting allow_read to the
2997 is permitted to all users by default. Setting allow_read to the
2995 special value ``*`` is equivalent to it not being set (i.e. access
2998 special value ``*`` is equivalent to it not being set (i.e. access
2996 is permitted to all users). The contents of the allow_read list are
2999 is permitted to all users). The contents of the allow_read list are
2997 examined after the deny_read list.
3000 examined after the deny_read list.
2998
3001
2999 ``allowzip``
3002 ``allowzip``
3000 (DEPRECATED) Whether to allow .zip downloading of repository
3003 (DEPRECATED) Whether to allow .zip downloading of repository
3001 revisions. This feature creates temporary files.
3004 revisions. This feature creates temporary files.
3002 (default: False)
3005 (default: False)
3003
3006
3004 ``archivesubrepos``
3007 ``archivesubrepos``
3005 Whether to recurse into subrepositories when archiving.
3008 Whether to recurse into subrepositories when archiving.
3006 (default: False)
3009 (default: False)
3007
3010
3008 ``baseurl``
3011 ``baseurl``
3009 Base URL to use when publishing URLs in other locations, so
3012 Base URL to use when publishing URLs in other locations, so
3010 third-party tools like email notification hooks can construct
3013 third-party tools like email notification hooks can construct
3011 URLs. Example: ``http://hgserver/repos/``.
3014 URLs. Example: ``http://hgserver/repos/``.
3012
3015
3013 ``cacerts``
3016 ``cacerts``
3014 Path to file containing a list of PEM encoded certificate
3017 Path to file containing a list of PEM encoded certificate
3015 authority certificates. Environment variables and ``~user``
3018 authority certificates. Environment variables and ``~user``
3016 constructs are expanded in the filename. If specified on the
3019 constructs are expanded in the filename. If specified on the
3017 client, then it will verify the identity of remote HTTPS servers
3020 client, then it will verify the identity of remote HTTPS servers
3018 with these certificates.
3021 with these certificates.
3019
3022
3020 To disable SSL verification temporarily, specify ``--insecure`` from
3023 To disable SSL verification temporarily, specify ``--insecure`` from
3021 command line.
3024 command line.
3022
3025
3023 You can use OpenSSL's CA certificate file if your platform has
3026 You can use OpenSSL's CA certificate file if your platform has
3024 one. On most Linux systems this will be
3027 one. On most Linux systems this will be
3025 ``/etc/ssl/certs/ca-certificates.crt``. Otherwise you will have to
3028 ``/etc/ssl/certs/ca-certificates.crt``. Otherwise you will have to
3026 generate this file manually. The form must be as follows::
3029 generate this file manually. The form must be as follows::
3027
3030
3028 -----BEGIN CERTIFICATE-----
3031 -----BEGIN CERTIFICATE-----
3029 ... (certificate in base64 PEM encoding) ...
3032 ... (certificate in base64 PEM encoding) ...
3030 -----END CERTIFICATE-----
3033 -----END CERTIFICATE-----
3031 -----BEGIN CERTIFICATE-----
3034 -----BEGIN CERTIFICATE-----
3032 ... (certificate in base64 PEM encoding) ...
3035 ... (certificate in base64 PEM encoding) ...
3033 -----END CERTIFICATE-----
3036 -----END CERTIFICATE-----
3034
3037
3035 ``cache``
3038 ``cache``
3036 Whether to support caching in hgweb. (default: True)
3039 Whether to support caching in hgweb. (default: True)
3037
3040
3038 ``certificate``
3041 ``certificate``
3039 Certificate to use when running :hg:`serve`.
3042 Certificate to use when running :hg:`serve`.
3040
3043
3041 ``collapse``
3044 ``collapse``
3042 With ``descend`` enabled, repositories in subdirectories are shown at
3045 With ``descend`` enabled, repositories in subdirectories are shown at
3043 a single level alongside repositories in the current path. With
3046 a single level alongside repositories in the current path. With
3044 ``collapse`` also enabled, repositories residing at a deeper level than
3047 ``collapse`` also enabled, repositories residing at a deeper level than
3045 the current path are grouped behind navigable directory entries that
3048 the current path are grouped behind navigable directory entries that
3046 lead to the locations of these repositories. In effect, this setting
3049 lead to the locations of these repositories. In effect, this setting
3047 collapses each collection of repositories found within a subdirectory
3050 collapses each collection of repositories found within a subdirectory
3048 into a single entry for that subdirectory. (default: False)
3051 into a single entry for that subdirectory. (default: False)
3049
3052
3050 ``comparisoncontext``
3053 ``comparisoncontext``
3051 Number of lines of context to show in side-by-side file comparison. If
3054 Number of lines of context to show in side-by-side file comparison. If
3052 negative or the value ``full``, whole files are shown. (default: 5)
3055 negative or the value ``full``, whole files are shown. (default: 5)
3053
3056
3054 This setting can be overridden by a ``context`` request parameter to the
3057 This setting can be overridden by a ``context`` request parameter to the
3055 ``comparison`` command, taking the same values.
3058 ``comparison`` command, taking the same values.
3056
3059
3057 ``contact``
3060 ``contact``
3058 Name or email address of the person in charge of the repository.
3061 Name or email address of the person in charge of the repository.
3059 (default: ui.username or ``$EMAIL`` or "unknown" if unset or empty)
3062 (default: ui.username or ``$EMAIL`` or "unknown" if unset or empty)
3060
3063
3061 ``csp``
3064 ``csp``
3062 Send a ``Content-Security-Policy`` HTTP header with this value.
3065 Send a ``Content-Security-Policy`` HTTP header with this value.
3063
3066
3064 The value may contain a special string ``%nonce%``, which will be replaced
3067 The value may contain a special string ``%nonce%``, which will be replaced
3065 by a randomly-generated one-time use value. If the value contains
3068 by a randomly-generated one-time use value. If the value contains
3066 ``%nonce%``, ``web.cache`` will be disabled, as caching undermines the
3069 ``%nonce%``, ``web.cache`` will be disabled, as caching undermines the
3067 one-time property of the nonce. This nonce will also be inserted into
3070 one-time property of the nonce. This nonce will also be inserted into
3068 ``<script>`` elements containing inline JavaScript.
3071 ``<script>`` elements containing inline JavaScript.
3069
3072
3070 Note: lots of HTML content sent by the server is derived from repository
3073 Note: lots of HTML content sent by the server is derived from repository
3071 data. Please consider the potential for malicious repository data to
3074 data. Please consider the potential for malicious repository data to
3072 "inject" itself into generated HTML content as part of your security
3075 "inject" itself into generated HTML content as part of your security
3073 threat model.
3076 threat model.
3074
3077
3075 ``deny_push``
3078 ``deny_push``
3076 Whether to deny pushing to the repository. If empty or not set,
3079 Whether to deny pushing to the repository. If empty or not set,
3077 push is not denied. If the special value ``*``, all remote users are
3080 push is not denied. If the special value ``*``, all remote users are
3078 denied push. Otherwise, unauthenticated users are all denied, and
3081 denied push. Otherwise, unauthenticated users are all denied, and
3079 any authenticated user name present in this list is also denied. The
3082 any authenticated user name present in this list is also denied. The
3080 contents of the deny_push list are examined before the allow-push list.
3083 contents of the deny_push list are examined before the allow-push list.
3081
3084
3082 ``deny_read``
3085 ``deny_read``
3083 Whether to deny reading/viewing of the repository. If this list is
3086 Whether to deny reading/viewing of the repository. If this list is
3084 not empty, unauthenticated users are all denied, and any
3087 not empty, unauthenticated users are all denied, and any
3085 authenticated user name present in this list is also denied access to
3088 authenticated user name present in this list is also denied access to
3086 the repository. If set to the special value ``*``, all remote users
3089 the repository. If set to the special value ``*``, all remote users
3087 are denied access (rarely needed ;). If deny_read is empty or not set,
3090 are denied access (rarely needed ;). If deny_read is empty or not set,
3088 the determination of repository access depends on the presence and
3091 the determination of repository access depends on the presence and
3089 content of the allow_read list (see description). If both
3092 content of the allow_read list (see description). If both
3090 deny_read and allow_read are empty or not set, then access is
3093 deny_read and allow_read are empty or not set, then access is
3091 permitted to all users by default. If the repository is being
3094 permitted to all users by default. If the repository is being
3092 served via hgwebdir, denied users will not be able to see it in
3095 served via hgwebdir, denied users will not be able to see it in
3093 the list of repositories. The contents of the deny_read list have
3096 the list of repositories. The contents of the deny_read list have
3094 priority over (are examined before) the contents of the allow_read
3097 priority over (are examined before) the contents of the allow_read
3095 list.
3098 list.
3096
3099
3097 ``descend``
3100 ``descend``
3098 hgwebdir indexes will not descend into subdirectories. Only repositories
3101 hgwebdir indexes will not descend into subdirectories. Only repositories
3099 directly in the current path will be shown (other repositories are still
3102 directly in the current path will be shown (other repositories are still
3100 available from the index corresponding to their containing path).
3103 available from the index corresponding to their containing path).
3101
3104
3102 ``description``
3105 ``description``
3103 Textual description of the repository's purpose or contents.
3106 Textual description of the repository's purpose or contents.
3104 (default: "unknown")
3107 (default: "unknown")
3105
3108
3106 ``encoding``
3109 ``encoding``
3107 Character encoding name. (default: the current locale charset)
3110 Character encoding name. (default: the current locale charset)
3108 Example: "UTF-8".
3111 Example: "UTF-8".
3109
3112
3110 ``errorlog``
3113 ``errorlog``
3111 Where to output the error log. (default: stderr)
3114 Where to output the error log. (default: stderr)
3112
3115
3113 ``guessmime``
3116 ``guessmime``
3114 Control MIME types for raw download of file content.
3117 Control MIME types for raw download of file content.
3115 Set to True to let hgweb guess the content type from the file
3118 Set to True to let hgweb guess the content type from the file
3116 extension. This will serve HTML files as ``text/html`` and might
3119 extension. This will serve HTML files as ``text/html`` and might
3117 allow cross-site scripting attacks when serving untrusted
3120 allow cross-site scripting attacks when serving untrusted
3118 repositories. (default: False)
3121 repositories. (default: False)
3119
3122
3120 ``hidden``
3123 ``hidden``
3121 Whether to hide the repository in the hgwebdir index.
3124 Whether to hide the repository in the hgwebdir index.
3122 (default: False)
3125 (default: False)
3123
3126
3124 ``ipv6``
3127 ``ipv6``
3125 Whether to use IPv6. (default: False)
3128 Whether to use IPv6. (default: False)
3126
3129
3127 ``labels``
3130 ``labels``
3128 List of string *labels* associated with the repository.
3131 List of string *labels* associated with the repository.
3129
3132
3130 Labels are exposed as a template keyword and can be used to customize
3133 Labels are exposed as a template keyword and can be used to customize
3131 output. e.g. the ``index`` template can group or filter repositories
3134 output. e.g. the ``index`` template can group or filter repositories
3132 by labels and the ``summary`` template can display additional content
3135 by labels and the ``summary`` template can display additional content
3133 if a specific label is present.
3136 if a specific label is present.
3134
3137
3135 ``logoimg``
3138 ``logoimg``
3136 File name of the logo image that some templates display on each page.
3139 File name of the logo image that some templates display on each page.
3137 The file name is relative to ``staticurl``. That is, the full path to
3140 The file name is relative to ``staticurl``. That is, the full path to
3138 the logo image is "staticurl/logoimg".
3141 the logo image is "staticurl/logoimg".
3139 If unset, ``hglogo.png`` will be used.
3142 If unset, ``hglogo.png`` will be used.
3140
3143
3141 ``logourl``
3144 ``logourl``
3142 Base URL to use for logos. If unset, ``https://mercurial-scm.org/``
3145 Base URL to use for logos. If unset, ``https://mercurial-scm.org/``
3143 will be used.
3146 will be used.
3144
3147
3145 ``maxchanges``
3148 ``maxchanges``
3146 Maximum number of changes to list on the changelog. (default: 10)
3149 Maximum number of changes to list on the changelog. (default: 10)
3147
3150
3148 ``maxfiles``
3151 ``maxfiles``
3149 Maximum number of files to list per changeset. (default: 10)
3152 Maximum number of files to list per changeset. (default: 10)
3150
3153
3151 ``maxshortchanges``
3154 ``maxshortchanges``
3152 Maximum number of changes to list on the shortlog, graph or filelog
3155 Maximum number of changes to list on the shortlog, graph or filelog
3153 pages. (default: 60)
3156 pages. (default: 60)
3154
3157
3155 ``name``
3158 ``name``
3156 Repository name to use in the web interface.
3159 Repository name to use in the web interface.
3157 (default: current working directory)
3160 (default: current working directory)
3158
3161
3159 ``port``
3162 ``port``
3160 Port to listen on. (default: 8000)
3163 Port to listen on. (default: 8000)
3161
3164
3162 ``prefix``
3165 ``prefix``
3163 Prefix path to serve from. (default: '' (server root))
3166 Prefix path to serve from. (default: '' (server root))
3164
3167
3165 ``push_ssl``
3168 ``push_ssl``
3166 Whether to require that inbound pushes be transported over SSL to
3169 Whether to require that inbound pushes be transported over SSL to
3167 prevent password sniffing. (default: True)
3170 prevent password sniffing. (default: True)
3168
3171
3169 ``refreshinterval``
3172 ``refreshinterval``
3170 How frequently directory listings re-scan the filesystem for new
3173 How frequently directory listings re-scan the filesystem for new
3171 repositories, in seconds. This is relevant when wildcards are used
3174 repositories, in seconds. This is relevant when wildcards are used
3172 to define paths. Depending on how much filesystem traversal is
3175 to define paths. Depending on how much filesystem traversal is
3173 required, refreshing may negatively impact performance.
3176 required, refreshing may negatively impact performance.
3174
3177
3175 Values less than or equal to 0 always refresh.
3178 Values less than or equal to 0 always refresh.
3176 (default: 20)
3179 (default: 20)
3177
3180
3178 ``server-header``
3181 ``server-header``
3179 Value for HTTP ``Server`` response header.
3182 Value for HTTP ``Server`` response header.
3180
3183
3181 ``static``
3184 ``static``
3182 Directory where static files are served from.
3185 Directory where static files are served from.
3183
3186
3184 ``staticurl``
3187 ``staticurl``
3185 Base URL to use for static files. If unset, static files (e.g. the
3188 Base URL to use for static files. If unset, static files (e.g. the
3186 hgicon.png favicon) will be served by the CGI script itself. Use
3189 hgicon.png favicon) will be served by the CGI script itself. Use
3187 this setting to serve them directly with the HTTP server.
3190 this setting to serve them directly with the HTTP server.
3188 Example: ``http://hgserver/static/``.
3191 Example: ``http://hgserver/static/``.
3189
3192
3190 ``stripes``
3193 ``stripes``
3191 How many lines a "zebra stripe" should span in multi-line output.
3194 How many lines a "zebra stripe" should span in multi-line output.
3192 Set to 0 to disable. (default: 1)
3195 Set to 0 to disable. (default: 1)
3193
3196
3194 ``style``
3197 ``style``
3195 Which template map style to use. The available options are the names of
3198 Which template map style to use. The available options are the names of
3196 subdirectories in the HTML templates path. (default: ``paper``)
3199 subdirectories in the HTML templates path. (default: ``paper``)
3197 Example: ``monoblue``.
3200 Example: ``monoblue``.
3198
3201
3199 ``templates``
3202 ``templates``
3200 Where to find the HTML templates. The default path to the HTML templates
3203 Where to find the HTML templates. The default path to the HTML templates
3201 can be obtained from ``hg debuginstall``.
3204 can be obtained from ``hg debuginstall``.
3202
3205
3203 ``websub``
3206 ``websub``
3204 ----------
3207 ----------
3205
3208
3206 Web substitution filter definition. You can use this section to
3209 Web substitution filter definition. You can use this section to
3207 define a set of regular expression substitution patterns which
3210 define a set of regular expression substitution patterns which
3208 let you automatically modify the hgweb server output.
3211 let you automatically modify the hgweb server output.
3209
3212
3210 The default hgweb templates only apply these substitution patterns
3213 The default hgweb templates only apply these substitution patterns
3211 on the revision description fields. You can apply them anywhere
3214 on the revision description fields. You can apply them anywhere
3212 you want when you create your own templates by adding calls to the
3215 you want when you create your own templates by adding calls to the
3213 "websub" filter (usually after calling the "escape" filter).
3216 "websub" filter (usually after calling the "escape" filter).
3214
3217
3215 This can be used, for example, to convert issue references to links
3218 This can be used, for example, to convert issue references to links
3216 to your issue tracker, or to convert "markdown-like" syntax into
3219 to your issue tracker, or to convert "markdown-like" syntax into
3217 HTML (see the examples below).
3220 HTML (see the examples below).
3218
3221
3219 Each entry in this section names a substitution filter.
3222 Each entry in this section names a substitution filter.
3220 The value of each entry defines the substitution expression itself.
3223 The value of each entry defines the substitution expression itself.
3221 The websub expressions follow the old interhg extension syntax,
3224 The websub expressions follow the old interhg extension syntax,
3222 which in turn imitates the Unix sed replacement syntax::
3225 which in turn imitates the Unix sed replacement syntax::
3223
3226
3224 patternname = s/SEARCH_REGEX/REPLACE_EXPRESSION/[i]
3227 patternname = s/SEARCH_REGEX/REPLACE_EXPRESSION/[i]
3225
3228
3226 You can use any separator other than "/". The final "i" is optional
3229 You can use any separator other than "/". The final "i" is optional
3227 and indicates that the search must be case insensitive.
3230 and indicates that the search must be case insensitive.
3228
3231
3229 Examples::
3232 Examples::
3230
3233
3231 [websub]
3234 [websub]
3232 issues = s|issue(\d+)|<a href="http://bts.example.org/issue\1">issue\1</a>|i
3235 issues = s|issue(\d+)|<a href="http://bts.example.org/issue\1">issue\1</a>|i
3233 italic = s/\b_(\S+)_\b/<i>\1<\/i>/
3236 italic = s/\b_(\S+)_\b/<i>\1<\/i>/
3234 bold = s/\*\b(\S+)\b\*/<b>\1<\/b>/
3237 bold = s/\*\b(\S+)\b\*/<b>\1<\/b>/
3235
3238
3236 ``worker``
3239 ``worker``
3237 ----------
3240 ----------
3238
3241
3239 Parallel master/worker configuration. We currently perform working
3242 Parallel master/worker configuration. We currently perform working
3240 directory updates in parallel on Unix-like systems, which greatly
3243 directory updates in parallel on Unix-like systems, which greatly
3241 helps performance.
3244 helps performance.
3242
3245
3243 ``enabled``
3246 ``enabled``
3244 Whether to enable workers code to be used.
3247 Whether to enable workers code to be used.
3245 (default: true)
3248 (default: true)
3246
3249
3247 ``numcpus``
3250 ``numcpus``
3248 Number of CPUs to use for parallel operations. A zero or
3251 Number of CPUs to use for parallel operations. A zero or
3249 negative value is treated as ``use the default``.
3252 negative value is treated as ``use the default``.
3250 (default: 4 or the number of CPUs on the system, whichever is larger)
3253 (default: 4 or the number of CPUs on the system, whichever is larger)
3251
3254
3252 ``backgroundclose``
3255 ``backgroundclose``
3253 Whether to enable closing file handles on background threads during certain
3256 Whether to enable closing file handles on background threads during certain
3254 operations. Some platforms aren't very efficient at closing file
3257 operations. Some platforms aren't very efficient at closing file
3255 handles that have been written or appended to. By performing file closing
3258 handles that have been written or appended to. By performing file closing
3256 on background threads, file write rate can increase substantially.
3259 on background threads, file write rate can increase substantially.
3257 (default: true on Windows, false elsewhere)
3260 (default: true on Windows, false elsewhere)
3258
3261
3259 ``backgroundcloseminfilecount``
3262 ``backgroundcloseminfilecount``
3260 Minimum number of files required to trigger background file closing.
3263 Minimum number of files required to trigger background file closing.
3261 Operations not writing this many files won't start background close
3264 Operations not writing this many files won't start background close
3262 threads.
3265 threads.
3263 (default: 2048)
3266 (default: 2048)
3264
3267
3265 ``backgroundclosemaxqueue``
3268 ``backgroundclosemaxqueue``
3266 The maximum number of opened file handles waiting to be closed in the
3269 The maximum number of opened file handles waiting to be closed in the
3267 background. This option only has an effect if ``backgroundclose`` is
3270 background. This option only has an effect if ``backgroundclose`` is
3268 enabled.
3271 enabled.
3269 (default: 384)
3272 (default: 384)
3270
3273
3271 ``backgroundclosethreadcount``
3274 ``backgroundclosethreadcount``
3272 Number of threads to process background file closes. Only relevant if
3275 Number of threads to process background file closes. Only relevant if
3273 ``backgroundclose`` is enabled.
3276 ``backgroundclose`` is enabled.
3274 (default: 4)
3277 (default: 4)
@@ -1,246 +1,250 b''
1 # upgrade.py - functions for automatic upgrade of Mercurial repository
1 # upgrade.py - functions for automatic upgrade of Mercurial repository
2 #
2 #
3 # Copyright (c) 2022-present, Pierre-Yves David
3 # Copyright (c) 2022-present, Pierre-Yves David
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 from ..i18n import _
7 from ..i18n import _
8
8
9 from .. import (
9 from .. import (
10 error,
10 error,
11 requirements as requirementsmod,
11 requirements as requirementsmod,
12 scmutil,
12 scmutil,
13 )
13 )
14
14
15 from . import (
15 from . import (
16 actions,
16 actions,
17 engine,
17 engine,
18 )
18 )
19
19
20
20
21 class AutoUpgradeOperation(actions.BaseOperation):
21 class AutoUpgradeOperation(actions.BaseOperation):
22 """A limited Upgrade Operation used to run simple auto upgrade task
22 """A limited Upgrade Operation used to run simple auto upgrade task
23
23
24 (Expand it as needed in the future)
24 (Expand it as needed in the future)
25 """
25 """
26
26
27 def __init__(self, req):
27 def __init__(self, req):
28 super().__init__(
28 super().__init__(
29 new_requirements=req,
29 new_requirements=req,
30 backup_store=False,
30 backup_store=False,
31 )
31 )
32
32
33
33
34 def get_share_safe_action(repo):
34 def get_share_safe_action(repo):
35 """return an automatic-upgrade action for `share-safe` if applicable
35 """return an automatic-upgrade action for `share-safe` if applicable
36
36
37 If no action is needed, return None, otherwise return a callback to upgrade
37 If no action is needed, return None, otherwise return a callback to upgrade
38 or downgrade the repository according the configuration and repository
38 or downgrade the repository according the configuration and repository
39 format.
39 format.
40 """
40 """
41 ui = repo.ui
41 ui = repo.ui
42 requirements = repo.requirements
42 requirements = repo.requirements
43 auto_upgrade_share_source = ui.configbool(
43 auto_upgrade_share_source = ui.configbool(
44 b'format',
44 b'format',
45 b'use-share-safe.automatic-upgrade-of-mismatching-repositories',
45 b'use-share-safe.automatic-upgrade-of-mismatching-repositories',
46 )
46 )
47 auto_upgrade_quiet = ui.configbool(
47 auto_upgrade_quiet = ui.configbool(
48 b'format',
48 b'format',
49 b'use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet',
49 b'use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet',
50 )
50 )
51
51
52 action = None
52 action = None
53
53
54 if (
54 if (
55 auto_upgrade_share_source
55 auto_upgrade_share_source
56 and requirementsmod.SHARED_REQUIREMENT not in requirements
56 and requirementsmod.SHARED_REQUIREMENT not in requirements
57 ):
57 ):
58 sf_config = ui.configbool(b'format', b'use-share-safe')
58 sf_config = ui.configbool(b'format', b'use-share-safe')
59 sf_local = requirementsmod.SHARESAFE_REQUIREMENT in requirements
59 sf_local = requirementsmod.SHARESAFE_REQUIREMENT in requirements
60 if sf_config and not sf_local:
60 if sf_config and not sf_local:
61 msg = _(
61 msg = _(
62 b"automatically upgrading repository to the `share-safe`"
62 b"automatically upgrading repository to the `share-safe`"
63 b" feature\n"
63 b" feature\n"
64 )
64 )
65 hint = b"(see `hg help config.format.use-share-safe` for details)\n"
65 hint = b"(see `hg help config.format.use-share-safe` for details)\n"
66
66
67 def action():
67 def action():
68 if not (ui.quiet or auto_upgrade_quiet):
68 if not (ui.quiet or auto_upgrade_quiet):
69 ui.write_err(msg)
69 ui.write_err(msg)
70 ui.write_err(hint)
70 ui.write_err(hint)
71 requirements.add(requirementsmod.SHARESAFE_REQUIREMENT)
71 requirements.add(requirementsmod.SHARESAFE_REQUIREMENT)
72 scmutil.writereporequirements(repo, requirements)
72 scmutil.writereporequirements(repo, requirements)
73
73
74 elif sf_local and not sf_config:
74 elif sf_local and not sf_config:
75 msg = _(
75 msg = _(
76 b"automatically downgrading repository from the `share-safe`"
76 b"automatically downgrading repository from the `share-safe`"
77 b" feature\n"
77 b" feature\n"
78 )
78 )
79 hint = b"(see `hg help config.format.use-share-safe` for details)\n"
79 hint = b"(see `hg help config.format.use-share-safe` for details)\n"
80
80
81 def action():
81 def action():
82 if not (ui.quiet or auto_upgrade_quiet):
82 if not (ui.quiet or auto_upgrade_quiet):
83 ui.write_err(msg)
83 ui.write_err(msg)
84 ui.write_err(hint)
84 ui.write_err(hint)
85 requirements.discard(requirementsmod.SHARESAFE_REQUIREMENT)
85 requirements.discard(requirementsmod.SHARESAFE_REQUIREMENT)
86 scmutil.writereporequirements(repo, requirements)
86 scmutil.writereporequirements(repo, requirements)
87
87
88 return action
88 return action
89
89
90
90
91 def get_tracked_hint_action(repo):
91 def get_tracked_hint_action(repo):
92 """return an automatic-upgrade action for `tracked-hint` if applicable
92 """return an automatic-upgrade action for `tracked-hint` if applicable
93
93
94 If no action is needed, return None, otherwise return a callback to upgrade
94 If no action is needed, return None, otherwise return a callback to upgrade
95 or downgrade the repository according the configuration and repository
95 or downgrade the repository according the configuration and repository
96 format.
96 format.
97 """
97 """
98 ui = repo.ui
98 ui = repo.ui
99 requirements = set(repo.requirements)
99 requirements = set(repo.requirements)
100 auto_upgrade_tracked_hint = ui.configbool(
100 auto_upgrade_tracked_hint = ui.configbool(
101 b'format',
101 b'format',
102 b'use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories',
102 b'use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories',
103 )
103 )
104
104
105 action = None
105 action = None
106
106
107 if auto_upgrade_tracked_hint:
107 if auto_upgrade_tracked_hint:
108 th_config = ui.configbool(b'format', b'use-dirstate-tracked-hint')
108 th_config = ui.configbool(b'format', b'use-dirstate-tracked-hint')
109 th_local = requirementsmod.DIRSTATE_TRACKED_HINT_V1 in requirements
109 th_local = requirementsmod.DIRSTATE_TRACKED_HINT_V1 in requirements
110 if th_config and not th_local:
110 if th_config and not th_local:
111 msg = _(
111 msg = _(
112 b"automatically upgrading repository to the `tracked-hint`"
112 b"automatically upgrading repository to the `tracked-hint`"
113 b" feature\n"
113 b" feature\n"
114 )
114 )
115 hint = b"(see `hg help config.format.use-dirstate-tracked-hint` for details)\n"
115 hint = b"(see `hg help config.format.use-dirstate-tracked-hint` for details)\n"
116
116
117 def action():
117 def action():
118 if not ui.quiet:
118 if not ui.quiet:
119 ui.write_err(msg)
119 ui.write_err(msg)
120 ui.write_err(hint)
120 ui.write_err(hint)
121 requirements.add(requirementsmod.DIRSTATE_TRACKED_HINT_V1)
121 requirements.add(requirementsmod.DIRSTATE_TRACKED_HINT_V1)
122 op = AutoUpgradeOperation(requirements)
122 op = AutoUpgradeOperation(requirements)
123 engine.upgrade_tracked_hint(ui, repo, op, add=True)
123 engine.upgrade_tracked_hint(ui, repo, op, add=True)
124
124
125 elif th_local and not th_config:
125 elif th_local and not th_config:
126 msg = _(
126 msg = _(
127 b"automatically downgrading repository from the `tracked-hint`"
127 b"automatically downgrading repository from the `tracked-hint`"
128 b" feature\n"
128 b" feature\n"
129 )
129 )
130 hint = b"(see `hg help config.format.use-dirstate-tracked-hint` for details)\n"
130 hint = b"(see `hg help config.format.use-dirstate-tracked-hint` for details)\n"
131
131
132 def action():
132 def action():
133 if not ui.quiet:
133 if not ui.quiet:
134 ui.write_err(msg)
134 ui.write_err(msg)
135 ui.write_err(hint)
135 ui.write_err(hint)
136 requirements.discard(requirementsmod.DIRSTATE_TRACKED_HINT_V1)
136 requirements.discard(requirementsmod.DIRSTATE_TRACKED_HINT_V1)
137 op = AutoUpgradeOperation(requirements)
137 op = AutoUpgradeOperation(requirements)
138 engine.upgrade_tracked_hint(ui, repo, op, add=False)
138 engine.upgrade_tracked_hint(ui, repo, op, add=False)
139
139
140 return action
140 return action
141
141
142
142
143 def get_dirstate_v2_action(repo):
143 def get_dirstate_v2_action(repo):
144 """return an automatic-upgrade action for `dirstate-v2` if applicable
144 """return an automatic-upgrade action for `dirstate-v2` if applicable
145
145
146 If no action is needed, return None, otherwise return a callback to upgrade
146 If no action is needed, return None, otherwise return a callback to upgrade
147 or downgrade the repository according the configuration and repository
147 or downgrade the repository according the configuration and repository
148 format.
148 format.
149 """
149 """
150 ui = repo.ui
150 ui = repo.ui
151 requirements = set(repo.requirements)
151 requirements = set(repo.requirements)
152 auto_upgrade_dv2 = ui.configbool(
152 auto_upgrade_dv2 = ui.configbool(
153 b'format',
153 b'format',
154 b'use-dirstate-v2.automatic-upgrade-of-mismatching-repositories',
154 b'use-dirstate-v2.automatic-upgrade-of-mismatching-repositories',
155 )
155 )
156 auto_upgrade_dv2_quiet = ui.configbool(
157 b'format',
158 b'use-dirstate-v2.automatic-upgrade-of-mismatching-repositories:quiet',
159 )
156
160
157 action = None
161 action = None
158
162
159 if auto_upgrade_dv2:
163 if auto_upgrade_dv2:
160 d2_config = ui.configbool(b'format', b'use-dirstate-v2')
164 d2_config = ui.configbool(b'format', b'use-dirstate-v2')
161 d2_local = requirementsmod.DIRSTATE_V2_REQUIREMENT in requirements
165 d2_local = requirementsmod.DIRSTATE_V2_REQUIREMENT in requirements
162 if d2_config and not d2_local:
166 if d2_config and not d2_local:
163 msg = _(
167 msg = _(
164 b"automatically upgrading repository to the `dirstate-v2`"
168 b"automatically upgrading repository to the `dirstate-v2`"
165 b" feature\n"
169 b" feature\n"
166 )
170 )
167 hint = (
171 hint = (
168 b"(see `hg help config.format.use-dirstate-v2` for details)\n"
172 b"(see `hg help config.format.use-dirstate-v2` for details)\n"
169 )
173 )
170
174
171 def action():
175 def action():
172 if not ui.quiet:
176 if not (ui.quiet or auto_upgrade_dv2_quiet):
173 ui.write_err(msg)
177 ui.write_err(msg)
174 ui.write_err(hint)
178 ui.write_err(hint)
175 requirements.add(requirementsmod.DIRSTATE_V2_REQUIREMENT)
179 requirements.add(requirementsmod.DIRSTATE_V2_REQUIREMENT)
176 fake_op = AutoUpgradeOperation(requirements)
180 fake_op = AutoUpgradeOperation(requirements)
177 engine.upgrade_dirstate(repo.ui, repo, fake_op, b'v1', b'v2')
181 engine.upgrade_dirstate(repo.ui, repo, fake_op, b'v1', b'v2')
178
182
179 elif d2_local and not d2_config:
183 elif d2_local and not d2_config:
180 msg = _(
184 msg = _(
181 b"automatically downgrading repository from the `dirstate-v2`"
185 b"automatically downgrading repository from the `dirstate-v2`"
182 b" feature\n"
186 b" feature\n"
183 )
187 )
184 hint = (
188 hint = (
185 b"(see `hg help config.format.use-dirstate-v2` for details)\n"
189 b"(see `hg help config.format.use-dirstate-v2` for details)\n"
186 )
190 )
187
191
188 def action():
192 def action():
189 if not ui.quiet:
193 if not (ui.quiet or auto_upgrade_dv2_quiet):
190 ui.write_err(msg)
194 ui.write_err(msg)
191 ui.write_err(hint)
195 ui.write_err(hint)
192 requirements.discard(requirementsmod.DIRSTATE_V2_REQUIREMENT)
196 requirements.discard(requirementsmod.DIRSTATE_V2_REQUIREMENT)
193 fake_op = AutoUpgradeOperation(requirements)
197 fake_op = AutoUpgradeOperation(requirements)
194 engine.upgrade_dirstate(repo.ui, repo, fake_op, b'v2', b'v1')
198 engine.upgrade_dirstate(repo.ui, repo, fake_op, b'v2', b'v1')
195
199
196 return action
200 return action
197
201
198
202
199 AUTO_UPGRADE_ACTIONS = [
203 AUTO_UPGRADE_ACTIONS = [
200 get_dirstate_v2_action,
204 get_dirstate_v2_action,
201 get_share_safe_action,
205 get_share_safe_action,
202 get_tracked_hint_action,
206 get_tracked_hint_action,
203 ]
207 ]
204
208
205
209
206 def may_auto_upgrade(repo, maker_func):
210 def may_auto_upgrade(repo, maker_func):
207 """potentially perform auto-upgrade and return the final repository to use
211 """potentially perform auto-upgrade and return the final repository to use
208
212
209 Auto-upgrade are "quick" repository upgrade that might automatically be run
213 Auto-upgrade are "quick" repository upgrade that might automatically be run
210 by "any" repository access. See `hg help config.format` for automatic
214 by "any" repository access. See `hg help config.format` for automatic
211 upgrade documentation.
215 upgrade documentation.
212
216
213 note: each relevant upgrades are done one after the other for simplicity.
217 note: each relevant upgrades are done one after the other for simplicity.
214 This avoid having repository is partially inconsistent state while
218 This avoid having repository is partially inconsistent state while
215 upgrading.
219 upgrading.
216
220
217 repo: the current repository instance
221 repo: the current repository instance
218 maker_func: a factory function that can recreate a repository after an upgrade
222 maker_func: a factory function that can recreate a repository after an upgrade
219 """
223 """
220 clear = False
224 clear = False
221
225
222 loop = 0
226 loop = 0
223
227
224 try:
228 try:
225 while not clear:
229 while not clear:
226 loop += 1
230 loop += 1
227 if loop > 100:
231 if loop > 100:
228 # XXX basic protection against infinite loop, make it better.
232 # XXX basic protection against infinite loop, make it better.
229 raise error.ProgrammingError("Too many auto upgrade loops")
233 raise error.ProgrammingError("Too many auto upgrade loops")
230 clear = True
234 clear = True
231 for get_action in AUTO_UPGRADE_ACTIONS:
235 for get_action in AUTO_UPGRADE_ACTIONS:
232 action = get_action(repo)
236 action = get_action(repo)
233 if action is not None:
237 if action is not None:
234 clear = False
238 clear = False
235 with repo.wlock(wait=False), repo.lock(wait=False):
239 with repo.wlock(wait=False), repo.lock(wait=False):
236 action = get_action(repo)
240 action = get_action(repo)
237 if action is not None:
241 if action is not None:
238 action()
242 action()
239 repo = maker_func()
243 repo = maker_func()
240 except error.LockError:
244 except error.LockError:
241 # if we cannot get the lock, ignore the auto-upgrade attemps and
245 # if we cannot get the lock, ignore the auto-upgrade attemps and
242 # proceed. We might want to make this behavior configurable in the
246 # proceed. We might want to make this behavior configurable in the
243 # future.
247 # future.
244 pass
248 pass
245
249
246 return repo
250 return repo
@@ -1,4068 +1,4070 b''
1 Short help:
1 Short help:
2
2
3 $ hg
3 $ hg
4 Mercurial Distributed SCM
4 Mercurial Distributed SCM
5
5
6 basic commands:
6 basic commands:
7
7
8 add add the specified files on the next commit
8 add add the specified files on the next commit
9 annotate show changeset information by line for each file
9 annotate show changeset information by line for each file
10 clone make a copy of an existing repository
10 clone make a copy of an existing repository
11 commit commit the specified files or all outstanding changes
11 commit commit the specified files or all outstanding changes
12 diff diff repository (or selected files)
12 diff diff repository (or selected files)
13 export dump the header and diffs for one or more changesets
13 export dump the header and diffs for one or more changesets
14 forget forget the specified files on the next commit
14 forget forget the specified files on the next commit
15 init create a new repository in the given directory
15 init create a new repository in the given directory
16 log show revision history of entire repository or files
16 log show revision history of entire repository or files
17 merge merge another revision into working directory
17 merge merge another revision into working directory
18 pull pull changes from the specified source
18 pull pull changes from the specified source
19 push push changes to the specified destination
19 push push changes to the specified destination
20 remove remove the specified files on the next commit
20 remove remove the specified files on the next commit
21 serve start stand-alone webserver
21 serve start stand-alone webserver
22 status show changed files in the working directory
22 status show changed files in the working directory
23 summary summarize working directory state
23 summary summarize working directory state
24 update update working directory (or switch revisions)
24 update update working directory (or switch revisions)
25
25
26 (use 'hg help' for the full list of commands or 'hg -v' for details)
26 (use 'hg help' for the full list of commands or 'hg -v' for details)
27
27
28 $ hg -q
28 $ hg -q
29 add add the specified files on the next commit
29 add add the specified files on the next commit
30 annotate show changeset information by line for each file
30 annotate show changeset information by line for each file
31 clone make a copy of an existing repository
31 clone make a copy of an existing repository
32 commit commit the specified files or all outstanding changes
32 commit commit the specified files or all outstanding changes
33 diff diff repository (or selected files)
33 diff diff repository (or selected files)
34 export dump the header and diffs for one or more changesets
34 export dump the header and diffs for one or more changesets
35 forget forget the specified files on the next commit
35 forget forget the specified files on the next commit
36 init create a new repository in the given directory
36 init create a new repository in the given directory
37 log show revision history of entire repository or files
37 log show revision history of entire repository or files
38 merge merge another revision into working directory
38 merge merge another revision into working directory
39 pull pull changes from the specified source
39 pull pull changes from the specified source
40 push push changes to the specified destination
40 push push changes to the specified destination
41 remove remove the specified files on the next commit
41 remove remove the specified files on the next commit
42 serve start stand-alone webserver
42 serve start stand-alone webserver
43 status show changed files in the working directory
43 status show changed files in the working directory
44 summary summarize working directory state
44 summary summarize working directory state
45 update update working directory (or switch revisions)
45 update update working directory (or switch revisions)
46
46
47 Extra extensions will be printed in help output in a non-reliable order since
47 Extra extensions will be printed in help output in a non-reliable order since
48 the extension is unknown.
48 the extension is unknown.
49 #if no-extraextensions
49 #if no-extraextensions
50
50
51 $ hg help
51 $ hg help
52 Mercurial Distributed SCM
52 Mercurial Distributed SCM
53
53
54 list of commands:
54 list of commands:
55
55
56 Repository creation:
56 Repository creation:
57
57
58 clone make a copy of an existing repository
58 clone make a copy of an existing repository
59 init create a new repository in the given directory
59 init create a new repository in the given directory
60
60
61 Remote repository management:
61 Remote repository management:
62
62
63 incoming show new changesets found in source
63 incoming show new changesets found in source
64 outgoing show changesets not found in the destination
64 outgoing show changesets not found in the destination
65 paths show aliases for remote repositories
65 paths show aliases for remote repositories
66 pull pull changes from the specified source
66 pull pull changes from the specified source
67 push push changes to the specified destination
67 push push changes to the specified destination
68 serve start stand-alone webserver
68 serve start stand-alone webserver
69
69
70 Change creation:
70 Change creation:
71
71
72 commit commit the specified files or all outstanding changes
72 commit commit the specified files or all outstanding changes
73
73
74 Change manipulation:
74 Change manipulation:
75
75
76 backout reverse effect of earlier changeset
76 backout reverse effect of earlier changeset
77 graft copy changes from other branches onto the current branch
77 graft copy changes from other branches onto the current branch
78 merge merge another revision into working directory
78 merge merge another revision into working directory
79
79
80 Change organization:
80 Change organization:
81
81
82 bookmarks create a new bookmark or list existing bookmarks
82 bookmarks create a new bookmark or list existing bookmarks
83 branch set or show the current branch name
83 branch set or show the current branch name
84 branches list repository named branches
84 branches list repository named branches
85 phase set or show the current phase name
85 phase set or show the current phase name
86 tag add one or more tags for the current or given revision
86 tag add one or more tags for the current or given revision
87 tags list repository tags
87 tags list repository tags
88
88
89 File content management:
89 File content management:
90
90
91 annotate show changeset information by line for each file
91 annotate show changeset information by line for each file
92 cat output the current or given revision of files
92 cat output the current or given revision of files
93 copy mark files as copied for the next commit
93 copy mark files as copied for the next commit
94 diff diff repository (or selected files)
94 diff diff repository (or selected files)
95 grep search for a pattern in specified files
95 grep search for a pattern in specified files
96
96
97 Change navigation:
97 Change navigation:
98
98
99 bisect subdivision search of changesets
99 bisect subdivision search of changesets
100 heads show branch heads
100 heads show branch heads
101 identify identify the working directory or specified revision
101 identify identify the working directory or specified revision
102 log show revision history of entire repository or files
102 log show revision history of entire repository or files
103
103
104 Working directory management:
104 Working directory management:
105
105
106 add add the specified files on the next commit
106 add add the specified files on the next commit
107 addremove add all new files, delete all missing files
107 addremove add all new files, delete all missing files
108 files list tracked files
108 files list tracked files
109 forget forget the specified files on the next commit
109 forget forget the specified files on the next commit
110 purge removes files not tracked by Mercurial
110 purge removes files not tracked by Mercurial
111 remove remove the specified files on the next commit
111 remove remove the specified files on the next commit
112 rename rename files; equivalent of copy + remove
112 rename rename files; equivalent of copy + remove
113 resolve redo merges or set/view the merge status of files
113 resolve redo merges or set/view the merge status of files
114 revert restore files to their checkout state
114 revert restore files to their checkout state
115 root print the root (top) of the current working directory
115 root print the root (top) of the current working directory
116 shelve save and set aside changes from the working directory
116 shelve save and set aside changes from the working directory
117 status show changed files in the working directory
117 status show changed files in the working directory
118 summary summarize working directory state
118 summary summarize working directory state
119 unshelve restore a shelved change to the working directory
119 unshelve restore a shelved change to the working directory
120 update update working directory (or switch revisions)
120 update update working directory (or switch revisions)
121
121
122 Change import/export:
122 Change import/export:
123
123
124 archive create an unversioned archive of a repository revision
124 archive create an unversioned archive of a repository revision
125 bundle create a bundle file
125 bundle create a bundle file
126 export dump the header and diffs for one or more changesets
126 export dump the header and diffs for one or more changesets
127 import import an ordered set of patches
127 import import an ordered set of patches
128 unbundle apply one or more bundle files
128 unbundle apply one or more bundle files
129
129
130 Repository maintenance:
130 Repository maintenance:
131
131
132 manifest output the current or given revision of the project manifest
132 manifest output the current or given revision of the project manifest
133 recover roll back an interrupted transaction
133 recover roll back an interrupted transaction
134 verify verify the integrity of the repository
134 verify verify the integrity of the repository
135
135
136 Help:
136 Help:
137
137
138 config show combined config settings from all hgrc files
138 config show combined config settings from all hgrc files
139 help show help for a given topic or a help overview
139 help show help for a given topic or a help overview
140 version output version and copyright information
140 version output version and copyright information
141
141
142 additional help topics:
142 additional help topics:
143
143
144 Mercurial identifiers:
144 Mercurial identifiers:
145
145
146 filesets Specifying File Sets
146 filesets Specifying File Sets
147 hgignore Syntax for Mercurial Ignore Files
147 hgignore Syntax for Mercurial Ignore Files
148 patterns File Name Patterns
148 patterns File Name Patterns
149 revisions Specifying Revisions
149 revisions Specifying Revisions
150 urls URL Paths
150 urls URL Paths
151
151
152 Mercurial output:
152 Mercurial output:
153
153
154 color Colorizing Outputs
154 color Colorizing Outputs
155 dates Date Formats
155 dates Date Formats
156 diffs Diff Formats
156 diffs Diff Formats
157 templating Template Usage
157 templating Template Usage
158
158
159 Mercurial configuration:
159 Mercurial configuration:
160
160
161 config Configuration Files
161 config Configuration Files
162 environment Environment Variables
162 environment Environment Variables
163 extensions Using Additional Features
163 extensions Using Additional Features
164 flags Command-line flags
164 flags Command-line flags
165 hgweb Configuring hgweb
165 hgweb Configuring hgweb
166 merge-tools Merge Tools
166 merge-tools Merge Tools
167 pager Pager Support
167 pager Pager Support
168 rust Rust in Mercurial
168 rust Rust in Mercurial
169
169
170 Concepts:
170 Concepts:
171
171
172 bundlespec Bundle File Formats
172 bundlespec Bundle File Formats
173 evolution Safely rewriting history (EXPERIMENTAL)
173 evolution Safely rewriting history (EXPERIMENTAL)
174 glossary Glossary
174 glossary Glossary
175 phases Working with Phases
175 phases Working with Phases
176 subrepos Subrepositories
176 subrepos Subrepositories
177
177
178 Miscellaneous:
178 Miscellaneous:
179
179
180 deprecated Deprecated Features
180 deprecated Deprecated Features
181 internals Technical implementation topics
181 internals Technical implementation topics
182 scripting Using Mercurial from scripts and automation
182 scripting Using Mercurial from scripts and automation
183
183
184 (use 'hg help -v' to show built-in aliases and global options)
184 (use 'hg help -v' to show built-in aliases and global options)
185
185
186 $ hg -q help
186 $ hg -q help
187 Repository creation:
187 Repository creation:
188
188
189 clone make a copy of an existing repository
189 clone make a copy of an existing repository
190 init create a new repository in the given directory
190 init create a new repository in the given directory
191
191
192 Remote repository management:
192 Remote repository management:
193
193
194 incoming show new changesets found in source
194 incoming show new changesets found in source
195 outgoing show changesets not found in the destination
195 outgoing show changesets not found in the destination
196 paths show aliases for remote repositories
196 paths show aliases for remote repositories
197 pull pull changes from the specified source
197 pull pull changes from the specified source
198 push push changes to the specified destination
198 push push changes to the specified destination
199 serve start stand-alone webserver
199 serve start stand-alone webserver
200
200
201 Change creation:
201 Change creation:
202
202
203 commit commit the specified files or all outstanding changes
203 commit commit the specified files or all outstanding changes
204
204
205 Change manipulation:
205 Change manipulation:
206
206
207 backout reverse effect of earlier changeset
207 backout reverse effect of earlier changeset
208 graft copy changes from other branches onto the current branch
208 graft copy changes from other branches onto the current branch
209 merge merge another revision into working directory
209 merge merge another revision into working directory
210
210
211 Change organization:
211 Change organization:
212
212
213 bookmarks create a new bookmark or list existing bookmarks
213 bookmarks create a new bookmark or list existing bookmarks
214 branch set or show the current branch name
214 branch set or show the current branch name
215 branches list repository named branches
215 branches list repository named branches
216 phase set or show the current phase name
216 phase set or show the current phase name
217 tag add one or more tags for the current or given revision
217 tag add one or more tags for the current or given revision
218 tags list repository tags
218 tags list repository tags
219
219
220 File content management:
220 File content management:
221
221
222 annotate show changeset information by line for each file
222 annotate show changeset information by line for each file
223 cat output the current or given revision of files
223 cat output the current or given revision of files
224 copy mark files as copied for the next commit
224 copy mark files as copied for the next commit
225 diff diff repository (or selected files)
225 diff diff repository (or selected files)
226 grep search for a pattern in specified files
226 grep search for a pattern in specified files
227
227
228 Change navigation:
228 Change navigation:
229
229
230 bisect subdivision search of changesets
230 bisect subdivision search of changesets
231 heads show branch heads
231 heads show branch heads
232 identify identify the working directory or specified revision
232 identify identify the working directory or specified revision
233 log show revision history of entire repository or files
233 log show revision history of entire repository or files
234
234
235 Working directory management:
235 Working directory management:
236
236
237 add add the specified files on the next commit
237 add add the specified files on the next commit
238 addremove add all new files, delete all missing files
238 addremove add all new files, delete all missing files
239 files list tracked files
239 files list tracked files
240 forget forget the specified files on the next commit
240 forget forget the specified files on the next commit
241 purge removes files not tracked by Mercurial
241 purge removes files not tracked by Mercurial
242 remove remove the specified files on the next commit
242 remove remove the specified files on the next commit
243 rename rename files; equivalent of copy + remove
243 rename rename files; equivalent of copy + remove
244 resolve redo merges or set/view the merge status of files
244 resolve redo merges or set/view the merge status of files
245 revert restore files to their checkout state
245 revert restore files to their checkout state
246 root print the root (top) of the current working directory
246 root print the root (top) of the current working directory
247 shelve save and set aside changes from the working directory
247 shelve save and set aside changes from the working directory
248 status show changed files in the working directory
248 status show changed files in the working directory
249 summary summarize working directory state
249 summary summarize working directory state
250 unshelve restore a shelved change to the working directory
250 unshelve restore a shelved change to the working directory
251 update update working directory (or switch revisions)
251 update update working directory (or switch revisions)
252
252
253 Change import/export:
253 Change import/export:
254
254
255 archive create an unversioned archive of a repository revision
255 archive create an unversioned archive of a repository revision
256 bundle create a bundle file
256 bundle create a bundle file
257 export dump the header and diffs for one or more changesets
257 export dump the header and diffs for one or more changesets
258 import import an ordered set of patches
258 import import an ordered set of patches
259 unbundle apply one or more bundle files
259 unbundle apply one or more bundle files
260
260
261 Repository maintenance:
261 Repository maintenance:
262
262
263 manifest output the current or given revision of the project manifest
263 manifest output the current or given revision of the project manifest
264 recover roll back an interrupted transaction
264 recover roll back an interrupted transaction
265 verify verify the integrity of the repository
265 verify verify the integrity of the repository
266
266
267 Help:
267 Help:
268
268
269 config show combined config settings from all hgrc files
269 config show combined config settings from all hgrc files
270 help show help for a given topic or a help overview
270 help show help for a given topic or a help overview
271 version output version and copyright information
271 version output version and copyright information
272
272
273 additional help topics:
273 additional help topics:
274
274
275 Mercurial identifiers:
275 Mercurial identifiers:
276
276
277 filesets Specifying File Sets
277 filesets Specifying File Sets
278 hgignore Syntax for Mercurial Ignore Files
278 hgignore Syntax for Mercurial Ignore Files
279 patterns File Name Patterns
279 patterns File Name Patterns
280 revisions Specifying Revisions
280 revisions Specifying Revisions
281 urls URL Paths
281 urls URL Paths
282
282
283 Mercurial output:
283 Mercurial output:
284
284
285 color Colorizing Outputs
285 color Colorizing Outputs
286 dates Date Formats
286 dates Date Formats
287 diffs Diff Formats
287 diffs Diff Formats
288 templating Template Usage
288 templating Template Usage
289
289
290 Mercurial configuration:
290 Mercurial configuration:
291
291
292 config Configuration Files
292 config Configuration Files
293 environment Environment Variables
293 environment Environment Variables
294 extensions Using Additional Features
294 extensions Using Additional Features
295 flags Command-line flags
295 flags Command-line flags
296 hgweb Configuring hgweb
296 hgweb Configuring hgweb
297 merge-tools Merge Tools
297 merge-tools Merge Tools
298 pager Pager Support
298 pager Pager Support
299 rust Rust in Mercurial
299 rust Rust in Mercurial
300
300
301 Concepts:
301 Concepts:
302
302
303 bundlespec Bundle File Formats
303 bundlespec Bundle File Formats
304 evolution Safely rewriting history (EXPERIMENTAL)
304 evolution Safely rewriting history (EXPERIMENTAL)
305 glossary Glossary
305 glossary Glossary
306 phases Working with Phases
306 phases Working with Phases
307 subrepos Subrepositories
307 subrepos Subrepositories
308
308
309 Miscellaneous:
309 Miscellaneous:
310
310
311 deprecated Deprecated Features
311 deprecated Deprecated Features
312 internals Technical implementation topics
312 internals Technical implementation topics
313 scripting Using Mercurial from scripts and automation
313 scripting Using Mercurial from scripts and automation
314
314
315 Test extension help:
315 Test extension help:
316 $ hg help extensions --config extensions.rebase= --config extensions.children=
316 $ hg help extensions --config extensions.rebase= --config extensions.children=
317 Using Additional Features
317 Using Additional Features
318 """""""""""""""""""""""""
318 """""""""""""""""""""""""
319
319
320 Mercurial has the ability to add new features through the use of
320 Mercurial has the ability to add new features through the use of
321 extensions. Extensions may add new commands, add options to existing
321 extensions. Extensions may add new commands, add options to existing
322 commands, change the default behavior of commands, or implement hooks.
322 commands, change the default behavior of commands, or implement hooks.
323
323
324 To enable the "foo" extension, either shipped with Mercurial or in the
324 To enable the "foo" extension, either shipped with Mercurial or in the
325 Python search path, create an entry for it in your configuration file,
325 Python search path, create an entry for it in your configuration file,
326 like this:
326 like this:
327
327
328 [extensions]
328 [extensions]
329 foo =
329 foo =
330
330
331 You may also specify the full path to an extension:
331 You may also specify the full path to an extension:
332
332
333 [extensions]
333 [extensions]
334 myfeature = ~/.hgext/myfeature.py
334 myfeature = ~/.hgext/myfeature.py
335
335
336 See 'hg help config' for more information on configuration files.
336 See 'hg help config' for more information on configuration files.
337
337
338 Extensions are not loaded by default for a variety of reasons: they can
338 Extensions are not loaded by default for a variety of reasons: they can
339 increase startup overhead; they may be meant for advanced usage only; they
339 increase startup overhead; they may be meant for advanced usage only; they
340 may provide potentially dangerous abilities (such as letting you destroy
340 may provide potentially dangerous abilities (such as letting you destroy
341 or modify history); they might not be ready for prime time; or they may
341 or modify history); they might not be ready for prime time; or they may
342 alter some usual behaviors of stock Mercurial. It is thus up to the user
342 alter some usual behaviors of stock Mercurial. It is thus up to the user
343 to activate extensions as needed.
343 to activate extensions as needed.
344
344
345 To explicitly disable an extension enabled in a configuration file of
345 To explicitly disable an extension enabled in a configuration file of
346 broader scope, prepend its path with !:
346 broader scope, prepend its path with !:
347
347
348 [extensions]
348 [extensions]
349 # disabling extension bar residing in /path/to/extension/bar.py
349 # disabling extension bar residing in /path/to/extension/bar.py
350 bar = !/path/to/extension/bar.py
350 bar = !/path/to/extension/bar.py
351 # ditto, but no path was supplied for extension baz
351 # ditto, but no path was supplied for extension baz
352 baz = !
352 baz = !
353
353
354 enabled extensions:
354 enabled extensions:
355
355
356 children command to display child changesets (DEPRECATED)
356 children command to display child changesets (DEPRECATED)
357 rebase command to move sets of revisions to a different ancestor
357 rebase command to move sets of revisions to a different ancestor
358
358
359 disabled extensions:
359 disabled extensions:
360
360
361 acl hooks for controlling repository access
361 acl hooks for controlling repository access
362 blackbox log repository events to a blackbox for debugging
362 blackbox log repository events to a blackbox for debugging
363 bugzilla hooks for integrating with the Bugzilla bug tracker
363 bugzilla hooks for integrating with the Bugzilla bug tracker
364 censor erase file content at a given revision
364 censor erase file content at a given revision
365 churn command to display statistics about repository history
365 churn command to display statistics about repository history
366 clonebundles advertise pre-generated bundles to seed clones
366 clonebundles advertise pre-generated bundles to seed clones
367 closehead close arbitrary heads without checking them out first
367 closehead close arbitrary heads without checking them out first
368 convert import revisions from foreign VCS repositories into
368 convert import revisions from foreign VCS repositories into
369 Mercurial
369 Mercurial
370 eol automatically manage newlines in repository files
370 eol automatically manage newlines in repository files
371 extdiff command to allow external programs to compare revisions
371 extdiff command to allow external programs to compare revisions
372 factotum http authentication with factotum
372 factotum http authentication with factotum
373 fastexport export repositories as git fast-import stream
373 fastexport export repositories as git fast-import stream
374 githelp try mapping git commands to Mercurial commands
374 githelp try mapping git commands to Mercurial commands
375 gpg commands to sign and verify changesets
375 gpg commands to sign and verify changesets
376 hgk browse the repository in a graphical way
376 hgk browse the repository in a graphical way
377 highlight syntax highlighting for hgweb (requires Pygments)
377 highlight syntax highlighting for hgweb (requires Pygments)
378 histedit interactive history editing
378 histedit interactive history editing
379 keyword expand keywords in tracked files
379 keyword expand keywords in tracked files
380 largefiles track large binary files
380 largefiles track large binary files
381 mq manage a stack of patches
381 mq manage a stack of patches
382 notify hooks for sending email push notifications
382 notify hooks for sending email push notifications
383 patchbomb command to send changesets as (a series of) patch emails
383 patchbomb command to send changesets as (a series of) patch emails
384 relink recreates hardlinks between repository clones
384 relink recreates hardlinks between repository clones
385 schemes extend schemes with shortcuts to repository swarms
385 schemes extend schemes with shortcuts to repository swarms
386 share share a common history between several working directories
386 share share a common history between several working directories
387 transplant command to transplant changesets from another branch
387 transplant command to transplant changesets from another branch
388 win32mbcs allow the use of MBCS paths with problematic encodings
388 win32mbcs allow the use of MBCS paths with problematic encodings
389 zeroconf discover and advertise repositories on the local network
389 zeroconf discover and advertise repositories on the local network
390
390
391 #endif
391 #endif
392
392
393 Verify that deprecated extensions are included if --verbose:
393 Verify that deprecated extensions are included if --verbose:
394
394
395 $ hg -v help extensions | grep children
395 $ hg -v help extensions | grep children
396 children command to display child changesets (DEPRECATED)
396 children command to display child changesets (DEPRECATED)
397
397
398 Verify that extension keywords appear in help templates
398 Verify that extension keywords appear in help templates
399
399
400 $ hg help --config extensions.transplant= templating|grep transplant > /dev/null
400 $ hg help --config extensions.transplant= templating|grep transplant > /dev/null
401
401
402 Test short command list with verbose option
402 Test short command list with verbose option
403
403
404 $ hg -v help shortlist
404 $ hg -v help shortlist
405 Mercurial Distributed SCM
405 Mercurial Distributed SCM
406
406
407 basic commands:
407 basic commands:
408
408
409 abort abort an unfinished operation (EXPERIMENTAL)
409 abort abort an unfinished operation (EXPERIMENTAL)
410 add add the specified files on the next commit
410 add add the specified files on the next commit
411 annotate, blame
411 annotate, blame
412 show changeset information by line for each file
412 show changeset information by line for each file
413 clone make a copy of an existing repository
413 clone make a copy of an existing repository
414 commit, ci commit the specified files or all outstanding changes
414 commit, ci commit the specified files or all outstanding changes
415 continue resumes an interrupted operation (EXPERIMENTAL)
415 continue resumes an interrupted operation (EXPERIMENTAL)
416 diff diff repository (or selected files)
416 diff diff repository (or selected files)
417 export dump the header and diffs for one or more changesets
417 export dump the header and diffs for one or more changesets
418 forget forget the specified files on the next commit
418 forget forget the specified files on the next commit
419 init create a new repository in the given directory
419 init create a new repository in the given directory
420 log, history show revision history of entire repository or files
420 log, history show revision history of entire repository or files
421 merge merge another revision into working directory
421 merge merge another revision into working directory
422 pull pull changes from the specified source
422 pull pull changes from the specified source
423 push push changes to the specified destination
423 push push changes to the specified destination
424 remove, rm remove the specified files on the next commit
424 remove, rm remove the specified files on the next commit
425 serve start stand-alone webserver
425 serve start stand-alone webserver
426 status, st show changed files in the working directory
426 status, st show changed files in the working directory
427 summary, sum summarize working directory state
427 summary, sum summarize working directory state
428 update, up, checkout, co
428 update, up, checkout, co
429 update working directory (or switch revisions)
429 update working directory (or switch revisions)
430
430
431 global options ([+] can be repeated):
431 global options ([+] can be repeated):
432
432
433 -R --repository REPO repository root directory or name of overlay bundle
433 -R --repository REPO repository root directory or name of overlay bundle
434 file
434 file
435 --cwd DIR change working directory
435 --cwd DIR change working directory
436 -y --noninteractive do not prompt, automatically pick the first choice for
436 -y --noninteractive do not prompt, automatically pick the first choice for
437 all prompts
437 all prompts
438 -q --quiet suppress output
438 -q --quiet suppress output
439 -v --verbose enable additional output
439 -v --verbose enable additional output
440 --color TYPE when to colorize (boolean, always, auto, never, or
440 --color TYPE when to colorize (boolean, always, auto, never, or
441 debug)
441 debug)
442 --config CONFIG [+] set/override config option (use 'section.name=value')
442 --config CONFIG [+] set/override config option (use 'section.name=value')
443 --debug enable debugging output
443 --debug enable debugging output
444 --debugger start debugger
444 --debugger start debugger
445 --encoding ENCODE set the charset encoding (default: ascii)
445 --encoding ENCODE set the charset encoding (default: ascii)
446 --encodingmode MODE set the charset encoding mode (default: strict)
446 --encodingmode MODE set the charset encoding mode (default: strict)
447 --traceback always print a traceback on exception
447 --traceback always print a traceback on exception
448 --time time how long the command takes
448 --time time how long the command takes
449 --profile print command execution profile
449 --profile print command execution profile
450 --version output version information and exit
450 --version output version information and exit
451 -h --help display help and exit
451 -h --help display help and exit
452 --hidden consider hidden changesets
452 --hidden consider hidden changesets
453 --pager TYPE when to paginate (boolean, always, auto, or never)
453 --pager TYPE when to paginate (boolean, always, auto, or never)
454 (default: auto)
454 (default: auto)
455
455
456 (use 'hg help' for the full list of commands)
456 (use 'hg help' for the full list of commands)
457
457
458 $ hg add -h
458 $ hg add -h
459 hg add [OPTION]... [FILE]...
459 hg add [OPTION]... [FILE]...
460
460
461 add the specified files on the next commit
461 add the specified files on the next commit
462
462
463 Schedule files to be version controlled and added to the repository.
463 Schedule files to be version controlled and added to the repository.
464
464
465 The files will be added to the repository at the next commit. To undo an
465 The files will be added to the repository at the next commit. To undo an
466 add before that, see 'hg forget'.
466 add before that, see 'hg forget'.
467
467
468 If no names are given, add all files to the repository (except files
468 If no names are given, add all files to the repository (except files
469 matching ".hgignore").
469 matching ".hgignore").
470
470
471 Returns 0 if all files are successfully added.
471 Returns 0 if all files are successfully added.
472
472
473 options ([+] can be repeated):
473 options ([+] can be repeated):
474
474
475 -I --include PATTERN [+] include names matching the given patterns
475 -I --include PATTERN [+] include names matching the given patterns
476 -X --exclude PATTERN [+] exclude names matching the given patterns
476 -X --exclude PATTERN [+] exclude names matching the given patterns
477 -S --subrepos recurse into subrepositories
477 -S --subrepos recurse into subrepositories
478 -n --dry-run do not perform actions, just print output
478 -n --dry-run do not perform actions, just print output
479
479
480 (some details hidden, use --verbose to show complete help)
480 (some details hidden, use --verbose to show complete help)
481
481
482 Verbose help for add
482 Verbose help for add
483
483
484 $ hg add -hv
484 $ hg add -hv
485 hg add [OPTION]... [FILE]...
485 hg add [OPTION]... [FILE]...
486
486
487 add the specified files on the next commit
487 add the specified files on the next commit
488
488
489 Schedule files to be version controlled and added to the repository.
489 Schedule files to be version controlled and added to the repository.
490
490
491 The files will be added to the repository at the next commit. To undo an
491 The files will be added to the repository at the next commit. To undo an
492 add before that, see 'hg forget'.
492 add before that, see 'hg forget'.
493
493
494 If no names are given, add all files to the repository (except files
494 If no names are given, add all files to the repository (except files
495 matching ".hgignore").
495 matching ".hgignore").
496
496
497 Examples:
497 Examples:
498
498
499 - New (unknown) files are added automatically by 'hg add':
499 - New (unknown) files are added automatically by 'hg add':
500
500
501 $ ls
501 $ ls
502 foo.c
502 foo.c
503 $ hg status
503 $ hg status
504 ? foo.c
504 ? foo.c
505 $ hg add
505 $ hg add
506 adding foo.c
506 adding foo.c
507 $ hg status
507 $ hg status
508 A foo.c
508 A foo.c
509
509
510 - Specific files to be added can be specified:
510 - Specific files to be added can be specified:
511
511
512 $ ls
512 $ ls
513 bar.c foo.c
513 bar.c foo.c
514 $ hg status
514 $ hg status
515 ? bar.c
515 ? bar.c
516 ? foo.c
516 ? foo.c
517 $ hg add bar.c
517 $ hg add bar.c
518 $ hg status
518 $ hg status
519 A bar.c
519 A bar.c
520 ? foo.c
520 ? foo.c
521
521
522 Returns 0 if all files are successfully added.
522 Returns 0 if all files are successfully added.
523
523
524 options ([+] can be repeated):
524 options ([+] can be repeated):
525
525
526 -I --include PATTERN [+] include names matching the given patterns
526 -I --include PATTERN [+] include names matching the given patterns
527 -X --exclude PATTERN [+] exclude names matching the given patterns
527 -X --exclude PATTERN [+] exclude names matching the given patterns
528 -S --subrepos recurse into subrepositories
528 -S --subrepos recurse into subrepositories
529 -n --dry-run do not perform actions, just print output
529 -n --dry-run do not perform actions, just print output
530
530
531 global options ([+] can be repeated):
531 global options ([+] can be repeated):
532
532
533 -R --repository REPO repository root directory or name of overlay bundle
533 -R --repository REPO repository root directory or name of overlay bundle
534 file
534 file
535 --cwd DIR change working directory
535 --cwd DIR change working directory
536 -y --noninteractive do not prompt, automatically pick the first choice for
536 -y --noninteractive do not prompt, automatically pick the first choice for
537 all prompts
537 all prompts
538 -q --quiet suppress output
538 -q --quiet suppress output
539 -v --verbose enable additional output
539 -v --verbose enable additional output
540 --color TYPE when to colorize (boolean, always, auto, never, or
540 --color TYPE when to colorize (boolean, always, auto, never, or
541 debug)
541 debug)
542 --config CONFIG [+] set/override config option (use 'section.name=value')
542 --config CONFIG [+] set/override config option (use 'section.name=value')
543 --debug enable debugging output
543 --debug enable debugging output
544 --debugger start debugger
544 --debugger start debugger
545 --encoding ENCODE set the charset encoding (default: ascii)
545 --encoding ENCODE set the charset encoding (default: ascii)
546 --encodingmode MODE set the charset encoding mode (default: strict)
546 --encodingmode MODE set the charset encoding mode (default: strict)
547 --traceback always print a traceback on exception
547 --traceback always print a traceback on exception
548 --time time how long the command takes
548 --time time how long the command takes
549 --profile print command execution profile
549 --profile print command execution profile
550 --version output version information and exit
550 --version output version information and exit
551 -h --help display help and exit
551 -h --help display help and exit
552 --hidden consider hidden changesets
552 --hidden consider hidden changesets
553 --pager TYPE when to paginate (boolean, always, auto, or never)
553 --pager TYPE when to paginate (boolean, always, auto, or never)
554 (default: auto)
554 (default: auto)
555
555
556 Test the textwidth config option
556 Test the textwidth config option
557
557
558 $ hg root -h --config ui.textwidth=50
558 $ hg root -h --config ui.textwidth=50
559 hg root
559 hg root
560
560
561 print the root (top) of the current working
561 print the root (top) of the current working
562 directory
562 directory
563
563
564 Print the root directory of the current
564 Print the root directory of the current
565 repository.
565 repository.
566
566
567 Returns 0 on success.
567 Returns 0 on success.
568
568
569 options:
569 options:
570
570
571 -T --template TEMPLATE display with template
571 -T --template TEMPLATE display with template
572
572
573 (some details hidden, use --verbose to show
573 (some details hidden, use --verbose to show
574 complete help)
574 complete help)
575
575
576 Test help option with version option
576 Test help option with version option
577
577
578 $ hg add -h --version
578 $ hg add -h --version
579 Mercurial Distributed SCM (version *) (glob)
579 Mercurial Distributed SCM (version *) (glob)
580 (see https://mercurial-scm.org for more information)
580 (see https://mercurial-scm.org for more information)
581
581
582 Copyright (C) 2005-* Olivia Mackall and others (glob)
582 Copyright (C) 2005-* Olivia Mackall and others (glob)
583 This is free software; see the source for copying conditions. There is NO
583 This is free software; see the source for copying conditions. There is NO
584 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
584 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
585
585
586 $ hg add --skjdfks
586 $ hg add --skjdfks
587 hg add: option --skjdfks not recognized
587 hg add: option --skjdfks not recognized
588 hg add [OPTION]... [FILE]...
588 hg add [OPTION]... [FILE]...
589
589
590 add the specified files on the next commit
590 add the specified files on the next commit
591
591
592 options ([+] can be repeated):
592 options ([+] can be repeated):
593
593
594 -I --include PATTERN [+] include names matching the given patterns
594 -I --include PATTERN [+] include names matching the given patterns
595 -X --exclude PATTERN [+] exclude names matching the given patterns
595 -X --exclude PATTERN [+] exclude names matching the given patterns
596 -S --subrepos recurse into subrepositories
596 -S --subrepos recurse into subrepositories
597 -n --dry-run do not perform actions, just print output
597 -n --dry-run do not perform actions, just print output
598
598
599 (use 'hg add -h' to show more help)
599 (use 'hg add -h' to show more help)
600 [10]
600 [10]
601
601
602 Test ambiguous command help
602 Test ambiguous command help
603
603
604 $ hg help ad
604 $ hg help ad
605 list of commands:
605 list of commands:
606
606
607 add add the specified files on the next commit
607 add add the specified files on the next commit
608 addremove add all new files, delete all missing files
608 addremove add all new files, delete all missing files
609
609
610 (use 'hg help -v ad' to show built-in aliases and global options)
610 (use 'hg help -v ad' to show built-in aliases and global options)
611
611
612 Test command without options
612 Test command without options
613
613
614 $ hg help verify
614 $ hg help verify
615 hg verify
615 hg verify
616
616
617 verify the integrity of the repository
617 verify the integrity of the repository
618
618
619 Verify the integrity of the current repository.
619 Verify the integrity of the current repository.
620
620
621 This will perform an extensive check of the repository's integrity,
621 This will perform an extensive check of the repository's integrity,
622 validating the hashes and checksums of each entry in the changelog,
622 validating the hashes and checksums of each entry in the changelog,
623 manifest, and tracked files, as well as the integrity of their crosslinks
623 manifest, and tracked files, as well as the integrity of their crosslinks
624 and indices.
624 and indices.
625
625
626 Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
626 Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
627 information about recovery from corruption of the repository.
627 information about recovery from corruption of the repository.
628
628
629 Returns 0 on success, 1 if errors are encountered.
629 Returns 0 on success, 1 if errors are encountered.
630
630
631 options:
631 options:
632
632
633 (some details hidden, use --verbose to show complete help)
633 (some details hidden, use --verbose to show complete help)
634
634
635 $ hg help diff
635 $ hg help diff
636 hg diff [OPTION]... ([-c REV] | [--from REV1] [--to REV2]) [FILE]...
636 hg diff [OPTION]... ([-c REV] | [--from REV1] [--to REV2]) [FILE]...
637
637
638 diff repository (or selected files)
638 diff repository (or selected files)
639
639
640 Show differences between revisions for the specified files.
640 Show differences between revisions for the specified files.
641
641
642 Differences between files are shown using the unified diff format.
642 Differences between files are shown using the unified diff format.
643
643
644 Note:
644 Note:
645 'hg diff' may generate unexpected results for merges, as it will
645 'hg diff' may generate unexpected results for merges, as it will
646 default to comparing against the working directory's first parent
646 default to comparing against the working directory's first parent
647 changeset if no revisions are specified. To diff against the conflict
647 changeset if no revisions are specified. To diff against the conflict
648 regions, you can use '--config diff.merge=yes'.
648 regions, you can use '--config diff.merge=yes'.
649
649
650 By default, the working directory files are compared to its first parent.
650 By default, the working directory files are compared to its first parent.
651 To see the differences from another revision, use --from. To see the
651 To see the differences from another revision, use --from. To see the
652 difference to another revision, use --to. For example, 'hg diff --from .^'
652 difference to another revision, use --to. For example, 'hg diff --from .^'
653 will show the differences from the working copy's grandparent to the
653 will show the differences from the working copy's grandparent to the
654 working copy, 'hg diff --to .' will show the diff from the working copy to
654 working copy, 'hg diff --to .' will show the diff from the working copy to
655 its parent (i.e. the reverse of the default), and 'hg diff --from 1.0 --to
655 its parent (i.e. the reverse of the default), and 'hg diff --from 1.0 --to
656 1.2' will show the diff between those two revisions.
656 1.2' will show the diff between those two revisions.
657
657
658 Alternatively you can specify -c/--change with a revision to see the
658 Alternatively you can specify -c/--change with a revision to see the
659 changes in that changeset relative to its first parent (i.e. 'hg diff -c
659 changes in that changeset relative to its first parent (i.e. 'hg diff -c
660 42' is equivalent to 'hg diff --from 42^ --to 42')
660 42' is equivalent to 'hg diff --from 42^ --to 42')
661
661
662 Without the -a/--text option, diff will avoid generating diffs of files it
662 Without the -a/--text option, diff will avoid generating diffs of files it
663 detects as binary. With -a, diff will generate a diff anyway, probably
663 detects as binary. With -a, diff will generate a diff anyway, probably
664 with undesirable results.
664 with undesirable results.
665
665
666 Use the -g/--git option to generate diffs in the git extended diff format.
666 Use the -g/--git option to generate diffs in the git extended diff format.
667 For more information, read 'hg help diffs'.
667 For more information, read 'hg help diffs'.
668
668
669 Returns 0 on success.
669 Returns 0 on success.
670
670
671 options ([+] can be repeated):
671 options ([+] can be repeated):
672
672
673 --from REV1 revision to diff from
673 --from REV1 revision to diff from
674 --to REV2 revision to diff to
674 --to REV2 revision to diff to
675 -c --change REV change made by revision
675 -c --change REV change made by revision
676 -a --text treat all files as text
676 -a --text treat all files as text
677 -g --git use git extended diff format
677 -g --git use git extended diff format
678 --binary generate binary diffs in git mode (default)
678 --binary generate binary diffs in git mode (default)
679 --nodates omit dates from diff headers
679 --nodates omit dates from diff headers
680 --noprefix omit a/ and b/ prefixes from filenames
680 --noprefix omit a/ and b/ prefixes from filenames
681 -p --show-function show which function each change is in
681 -p --show-function show which function each change is in
682 --reverse produce a diff that undoes the changes
682 --reverse produce a diff that undoes the changes
683 -w --ignore-all-space ignore white space when comparing lines
683 -w --ignore-all-space ignore white space when comparing lines
684 -b --ignore-space-change ignore changes in the amount of white space
684 -b --ignore-space-change ignore changes in the amount of white space
685 -B --ignore-blank-lines ignore changes whose lines are all blank
685 -B --ignore-blank-lines ignore changes whose lines are all blank
686 -Z --ignore-space-at-eol ignore changes in whitespace at EOL
686 -Z --ignore-space-at-eol ignore changes in whitespace at EOL
687 -U --unified NUM number of lines of context to show
687 -U --unified NUM number of lines of context to show
688 --stat output diffstat-style summary of changes
688 --stat output diffstat-style summary of changes
689 --root DIR produce diffs relative to subdirectory
689 --root DIR produce diffs relative to subdirectory
690 -I --include PATTERN [+] include names matching the given patterns
690 -I --include PATTERN [+] include names matching the given patterns
691 -X --exclude PATTERN [+] exclude names matching the given patterns
691 -X --exclude PATTERN [+] exclude names matching the given patterns
692 -S --subrepos recurse into subrepositories
692 -S --subrepos recurse into subrepositories
693
693
694 (some details hidden, use --verbose to show complete help)
694 (some details hidden, use --verbose to show complete help)
695
695
696 $ hg help status
696 $ hg help status
697 hg status [OPTION]... [FILE]...
697 hg status [OPTION]... [FILE]...
698
698
699 aliases: st
699 aliases: st
700
700
701 show changed files in the working directory
701 show changed files in the working directory
702
702
703 Show status of files in the repository. If names are given, only files
703 Show status of files in the repository. If names are given, only files
704 that match are shown. Files that are clean or ignored or the source of a
704 that match are shown. Files that are clean or ignored or the source of a
705 copy/move operation, are not listed unless -c/--clean, -i/--ignored,
705 copy/move operation, are not listed unless -c/--clean, -i/--ignored,
706 -C/--copies or -A/--all are given. Unless options described with "show
706 -C/--copies or -A/--all are given. Unless options described with "show
707 only ..." are given, the options -mardu are used.
707 only ..." are given, the options -mardu are used.
708
708
709 Option -q/--quiet hides untracked (unknown and ignored) files unless
709 Option -q/--quiet hides untracked (unknown and ignored) files unless
710 explicitly requested with -u/--unknown or -i/--ignored.
710 explicitly requested with -u/--unknown or -i/--ignored.
711
711
712 Note:
712 Note:
713 'hg status' may appear to disagree with diff if permissions have
713 'hg status' may appear to disagree with diff if permissions have
714 changed or a merge has occurred. The standard diff format does not
714 changed or a merge has occurred. The standard diff format does not
715 report permission changes and diff only reports changes relative to one
715 report permission changes and diff only reports changes relative to one
716 merge parent.
716 merge parent.
717
717
718 If one revision is given, it is used as the base revision. If two
718 If one revision is given, it is used as the base revision. If two
719 revisions are given, the differences between them are shown. The --change
719 revisions are given, the differences between them are shown. The --change
720 option can also be used as a shortcut to list the changed files of a
720 option can also be used as a shortcut to list the changed files of a
721 revision from its first parent.
721 revision from its first parent.
722
722
723 The codes used to show the status of files are:
723 The codes used to show the status of files are:
724
724
725 M = modified
725 M = modified
726 A = added
726 A = added
727 R = removed
727 R = removed
728 C = clean
728 C = clean
729 ! = missing (deleted by non-hg command, but still tracked)
729 ! = missing (deleted by non-hg command, but still tracked)
730 ? = not tracked
730 ? = not tracked
731 I = ignored
731 I = ignored
732 = origin of the previous file (with --copies)
732 = origin of the previous file (with --copies)
733
733
734 Returns 0 on success.
734 Returns 0 on success.
735
735
736 options ([+] can be repeated):
736 options ([+] can be repeated):
737
737
738 -A --all show status of all files
738 -A --all show status of all files
739 -m --modified show only modified files
739 -m --modified show only modified files
740 -a --added show only added files
740 -a --added show only added files
741 -r --removed show only removed files
741 -r --removed show only removed files
742 -d --deleted show only missing files
742 -d --deleted show only missing files
743 -c --clean show only files without changes
743 -c --clean show only files without changes
744 -u --unknown show only unknown (not tracked) files
744 -u --unknown show only unknown (not tracked) files
745 -i --ignored show only ignored files
745 -i --ignored show only ignored files
746 -n --no-status hide status prefix
746 -n --no-status hide status prefix
747 -C --copies show source of copied files
747 -C --copies show source of copied files
748 -0 --print0 end filenames with NUL, for use with xargs
748 -0 --print0 end filenames with NUL, for use with xargs
749 --rev REV [+] show difference from revision
749 --rev REV [+] show difference from revision
750 --change REV list the changed files of a revision
750 --change REV list the changed files of a revision
751 -I --include PATTERN [+] include names matching the given patterns
751 -I --include PATTERN [+] include names matching the given patterns
752 -X --exclude PATTERN [+] exclude names matching the given patterns
752 -X --exclude PATTERN [+] exclude names matching the given patterns
753 -S --subrepos recurse into subrepositories
753 -S --subrepos recurse into subrepositories
754 -T --template TEMPLATE display with template
754 -T --template TEMPLATE display with template
755
755
756 (some details hidden, use --verbose to show complete help)
756 (some details hidden, use --verbose to show complete help)
757
757
758 $ hg -q help status
758 $ hg -q help status
759 hg status [OPTION]... [FILE]...
759 hg status [OPTION]... [FILE]...
760
760
761 show changed files in the working directory
761 show changed files in the working directory
762
762
763 $ hg help foo
763 $ hg help foo
764 abort: no such help topic: foo
764 abort: no such help topic: foo
765 (try 'hg help --keyword foo')
765 (try 'hg help --keyword foo')
766 [10]
766 [10]
767
767
768 $ hg skjdfks
768 $ hg skjdfks
769 hg: unknown command 'skjdfks'
769 hg: unknown command 'skjdfks'
770 (use 'hg help' for a list of commands)
770 (use 'hg help' for a list of commands)
771 [10]
771 [10]
772
772
773 Typoed command gives suggestion
773 Typoed command gives suggestion
774 $ hg puls
774 $ hg puls
775 hg: unknown command 'puls'
775 hg: unknown command 'puls'
776 (did you mean one of pull, push?)
776 (did you mean one of pull, push?)
777 [10]
777 [10]
778
778
779 Not enabled extension gets suggested
779 Not enabled extension gets suggested
780
780
781 $ hg rebase
781 $ hg rebase
782 hg: unknown command 'rebase'
782 hg: unknown command 'rebase'
783 'rebase' is provided by the following extension:
783 'rebase' is provided by the following extension:
784
784
785 rebase command to move sets of revisions to a different ancestor
785 rebase command to move sets of revisions to a different ancestor
786
786
787 (use 'hg help extensions' for information on enabling extensions)
787 (use 'hg help extensions' for information on enabling extensions)
788 [10]
788 [10]
789
789
790 Disabled extension gets suggested
790 Disabled extension gets suggested
791 $ hg --config extensions.rebase=! rebase
791 $ hg --config extensions.rebase=! rebase
792 hg: unknown command 'rebase'
792 hg: unknown command 'rebase'
793 'rebase' is provided by the following extension:
793 'rebase' is provided by the following extension:
794
794
795 rebase command to move sets of revisions to a different ancestor
795 rebase command to move sets of revisions to a different ancestor
796
796
797 (use 'hg help extensions' for information on enabling extensions)
797 (use 'hg help extensions' for information on enabling extensions)
798 [10]
798 [10]
799
799
800 Checking that help adapts based on the config:
800 Checking that help adapts based on the config:
801
801
802 $ hg help diff --config ui.tweakdefaults=true | egrep -e '^ *(-g|config)'
802 $ hg help diff --config ui.tweakdefaults=true | egrep -e '^ *(-g|config)'
803 -g --[no-]git use git extended diff format (default: on from
803 -g --[no-]git use git extended diff format (default: on from
804 config)
804 config)
805
805
806 Make sure that we don't run afoul of the help system thinking that
806 Make sure that we don't run afoul of the help system thinking that
807 this is a section and erroring out weirdly.
807 this is a section and erroring out weirdly.
808
808
809 $ hg .log
809 $ hg .log
810 hg: unknown command '.log'
810 hg: unknown command '.log'
811 (did you mean log?)
811 (did you mean log?)
812 [10]
812 [10]
813
813
814 $ hg log.
814 $ hg log.
815 hg: unknown command 'log.'
815 hg: unknown command 'log.'
816 (did you mean log?)
816 (did you mean log?)
817 [10]
817 [10]
818 $ hg pu.lh
818 $ hg pu.lh
819 hg: unknown command 'pu.lh'
819 hg: unknown command 'pu.lh'
820 (did you mean one of pull, push?)
820 (did you mean one of pull, push?)
821 [10]
821 [10]
822
822
823 $ cat > helpext.py <<EOF
823 $ cat > helpext.py <<EOF
824 > import os
824 > import os
825 > from mercurial import commands, fancyopts, registrar
825 > from mercurial import commands, fancyopts, registrar
826 >
826 >
827 > def func(arg):
827 > def func(arg):
828 > return '%sfoo' % arg
828 > return '%sfoo' % arg
829 > class customopt(fancyopts.customopt):
829 > class customopt(fancyopts.customopt):
830 > def newstate(self, oldstate, newparam, abort):
830 > def newstate(self, oldstate, newparam, abort):
831 > return '%sbar' % oldstate
831 > return '%sbar' % oldstate
832 > cmdtable = {}
832 > cmdtable = {}
833 > command = registrar.command(cmdtable)
833 > command = registrar.command(cmdtable)
834 >
834 >
835 > @command(b'nohelp',
835 > @command(b'nohelp',
836 > [(b'', b'longdesc', 3, b'x'*67),
836 > [(b'', b'longdesc', 3, b'x'*67),
837 > (b'n', b'', None, b'normal desc'),
837 > (b'n', b'', None, b'normal desc'),
838 > (b'', b'newline', b'', b'line1\nline2'),
838 > (b'', b'newline', b'', b'line1\nline2'),
839 > (b'', b'default-off', False, b'enable X'),
839 > (b'', b'default-off', False, b'enable X'),
840 > (b'', b'default-on', True, b'enable Y'),
840 > (b'', b'default-on', True, b'enable Y'),
841 > (b'', b'callableopt', func, b'adds foo'),
841 > (b'', b'callableopt', func, b'adds foo'),
842 > (b'', b'customopt', customopt(''), b'adds bar'),
842 > (b'', b'customopt', customopt(''), b'adds bar'),
843 > (b'', b'customopt-withdefault', customopt('foo'), b'adds bar')],
843 > (b'', b'customopt-withdefault', customopt('foo'), b'adds bar')],
844 > b'hg nohelp',
844 > b'hg nohelp',
845 > norepo=True)
845 > norepo=True)
846 > @command(b'debugoptADV', [(b'', b'aopt', None, b'option is (ADVANCED)')])
846 > @command(b'debugoptADV', [(b'', b'aopt', None, b'option is (ADVANCED)')])
847 > @command(b'debugoptDEP', [(b'', b'dopt', None, b'option is (DEPRECATED)')])
847 > @command(b'debugoptDEP', [(b'', b'dopt', None, b'option is (DEPRECATED)')])
848 > @command(b'debugoptEXP', [(b'', b'eopt', None, b'option is (EXPERIMENTAL)')])
848 > @command(b'debugoptEXP', [(b'', b'eopt', None, b'option is (EXPERIMENTAL)')])
849 > def nohelp(ui, *args, **kwargs):
849 > def nohelp(ui, *args, **kwargs):
850 > pass
850 > pass
851 >
851 >
852 > @command(b'hashelp', [], b'hg hashelp', norepo=True)
852 > @command(b'hashelp', [], b'hg hashelp', norepo=True)
853 > def hashelp(ui, *args, **kwargs):
853 > def hashelp(ui, *args, **kwargs):
854 > """Extension command's help"""
854 > """Extension command's help"""
855 >
855 >
856 > def uisetup(ui):
856 > def uisetup(ui):
857 > ui.setconfig(b'alias', b'shellalias', b'!echo hi', b'helpext')
857 > ui.setconfig(b'alias', b'shellalias', b'!echo hi', b'helpext')
858 > ui.setconfig(b'alias', b'hgalias', b'summary', b'helpext')
858 > ui.setconfig(b'alias', b'hgalias', b'summary', b'helpext')
859 > ui.setconfig(b'alias', b'hgalias:doc', b'My doc', b'helpext')
859 > ui.setconfig(b'alias', b'hgalias:doc', b'My doc', b'helpext')
860 > ui.setconfig(b'alias', b'hgalias:category', b'navigation', b'helpext')
860 > ui.setconfig(b'alias', b'hgalias:category', b'navigation', b'helpext')
861 > ui.setconfig(b'alias', b'hgaliasnodoc', b'summary', b'helpext')
861 > ui.setconfig(b'alias', b'hgaliasnodoc', b'summary', b'helpext')
862 >
862 >
863 > EOF
863 > EOF
864 $ echo '[extensions]' >> $HGRCPATH
864 $ echo '[extensions]' >> $HGRCPATH
865 $ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
865 $ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
866
866
867 Test for aliases
867 Test for aliases
868
868
869 $ hg help | grep hgalias
869 $ hg help | grep hgalias
870 hgalias My doc
870 hgalias My doc
871
871
872 $ hg help hgalias
872 $ hg help hgalias
873 hg hgalias [--remote]
873 hg hgalias [--remote]
874
874
875 alias for: hg summary
875 alias for: hg summary
876
876
877 My doc
877 My doc
878
878
879 defined by: helpext
879 defined by: helpext
880
880
881 options:
881 options:
882
882
883 --remote check for push and pull
883 --remote check for push and pull
884
884
885 (some details hidden, use --verbose to show complete help)
885 (some details hidden, use --verbose to show complete help)
886 $ hg help hgaliasnodoc
886 $ hg help hgaliasnodoc
887 hg hgaliasnodoc [--remote]
887 hg hgaliasnodoc [--remote]
888
888
889 alias for: hg summary
889 alias for: hg summary
890
890
891 summarize working directory state
891 summarize working directory state
892
892
893 This generates a brief summary of the working directory state, including
893 This generates a brief summary of the working directory state, including
894 parents, branch, commit status, phase and available updates.
894 parents, branch, commit status, phase and available updates.
895
895
896 With the --remote option, this will check the default paths for incoming
896 With the --remote option, this will check the default paths for incoming
897 and outgoing changes. This can be time-consuming.
897 and outgoing changes. This can be time-consuming.
898
898
899 Returns 0 on success.
899 Returns 0 on success.
900
900
901 defined by: helpext
901 defined by: helpext
902
902
903 options:
903 options:
904
904
905 --remote check for push and pull
905 --remote check for push and pull
906
906
907 (some details hidden, use --verbose to show complete help)
907 (some details hidden, use --verbose to show complete help)
908
908
909 $ hg help shellalias
909 $ hg help shellalias
910 hg shellalias
910 hg shellalias
911
911
912 shell alias for: echo hi
912 shell alias for: echo hi
913
913
914 (no help text available)
914 (no help text available)
915
915
916 defined by: helpext
916 defined by: helpext
917
917
918 (some details hidden, use --verbose to show complete help)
918 (some details hidden, use --verbose to show complete help)
919
919
920 Test command with no help text
920 Test command with no help text
921
921
922 $ hg help nohelp
922 $ hg help nohelp
923 hg nohelp
923 hg nohelp
924
924
925 (no help text available)
925 (no help text available)
926
926
927 options:
927 options:
928
928
929 --longdesc VALUE
929 --longdesc VALUE
930 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
930 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
931 xxxxxxxxxxxxxxxxxxxxxxx (default: 3)
931 xxxxxxxxxxxxxxxxxxxxxxx (default: 3)
932 -n -- normal desc
932 -n -- normal desc
933 --newline VALUE line1 line2
933 --newline VALUE line1 line2
934 --default-off enable X
934 --default-off enable X
935 --[no-]default-on enable Y (default: on)
935 --[no-]default-on enable Y (default: on)
936 --callableopt VALUE adds foo
936 --callableopt VALUE adds foo
937 --customopt VALUE adds bar
937 --customopt VALUE adds bar
938 --customopt-withdefault VALUE adds bar (default: foo)
938 --customopt-withdefault VALUE adds bar (default: foo)
939
939
940 (some details hidden, use --verbose to show complete help)
940 (some details hidden, use --verbose to show complete help)
941
941
942 Test that default list of commands includes extension commands that have help,
942 Test that default list of commands includes extension commands that have help,
943 but not those that don't, except in verbose mode, when a keyword is passed, or
943 but not those that don't, except in verbose mode, when a keyword is passed, or
944 when help about the extension is requested.
944 when help about the extension is requested.
945
945
946 #if no-extraextensions
946 #if no-extraextensions
947
947
948 $ hg help | grep hashelp
948 $ hg help | grep hashelp
949 hashelp Extension command's help
949 hashelp Extension command's help
950 $ hg help | grep nohelp
950 $ hg help | grep nohelp
951 [1]
951 [1]
952 $ hg help -v | grep nohelp
952 $ hg help -v | grep nohelp
953 nohelp (no help text available)
953 nohelp (no help text available)
954
954
955 $ hg help -k nohelp
955 $ hg help -k nohelp
956 Commands:
956 Commands:
957
957
958 nohelp hg nohelp
958 nohelp hg nohelp
959
959
960 Extension Commands:
960 Extension Commands:
961
961
962 nohelp (no help text available)
962 nohelp (no help text available)
963
963
964 $ hg help helpext
964 $ hg help helpext
965 helpext extension - no help text available
965 helpext extension - no help text available
966
966
967 list of commands:
967 list of commands:
968
968
969 hashelp Extension command's help
969 hashelp Extension command's help
970 nohelp (no help text available)
970 nohelp (no help text available)
971
971
972 (use 'hg help -v helpext' to show built-in aliases and global options)
972 (use 'hg help -v helpext' to show built-in aliases and global options)
973
973
974 #endif
974 #endif
975
975
976 Test list of internal help commands
976 Test list of internal help commands
977
977
978 $ hg help debug
978 $ hg help debug
979 debug commands (internal and unsupported):
979 debug commands (internal and unsupported):
980
980
981 debug-delta-find
981 debug-delta-find
982 display the computation to get to a valid delta for storing REV
982 display the computation to get to a valid delta for storing REV
983 debug-repair-issue6528
983 debug-repair-issue6528
984 find affected revisions and repair them. See issue6528 for more
984 find affected revisions and repair them. See issue6528 for more
985 details.
985 details.
986 debug-revlog-index
986 debug-revlog-index
987 dump index data for a revlog
987 dump index data for a revlog
988 debugancestor
988 debugancestor
989 find the ancestor revision of two revisions in a given index
989 find the ancestor revision of two revisions in a given index
990 debugantivirusrunning
990 debugantivirusrunning
991 attempt to trigger an antivirus scanner to see if one is active
991 attempt to trigger an antivirus scanner to see if one is active
992 debugapplystreamclonebundle
992 debugapplystreamclonebundle
993 apply a stream clone bundle file
993 apply a stream clone bundle file
994 debugbackupbundle
994 debugbackupbundle
995 lists the changesets available in backup bundles
995 lists the changesets available in backup bundles
996 debugbuilddag
996 debugbuilddag
997 builds a repo with a given DAG from scratch in the current
997 builds a repo with a given DAG from scratch in the current
998 empty repo
998 empty repo
999 debugbundle lists the contents of a bundle
999 debugbundle lists the contents of a bundle
1000 debugcapabilities
1000 debugcapabilities
1001 lists the capabilities of a remote peer
1001 lists the capabilities of a remote peer
1002 debugchangedfiles
1002 debugchangedfiles
1003 list the stored files changes for a revision
1003 list the stored files changes for a revision
1004 debugcheckstate
1004 debugcheckstate
1005 validate the correctness of the current dirstate
1005 validate the correctness of the current dirstate
1006 debugcolor show available color, effects or style
1006 debugcolor show available color, effects or style
1007 debugcommands
1007 debugcommands
1008 list all available commands and options
1008 list all available commands and options
1009 debugcomplete
1009 debugcomplete
1010 returns the completion list associated with the given command
1010 returns the completion list associated with the given command
1011 debugcreatestreamclonebundle
1011 debugcreatestreamclonebundle
1012 create a stream clone bundle file
1012 create a stream clone bundle file
1013 debugdag format the changelog or an index DAG as a concise textual
1013 debugdag format the changelog or an index DAG as a concise textual
1014 description
1014 description
1015 debugdata dump the contents of a data file revision
1015 debugdata dump the contents of a data file revision
1016 debugdate parse and display a date
1016 debugdate parse and display a date
1017 debugdeltachain
1017 debugdeltachain
1018 dump information about delta chains in a revlog
1018 dump information about delta chains in a revlog
1019 debugdirstate
1019 debugdirstate
1020 show the contents of the current dirstate
1020 show the contents of the current dirstate
1021 debugdirstateignorepatternshash
1021 debugdirstateignorepatternshash
1022 show the hash of ignore patterns stored in dirstate if v2,
1022 show the hash of ignore patterns stored in dirstate if v2,
1023 debugdiscovery
1023 debugdiscovery
1024 runs the changeset discovery protocol in isolation
1024 runs the changeset discovery protocol in isolation
1025 debugdownload
1025 debugdownload
1026 download a resource using Mercurial logic and config
1026 download a resource using Mercurial logic and config
1027 debugextensions
1027 debugextensions
1028 show information about active extensions
1028 show information about active extensions
1029 debugfileset parse and apply a fileset specification
1029 debugfileset parse and apply a fileset specification
1030 debugformat display format information about the current repository
1030 debugformat display format information about the current repository
1031 debugfsinfo show information detected about current filesystem
1031 debugfsinfo show information detected about current filesystem
1032 debuggetbundle
1032 debuggetbundle
1033 retrieves a bundle from a repo
1033 retrieves a bundle from a repo
1034 debugignore display the combined ignore pattern and information about
1034 debugignore display the combined ignore pattern and information about
1035 ignored files
1035 ignored files
1036 debugindexdot
1036 debugindexdot
1037 dump an index DAG as a graphviz dot file
1037 dump an index DAG as a graphviz dot file
1038 debugindexstats
1038 debugindexstats
1039 show stats related to the changelog index
1039 show stats related to the changelog index
1040 debuginstall test Mercurial installation
1040 debuginstall test Mercurial installation
1041 debugknown test whether node ids are known to a repo
1041 debugknown test whether node ids are known to a repo
1042 debuglocks show or modify state of locks
1042 debuglocks show or modify state of locks
1043 debugmanifestfulltextcache
1043 debugmanifestfulltextcache
1044 show, clear or amend the contents of the manifest fulltext
1044 show, clear or amend the contents of the manifest fulltext
1045 cache
1045 cache
1046 debugmergestate
1046 debugmergestate
1047 print merge state
1047 print merge state
1048 debugnamecomplete
1048 debugnamecomplete
1049 complete "names" - tags, open branch names, bookmark names
1049 complete "names" - tags, open branch names, bookmark names
1050 debugnodemap write and inspect on disk nodemap
1050 debugnodemap write and inspect on disk nodemap
1051 debugobsolete
1051 debugobsolete
1052 create arbitrary obsolete marker
1052 create arbitrary obsolete marker
1053 debugoptADV (no help text available)
1053 debugoptADV (no help text available)
1054 debugoptDEP (no help text available)
1054 debugoptDEP (no help text available)
1055 debugoptEXP (no help text available)
1055 debugoptEXP (no help text available)
1056 debugp1copies
1056 debugp1copies
1057 dump copy information compared to p1
1057 dump copy information compared to p1
1058 debugp2copies
1058 debugp2copies
1059 dump copy information compared to p2
1059 dump copy information compared to p2
1060 debugpathcomplete
1060 debugpathcomplete
1061 complete part or all of a tracked path
1061 complete part or all of a tracked path
1062 debugpathcopies
1062 debugpathcopies
1063 show copies between two revisions
1063 show copies between two revisions
1064 debugpeer establish a connection to a peer repository
1064 debugpeer establish a connection to a peer repository
1065 debugpickmergetool
1065 debugpickmergetool
1066 examine which merge tool is chosen for specified file
1066 examine which merge tool is chosen for specified file
1067 debugpushkey access the pushkey key/value protocol
1067 debugpushkey access the pushkey key/value protocol
1068 debugpvec (no help text available)
1068 debugpvec (no help text available)
1069 debugrebuilddirstate
1069 debugrebuilddirstate
1070 rebuild the dirstate as it would look like for the given
1070 rebuild the dirstate as it would look like for the given
1071 revision
1071 revision
1072 debugrebuildfncache
1072 debugrebuildfncache
1073 rebuild the fncache file
1073 rebuild the fncache file
1074 debugrename dump rename information
1074 debugrename dump rename information
1075 debugrequires
1075 debugrequires
1076 print the current repo requirements
1076 print the current repo requirements
1077 debugrevlog show data and statistics about a revlog
1077 debugrevlog show data and statistics about a revlog
1078 debugrevlogindex
1078 debugrevlogindex
1079 dump the contents of a revlog index
1079 dump the contents of a revlog index
1080 debugrevspec parse and apply a revision specification
1080 debugrevspec parse and apply a revision specification
1081 debugserve run a server with advanced settings
1081 debugserve run a server with advanced settings
1082 debugsetparents
1082 debugsetparents
1083 manually set the parents of the current working directory
1083 manually set the parents of the current working directory
1084 (DANGEROUS)
1084 (DANGEROUS)
1085 debugshell run an interactive Python interpreter
1085 debugshell run an interactive Python interpreter
1086 debugsidedata
1086 debugsidedata
1087 dump the side data for a cl/manifest/file revision
1087 dump the side data for a cl/manifest/file revision
1088 debugssl test a secure connection to a server
1088 debugssl test a secure connection to a server
1089 debugstrip strip changesets and all their descendants from the repository
1089 debugstrip strip changesets and all their descendants from the repository
1090 debugsub (no help text available)
1090 debugsub (no help text available)
1091 debugsuccessorssets
1091 debugsuccessorssets
1092 show set of successors for revision
1092 show set of successors for revision
1093 debugtagscache
1093 debugtagscache
1094 display the contents of .hg/cache/hgtagsfnodes1
1094 display the contents of .hg/cache/hgtagsfnodes1
1095 debugtemplate
1095 debugtemplate
1096 parse and apply a template
1096 parse and apply a template
1097 debuguigetpass
1097 debuguigetpass
1098 show prompt to type password
1098 show prompt to type password
1099 debuguiprompt
1099 debuguiprompt
1100 show plain prompt
1100 show plain prompt
1101 debugupdatecaches
1101 debugupdatecaches
1102 warm all known caches in the repository
1102 warm all known caches in the repository
1103 debugupgraderepo
1103 debugupgraderepo
1104 upgrade a repository to use different features
1104 upgrade a repository to use different features
1105 debugwalk show how files match on given patterns
1105 debugwalk show how files match on given patterns
1106 debugwhyunstable
1106 debugwhyunstable
1107 explain instabilities of a changeset
1107 explain instabilities of a changeset
1108 debugwireargs
1108 debugwireargs
1109 (no help text available)
1109 (no help text available)
1110 debugwireproto
1110 debugwireproto
1111 send wire protocol commands to a server
1111 send wire protocol commands to a server
1112
1112
1113 (use 'hg help -v debug' to show built-in aliases and global options)
1113 (use 'hg help -v debug' to show built-in aliases and global options)
1114
1114
1115 internals topic renders index of available sub-topics
1115 internals topic renders index of available sub-topics
1116
1116
1117 $ hg help internals
1117 $ hg help internals
1118 Technical implementation topics
1118 Technical implementation topics
1119 """""""""""""""""""""""""""""""
1119 """""""""""""""""""""""""""""""
1120
1120
1121 To access a subtopic, use "hg help internals.{subtopic-name}"
1121 To access a subtopic, use "hg help internals.{subtopic-name}"
1122
1122
1123 bid-merge Bid Merge Algorithm
1123 bid-merge Bid Merge Algorithm
1124 bundle2 Bundle2
1124 bundle2 Bundle2
1125 bundles Bundles
1125 bundles Bundles
1126 cbor CBOR
1126 cbor CBOR
1127 censor Censor
1127 censor Censor
1128 changegroups Changegroups
1128 changegroups Changegroups
1129 config Config Registrar
1129 config Config Registrar
1130 dirstate-v2 dirstate-v2 file format
1130 dirstate-v2 dirstate-v2 file format
1131 extensions Extension API
1131 extensions Extension API
1132 mergestate Mergestate
1132 mergestate Mergestate
1133 requirements Repository Requirements
1133 requirements Repository Requirements
1134 revlogs Revision Logs
1134 revlogs Revision Logs
1135 wireprotocol Wire Protocol
1135 wireprotocol Wire Protocol
1136 wireprotocolrpc
1136 wireprotocolrpc
1137 Wire Protocol RPC
1137 Wire Protocol RPC
1138 wireprotocolv2
1138 wireprotocolv2
1139 Wire Protocol Version 2
1139 Wire Protocol Version 2
1140
1140
1141 sub-topics can be accessed
1141 sub-topics can be accessed
1142
1142
1143 $ hg help internals.changegroups
1143 $ hg help internals.changegroups
1144 Changegroups
1144 Changegroups
1145 """"""""""""
1145 """"""""""""
1146
1146
1147 Changegroups are representations of repository revlog data, specifically
1147 Changegroups are representations of repository revlog data, specifically
1148 the changelog data, root/flat manifest data, treemanifest data, and
1148 the changelog data, root/flat manifest data, treemanifest data, and
1149 filelogs.
1149 filelogs.
1150
1150
1151 There are 4 versions of changegroups: "1", "2", "3" and "4". From a high-
1151 There are 4 versions of changegroups: "1", "2", "3" and "4". From a high-
1152 level, versions "1" and "2" are almost exactly the same, with the only
1152 level, versions "1" and "2" are almost exactly the same, with the only
1153 difference being an additional item in the *delta header*. Version "3"
1153 difference being an additional item in the *delta header*. Version "3"
1154 adds support for storage flags in the *delta header* and optionally
1154 adds support for storage flags in the *delta header* and optionally
1155 exchanging treemanifests (enabled by setting an option on the
1155 exchanging treemanifests (enabled by setting an option on the
1156 "changegroup" part in the bundle2). Version "4" adds support for
1156 "changegroup" part in the bundle2). Version "4" adds support for
1157 exchanging sidedata (additional revision metadata not part of the digest).
1157 exchanging sidedata (additional revision metadata not part of the digest).
1158
1158
1159 Changegroups when not exchanging treemanifests consist of 3 logical
1159 Changegroups when not exchanging treemanifests consist of 3 logical
1160 segments:
1160 segments:
1161
1161
1162 +---------------------------------+
1162 +---------------------------------+
1163 | | | |
1163 | | | |
1164 | changeset | manifest | filelogs |
1164 | changeset | manifest | filelogs |
1165 | | | |
1165 | | | |
1166 | | | |
1166 | | | |
1167 +---------------------------------+
1167 +---------------------------------+
1168
1168
1169 When exchanging treemanifests, there are 4 logical segments:
1169 When exchanging treemanifests, there are 4 logical segments:
1170
1170
1171 +-------------------------------------------------+
1171 +-------------------------------------------------+
1172 | | | | |
1172 | | | | |
1173 | changeset | root | treemanifests | filelogs |
1173 | changeset | root | treemanifests | filelogs |
1174 | | manifest | | |
1174 | | manifest | | |
1175 | | | | |
1175 | | | | |
1176 +-------------------------------------------------+
1176 +-------------------------------------------------+
1177
1177
1178 The principle building block of each segment is a *chunk*. A *chunk* is a
1178 The principle building block of each segment is a *chunk*. A *chunk* is a
1179 framed piece of data:
1179 framed piece of data:
1180
1180
1181 +---------------------------------------+
1181 +---------------------------------------+
1182 | | |
1182 | | |
1183 | length | data |
1183 | length | data |
1184 | (4 bytes) | (<length - 4> bytes) |
1184 | (4 bytes) | (<length - 4> bytes) |
1185 | | |
1185 | | |
1186 +---------------------------------------+
1186 +---------------------------------------+
1187
1187
1188 All integers are big-endian signed integers. Each chunk starts with a
1188 All integers are big-endian signed integers. Each chunk starts with a
1189 32-bit integer indicating the length of the entire chunk (including the
1189 32-bit integer indicating the length of the entire chunk (including the
1190 length field itself).
1190 length field itself).
1191
1191
1192 There is a special case chunk that has a value of 0 for the length
1192 There is a special case chunk that has a value of 0 for the length
1193 ("0x00000000"). We call this an *empty chunk*.
1193 ("0x00000000"). We call this an *empty chunk*.
1194
1194
1195 Delta Groups
1195 Delta Groups
1196 ============
1196 ============
1197
1197
1198 A *delta group* expresses the content of a revlog as a series of deltas,
1198 A *delta group* expresses the content of a revlog as a series of deltas,
1199 or patches against previous revisions.
1199 or patches against previous revisions.
1200
1200
1201 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
1201 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
1202 to signal the end of the delta group:
1202 to signal the end of the delta group:
1203
1203
1204 +------------------------------------------------------------------------+
1204 +------------------------------------------------------------------------+
1205 | | | | | |
1205 | | | | | |
1206 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
1206 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
1207 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
1207 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
1208 | | | | | |
1208 | | | | | |
1209 +------------------------------------------------------------------------+
1209 +------------------------------------------------------------------------+
1210
1210
1211 Each *chunk*'s data consists of the following:
1211 Each *chunk*'s data consists of the following:
1212
1212
1213 +---------------------------------------+
1213 +---------------------------------------+
1214 | | |
1214 | | |
1215 | delta header | delta data |
1215 | delta header | delta data |
1216 | (various by version) | (various) |
1216 | (various by version) | (various) |
1217 | | |
1217 | | |
1218 +---------------------------------------+
1218 +---------------------------------------+
1219
1219
1220 The *delta data* is a series of *delta*s that describe a diff from an
1220 The *delta data* is a series of *delta*s that describe a diff from an
1221 existing entry (either that the recipient already has, or previously
1221 existing entry (either that the recipient already has, or previously
1222 specified in the bundle/changegroup).
1222 specified in the bundle/changegroup).
1223
1223
1224 The *delta header* is different between versions "1", "2", "3" and "4" of
1224 The *delta header* is different between versions "1", "2", "3" and "4" of
1225 the changegroup format.
1225 the changegroup format.
1226
1226
1227 Version 1 (headerlen=80):
1227 Version 1 (headerlen=80):
1228
1228
1229 +------------------------------------------------------+
1229 +------------------------------------------------------+
1230 | | | | |
1230 | | | | |
1231 | node | p1 node | p2 node | link node |
1231 | node | p1 node | p2 node | link node |
1232 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1232 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1233 | | | | |
1233 | | | | |
1234 +------------------------------------------------------+
1234 +------------------------------------------------------+
1235
1235
1236 Version 2 (headerlen=100):
1236 Version 2 (headerlen=100):
1237
1237
1238 +------------------------------------------------------------------+
1238 +------------------------------------------------------------------+
1239 | | | | | |
1239 | | | | | |
1240 | node | p1 node | p2 node | base node | link node |
1240 | node | p1 node | p2 node | base node | link node |
1241 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1241 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1242 | | | | | |
1242 | | | | | |
1243 +------------------------------------------------------------------+
1243 +------------------------------------------------------------------+
1244
1244
1245 Version 3 (headerlen=102):
1245 Version 3 (headerlen=102):
1246
1246
1247 +------------------------------------------------------------------------------+
1247 +------------------------------------------------------------------------------+
1248 | | | | | | |
1248 | | | | | | |
1249 | node | p1 node | p2 node | base node | link node | flags |
1249 | node | p1 node | p2 node | base node | link node | flags |
1250 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
1250 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
1251 | | | | | | |
1251 | | | | | | |
1252 +------------------------------------------------------------------------------+
1252 +------------------------------------------------------------------------------+
1253
1253
1254 Version 4 (headerlen=103):
1254 Version 4 (headerlen=103):
1255
1255
1256 +------------------------------------------------------------------------------+----------+
1256 +------------------------------------------------------------------------------+----------+
1257 | | | | | | | |
1257 | | | | | | | |
1258 | node | p1 node | p2 node | base node | link node | flags | pflags |
1258 | node | p1 node | p2 node | base node | link node | flags | pflags |
1259 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) | (1 byte) |
1259 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) | (1 byte) |
1260 | | | | | | | |
1260 | | | | | | | |
1261 +------------------------------------------------------------------------------+----------+
1261 +------------------------------------------------------------------------------+----------+
1262
1262
1263 The *delta data* consists of "chunklen - 4 - headerlen" bytes, which
1263 The *delta data* consists of "chunklen - 4 - headerlen" bytes, which
1264 contain a series of *delta*s, densely packed (no separators). These deltas
1264 contain a series of *delta*s, densely packed (no separators). These deltas
1265 describe a diff from an existing entry (either that the recipient already
1265 describe a diff from an existing entry (either that the recipient already
1266 has, or previously specified in the bundle/changegroup). The format is
1266 has, or previously specified in the bundle/changegroup). The format is
1267 described more fully in "hg help internals.bdiff", but briefly:
1267 described more fully in "hg help internals.bdiff", but briefly:
1268
1268
1269 +---------------------------------------------------------------+
1269 +---------------------------------------------------------------+
1270 | | | | |
1270 | | | | |
1271 | start offset | end offset | new length | content |
1271 | start offset | end offset | new length | content |
1272 | (4 bytes) | (4 bytes) | (4 bytes) | (<new length> bytes) |
1272 | (4 bytes) | (4 bytes) | (4 bytes) | (<new length> bytes) |
1273 | | | | |
1273 | | | | |
1274 +---------------------------------------------------------------+
1274 +---------------------------------------------------------------+
1275
1275
1276 Please note that the length field in the delta data does *not* include
1276 Please note that the length field in the delta data does *not* include
1277 itself.
1277 itself.
1278
1278
1279 In version 1, the delta is always applied against the previous node from
1279 In version 1, the delta is always applied against the previous node from
1280 the changegroup or the first parent if this is the first entry in the
1280 the changegroup or the first parent if this is the first entry in the
1281 changegroup.
1281 changegroup.
1282
1282
1283 In version 2 and up, the delta base node is encoded in the entry in the
1283 In version 2 and up, the delta base node is encoded in the entry in the
1284 changegroup. This allows the delta to be expressed against any parent,
1284 changegroup. This allows the delta to be expressed against any parent,
1285 which can result in smaller deltas and more efficient encoding of data.
1285 which can result in smaller deltas and more efficient encoding of data.
1286
1286
1287 The *flags* field holds bitwise flags affecting the processing of revision
1287 The *flags* field holds bitwise flags affecting the processing of revision
1288 data. The following flags are defined:
1288 data. The following flags are defined:
1289
1289
1290 32768
1290 32768
1291 Censored revision. The revision's fulltext has been replaced by censor
1291 Censored revision. The revision's fulltext has been replaced by censor
1292 metadata. May only occur on file revisions.
1292 metadata. May only occur on file revisions.
1293
1293
1294 16384
1294 16384
1295 Ellipsis revision. Revision hash does not match data (likely due to
1295 Ellipsis revision. Revision hash does not match data (likely due to
1296 rewritten parents).
1296 rewritten parents).
1297
1297
1298 8192
1298 8192
1299 Externally stored. The revision fulltext contains "key:value" "\n"
1299 Externally stored. The revision fulltext contains "key:value" "\n"
1300 delimited metadata defining an object stored elsewhere. Used by the LFS
1300 delimited metadata defining an object stored elsewhere. Used by the LFS
1301 extension.
1301 extension.
1302
1302
1303 4096
1303 4096
1304 Contains copy information. This revision changes files in a way that
1304 Contains copy information. This revision changes files in a way that
1305 could affect copy tracing. This does *not* affect changegroup handling,
1305 could affect copy tracing. This does *not* affect changegroup handling,
1306 but is relevant for other parts of Mercurial.
1306 but is relevant for other parts of Mercurial.
1307
1307
1308 For historical reasons, the integer values are identical to revlog version
1308 For historical reasons, the integer values are identical to revlog version
1309 1 per-revision storage flags and correspond to bits being set in this
1309 1 per-revision storage flags and correspond to bits being set in this
1310 2-byte field. Bits were allocated starting from the most-significant bit,
1310 2-byte field. Bits were allocated starting from the most-significant bit,
1311 hence the reverse ordering and allocation of these flags.
1311 hence the reverse ordering and allocation of these flags.
1312
1312
1313 The *pflags* (protocol flags) field holds bitwise flags affecting the
1313 The *pflags* (protocol flags) field holds bitwise flags affecting the
1314 protocol itself. They are first in the header since they may affect the
1314 protocol itself. They are first in the header since they may affect the
1315 handling of the rest of the fields in a future version. They are defined
1315 handling of the rest of the fields in a future version. They are defined
1316 as such:
1316 as such:
1317
1317
1318 1 indicates whether to read a chunk of sidedata (of variable length) right
1318 1 indicates whether to read a chunk of sidedata (of variable length) right
1319 after the revision flags.
1319 after the revision flags.
1320
1320
1321 Changeset Segment
1321 Changeset Segment
1322 =================
1322 =================
1323
1323
1324 The *changeset segment* consists of a single *delta group* holding
1324 The *changeset segment* consists of a single *delta group* holding
1325 changelog data. The *empty chunk* at the end of the *delta group* denotes
1325 changelog data. The *empty chunk* at the end of the *delta group* denotes
1326 the boundary to the *manifest segment*.
1326 the boundary to the *manifest segment*.
1327
1327
1328 Manifest Segment
1328 Manifest Segment
1329 ================
1329 ================
1330
1330
1331 The *manifest segment* consists of a single *delta group* holding manifest
1331 The *manifest segment* consists of a single *delta group* holding manifest
1332 data. If treemanifests are in use, it contains only the manifest for the
1332 data. If treemanifests are in use, it contains only the manifest for the
1333 root directory of the repository. Otherwise, it contains the entire
1333 root directory of the repository. Otherwise, it contains the entire
1334 manifest data. The *empty chunk* at the end of the *delta group* denotes
1334 manifest data. The *empty chunk* at the end of the *delta group* denotes
1335 the boundary to the next segment (either the *treemanifests segment* or
1335 the boundary to the next segment (either the *treemanifests segment* or
1336 the *filelogs segment*, depending on version and the request options).
1336 the *filelogs segment*, depending on version and the request options).
1337
1337
1338 Treemanifests Segment
1338 Treemanifests Segment
1339 ---------------------
1339 ---------------------
1340
1340
1341 The *treemanifests segment* only exists in changegroup version "3" and
1341 The *treemanifests segment* only exists in changegroup version "3" and
1342 "4", and only if the 'treemanifest' param is part of the bundle2
1342 "4", and only if the 'treemanifest' param is part of the bundle2
1343 changegroup part (it is not possible to use changegroup version 3 or 4
1343 changegroup part (it is not possible to use changegroup version 3 or 4
1344 outside of bundle2). Aside from the filenames in the *treemanifests
1344 outside of bundle2). Aside from the filenames in the *treemanifests
1345 segment* containing a trailing "/" character, it behaves identically to
1345 segment* containing a trailing "/" character, it behaves identically to
1346 the *filelogs segment* (see below). The final sub-segment is followed by
1346 the *filelogs segment* (see below). The final sub-segment is followed by
1347 an *empty chunk* (logically, a sub-segment with filename size 0). This
1347 an *empty chunk* (logically, a sub-segment with filename size 0). This
1348 denotes the boundary to the *filelogs segment*.
1348 denotes the boundary to the *filelogs segment*.
1349
1349
1350 Filelogs Segment
1350 Filelogs Segment
1351 ================
1351 ================
1352
1352
1353 The *filelogs segment* consists of multiple sub-segments, each
1353 The *filelogs segment* consists of multiple sub-segments, each
1354 corresponding to an individual file whose data is being described:
1354 corresponding to an individual file whose data is being described:
1355
1355
1356 +--------------------------------------------------+
1356 +--------------------------------------------------+
1357 | | | | | |
1357 | | | | | |
1358 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
1358 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
1359 | | | | | (4 bytes) |
1359 | | | | | (4 bytes) |
1360 | | | | | |
1360 | | | | | |
1361 +--------------------------------------------------+
1361 +--------------------------------------------------+
1362
1362
1363 The final filelog sub-segment is followed by an *empty chunk* (logically,
1363 The final filelog sub-segment is followed by an *empty chunk* (logically,
1364 a sub-segment with filename size 0). This denotes the end of the segment
1364 a sub-segment with filename size 0). This denotes the end of the segment
1365 and of the overall changegroup.
1365 and of the overall changegroup.
1366
1366
1367 Each filelog sub-segment consists of the following:
1367 Each filelog sub-segment consists of the following:
1368
1368
1369 +------------------------------------------------------+
1369 +------------------------------------------------------+
1370 | | | |
1370 | | | |
1371 | filename length | filename | delta group |
1371 | filename length | filename | delta group |
1372 | (4 bytes) | (<length - 4> bytes) | (various) |
1372 | (4 bytes) | (<length - 4> bytes) | (various) |
1373 | | | |
1373 | | | |
1374 +------------------------------------------------------+
1374 +------------------------------------------------------+
1375
1375
1376 That is, a *chunk* consisting of the filename (not terminated or padded)
1376 That is, a *chunk* consisting of the filename (not terminated or padded)
1377 followed by N chunks constituting the *delta group* for this file. The
1377 followed by N chunks constituting the *delta group* for this file. The
1378 *empty chunk* at the end of each *delta group* denotes the boundary to the
1378 *empty chunk* at the end of each *delta group* denotes the boundary to the
1379 next filelog sub-segment.
1379 next filelog sub-segment.
1380
1380
1381 non-existent subtopics print an error
1381 non-existent subtopics print an error
1382
1382
1383 $ hg help internals.foo
1383 $ hg help internals.foo
1384 abort: no such help topic: internals.foo
1384 abort: no such help topic: internals.foo
1385 (try 'hg help --keyword foo')
1385 (try 'hg help --keyword foo')
1386 [10]
1386 [10]
1387
1387
1388 test advanced, deprecated and experimental options are hidden in command help
1388 test advanced, deprecated and experimental options are hidden in command help
1389 $ hg help debugoptADV
1389 $ hg help debugoptADV
1390 hg debugoptADV
1390 hg debugoptADV
1391
1391
1392 (no help text available)
1392 (no help text available)
1393
1393
1394 options:
1394 options:
1395
1395
1396 (some details hidden, use --verbose to show complete help)
1396 (some details hidden, use --verbose to show complete help)
1397 $ hg help debugoptDEP
1397 $ hg help debugoptDEP
1398 hg debugoptDEP
1398 hg debugoptDEP
1399
1399
1400 (no help text available)
1400 (no help text available)
1401
1401
1402 options:
1402 options:
1403
1403
1404 (some details hidden, use --verbose to show complete help)
1404 (some details hidden, use --verbose to show complete help)
1405
1405
1406 $ hg help debugoptEXP
1406 $ hg help debugoptEXP
1407 hg debugoptEXP
1407 hg debugoptEXP
1408
1408
1409 (no help text available)
1409 (no help text available)
1410
1410
1411 options:
1411 options:
1412
1412
1413 (some details hidden, use --verbose to show complete help)
1413 (some details hidden, use --verbose to show complete help)
1414
1414
1415 test advanced, deprecated and experimental options are shown with -v
1415 test advanced, deprecated and experimental options are shown with -v
1416 $ hg help -v debugoptADV | grep aopt
1416 $ hg help -v debugoptADV | grep aopt
1417 --aopt option is (ADVANCED)
1417 --aopt option is (ADVANCED)
1418 $ hg help -v debugoptDEP | grep dopt
1418 $ hg help -v debugoptDEP | grep dopt
1419 --dopt option is (DEPRECATED)
1419 --dopt option is (DEPRECATED)
1420 $ hg help -v debugoptEXP | grep eopt
1420 $ hg help -v debugoptEXP | grep eopt
1421 --eopt option is (EXPERIMENTAL)
1421 --eopt option is (EXPERIMENTAL)
1422
1422
1423 #if gettext
1423 #if gettext
1424 test deprecated option is hidden with translation with untranslated description
1424 test deprecated option is hidden with translation with untranslated description
1425 (use many globy for not failing on changed transaction)
1425 (use many globy for not failing on changed transaction)
1426 $ LANGUAGE=sv hg help debugoptDEP
1426 $ LANGUAGE=sv hg help debugoptDEP
1427 hg debugoptDEP
1427 hg debugoptDEP
1428
1428
1429 (*) (glob)
1429 (*) (glob)
1430
1430
1431 options:
1431 options:
1432
1432
1433 (some details hidden, use --verbose to show complete help)
1433 (some details hidden, use --verbose to show complete help)
1434 #endif
1434 #endif
1435
1435
1436 Test commands that collide with topics (issue4240)
1436 Test commands that collide with topics (issue4240)
1437
1437
1438 $ hg config -hq
1438 $ hg config -hq
1439 hg config [-u] [NAME]...
1439 hg config [-u] [NAME]...
1440
1440
1441 show combined config settings from all hgrc files
1441 show combined config settings from all hgrc files
1442 $ hg showconfig -hq
1442 $ hg showconfig -hq
1443 hg config [-u] [NAME]...
1443 hg config [-u] [NAME]...
1444
1444
1445 show combined config settings from all hgrc files
1445 show combined config settings from all hgrc files
1446
1446
1447 Test a help topic
1447 Test a help topic
1448
1448
1449 $ hg help dates
1449 $ hg help dates
1450 Date Formats
1450 Date Formats
1451 """"""""""""
1451 """"""""""""
1452
1452
1453 Some commands allow the user to specify a date, e.g.:
1453 Some commands allow the user to specify a date, e.g.:
1454
1454
1455 - backout, commit, import, tag: Specify the commit date.
1455 - backout, commit, import, tag: Specify the commit date.
1456 - log, revert, update: Select revision(s) by date.
1456 - log, revert, update: Select revision(s) by date.
1457
1457
1458 Many date formats are valid. Here are some examples:
1458 Many date formats are valid. Here are some examples:
1459
1459
1460 - "Wed Dec 6 13:18:29 2006" (local timezone assumed)
1460 - "Wed Dec 6 13:18:29 2006" (local timezone assumed)
1461 - "Dec 6 13:18 -0600" (year assumed, time offset provided)
1461 - "Dec 6 13:18 -0600" (year assumed, time offset provided)
1462 - "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
1462 - "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
1463 - "Dec 6" (midnight)
1463 - "Dec 6" (midnight)
1464 - "13:18" (today assumed)
1464 - "13:18" (today assumed)
1465 - "3:39" (3:39AM assumed)
1465 - "3:39" (3:39AM assumed)
1466 - "3:39pm" (15:39)
1466 - "3:39pm" (15:39)
1467 - "2006-12-06 13:18:29" (ISO 8601 format)
1467 - "2006-12-06 13:18:29" (ISO 8601 format)
1468 - "2006-12-6 13:18"
1468 - "2006-12-6 13:18"
1469 - "2006-12-6"
1469 - "2006-12-6"
1470 - "12-6"
1470 - "12-6"
1471 - "12/6"
1471 - "12/6"
1472 - "12/6/6" (Dec 6 2006)
1472 - "12/6/6" (Dec 6 2006)
1473 - "today" (midnight)
1473 - "today" (midnight)
1474 - "yesterday" (midnight)
1474 - "yesterday" (midnight)
1475 - "now" - right now
1475 - "now" - right now
1476
1476
1477 Lastly, there is Mercurial's internal format:
1477 Lastly, there is Mercurial's internal format:
1478
1478
1479 - "1165411109 0" (Wed Dec 6 13:18:29 2006 UTC)
1479 - "1165411109 0" (Wed Dec 6 13:18:29 2006 UTC)
1480
1480
1481 This is the internal representation format for dates. The first number is
1481 This is the internal representation format for dates. The first number is
1482 the number of seconds since the epoch (1970-01-01 00:00 UTC). The second
1482 the number of seconds since the epoch (1970-01-01 00:00 UTC). The second
1483 is the offset of the local timezone, in seconds west of UTC (negative if
1483 is the offset of the local timezone, in seconds west of UTC (negative if
1484 the timezone is east of UTC).
1484 the timezone is east of UTC).
1485
1485
1486 The log command also accepts date ranges:
1486 The log command also accepts date ranges:
1487
1487
1488 - "<DATE" - at or before a given date/time
1488 - "<DATE" - at or before a given date/time
1489 - ">DATE" - on or after a given date/time
1489 - ">DATE" - on or after a given date/time
1490 - "DATE to DATE" - a date range, inclusive
1490 - "DATE to DATE" - a date range, inclusive
1491 - "-DAYS" - within a given number of days from today
1491 - "-DAYS" - within a given number of days from today
1492
1492
1493 Test repeated config section name
1493 Test repeated config section name
1494
1494
1495 $ hg help config.host
1495 $ hg help config.host
1496 "http_proxy.host"
1496 "http_proxy.host"
1497 Host name and (optional) port of the proxy server, for example
1497 Host name and (optional) port of the proxy server, for example
1498 "myproxy:8000".
1498 "myproxy:8000".
1499
1499
1500 "smtp.host"
1500 "smtp.host"
1501 Host name of mail server, e.g. "mail.example.com".
1501 Host name of mail server, e.g. "mail.example.com".
1502
1502
1503
1503
1504 Test section name with dot
1504 Test section name with dot
1505
1505
1506 $ hg help config.ui.username
1506 $ hg help config.ui.username
1507 "ui.username"
1507 "ui.username"
1508 The committer of a changeset created when running "commit". Typically
1508 The committer of a changeset created when running "commit". Typically
1509 a person's name and email address, e.g. "Fred Widget
1509 a person's name and email address, e.g. "Fred Widget
1510 <fred@example.com>". Environment variables in the username are
1510 <fred@example.com>". Environment variables in the username are
1511 expanded.
1511 expanded.
1512
1512
1513 (default: "$EMAIL" or "username@hostname". If the username in hgrc is
1513 (default: "$EMAIL" or "username@hostname". If the username in hgrc is
1514 empty, e.g. if the system admin set "username =" in the system hgrc,
1514 empty, e.g. if the system admin set "username =" in the system hgrc,
1515 it has to be specified manually or in a different hgrc file)
1515 it has to be specified manually or in a different hgrc file)
1516
1516
1517
1517
1518 $ hg help config.annotate.git
1518 $ hg help config.annotate.git
1519 abort: help section not found: config.annotate.git
1519 abort: help section not found: config.annotate.git
1520 [10]
1520 [10]
1521
1521
1522 $ hg help config.update.check
1522 $ hg help config.update.check
1523 "commands.update.check"
1523 "commands.update.check"
1524 Determines what level of checking 'hg update' will perform before
1524 Determines what level of checking 'hg update' will perform before
1525 moving to a destination revision. Valid values are "abort", "none",
1525 moving to a destination revision. Valid values are "abort", "none",
1526 "linear", and "noconflict".
1526 "linear", and "noconflict".
1527
1527
1528 - "abort" always fails if the working directory has uncommitted
1528 - "abort" always fails if the working directory has uncommitted
1529 changes.
1529 changes.
1530 - "none" performs no checking, and may result in a merge with
1530 - "none" performs no checking, and may result in a merge with
1531 uncommitted changes.
1531 uncommitted changes.
1532 - "linear" allows any update as long as it follows a straight line in
1532 - "linear" allows any update as long as it follows a straight line in
1533 the revision history, and may trigger a merge with uncommitted
1533 the revision history, and may trigger a merge with uncommitted
1534 changes.
1534 changes.
1535 - "noconflict" will allow any update which would not trigger a merge
1535 - "noconflict" will allow any update which would not trigger a merge
1536 with uncommitted changes, if any are present.
1536 with uncommitted changes, if any are present.
1537
1537
1538 (default: "linear")
1538 (default: "linear")
1539
1539
1540
1540
1541 $ hg help config.commands.update.check
1541 $ hg help config.commands.update.check
1542 "commands.update.check"
1542 "commands.update.check"
1543 Determines what level of checking 'hg update' will perform before
1543 Determines what level of checking 'hg update' will perform before
1544 moving to a destination revision. Valid values are "abort", "none",
1544 moving to a destination revision. Valid values are "abort", "none",
1545 "linear", and "noconflict".
1545 "linear", and "noconflict".
1546
1546
1547 - "abort" always fails if the working directory has uncommitted
1547 - "abort" always fails if the working directory has uncommitted
1548 changes.
1548 changes.
1549 - "none" performs no checking, and may result in a merge with
1549 - "none" performs no checking, and may result in a merge with
1550 uncommitted changes.
1550 uncommitted changes.
1551 - "linear" allows any update as long as it follows a straight line in
1551 - "linear" allows any update as long as it follows a straight line in
1552 the revision history, and may trigger a merge with uncommitted
1552 the revision history, and may trigger a merge with uncommitted
1553 changes.
1553 changes.
1554 - "noconflict" will allow any update which would not trigger a merge
1554 - "noconflict" will allow any update which would not trigger a merge
1555 with uncommitted changes, if any are present.
1555 with uncommitted changes, if any are present.
1556
1556
1557 (default: "linear")
1557 (default: "linear")
1558
1558
1559
1559
1560 $ hg help config.ommands.update.check
1560 $ hg help config.ommands.update.check
1561 abort: help section not found: config.ommands.update.check
1561 abort: help section not found: config.ommands.update.check
1562 [10]
1562 [10]
1563
1563
1564 Unrelated trailing paragraphs shouldn't be included
1564 Unrelated trailing paragraphs shouldn't be included
1565
1565
1566 $ hg help config.extramsg | grep '^$'
1566 $ hg help config.extramsg | grep '^$'
1567
1567
1568
1568
1569 Test capitalized section name
1569 Test capitalized section name
1570
1570
1571 $ hg help scripting.HGPLAIN > /dev/null
1571 $ hg help scripting.HGPLAIN > /dev/null
1572
1572
1573 Help subsection:
1573 Help subsection:
1574
1574
1575 $ hg help config.charsets |grep "Email example:" > /dev/null
1575 $ hg help config.charsets |grep "Email example:" > /dev/null
1576 [1]
1576 [1]
1577
1577
1578 Show nested definitions
1578 Show nested definitions
1579 ("profiling.type"[break]"ls"[break]"stat"[break])
1579 ("profiling.type"[break]"ls"[break]"stat"[break])
1580
1580
1581 $ hg help config.type | egrep '^$'|wc -l
1581 $ hg help config.type | egrep '^$'|wc -l
1582 \s*3 (re)
1582 \s*3 (re)
1583
1583
1584 $ hg help config.profiling.type.ls
1584 $ hg help config.profiling.type.ls
1585 "profiling.type.ls"
1585 "profiling.type.ls"
1586 Use Python's built-in instrumenting profiler. This profiler works on
1586 Use Python's built-in instrumenting profiler. This profiler works on
1587 all platforms, but each line number it reports is the first line of
1587 all platforms, but each line number it reports is the first line of
1588 a function. This restriction makes it difficult to identify the
1588 a function. This restriction makes it difficult to identify the
1589 expensive parts of a non-trivial function.
1589 expensive parts of a non-trivial function.
1590
1590
1591
1591
1592 Separate sections from subsections
1592 Separate sections from subsections
1593
1593
1594 $ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq
1594 $ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq
1595 "format"
1595 "format"
1596 --------
1596 --------
1597
1597
1598 "usegeneraldelta"
1598 "usegeneraldelta"
1599
1599
1600 "dotencode"
1600 "dotencode"
1601
1601
1602 "usefncache"
1602 "usefncache"
1603
1603
1604 "use-dirstate-v2"
1604 "use-dirstate-v2"
1605
1605
1606 "use-dirstate-v2.automatic-upgrade-of-mismatching-repositories"
1606 "use-dirstate-v2.automatic-upgrade-of-mismatching-repositories"
1607
1607
1608 "use-dirstate-v2.automatic-upgrade-of-mismatching-repositories:quiet"
1609
1608 "use-dirstate-tracked-hint"
1610 "use-dirstate-tracked-hint"
1609
1611
1610 "use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories"
1612 "use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories"
1611
1613
1612 "use-persistent-nodemap"
1614 "use-persistent-nodemap"
1613
1615
1614 "use-share-safe"
1616 "use-share-safe"
1615
1617
1616 "use-share-safe.automatic-upgrade-of-mismatching-repositories"
1618 "use-share-safe.automatic-upgrade-of-mismatching-repositories"
1617
1619
1618 "use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet"
1620 "use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet"
1619
1621
1620 "usestore"
1622 "usestore"
1621
1623
1622 "sparse-revlog"
1624 "sparse-revlog"
1623
1625
1624 "revlog-compression"
1626 "revlog-compression"
1625
1627
1626 "bookmarks-in-store"
1628 "bookmarks-in-store"
1627
1629
1628 "profiling"
1630 "profiling"
1629 -----------
1631 -----------
1630
1632
1631 "format"
1633 "format"
1632
1634
1633 "progress"
1635 "progress"
1634 ----------
1636 ----------
1635
1637
1636 "format"
1638 "format"
1637
1639
1638
1640
1639 Last item in help config.*:
1641 Last item in help config.*:
1640
1642
1641 $ hg help config.`hg help config|grep '^ "'| \
1643 $ hg help config.`hg help config|grep '^ "'| \
1642 > tail -1|sed 's![ "]*!!g'`| \
1644 > tail -1|sed 's![ "]*!!g'`| \
1643 > grep 'hg help -c config' > /dev/null
1645 > grep 'hg help -c config' > /dev/null
1644 [1]
1646 [1]
1645
1647
1646 note to use help -c for general hg help config:
1648 note to use help -c for general hg help config:
1647
1649
1648 $ hg help config |grep 'hg help -c config' > /dev/null
1650 $ hg help config |grep 'hg help -c config' > /dev/null
1649
1651
1650 Test templating help
1652 Test templating help
1651
1653
1652 $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
1654 $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
1653 desc String. The text of the changeset description.
1655 desc String. The text of the changeset description.
1654 diffstat String. Statistics of changes with the following format:
1656 diffstat String. Statistics of changes with the following format:
1655 firstline Any text. Returns the first line of text.
1657 firstline Any text. Returns the first line of text.
1656 nonempty Any text. Returns '(none)' if the string is empty.
1658 nonempty Any text. Returns '(none)' if the string is empty.
1657
1659
1658 Test deprecated items
1660 Test deprecated items
1659
1661
1660 $ hg help -v templating | grep currentbookmark
1662 $ hg help -v templating | grep currentbookmark
1661 currentbookmark
1663 currentbookmark
1662 $ hg help templating | (grep currentbookmark || true)
1664 $ hg help templating | (grep currentbookmark || true)
1663
1665
1664 Test help hooks
1666 Test help hooks
1665
1667
1666 $ cat > helphook1.py <<EOF
1668 $ cat > helphook1.py <<EOF
1667 > from mercurial import help
1669 > from mercurial import help
1668 >
1670 >
1669 > def rewrite(ui, topic, doc):
1671 > def rewrite(ui, topic, doc):
1670 > return doc + b'\nhelphook1\n'
1672 > return doc + b'\nhelphook1\n'
1671 >
1673 >
1672 > def extsetup(ui):
1674 > def extsetup(ui):
1673 > help.addtopichook(b'revisions', rewrite)
1675 > help.addtopichook(b'revisions', rewrite)
1674 > EOF
1676 > EOF
1675 $ cat > helphook2.py <<EOF
1677 $ cat > helphook2.py <<EOF
1676 > from mercurial import help
1678 > from mercurial import help
1677 >
1679 >
1678 > def rewrite(ui, topic, doc):
1680 > def rewrite(ui, topic, doc):
1679 > return doc + b'\nhelphook2\n'
1681 > return doc + b'\nhelphook2\n'
1680 >
1682 >
1681 > def extsetup(ui):
1683 > def extsetup(ui):
1682 > help.addtopichook(b'revisions', rewrite)
1684 > help.addtopichook(b'revisions', rewrite)
1683 > EOF
1685 > EOF
1684 $ echo '[extensions]' >> $HGRCPATH
1686 $ echo '[extensions]' >> $HGRCPATH
1685 $ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
1687 $ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
1686 $ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
1688 $ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
1687 $ hg help revsets | grep helphook
1689 $ hg help revsets | grep helphook
1688 helphook1
1690 helphook1
1689 helphook2
1691 helphook2
1690
1692
1691 help -c should only show debug --debug
1693 help -c should only show debug --debug
1692
1694
1693 $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
1695 $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
1694 [1]
1696 [1]
1695
1697
1696 help -c should only show deprecated for -v
1698 help -c should only show deprecated for -v
1697
1699
1698 $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
1700 $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
1699 [1]
1701 [1]
1700
1702
1701 Test -s / --system
1703 Test -s / --system
1702
1704
1703 $ hg help config.files -s windows |grep 'etc/mercurial' | \
1705 $ hg help config.files -s windows |grep 'etc/mercurial' | \
1704 > wc -l | sed -e 's/ //g'
1706 > wc -l | sed -e 's/ //g'
1705 0
1707 0
1706 $ hg help config.files --system unix | grep 'USER' | \
1708 $ hg help config.files --system unix | grep 'USER' | \
1707 > wc -l | sed -e 's/ //g'
1709 > wc -l | sed -e 's/ //g'
1708 0
1710 0
1709
1711
1710 Test -e / -c / -k combinations
1712 Test -e / -c / -k combinations
1711
1713
1712 $ hg help -c|egrep '^[A-Z].*:|^ debug'
1714 $ hg help -c|egrep '^[A-Z].*:|^ debug'
1713 Commands:
1715 Commands:
1714 $ hg help -e|egrep '^[A-Z].*:|^ debug'
1716 $ hg help -e|egrep '^[A-Z].*:|^ debug'
1715 Extensions:
1717 Extensions:
1716 $ hg help -k|egrep '^[A-Z].*:|^ debug'
1718 $ hg help -k|egrep '^[A-Z].*:|^ debug'
1717 Topics:
1719 Topics:
1718 Commands:
1720 Commands:
1719 Extensions:
1721 Extensions:
1720 Extension Commands:
1722 Extension Commands:
1721 $ hg help -c schemes
1723 $ hg help -c schemes
1722 abort: no such help topic: schemes
1724 abort: no such help topic: schemes
1723 (try 'hg help --keyword schemes')
1725 (try 'hg help --keyword schemes')
1724 [10]
1726 [10]
1725 $ hg help -e schemes |head -1
1727 $ hg help -e schemes |head -1
1726 schemes extension - extend schemes with shortcuts to repository swarms
1728 schemes extension - extend schemes with shortcuts to repository swarms
1727 $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
1729 $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
1728 Commands:
1730 Commands:
1729 $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
1731 $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
1730 Extensions:
1732 Extensions:
1731 $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
1733 $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
1732 Extensions:
1734 Extensions:
1733 Commands:
1735 Commands:
1734 $ hg help -c commit > /dev/null
1736 $ hg help -c commit > /dev/null
1735 $ hg help -e -c commit > /dev/null
1737 $ hg help -e -c commit > /dev/null
1736 $ hg help -e commit
1738 $ hg help -e commit
1737 abort: no such help topic: commit
1739 abort: no such help topic: commit
1738 (try 'hg help --keyword commit')
1740 (try 'hg help --keyword commit')
1739 [10]
1741 [10]
1740
1742
1741 Test keyword search help
1743 Test keyword search help
1742
1744
1743 $ cat > prefixedname.py <<EOF
1745 $ cat > prefixedname.py <<EOF
1744 > '''matched against word "clone"
1746 > '''matched against word "clone"
1745 > '''
1747 > '''
1746 > EOF
1748 > EOF
1747 $ echo '[extensions]' >> $HGRCPATH
1749 $ echo '[extensions]' >> $HGRCPATH
1748 $ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
1750 $ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
1749 $ hg help -k clone
1751 $ hg help -k clone
1750 Topics:
1752 Topics:
1751
1753
1752 config Configuration Files
1754 config Configuration Files
1753 extensions Using Additional Features
1755 extensions Using Additional Features
1754 glossary Glossary
1756 glossary Glossary
1755 phases Working with Phases
1757 phases Working with Phases
1756 subrepos Subrepositories
1758 subrepos Subrepositories
1757 urls URL Paths
1759 urls URL Paths
1758
1760
1759 Commands:
1761 Commands:
1760
1762
1761 bookmarks create a new bookmark or list existing bookmarks
1763 bookmarks create a new bookmark or list existing bookmarks
1762 clone make a copy of an existing repository
1764 clone make a copy of an existing repository
1763 paths show aliases for remote repositories
1765 paths show aliases for remote repositories
1764 pull pull changes from the specified source
1766 pull pull changes from the specified source
1765 update update working directory (or switch revisions)
1767 update update working directory (or switch revisions)
1766
1768
1767 Extensions:
1769 Extensions:
1768
1770
1769 clonebundles advertise pre-generated bundles to seed clones
1771 clonebundles advertise pre-generated bundles to seed clones
1770 narrow create clones which fetch history data for subset of files
1772 narrow create clones which fetch history data for subset of files
1771 (EXPERIMENTAL)
1773 (EXPERIMENTAL)
1772 prefixedname matched against word "clone"
1774 prefixedname matched against word "clone"
1773 relink recreates hardlinks between repository clones
1775 relink recreates hardlinks between repository clones
1774
1776
1775 Extension Commands:
1777 Extension Commands:
1776
1778
1777 qclone clone main and patch repository at same time
1779 qclone clone main and patch repository at same time
1778
1780
1779 Test unfound topic
1781 Test unfound topic
1780
1782
1781 $ hg help nonexistingtopicthatwillneverexisteverever
1783 $ hg help nonexistingtopicthatwillneverexisteverever
1782 abort: no such help topic: nonexistingtopicthatwillneverexisteverever
1784 abort: no such help topic: nonexistingtopicthatwillneverexisteverever
1783 (try 'hg help --keyword nonexistingtopicthatwillneverexisteverever')
1785 (try 'hg help --keyword nonexistingtopicthatwillneverexisteverever')
1784 [10]
1786 [10]
1785
1787
1786 Test unfound keyword
1788 Test unfound keyword
1787
1789
1788 $ hg help --keyword nonexistingwordthatwillneverexisteverever
1790 $ hg help --keyword nonexistingwordthatwillneverexisteverever
1789 abort: no matches
1791 abort: no matches
1790 (try 'hg help' for a list of topics)
1792 (try 'hg help' for a list of topics)
1791 [10]
1793 [10]
1792
1794
1793 Test omit indicating for help
1795 Test omit indicating for help
1794
1796
1795 $ cat > addverboseitems.py <<EOF
1797 $ cat > addverboseitems.py <<EOF
1796 > r'''extension to test omit indicating.
1798 > r'''extension to test omit indicating.
1797 >
1799 >
1798 > This paragraph is never omitted (for extension)
1800 > This paragraph is never omitted (for extension)
1799 >
1801 >
1800 > .. container:: verbose
1802 > .. container:: verbose
1801 >
1803 >
1802 > This paragraph is omitted,
1804 > This paragraph is omitted,
1803 > if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
1805 > if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
1804 >
1806 >
1805 > This paragraph is never omitted, too (for extension)
1807 > This paragraph is never omitted, too (for extension)
1806 > '''
1808 > '''
1807 > from mercurial import commands, help
1809 > from mercurial import commands, help
1808 > testtopic = br"""This paragraph is never omitted (for topic).
1810 > testtopic = br"""This paragraph is never omitted (for topic).
1809 >
1811 >
1810 > .. container:: verbose
1812 > .. container:: verbose
1811 >
1813 >
1812 > This paragraph is omitted,
1814 > This paragraph is omitted,
1813 > if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
1815 > if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
1814 >
1816 >
1815 > This paragraph is never omitted, too (for topic)
1817 > This paragraph is never omitted, too (for topic)
1816 > """
1818 > """
1817 > def extsetup(ui):
1819 > def extsetup(ui):
1818 > help.helptable.append(([b"topic-containing-verbose"],
1820 > help.helptable.append(([b"topic-containing-verbose"],
1819 > b"This is the topic to test omit indicating.",
1821 > b"This is the topic to test omit indicating.",
1820 > lambda ui: testtopic))
1822 > lambda ui: testtopic))
1821 > EOF
1823 > EOF
1822 $ echo '[extensions]' >> $HGRCPATH
1824 $ echo '[extensions]' >> $HGRCPATH
1823 $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
1825 $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
1824 $ hg help addverboseitems
1826 $ hg help addverboseitems
1825 addverboseitems extension - extension to test omit indicating.
1827 addverboseitems extension - extension to test omit indicating.
1826
1828
1827 This paragraph is never omitted (for extension)
1829 This paragraph is never omitted (for extension)
1828
1830
1829 This paragraph is never omitted, too (for extension)
1831 This paragraph is never omitted, too (for extension)
1830
1832
1831 (some details hidden, use --verbose to show complete help)
1833 (some details hidden, use --verbose to show complete help)
1832
1834
1833 no commands defined
1835 no commands defined
1834 $ hg help -v addverboseitems
1836 $ hg help -v addverboseitems
1835 addverboseitems extension - extension to test omit indicating.
1837 addverboseitems extension - extension to test omit indicating.
1836
1838
1837 This paragraph is never omitted (for extension)
1839 This paragraph is never omitted (for extension)
1838
1840
1839 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1841 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1840 extension)
1842 extension)
1841
1843
1842 This paragraph is never omitted, too (for extension)
1844 This paragraph is never omitted, too (for extension)
1843
1845
1844 no commands defined
1846 no commands defined
1845 $ hg help topic-containing-verbose
1847 $ hg help topic-containing-verbose
1846 This is the topic to test omit indicating.
1848 This is the topic to test omit indicating.
1847 """"""""""""""""""""""""""""""""""""""""""
1849 """"""""""""""""""""""""""""""""""""""""""
1848
1850
1849 This paragraph is never omitted (for topic).
1851 This paragraph is never omitted (for topic).
1850
1852
1851 This paragraph is never omitted, too (for topic)
1853 This paragraph is never omitted, too (for topic)
1852
1854
1853 (some details hidden, use --verbose to show complete help)
1855 (some details hidden, use --verbose to show complete help)
1854 $ hg help -v topic-containing-verbose
1856 $ hg help -v topic-containing-verbose
1855 This is the topic to test omit indicating.
1857 This is the topic to test omit indicating.
1856 """"""""""""""""""""""""""""""""""""""""""
1858 """"""""""""""""""""""""""""""""""""""""""
1857
1859
1858 This paragraph is never omitted (for topic).
1860 This paragraph is never omitted (for topic).
1859
1861
1860 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1862 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1861 topic)
1863 topic)
1862
1864
1863 This paragraph is never omitted, too (for topic)
1865 This paragraph is never omitted, too (for topic)
1864
1866
1865 Test section lookup
1867 Test section lookup
1866
1868
1867 $ hg help revset.merge
1869 $ hg help revset.merge
1868 "merge()"
1870 "merge()"
1869 Changeset is a merge changeset.
1871 Changeset is a merge changeset.
1870
1872
1871 $ hg help glossary.dag
1873 $ hg help glossary.dag
1872 DAG
1874 DAG
1873 The repository of changesets of a distributed version control system
1875 The repository of changesets of a distributed version control system
1874 (DVCS) can be described as a directed acyclic graph (DAG), consisting
1876 (DVCS) can be described as a directed acyclic graph (DAG), consisting
1875 of nodes and edges, where nodes correspond to changesets and edges
1877 of nodes and edges, where nodes correspond to changesets and edges
1876 imply a parent -> child relation. This graph can be visualized by
1878 imply a parent -> child relation. This graph can be visualized by
1877 graphical tools such as 'hg log --graph'. In Mercurial, the DAG is
1879 graphical tools such as 'hg log --graph'. In Mercurial, the DAG is
1878 limited by the requirement for children to have at most two parents.
1880 limited by the requirement for children to have at most two parents.
1879
1881
1880
1882
1881 $ hg help hgrc.paths
1883 $ hg help hgrc.paths
1882 "paths"
1884 "paths"
1883 -------
1885 -------
1884
1886
1885 Assigns symbolic names and behavior to repositories.
1887 Assigns symbolic names and behavior to repositories.
1886
1888
1887 Options are symbolic names defining the URL or directory that is the
1889 Options are symbolic names defining the URL or directory that is the
1888 location of the repository. Example:
1890 location of the repository. Example:
1889
1891
1890 [paths]
1892 [paths]
1891 my_server = https://example.com/my_repo
1893 my_server = https://example.com/my_repo
1892 local_path = /home/me/repo
1894 local_path = /home/me/repo
1893
1895
1894 These symbolic names can be used from the command line. To pull from
1896 These symbolic names can be used from the command line. To pull from
1895 "my_server": 'hg pull my_server'. To push to "local_path": 'hg push
1897 "my_server": 'hg pull my_server'. To push to "local_path": 'hg push
1896 local_path'. You can check 'hg help urls' for details about valid URLs.
1898 local_path'. You can check 'hg help urls' for details about valid URLs.
1897
1899
1898 Options containing colons (":") denote sub-options that can influence
1900 Options containing colons (":") denote sub-options that can influence
1899 behavior for that specific path. Example:
1901 behavior for that specific path. Example:
1900
1902
1901 [paths]
1903 [paths]
1902 my_server = https://example.com/my_path
1904 my_server = https://example.com/my_path
1903 my_server:pushurl = ssh://example.com/my_path
1905 my_server:pushurl = ssh://example.com/my_path
1904
1906
1905 Paths using the 'path://otherpath' scheme will inherit the sub-options
1907 Paths using the 'path://otherpath' scheme will inherit the sub-options
1906 value from the path they point to.
1908 value from the path they point to.
1907
1909
1908 The following sub-options can be defined:
1910 The following sub-options can be defined:
1909
1911
1910 "multi-urls"
1912 "multi-urls"
1911 A boolean option. When enabled the value of the '[paths]' entry will be
1913 A boolean option. When enabled the value of the '[paths]' entry will be
1912 parsed as a list and the alias will resolve to multiple destination. If
1914 parsed as a list and the alias will resolve to multiple destination. If
1913 some of the list entry use the 'path://' syntax, the suboption will be
1915 some of the list entry use the 'path://' syntax, the suboption will be
1914 inherited individually.
1916 inherited individually.
1915
1917
1916 "pushurl"
1918 "pushurl"
1917 The URL to use for push operations. If not defined, the location
1919 The URL to use for push operations. If not defined, the location
1918 defined by the path's main entry is used.
1920 defined by the path's main entry is used.
1919
1921
1920 "pushrev"
1922 "pushrev"
1921 A revset defining which revisions to push by default.
1923 A revset defining which revisions to push by default.
1922
1924
1923 When 'hg push' is executed without a "-r" argument, the revset defined
1925 When 'hg push' is executed without a "-r" argument, the revset defined
1924 by this sub-option is evaluated to determine what to push.
1926 by this sub-option is evaluated to determine what to push.
1925
1927
1926 For example, a value of "." will push the working directory's revision
1928 For example, a value of "." will push the working directory's revision
1927 by default.
1929 by default.
1928
1930
1929 Revsets specifying bookmarks will not result in the bookmark being
1931 Revsets specifying bookmarks will not result in the bookmark being
1930 pushed.
1932 pushed.
1931
1933
1932 "bookmarks.mode"
1934 "bookmarks.mode"
1933 How bookmark will be dealt during the exchange. It support the following
1935 How bookmark will be dealt during the exchange. It support the following
1934 value
1936 value
1935
1937
1936 - "default": the default behavior, local and remote bookmarks are
1938 - "default": the default behavior, local and remote bookmarks are
1937 "merged" on push/pull.
1939 "merged" on push/pull.
1938 - "mirror": when pulling, replace local bookmarks by remote bookmarks.
1940 - "mirror": when pulling, replace local bookmarks by remote bookmarks.
1939 This is useful to replicate a repository, or as an optimization.
1941 This is useful to replicate a repository, or as an optimization.
1940 - "ignore": ignore bookmarks during exchange. (This currently only
1942 - "ignore": ignore bookmarks during exchange. (This currently only
1941 affect pulling)
1943 affect pulling)
1942
1944
1943 The following special named paths exist:
1945 The following special named paths exist:
1944
1946
1945 "default"
1947 "default"
1946 The URL or directory to use when no source or remote is specified.
1948 The URL or directory to use when no source or remote is specified.
1947
1949
1948 'hg clone' will automatically define this path to the location the
1950 'hg clone' will automatically define this path to the location the
1949 repository was cloned from.
1951 repository was cloned from.
1950
1952
1951 "default-push"
1953 "default-push"
1952 (deprecated) The URL or directory for the default 'hg push' location.
1954 (deprecated) The URL or directory for the default 'hg push' location.
1953 "default:pushurl" should be used instead.
1955 "default:pushurl" should be used instead.
1954
1956
1955 $ hg help glossary.mcguffin
1957 $ hg help glossary.mcguffin
1956 abort: help section not found: glossary.mcguffin
1958 abort: help section not found: glossary.mcguffin
1957 [10]
1959 [10]
1958
1960
1959 $ hg help glossary.mc.guffin
1961 $ hg help glossary.mc.guffin
1960 abort: help section not found: glossary.mc.guffin
1962 abort: help section not found: glossary.mc.guffin
1961 [10]
1963 [10]
1962
1964
1963 $ hg help template.files
1965 $ hg help template.files
1964 files List of strings. All files modified, added, or removed by
1966 files List of strings. All files modified, added, or removed by
1965 this changeset.
1967 this changeset.
1966 files(pattern)
1968 files(pattern)
1967 All files of the current changeset matching the pattern. See
1969 All files of the current changeset matching the pattern. See
1968 'hg help patterns'.
1970 'hg help patterns'.
1969
1971
1970 Test section lookup by translated message
1972 Test section lookup by translated message
1971
1973
1972 str.lower() instead of encoding.lower(str) on translated message might
1974 str.lower() instead of encoding.lower(str) on translated message might
1973 make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
1975 make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
1974 as the second or later byte of multi-byte character.
1976 as the second or later byte of multi-byte character.
1975
1977
1976 For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
1978 For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
1977 contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
1979 contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
1978 replacement makes message meaningless.
1980 replacement makes message meaningless.
1979
1981
1980 This tests that section lookup by translated string isn't broken by
1982 This tests that section lookup by translated string isn't broken by
1981 such str.lower().
1983 such str.lower().
1982
1984
1983 $ "$PYTHON" <<EOF
1985 $ "$PYTHON" <<EOF
1984 > def escape(s):
1986 > def escape(s):
1985 > return b''.join(b'\\u%x' % ord(uc) for uc in s.decode('cp932'))
1987 > return b''.join(b'\\u%x' % ord(uc) for uc in s.decode('cp932'))
1986 > # translation of "record" in ja_JP.cp932
1988 > # translation of "record" in ja_JP.cp932
1987 > upper = b"\x8bL\x98^"
1989 > upper = b"\x8bL\x98^"
1988 > # str.lower()-ed section name should be treated as different one
1990 > # str.lower()-ed section name should be treated as different one
1989 > lower = b"\x8bl\x98^"
1991 > lower = b"\x8bl\x98^"
1990 > with open('ambiguous.py', 'wb') as fp:
1992 > with open('ambiguous.py', 'wb') as fp:
1991 > fp.write(b"""# ambiguous section names in ja_JP.cp932
1993 > fp.write(b"""# ambiguous section names in ja_JP.cp932
1992 > u'''summary of extension
1994 > u'''summary of extension
1993 >
1995 >
1994 > %s
1996 > %s
1995 > ----
1997 > ----
1996 >
1998 >
1997 > Upper name should show only this message
1999 > Upper name should show only this message
1998 >
2000 >
1999 > %s
2001 > %s
2000 > ----
2002 > ----
2001 >
2003 >
2002 > Lower name should show only this message
2004 > Lower name should show only this message
2003 >
2005 >
2004 > subsequent section
2006 > subsequent section
2005 > ------------------
2007 > ------------------
2006 >
2008 >
2007 > This should be hidden at 'hg help ambiguous' with section name.
2009 > This should be hidden at 'hg help ambiguous' with section name.
2008 > '''
2010 > '''
2009 > """ % (escape(upper), escape(lower)))
2011 > """ % (escape(upper), escape(lower)))
2010 > EOF
2012 > EOF
2011
2013
2012 $ cat >> $HGRCPATH <<EOF
2014 $ cat >> $HGRCPATH <<EOF
2013 > [extensions]
2015 > [extensions]
2014 > ambiguous = ./ambiguous.py
2016 > ambiguous = ./ambiguous.py
2015 > EOF
2017 > EOF
2016
2018
2017 $ "$PYTHON" <<EOF | sh
2019 $ "$PYTHON" <<EOF | sh
2018 > from mercurial.utils import procutil
2020 > from mercurial.utils import procutil
2019 > upper = b"\x8bL\x98^"
2021 > upper = b"\x8bL\x98^"
2020 > procutil.stdout.write(b"hg --encoding cp932 help -e ambiguous.%s\n" % upper)
2022 > procutil.stdout.write(b"hg --encoding cp932 help -e ambiguous.%s\n" % upper)
2021 > EOF
2023 > EOF
2022 \x8bL\x98^ (esc)
2024 \x8bL\x98^ (esc)
2023 ----
2025 ----
2024
2026
2025 Upper name should show only this message
2027 Upper name should show only this message
2026
2028
2027
2029
2028 $ "$PYTHON" <<EOF | sh
2030 $ "$PYTHON" <<EOF | sh
2029 > from mercurial.utils import procutil
2031 > from mercurial.utils import procutil
2030 > lower = b"\x8bl\x98^"
2032 > lower = b"\x8bl\x98^"
2031 > procutil.stdout.write(b"hg --encoding cp932 help -e ambiguous.%s\n" % lower)
2033 > procutil.stdout.write(b"hg --encoding cp932 help -e ambiguous.%s\n" % lower)
2032 > EOF
2034 > EOF
2033 \x8bl\x98^ (esc)
2035 \x8bl\x98^ (esc)
2034 ----
2036 ----
2035
2037
2036 Lower name should show only this message
2038 Lower name should show only this message
2037
2039
2038
2040
2039 $ cat >> $HGRCPATH <<EOF
2041 $ cat >> $HGRCPATH <<EOF
2040 > [extensions]
2042 > [extensions]
2041 > ambiguous = !
2043 > ambiguous = !
2042 > EOF
2044 > EOF
2043
2045
2044 Show help content of disabled extensions
2046 Show help content of disabled extensions
2045
2047
2046 $ cat >> $HGRCPATH <<EOF
2048 $ cat >> $HGRCPATH <<EOF
2047 > [extensions]
2049 > [extensions]
2048 > ambiguous = !./ambiguous.py
2050 > ambiguous = !./ambiguous.py
2049 > EOF
2051 > EOF
2050 $ hg help -e ambiguous
2052 $ hg help -e ambiguous
2051 ambiguous extension - (no help text available)
2053 ambiguous extension - (no help text available)
2052
2054
2053 (use 'hg help extensions' for information on enabling extensions)
2055 (use 'hg help extensions' for information on enabling extensions)
2054
2056
2055 Test dynamic list of merge tools only shows up once
2057 Test dynamic list of merge tools only shows up once
2056 $ hg help merge-tools
2058 $ hg help merge-tools
2057 Merge Tools
2059 Merge Tools
2058 """""""""""
2060 """""""""""
2059
2061
2060 To merge files Mercurial uses merge tools.
2062 To merge files Mercurial uses merge tools.
2061
2063
2062 A merge tool combines two different versions of a file into a merged file.
2064 A merge tool combines two different versions of a file into a merged file.
2063 Merge tools are given the two files and the greatest common ancestor of
2065 Merge tools are given the two files and the greatest common ancestor of
2064 the two file versions, so they can determine the changes made on both
2066 the two file versions, so they can determine the changes made on both
2065 branches.
2067 branches.
2066
2068
2067 Merge tools are used both for 'hg resolve', 'hg merge', 'hg update', 'hg
2069 Merge tools are used both for 'hg resolve', 'hg merge', 'hg update', 'hg
2068 backout' and in several extensions.
2070 backout' and in several extensions.
2069
2071
2070 Usually, the merge tool tries to automatically reconcile the files by
2072 Usually, the merge tool tries to automatically reconcile the files by
2071 combining all non-overlapping changes that occurred separately in the two
2073 combining all non-overlapping changes that occurred separately in the two
2072 different evolutions of the same initial base file. Furthermore, some
2074 different evolutions of the same initial base file. Furthermore, some
2073 interactive merge programs make it easier to manually resolve conflicting
2075 interactive merge programs make it easier to manually resolve conflicting
2074 merges, either in a graphical way, or by inserting some conflict markers.
2076 merges, either in a graphical way, or by inserting some conflict markers.
2075 Mercurial does not include any interactive merge programs but relies on
2077 Mercurial does not include any interactive merge programs but relies on
2076 external tools for that.
2078 external tools for that.
2077
2079
2078 Available merge tools
2080 Available merge tools
2079 =====================
2081 =====================
2080
2082
2081 External merge tools and their properties are configured in the merge-
2083 External merge tools and their properties are configured in the merge-
2082 tools configuration section - see hgrc(5) - but they can often just be
2084 tools configuration section - see hgrc(5) - but they can often just be
2083 named by their executable.
2085 named by their executable.
2084
2086
2085 A merge tool is generally usable if its executable can be found on the
2087 A merge tool is generally usable if its executable can be found on the
2086 system and if it can handle the merge. The executable is found if it is an
2088 system and if it can handle the merge. The executable is found if it is an
2087 absolute or relative executable path or the name of an application in the
2089 absolute or relative executable path or the name of an application in the
2088 executable search path. The tool is assumed to be able to handle the merge
2090 executable search path. The tool is assumed to be able to handle the merge
2089 if it can handle symlinks if the file is a symlink, if it can handle
2091 if it can handle symlinks if the file is a symlink, if it can handle
2090 binary files if the file is binary, and if a GUI is available if the tool
2092 binary files if the file is binary, and if a GUI is available if the tool
2091 requires a GUI.
2093 requires a GUI.
2092
2094
2093 There are some internal merge tools which can be used. The internal merge
2095 There are some internal merge tools which can be used. The internal merge
2094 tools are:
2096 tools are:
2095
2097
2096 ":dump"
2098 ":dump"
2097 Creates three versions of the files to merge, containing the contents of
2099 Creates three versions of the files to merge, containing the contents of
2098 local, other and base. These files can then be used to perform a merge
2100 local, other and base. These files can then be used to perform a merge
2099 manually. If the file to be merged is named "a.txt", these files will
2101 manually. If the file to be merged is named "a.txt", these files will
2100 accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
2102 accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
2101 they will be placed in the same directory as "a.txt".
2103 they will be placed in the same directory as "a.txt".
2102
2104
2103 This implies premerge. Therefore, files aren't dumped, if premerge runs
2105 This implies premerge. Therefore, files aren't dumped, if premerge runs
2104 successfully. Use :forcedump to forcibly write files out.
2106 successfully. Use :forcedump to forcibly write files out.
2105
2107
2106 (actual capabilities: binary, symlink)
2108 (actual capabilities: binary, symlink)
2107
2109
2108 ":fail"
2110 ":fail"
2109 Rather than attempting to merge files that were modified on both
2111 Rather than attempting to merge files that were modified on both
2110 branches, it marks them as unresolved. The resolve command must be used
2112 branches, it marks them as unresolved. The resolve command must be used
2111 to resolve these conflicts.
2113 to resolve these conflicts.
2112
2114
2113 (actual capabilities: binary, symlink)
2115 (actual capabilities: binary, symlink)
2114
2116
2115 ":forcedump"
2117 ":forcedump"
2116 Creates three versions of the files as same as :dump, but omits
2118 Creates three versions of the files as same as :dump, but omits
2117 premerge.
2119 premerge.
2118
2120
2119 (actual capabilities: binary, symlink)
2121 (actual capabilities: binary, symlink)
2120
2122
2121 ":local"
2123 ":local"
2122 Uses the local 'p1()' version of files as the merged version.
2124 Uses the local 'p1()' version of files as the merged version.
2123
2125
2124 (actual capabilities: binary, symlink)
2126 (actual capabilities: binary, symlink)
2125
2127
2126 ":merge"
2128 ":merge"
2127 Uses the internal non-interactive simple merge algorithm for merging
2129 Uses the internal non-interactive simple merge algorithm for merging
2128 files. It will fail if there are any conflicts and leave markers in the
2130 files. It will fail if there are any conflicts and leave markers in the
2129 partially merged file. Markers will have two sections, one for each side
2131 partially merged file. Markers will have two sections, one for each side
2130 of merge.
2132 of merge.
2131
2133
2132 ":merge-local"
2134 ":merge-local"
2133 Like :merge, but resolve all conflicts non-interactively in favor of the
2135 Like :merge, but resolve all conflicts non-interactively in favor of the
2134 local 'p1()' changes.
2136 local 'p1()' changes.
2135
2137
2136 ":merge-other"
2138 ":merge-other"
2137 Like :merge, but resolve all conflicts non-interactively in favor of the
2139 Like :merge, but resolve all conflicts non-interactively in favor of the
2138 other 'p2()' changes.
2140 other 'p2()' changes.
2139
2141
2140 ":merge3"
2142 ":merge3"
2141 Uses the internal non-interactive simple merge algorithm for merging
2143 Uses the internal non-interactive simple merge algorithm for merging
2142 files. It will fail if there are any conflicts and leave markers in the
2144 files. It will fail if there are any conflicts and leave markers in the
2143 partially merged file. Marker will have three sections, one from each
2145 partially merged file. Marker will have three sections, one from each
2144 side of the merge and one for the base content.
2146 side of the merge and one for the base content.
2145
2147
2146 ":mergediff"
2148 ":mergediff"
2147 Uses the internal non-interactive simple merge algorithm for merging
2149 Uses the internal non-interactive simple merge algorithm for merging
2148 files. It will fail if there are any conflicts and leave markers in the
2150 files. It will fail if there are any conflicts and leave markers in the
2149 partially merged file. The marker will have two sections, one with the
2151 partially merged file. The marker will have two sections, one with the
2150 content from one side of the merge, and one with a diff from the base
2152 content from one side of the merge, and one with a diff from the base
2151 content to the content on the other side. (experimental)
2153 content to the content on the other side. (experimental)
2152
2154
2153 ":other"
2155 ":other"
2154 Uses the other 'p2()' version of files as the merged version.
2156 Uses the other 'p2()' version of files as the merged version.
2155
2157
2156 (actual capabilities: binary, symlink)
2158 (actual capabilities: binary, symlink)
2157
2159
2158 ":prompt"
2160 ":prompt"
2159 Asks the user which of the local 'p1()' or the other 'p2()' version to
2161 Asks the user which of the local 'p1()' or the other 'p2()' version to
2160 keep as the merged version.
2162 keep as the merged version.
2161
2163
2162 (actual capabilities: binary, symlink)
2164 (actual capabilities: binary, symlink)
2163
2165
2164 ":tagmerge"
2166 ":tagmerge"
2165 Uses the internal tag merge algorithm (experimental).
2167 Uses the internal tag merge algorithm (experimental).
2166
2168
2167 ":union"
2169 ":union"
2168 Uses the internal non-interactive simple merge algorithm for merging
2170 Uses the internal non-interactive simple merge algorithm for merging
2169 files. It will use both left and right sides for conflict regions. No
2171 files. It will use both left and right sides for conflict regions. No
2170 markers are inserted.
2172 markers are inserted.
2171
2173
2172 Internal tools are always available and do not require a GUI but will by
2174 Internal tools are always available and do not require a GUI but will by
2173 default not handle symlinks or binary files. See next section for detail
2175 default not handle symlinks or binary files. See next section for detail
2174 about "actual capabilities" described above.
2176 about "actual capabilities" described above.
2175
2177
2176 Choosing a merge tool
2178 Choosing a merge tool
2177 =====================
2179 =====================
2178
2180
2179 Mercurial uses these rules when deciding which merge tool to use:
2181 Mercurial uses these rules when deciding which merge tool to use:
2180
2182
2181 1. If a tool has been specified with the --tool option to merge or
2183 1. If a tool has been specified with the --tool option to merge or
2182 resolve, it is used. If it is the name of a tool in the merge-tools
2184 resolve, it is used. If it is the name of a tool in the merge-tools
2183 configuration, its configuration is used. Otherwise the specified tool
2185 configuration, its configuration is used. Otherwise the specified tool
2184 must be executable by the shell.
2186 must be executable by the shell.
2185 2. If the "HGMERGE" environment variable is present, its value is used and
2187 2. If the "HGMERGE" environment variable is present, its value is used and
2186 must be executable by the shell.
2188 must be executable by the shell.
2187 3. If the filename of the file to be merged matches any of the patterns in
2189 3. If the filename of the file to be merged matches any of the patterns in
2188 the merge-patterns configuration section, the first usable merge tool
2190 the merge-patterns configuration section, the first usable merge tool
2189 corresponding to a matching pattern is used.
2191 corresponding to a matching pattern is used.
2190 4. If ui.merge is set it will be considered next. If the value is not the
2192 4. If ui.merge is set it will be considered next. If the value is not the
2191 name of a configured tool, the specified value is used and must be
2193 name of a configured tool, the specified value is used and must be
2192 executable by the shell. Otherwise the named tool is used if it is
2194 executable by the shell. Otherwise the named tool is used if it is
2193 usable.
2195 usable.
2194 5. If any usable merge tools are present in the merge-tools configuration
2196 5. If any usable merge tools are present in the merge-tools configuration
2195 section, the one with the highest priority is used.
2197 section, the one with the highest priority is used.
2196 6. If a program named "hgmerge" can be found on the system, it is used -
2198 6. If a program named "hgmerge" can be found on the system, it is used -
2197 but it will by default not be used for symlinks and binary files.
2199 but it will by default not be used for symlinks and binary files.
2198 7. If the file to be merged is not binary and is not a symlink, then
2200 7. If the file to be merged is not binary and is not a symlink, then
2199 internal ":merge" is used.
2201 internal ":merge" is used.
2200 8. Otherwise, ":prompt" is used.
2202 8. Otherwise, ":prompt" is used.
2201
2203
2202 For historical reason, Mercurial treats merge tools as below while
2204 For historical reason, Mercurial treats merge tools as below while
2203 examining rules above.
2205 examining rules above.
2204
2206
2205 step specified via binary symlink
2207 step specified via binary symlink
2206 ----------------------------------
2208 ----------------------------------
2207 1. --tool o/o o/o
2209 1. --tool o/o o/o
2208 2. HGMERGE o/o o/o
2210 2. HGMERGE o/o o/o
2209 3. merge-patterns o/o(*) x/?(*)
2211 3. merge-patterns o/o(*) x/?(*)
2210 4. ui.merge x/?(*) x/?(*)
2212 4. ui.merge x/?(*) x/?(*)
2211
2213
2212 Each capability column indicates Mercurial behavior for internal/external
2214 Each capability column indicates Mercurial behavior for internal/external
2213 merge tools at examining each rule.
2215 merge tools at examining each rule.
2214
2216
2215 - "o": "assume that a tool has capability"
2217 - "o": "assume that a tool has capability"
2216 - "x": "assume that a tool does not have capability"
2218 - "x": "assume that a tool does not have capability"
2217 - "?": "check actual capability of a tool"
2219 - "?": "check actual capability of a tool"
2218
2220
2219 If "merge.strict-capability-check" configuration is true, Mercurial checks
2221 If "merge.strict-capability-check" configuration is true, Mercurial checks
2220 capabilities of merge tools strictly in (*) cases above (= each capability
2222 capabilities of merge tools strictly in (*) cases above (= each capability
2221 column becomes "?/?"). It is false by default for backward compatibility.
2223 column becomes "?/?"). It is false by default for backward compatibility.
2222
2224
2223 Note:
2225 Note:
2224 After selecting a merge program, Mercurial will by default attempt to
2226 After selecting a merge program, Mercurial will by default attempt to
2225 merge the files using a simple merge algorithm first. Only if it
2227 merge the files using a simple merge algorithm first. Only if it
2226 doesn't succeed because of conflicting changes will Mercurial actually
2228 doesn't succeed because of conflicting changes will Mercurial actually
2227 execute the merge program. Whether to use the simple merge algorithm
2229 execute the merge program. Whether to use the simple merge algorithm
2228 first can be controlled by the premerge setting of the merge tool.
2230 first can be controlled by the premerge setting of the merge tool.
2229 Premerge is enabled by default unless the file is binary or a symlink.
2231 Premerge is enabled by default unless the file is binary or a symlink.
2230
2232
2231 See the merge-tools and ui sections of hgrc(5) for details on the
2233 See the merge-tools and ui sections of hgrc(5) for details on the
2232 configuration of merge tools.
2234 configuration of merge tools.
2233
2235
2234 Compression engines listed in `hg help bundlespec`
2236 Compression engines listed in `hg help bundlespec`
2235
2237
2236 $ hg help bundlespec | grep gzip
2238 $ hg help bundlespec | grep gzip
2237 "v1" bundles can only use the "gzip", "bzip2", and "none" compression
2239 "v1" bundles can only use the "gzip", "bzip2", and "none" compression
2238 An algorithm that produces smaller bundles than "gzip".
2240 An algorithm that produces smaller bundles than "gzip".
2239 This engine will likely produce smaller bundles than "gzip" but will be
2241 This engine will likely produce smaller bundles than "gzip" but will be
2240 "gzip"
2242 "gzip"
2241 better compression than "gzip". It also frequently yields better (?)
2243 better compression than "gzip". It also frequently yields better (?)
2242
2244
2243 Test usage of section marks in help documents
2245 Test usage of section marks in help documents
2244
2246
2245 $ cd "$TESTDIR"/../doc
2247 $ cd "$TESTDIR"/../doc
2246 $ "$PYTHON" check-seclevel.py
2248 $ "$PYTHON" check-seclevel.py
2247 $ cd $TESTTMP
2249 $ cd $TESTTMP
2248
2250
2249 #if serve
2251 #if serve
2250
2252
2251 Test the help pages in hgweb.
2253 Test the help pages in hgweb.
2252
2254
2253 Dish up an empty repo; serve it cold.
2255 Dish up an empty repo; serve it cold.
2254
2256
2255 $ hg init "$TESTTMP/test"
2257 $ hg init "$TESTTMP/test"
2256 $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
2258 $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
2257 $ cat hg.pid >> $DAEMON_PIDS
2259 $ cat hg.pid >> $DAEMON_PIDS
2258
2260
2259 $ get-with-headers.py $LOCALIP:$HGPORT "help"
2261 $ get-with-headers.py $LOCALIP:$HGPORT "help"
2260 200 Script output follows
2262 200 Script output follows
2261
2263
2262 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2264 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2263 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2265 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2264 <head>
2266 <head>
2265 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2267 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2266 <meta name="robots" content="index, nofollow" />
2268 <meta name="robots" content="index, nofollow" />
2267 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2269 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2268 <script type="text/javascript" src="/static/mercurial.js"></script>
2270 <script type="text/javascript" src="/static/mercurial.js"></script>
2269
2271
2270 <title>Help: Index</title>
2272 <title>Help: Index</title>
2271 </head>
2273 </head>
2272 <body>
2274 <body>
2273
2275
2274 <div class="container">
2276 <div class="container">
2275 <div class="menu">
2277 <div class="menu">
2276 <div class="logo">
2278 <div class="logo">
2277 <a href="https://mercurial-scm.org/">
2279 <a href="https://mercurial-scm.org/">
2278 <img src="/static/hglogo.png" alt="mercurial" /></a>
2280 <img src="/static/hglogo.png" alt="mercurial" /></a>
2279 </div>
2281 </div>
2280 <ul>
2282 <ul>
2281 <li><a href="/shortlog">log</a></li>
2283 <li><a href="/shortlog">log</a></li>
2282 <li><a href="/graph">graph</a></li>
2284 <li><a href="/graph">graph</a></li>
2283 <li><a href="/tags">tags</a></li>
2285 <li><a href="/tags">tags</a></li>
2284 <li><a href="/bookmarks">bookmarks</a></li>
2286 <li><a href="/bookmarks">bookmarks</a></li>
2285 <li><a href="/branches">branches</a></li>
2287 <li><a href="/branches">branches</a></li>
2286 </ul>
2288 </ul>
2287 <ul>
2289 <ul>
2288 <li class="active">help</li>
2290 <li class="active">help</li>
2289 </ul>
2291 </ul>
2290 </div>
2292 </div>
2291
2293
2292 <div class="main">
2294 <div class="main">
2293 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2295 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2294
2296
2295 <form class="search" action="/log">
2297 <form class="search" action="/log">
2296
2298
2297 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2299 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2298 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2300 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2299 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2301 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2300 </form>
2302 </form>
2301 <table class="bigtable">
2303 <table class="bigtable">
2302 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
2304 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
2303
2305
2304 <tr><td>
2306 <tr><td>
2305 <a href="/help/bundlespec">
2307 <a href="/help/bundlespec">
2306 bundlespec
2308 bundlespec
2307 </a>
2309 </a>
2308 </td><td>
2310 </td><td>
2309 Bundle File Formats
2311 Bundle File Formats
2310 </td></tr>
2312 </td></tr>
2311 <tr><td>
2313 <tr><td>
2312 <a href="/help/color">
2314 <a href="/help/color">
2313 color
2315 color
2314 </a>
2316 </a>
2315 </td><td>
2317 </td><td>
2316 Colorizing Outputs
2318 Colorizing Outputs
2317 </td></tr>
2319 </td></tr>
2318 <tr><td>
2320 <tr><td>
2319 <a href="/help/config">
2321 <a href="/help/config">
2320 config
2322 config
2321 </a>
2323 </a>
2322 </td><td>
2324 </td><td>
2323 Configuration Files
2325 Configuration Files
2324 </td></tr>
2326 </td></tr>
2325 <tr><td>
2327 <tr><td>
2326 <a href="/help/dates">
2328 <a href="/help/dates">
2327 dates
2329 dates
2328 </a>
2330 </a>
2329 </td><td>
2331 </td><td>
2330 Date Formats
2332 Date Formats
2331 </td></tr>
2333 </td></tr>
2332 <tr><td>
2334 <tr><td>
2333 <a href="/help/deprecated">
2335 <a href="/help/deprecated">
2334 deprecated
2336 deprecated
2335 </a>
2337 </a>
2336 </td><td>
2338 </td><td>
2337 Deprecated Features
2339 Deprecated Features
2338 </td></tr>
2340 </td></tr>
2339 <tr><td>
2341 <tr><td>
2340 <a href="/help/diffs">
2342 <a href="/help/diffs">
2341 diffs
2343 diffs
2342 </a>
2344 </a>
2343 </td><td>
2345 </td><td>
2344 Diff Formats
2346 Diff Formats
2345 </td></tr>
2347 </td></tr>
2346 <tr><td>
2348 <tr><td>
2347 <a href="/help/environment">
2349 <a href="/help/environment">
2348 environment
2350 environment
2349 </a>
2351 </a>
2350 </td><td>
2352 </td><td>
2351 Environment Variables
2353 Environment Variables
2352 </td></tr>
2354 </td></tr>
2353 <tr><td>
2355 <tr><td>
2354 <a href="/help/evolution">
2356 <a href="/help/evolution">
2355 evolution
2357 evolution
2356 </a>
2358 </a>
2357 </td><td>
2359 </td><td>
2358 Safely rewriting history (EXPERIMENTAL)
2360 Safely rewriting history (EXPERIMENTAL)
2359 </td></tr>
2361 </td></tr>
2360 <tr><td>
2362 <tr><td>
2361 <a href="/help/extensions">
2363 <a href="/help/extensions">
2362 extensions
2364 extensions
2363 </a>
2365 </a>
2364 </td><td>
2366 </td><td>
2365 Using Additional Features
2367 Using Additional Features
2366 </td></tr>
2368 </td></tr>
2367 <tr><td>
2369 <tr><td>
2368 <a href="/help/filesets">
2370 <a href="/help/filesets">
2369 filesets
2371 filesets
2370 </a>
2372 </a>
2371 </td><td>
2373 </td><td>
2372 Specifying File Sets
2374 Specifying File Sets
2373 </td></tr>
2375 </td></tr>
2374 <tr><td>
2376 <tr><td>
2375 <a href="/help/flags">
2377 <a href="/help/flags">
2376 flags
2378 flags
2377 </a>
2379 </a>
2378 </td><td>
2380 </td><td>
2379 Command-line flags
2381 Command-line flags
2380 </td></tr>
2382 </td></tr>
2381 <tr><td>
2383 <tr><td>
2382 <a href="/help/glossary">
2384 <a href="/help/glossary">
2383 glossary
2385 glossary
2384 </a>
2386 </a>
2385 </td><td>
2387 </td><td>
2386 Glossary
2388 Glossary
2387 </td></tr>
2389 </td></tr>
2388 <tr><td>
2390 <tr><td>
2389 <a href="/help/hgignore">
2391 <a href="/help/hgignore">
2390 hgignore
2392 hgignore
2391 </a>
2393 </a>
2392 </td><td>
2394 </td><td>
2393 Syntax for Mercurial Ignore Files
2395 Syntax for Mercurial Ignore Files
2394 </td></tr>
2396 </td></tr>
2395 <tr><td>
2397 <tr><td>
2396 <a href="/help/hgweb">
2398 <a href="/help/hgweb">
2397 hgweb
2399 hgweb
2398 </a>
2400 </a>
2399 </td><td>
2401 </td><td>
2400 Configuring hgweb
2402 Configuring hgweb
2401 </td></tr>
2403 </td></tr>
2402 <tr><td>
2404 <tr><td>
2403 <a href="/help/internals">
2405 <a href="/help/internals">
2404 internals
2406 internals
2405 </a>
2407 </a>
2406 </td><td>
2408 </td><td>
2407 Technical implementation topics
2409 Technical implementation topics
2408 </td></tr>
2410 </td></tr>
2409 <tr><td>
2411 <tr><td>
2410 <a href="/help/merge-tools">
2412 <a href="/help/merge-tools">
2411 merge-tools
2413 merge-tools
2412 </a>
2414 </a>
2413 </td><td>
2415 </td><td>
2414 Merge Tools
2416 Merge Tools
2415 </td></tr>
2417 </td></tr>
2416 <tr><td>
2418 <tr><td>
2417 <a href="/help/pager">
2419 <a href="/help/pager">
2418 pager
2420 pager
2419 </a>
2421 </a>
2420 </td><td>
2422 </td><td>
2421 Pager Support
2423 Pager Support
2422 </td></tr>
2424 </td></tr>
2423 <tr><td>
2425 <tr><td>
2424 <a href="/help/patterns">
2426 <a href="/help/patterns">
2425 patterns
2427 patterns
2426 </a>
2428 </a>
2427 </td><td>
2429 </td><td>
2428 File Name Patterns
2430 File Name Patterns
2429 </td></tr>
2431 </td></tr>
2430 <tr><td>
2432 <tr><td>
2431 <a href="/help/phases">
2433 <a href="/help/phases">
2432 phases
2434 phases
2433 </a>
2435 </a>
2434 </td><td>
2436 </td><td>
2435 Working with Phases
2437 Working with Phases
2436 </td></tr>
2438 </td></tr>
2437 <tr><td>
2439 <tr><td>
2438 <a href="/help/revisions">
2440 <a href="/help/revisions">
2439 revisions
2441 revisions
2440 </a>
2442 </a>
2441 </td><td>
2443 </td><td>
2442 Specifying Revisions
2444 Specifying Revisions
2443 </td></tr>
2445 </td></tr>
2444 <tr><td>
2446 <tr><td>
2445 <a href="/help/rust">
2447 <a href="/help/rust">
2446 rust
2448 rust
2447 </a>
2449 </a>
2448 </td><td>
2450 </td><td>
2449 Rust in Mercurial
2451 Rust in Mercurial
2450 </td></tr>
2452 </td></tr>
2451 <tr><td>
2453 <tr><td>
2452 <a href="/help/scripting">
2454 <a href="/help/scripting">
2453 scripting
2455 scripting
2454 </a>
2456 </a>
2455 </td><td>
2457 </td><td>
2456 Using Mercurial from scripts and automation
2458 Using Mercurial from scripts and automation
2457 </td></tr>
2459 </td></tr>
2458 <tr><td>
2460 <tr><td>
2459 <a href="/help/subrepos">
2461 <a href="/help/subrepos">
2460 subrepos
2462 subrepos
2461 </a>
2463 </a>
2462 </td><td>
2464 </td><td>
2463 Subrepositories
2465 Subrepositories
2464 </td></tr>
2466 </td></tr>
2465 <tr><td>
2467 <tr><td>
2466 <a href="/help/templating">
2468 <a href="/help/templating">
2467 templating
2469 templating
2468 </a>
2470 </a>
2469 </td><td>
2471 </td><td>
2470 Template Usage
2472 Template Usage
2471 </td></tr>
2473 </td></tr>
2472 <tr><td>
2474 <tr><td>
2473 <a href="/help/urls">
2475 <a href="/help/urls">
2474 urls
2476 urls
2475 </a>
2477 </a>
2476 </td><td>
2478 </td><td>
2477 URL Paths
2479 URL Paths
2478 </td></tr>
2480 </td></tr>
2479 <tr><td>
2481 <tr><td>
2480 <a href="/help/topic-containing-verbose">
2482 <a href="/help/topic-containing-verbose">
2481 topic-containing-verbose
2483 topic-containing-verbose
2482 </a>
2484 </a>
2483 </td><td>
2485 </td><td>
2484 This is the topic to test omit indicating.
2486 This is the topic to test omit indicating.
2485 </td></tr>
2487 </td></tr>
2486
2488
2487
2489
2488 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
2490 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
2489
2491
2490 <tr><td>
2492 <tr><td>
2491 <a href="/help/abort">
2493 <a href="/help/abort">
2492 abort
2494 abort
2493 </a>
2495 </a>
2494 </td><td>
2496 </td><td>
2495 abort an unfinished operation (EXPERIMENTAL)
2497 abort an unfinished operation (EXPERIMENTAL)
2496 </td></tr>
2498 </td></tr>
2497 <tr><td>
2499 <tr><td>
2498 <a href="/help/add">
2500 <a href="/help/add">
2499 add
2501 add
2500 </a>
2502 </a>
2501 </td><td>
2503 </td><td>
2502 add the specified files on the next commit
2504 add the specified files on the next commit
2503 </td></tr>
2505 </td></tr>
2504 <tr><td>
2506 <tr><td>
2505 <a href="/help/annotate">
2507 <a href="/help/annotate">
2506 annotate
2508 annotate
2507 </a>
2509 </a>
2508 </td><td>
2510 </td><td>
2509 show changeset information by line for each file
2511 show changeset information by line for each file
2510 </td></tr>
2512 </td></tr>
2511 <tr><td>
2513 <tr><td>
2512 <a href="/help/clone">
2514 <a href="/help/clone">
2513 clone
2515 clone
2514 </a>
2516 </a>
2515 </td><td>
2517 </td><td>
2516 make a copy of an existing repository
2518 make a copy of an existing repository
2517 </td></tr>
2519 </td></tr>
2518 <tr><td>
2520 <tr><td>
2519 <a href="/help/commit">
2521 <a href="/help/commit">
2520 commit
2522 commit
2521 </a>
2523 </a>
2522 </td><td>
2524 </td><td>
2523 commit the specified files or all outstanding changes
2525 commit the specified files or all outstanding changes
2524 </td></tr>
2526 </td></tr>
2525 <tr><td>
2527 <tr><td>
2526 <a href="/help/continue">
2528 <a href="/help/continue">
2527 continue
2529 continue
2528 </a>
2530 </a>
2529 </td><td>
2531 </td><td>
2530 resumes an interrupted operation (EXPERIMENTAL)
2532 resumes an interrupted operation (EXPERIMENTAL)
2531 </td></tr>
2533 </td></tr>
2532 <tr><td>
2534 <tr><td>
2533 <a href="/help/diff">
2535 <a href="/help/diff">
2534 diff
2536 diff
2535 </a>
2537 </a>
2536 </td><td>
2538 </td><td>
2537 diff repository (or selected files)
2539 diff repository (or selected files)
2538 </td></tr>
2540 </td></tr>
2539 <tr><td>
2541 <tr><td>
2540 <a href="/help/export">
2542 <a href="/help/export">
2541 export
2543 export
2542 </a>
2544 </a>
2543 </td><td>
2545 </td><td>
2544 dump the header and diffs for one or more changesets
2546 dump the header and diffs for one or more changesets
2545 </td></tr>
2547 </td></tr>
2546 <tr><td>
2548 <tr><td>
2547 <a href="/help/forget">
2549 <a href="/help/forget">
2548 forget
2550 forget
2549 </a>
2551 </a>
2550 </td><td>
2552 </td><td>
2551 forget the specified files on the next commit
2553 forget the specified files on the next commit
2552 </td></tr>
2554 </td></tr>
2553 <tr><td>
2555 <tr><td>
2554 <a href="/help/init">
2556 <a href="/help/init">
2555 init
2557 init
2556 </a>
2558 </a>
2557 </td><td>
2559 </td><td>
2558 create a new repository in the given directory
2560 create a new repository in the given directory
2559 </td></tr>
2561 </td></tr>
2560 <tr><td>
2562 <tr><td>
2561 <a href="/help/log">
2563 <a href="/help/log">
2562 log
2564 log
2563 </a>
2565 </a>
2564 </td><td>
2566 </td><td>
2565 show revision history of entire repository or files
2567 show revision history of entire repository or files
2566 </td></tr>
2568 </td></tr>
2567 <tr><td>
2569 <tr><td>
2568 <a href="/help/merge">
2570 <a href="/help/merge">
2569 merge
2571 merge
2570 </a>
2572 </a>
2571 </td><td>
2573 </td><td>
2572 merge another revision into working directory
2574 merge another revision into working directory
2573 </td></tr>
2575 </td></tr>
2574 <tr><td>
2576 <tr><td>
2575 <a href="/help/pull">
2577 <a href="/help/pull">
2576 pull
2578 pull
2577 </a>
2579 </a>
2578 </td><td>
2580 </td><td>
2579 pull changes from the specified source
2581 pull changes from the specified source
2580 </td></tr>
2582 </td></tr>
2581 <tr><td>
2583 <tr><td>
2582 <a href="/help/push">
2584 <a href="/help/push">
2583 push
2585 push
2584 </a>
2586 </a>
2585 </td><td>
2587 </td><td>
2586 push changes to the specified destination
2588 push changes to the specified destination
2587 </td></tr>
2589 </td></tr>
2588 <tr><td>
2590 <tr><td>
2589 <a href="/help/remove">
2591 <a href="/help/remove">
2590 remove
2592 remove
2591 </a>
2593 </a>
2592 </td><td>
2594 </td><td>
2593 remove the specified files on the next commit
2595 remove the specified files on the next commit
2594 </td></tr>
2596 </td></tr>
2595 <tr><td>
2597 <tr><td>
2596 <a href="/help/serve">
2598 <a href="/help/serve">
2597 serve
2599 serve
2598 </a>
2600 </a>
2599 </td><td>
2601 </td><td>
2600 start stand-alone webserver
2602 start stand-alone webserver
2601 </td></tr>
2603 </td></tr>
2602 <tr><td>
2604 <tr><td>
2603 <a href="/help/status">
2605 <a href="/help/status">
2604 status
2606 status
2605 </a>
2607 </a>
2606 </td><td>
2608 </td><td>
2607 show changed files in the working directory
2609 show changed files in the working directory
2608 </td></tr>
2610 </td></tr>
2609 <tr><td>
2611 <tr><td>
2610 <a href="/help/summary">
2612 <a href="/help/summary">
2611 summary
2613 summary
2612 </a>
2614 </a>
2613 </td><td>
2615 </td><td>
2614 summarize working directory state
2616 summarize working directory state
2615 </td></tr>
2617 </td></tr>
2616 <tr><td>
2618 <tr><td>
2617 <a href="/help/update">
2619 <a href="/help/update">
2618 update
2620 update
2619 </a>
2621 </a>
2620 </td><td>
2622 </td><td>
2621 update working directory (or switch revisions)
2623 update working directory (or switch revisions)
2622 </td></tr>
2624 </td></tr>
2623
2625
2624
2626
2625
2627
2626 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
2628 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
2627
2629
2628 <tr><td>
2630 <tr><td>
2629 <a href="/help/addremove">
2631 <a href="/help/addremove">
2630 addremove
2632 addremove
2631 </a>
2633 </a>
2632 </td><td>
2634 </td><td>
2633 add all new files, delete all missing files
2635 add all new files, delete all missing files
2634 </td></tr>
2636 </td></tr>
2635 <tr><td>
2637 <tr><td>
2636 <a href="/help/archive">
2638 <a href="/help/archive">
2637 archive
2639 archive
2638 </a>
2640 </a>
2639 </td><td>
2641 </td><td>
2640 create an unversioned archive of a repository revision
2642 create an unversioned archive of a repository revision
2641 </td></tr>
2643 </td></tr>
2642 <tr><td>
2644 <tr><td>
2643 <a href="/help/backout">
2645 <a href="/help/backout">
2644 backout
2646 backout
2645 </a>
2647 </a>
2646 </td><td>
2648 </td><td>
2647 reverse effect of earlier changeset
2649 reverse effect of earlier changeset
2648 </td></tr>
2650 </td></tr>
2649 <tr><td>
2651 <tr><td>
2650 <a href="/help/bisect">
2652 <a href="/help/bisect">
2651 bisect
2653 bisect
2652 </a>
2654 </a>
2653 </td><td>
2655 </td><td>
2654 subdivision search of changesets
2656 subdivision search of changesets
2655 </td></tr>
2657 </td></tr>
2656 <tr><td>
2658 <tr><td>
2657 <a href="/help/bookmarks">
2659 <a href="/help/bookmarks">
2658 bookmarks
2660 bookmarks
2659 </a>
2661 </a>
2660 </td><td>
2662 </td><td>
2661 create a new bookmark or list existing bookmarks
2663 create a new bookmark or list existing bookmarks
2662 </td></tr>
2664 </td></tr>
2663 <tr><td>
2665 <tr><td>
2664 <a href="/help/branch">
2666 <a href="/help/branch">
2665 branch
2667 branch
2666 </a>
2668 </a>
2667 </td><td>
2669 </td><td>
2668 set or show the current branch name
2670 set or show the current branch name
2669 </td></tr>
2671 </td></tr>
2670 <tr><td>
2672 <tr><td>
2671 <a href="/help/branches">
2673 <a href="/help/branches">
2672 branches
2674 branches
2673 </a>
2675 </a>
2674 </td><td>
2676 </td><td>
2675 list repository named branches
2677 list repository named branches
2676 </td></tr>
2678 </td></tr>
2677 <tr><td>
2679 <tr><td>
2678 <a href="/help/bundle">
2680 <a href="/help/bundle">
2679 bundle
2681 bundle
2680 </a>
2682 </a>
2681 </td><td>
2683 </td><td>
2682 create a bundle file
2684 create a bundle file
2683 </td></tr>
2685 </td></tr>
2684 <tr><td>
2686 <tr><td>
2685 <a href="/help/cat">
2687 <a href="/help/cat">
2686 cat
2688 cat
2687 </a>
2689 </a>
2688 </td><td>
2690 </td><td>
2689 output the current or given revision of files
2691 output the current or given revision of files
2690 </td></tr>
2692 </td></tr>
2691 <tr><td>
2693 <tr><td>
2692 <a href="/help/config">
2694 <a href="/help/config">
2693 config
2695 config
2694 </a>
2696 </a>
2695 </td><td>
2697 </td><td>
2696 show combined config settings from all hgrc files
2698 show combined config settings from all hgrc files
2697 </td></tr>
2699 </td></tr>
2698 <tr><td>
2700 <tr><td>
2699 <a href="/help/copy">
2701 <a href="/help/copy">
2700 copy
2702 copy
2701 </a>
2703 </a>
2702 </td><td>
2704 </td><td>
2703 mark files as copied for the next commit
2705 mark files as copied for the next commit
2704 </td></tr>
2706 </td></tr>
2705 <tr><td>
2707 <tr><td>
2706 <a href="/help/files">
2708 <a href="/help/files">
2707 files
2709 files
2708 </a>
2710 </a>
2709 </td><td>
2711 </td><td>
2710 list tracked files
2712 list tracked files
2711 </td></tr>
2713 </td></tr>
2712 <tr><td>
2714 <tr><td>
2713 <a href="/help/graft">
2715 <a href="/help/graft">
2714 graft
2716 graft
2715 </a>
2717 </a>
2716 </td><td>
2718 </td><td>
2717 copy changes from other branches onto the current branch
2719 copy changes from other branches onto the current branch
2718 </td></tr>
2720 </td></tr>
2719 <tr><td>
2721 <tr><td>
2720 <a href="/help/grep">
2722 <a href="/help/grep">
2721 grep
2723 grep
2722 </a>
2724 </a>
2723 </td><td>
2725 </td><td>
2724 search for a pattern in specified files
2726 search for a pattern in specified files
2725 </td></tr>
2727 </td></tr>
2726 <tr><td>
2728 <tr><td>
2727 <a href="/help/hashelp">
2729 <a href="/help/hashelp">
2728 hashelp
2730 hashelp
2729 </a>
2731 </a>
2730 </td><td>
2732 </td><td>
2731 Extension command's help
2733 Extension command's help
2732 </td></tr>
2734 </td></tr>
2733 <tr><td>
2735 <tr><td>
2734 <a href="/help/heads">
2736 <a href="/help/heads">
2735 heads
2737 heads
2736 </a>
2738 </a>
2737 </td><td>
2739 </td><td>
2738 show branch heads
2740 show branch heads
2739 </td></tr>
2741 </td></tr>
2740 <tr><td>
2742 <tr><td>
2741 <a href="/help/help">
2743 <a href="/help/help">
2742 help
2744 help
2743 </a>
2745 </a>
2744 </td><td>
2746 </td><td>
2745 show help for a given topic or a help overview
2747 show help for a given topic or a help overview
2746 </td></tr>
2748 </td></tr>
2747 <tr><td>
2749 <tr><td>
2748 <a href="/help/hgalias">
2750 <a href="/help/hgalias">
2749 hgalias
2751 hgalias
2750 </a>
2752 </a>
2751 </td><td>
2753 </td><td>
2752 My doc
2754 My doc
2753 </td></tr>
2755 </td></tr>
2754 <tr><td>
2756 <tr><td>
2755 <a href="/help/hgaliasnodoc">
2757 <a href="/help/hgaliasnodoc">
2756 hgaliasnodoc
2758 hgaliasnodoc
2757 </a>
2759 </a>
2758 </td><td>
2760 </td><td>
2759 summarize working directory state
2761 summarize working directory state
2760 </td></tr>
2762 </td></tr>
2761 <tr><td>
2763 <tr><td>
2762 <a href="/help/identify">
2764 <a href="/help/identify">
2763 identify
2765 identify
2764 </a>
2766 </a>
2765 </td><td>
2767 </td><td>
2766 identify the working directory or specified revision
2768 identify the working directory or specified revision
2767 </td></tr>
2769 </td></tr>
2768 <tr><td>
2770 <tr><td>
2769 <a href="/help/import">
2771 <a href="/help/import">
2770 import
2772 import
2771 </a>
2773 </a>
2772 </td><td>
2774 </td><td>
2773 import an ordered set of patches
2775 import an ordered set of patches
2774 </td></tr>
2776 </td></tr>
2775 <tr><td>
2777 <tr><td>
2776 <a href="/help/incoming">
2778 <a href="/help/incoming">
2777 incoming
2779 incoming
2778 </a>
2780 </a>
2779 </td><td>
2781 </td><td>
2780 show new changesets found in source
2782 show new changesets found in source
2781 </td></tr>
2783 </td></tr>
2782 <tr><td>
2784 <tr><td>
2783 <a href="/help/manifest">
2785 <a href="/help/manifest">
2784 manifest
2786 manifest
2785 </a>
2787 </a>
2786 </td><td>
2788 </td><td>
2787 output the current or given revision of the project manifest
2789 output the current or given revision of the project manifest
2788 </td></tr>
2790 </td></tr>
2789 <tr><td>
2791 <tr><td>
2790 <a href="/help/nohelp">
2792 <a href="/help/nohelp">
2791 nohelp
2793 nohelp
2792 </a>
2794 </a>
2793 </td><td>
2795 </td><td>
2794 (no help text available)
2796 (no help text available)
2795 </td></tr>
2797 </td></tr>
2796 <tr><td>
2798 <tr><td>
2797 <a href="/help/outgoing">
2799 <a href="/help/outgoing">
2798 outgoing
2800 outgoing
2799 </a>
2801 </a>
2800 </td><td>
2802 </td><td>
2801 show changesets not found in the destination
2803 show changesets not found in the destination
2802 </td></tr>
2804 </td></tr>
2803 <tr><td>
2805 <tr><td>
2804 <a href="/help/paths">
2806 <a href="/help/paths">
2805 paths
2807 paths
2806 </a>
2808 </a>
2807 </td><td>
2809 </td><td>
2808 show aliases for remote repositories
2810 show aliases for remote repositories
2809 </td></tr>
2811 </td></tr>
2810 <tr><td>
2812 <tr><td>
2811 <a href="/help/phase">
2813 <a href="/help/phase">
2812 phase
2814 phase
2813 </a>
2815 </a>
2814 </td><td>
2816 </td><td>
2815 set or show the current phase name
2817 set or show the current phase name
2816 </td></tr>
2818 </td></tr>
2817 <tr><td>
2819 <tr><td>
2818 <a href="/help/purge">
2820 <a href="/help/purge">
2819 purge
2821 purge
2820 </a>
2822 </a>
2821 </td><td>
2823 </td><td>
2822 removes files not tracked by Mercurial
2824 removes files not tracked by Mercurial
2823 </td></tr>
2825 </td></tr>
2824 <tr><td>
2826 <tr><td>
2825 <a href="/help/recover">
2827 <a href="/help/recover">
2826 recover
2828 recover
2827 </a>
2829 </a>
2828 </td><td>
2830 </td><td>
2829 roll back an interrupted transaction
2831 roll back an interrupted transaction
2830 </td></tr>
2832 </td></tr>
2831 <tr><td>
2833 <tr><td>
2832 <a href="/help/rename">
2834 <a href="/help/rename">
2833 rename
2835 rename
2834 </a>
2836 </a>
2835 </td><td>
2837 </td><td>
2836 rename files; equivalent of copy + remove
2838 rename files; equivalent of copy + remove
2837 </td></tr>
2839 </td></tr>
2838 <tr><td>
2840 <tr><td>
2839 <a href="/help/resolve">
2841 <a href="/help/resolve">
2840 resolve
2842 resolve
2841 </a>
2843 </a>
2842 </td><td>
2844 </td><td>
2843 redo merges or set/view the merge status of files
2845 redo merges or set/view the merge status of files
2844 </td></tr>
2846 </td></tr>
2845 <tr><td>
2847 <tr><td>
2846 <a href="/help/revert">
2848 <a href="/help/revert">
2847 revert
2849 revert
2848 </a>
2850 </a>
2849 </td><td>
2851 </td><td>
2850 restore files to their checkout state
2852 restore files to their checkout state
2851 </td></tr>
2853 </td></tr>
2852 <tr><td>
2854 <tr><td>
2853 <a href="/help/root">
2855 <a href="/help/root">
2854 root
2856 root
2855 </a>
2857 </a>
2856 </td><td>
2858 </td><td>
2857 print the root (top) of the current working directory
2859 print the root (top) of the current working directory
2858 </td></tr>
2860 </td></tr>
2859 <tr><td>
2861 <tr><td>
2860 <a href="/help/shellalias">
2862 <a href="/help/shellalias">
2861 shellalias
2863 shellalias
2862 </a>
2864 </a>
2863 </td><td>
2865 </td><td>
2864 (no help text available)
2866 (no help text available)
2865 </td></tr>
2867 </td></tr>
2866 <tr><td>
2868 <tr><td>
2867 <a href="/help/shelve">
2869 <a href="/help/shelve">
2868 shelve
2870 shelve
2869 </a>
2871 </a>
2870 </td><td>
2872 </td><td>
2871 save and set aside changes from the working directory
2873 save and set aside changes from the working directory
2872 </td></tr>
2874 </td></tr>
2873 <tr><td>
2875 <tr><td>
2874 <a href="/help/tag">
2876 <a href="/help/tag">
2875 tag
2877 tag
2876 </a>
2878 </a>
2877 </td><td>
2879 </td><td>
2878 add one or more tags for the current or given revision
2880 add one or more tags for the current or given revision
2879 </td></tr>
2881 </td></tr>
2880 <tr><td>
2882 <tr><td>
2881 <a href="/help/tags">
2883 <a href="/help/tags">
2882 tags
2884 tags
2883 </a>
2885 </a>
2884 </td><td>
2886 </td><td>
2885 list repository tags
2887 list repository tags
2886 </td></tr>
2888 </td></tr>
2887 <tr><td>
2889 <tr><td>
2888 <a href="/help/unbundle">
2890 <a href="/help/unbundle">
2889 unbundle
2891 unbundle
2890 </a>
2892 </a>
2891 </td><td>
2893 </td><td>
2892 apply one or more bundle files
2894 apply one or more bundle files
2893 </td></tr>
2895 </td></tr>
2894 <tr><td>
2896 <tr><td>
2895 <a href="/help/unshelve">
2897 <a href="/help/unshelve">
2896 unshelve
2898 unshelve
2897 </a>
2899 </a>
2898 </td><td>
2900 </td><td>
2899 restore a shelved change to the working directory
2901 restore a shelved change to the working directory
2900 </td></tr>
2902 </td></tr>
2901 <tr><td>
2903 <tr><td>
2902 <a href="/help/verify">
2904 <a href="/help/verify">
2903 verify
2905 verify
2904 </a>
2906 </a>
2905 </td><td>
2907 </td><td>
2906 verify the integrity of the repository
2908 verify the integrity of the repository
2907 </td></tr>
2909 </td></tr>
2908 <tr><td>
2910 <tr><td>
2909 <a href="/help/version">
2911 <a href="/help/version">
2910 version
2912 version
2911 </a>
2913 </a>
2912 </td><td>
2914 </td><td>
2913 output version and copyright information
2915 output version and copyright information
2914 </td></tr>
2916 </td></tr>
2915
2917
2916
2918
2917 </table>
2919 </table>
2918 </div>
2920 </div>
2919 </div>
2921 </div>
2920
2922
2921
2923
2922
2924
2923 </body>
2925 </body>
2924 </html>
2926 </html>
2925
2927
2926
2928
2927 $ get-with-headers.py $LOCALIP:$HGPORT "help/add"
2929 $ get-with-headers.py $LOCALIP:$HGPORT "help/add"
2928 200 Script output follows
2930 200 Script output follows
2929
2931
2930 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2932 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2931 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2933 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2932 <head>
2934 <head>
2933 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2935 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2934 <meta name="robots" content="index, nofollow" />
2936 <meta name="robots" content="index, nofollow" />
2935 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2937 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2936 <script type="text/javascript" src="/static/mercurial.js"></script>
2938 <script type="text/javascript" src="/static/mercurial.js"></script>
2937
2939
2938 <title>Help: add</title>
2940 <title>Help: add</title>
2939 </head>
2941 </head>
2940 <body>
2942 <body>
2941
2943
2942 <div class="container">
2944 <div class="container">
2943 <div class="menu">
2945 <div class="menu">
2944 <div class="logo">
2946 <div class="logo">
2945 <a href="https://mercurial-scm.org/">
2947 <a href="https://mercurial-scm.org/">
2946 <img src="/static/hglogo.png" alt="mercurial" /></a>
2948 <img src="/static/hglogo.png" alt="mercurial" /></a>
2947 </div>
2949 </div>
2948 <ul>
2950 <ul>
2949 <li><a href="/shortlog">log</a></li>
2951 <li><a href="/shortlog">log</a></li>
2950 <li><a href="/graph">graph</a></li>
2952 <li><a href="/graph">graph</a></li>
2951 <li><a href="/tags">tags</a></li>
2953 <li><a href="/tags">tags</a></li>
2952 <li><a href="/bookmarks">bookmarks</a></li>
2954 <li><a href="/bookmarks">bookmarks</a></li>
2953 <li><a href="/branches">branches</a></li>
2955 <li><a href="/branches">branches</a></li>
2954 </ul>
2956 </ul>
2955 <ul>
2957 <ul>
2956 <li class="active"><a href="/help">help</a></li>
2958 <li class="active"><a href="/help">help</a></li>
2957 </ul>
2959 </ul>
2958 </div>
2960 </div>
2959
2961
2960 <div class="main">
2962 <div class="main">
2961 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2963 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2962 <h3>Help: add</h3>
2964 <h3>Help: add</h3>
2963
2965
2964 <form class="search" action="/log">
2966 <form class="search" action="/log">
2965
2967
2966 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2968 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2967 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2969 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2968 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2970 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2969 </form>
2971 </form>
2970 <div id="doc">
2972 <div id="doc">
2971 <p>
2973 <p>
2972 hg add [OPTION]... [FILE]...
2974 hg add [OPTION]... [FILE]...
2973 </p>
2975 </p>
2974 <p>
2976 <p>
2975 add the specified files on the next commit
2977 add the specified files on the next commit
2976 </p>
2978 </p>
2977 <p>
2979 <p>
2978 Schedule files to be version controlled and added to the
2980 Schedule files to be version controlled and added to the
2979 repository.
2981 repository.
2980 </p>
2982 </p>
2981 <p>
2983 <p>
2982 The files will be added to the repository at the next commit. To
2984 The files will be added to the repository at the next commit. To
2983 undo an add before that, see 'hg forget'.
2985 undo an add before that, see 'hg forget'.
2984 </p>
2986 </p>
2985 <p>
2987 <p>
2986 If no names are given, add all files to the repository (except
2988 If no names are given, add all files to the repository (except
2987 files matching &quot;.hgignore&quot;).
2989 files matching &quot;.hgignore&quot;).
2988 </p>
2990 </p>
2989 <p>
2991 <p>
2990 Examples:
2992 Examples:
2991 </p>
2993 </p>
2992 <ul>
2994 <ul>
2993 <li> New (unknown) files are added automatically by 'hg add':
2995 <li> New (unknown) files are added automatically by 'hg add':
2994 <pre>
2996 <pre>
2995 \$ ls (re)
2997 \$ ls (re)
2996 foo.c
2998 foo.c
2997 \$ hg status (re)
2999 \$ hg status (re)
2998 ? foo.c
3000 ? foo.c
2999 \$ hg add (re)
3001 \$ hg add (re)
3000 adding foo.c
3002 adding foo.c
3001 \$ hg status (re)
3003 \$ hg status (re)
3002 A foo.c
3004 A foo.c
3003 </pre>
3005 </pre>
3004 <li> Specific files to be added can be specified:
3006 <li> Specific files to be added can be specified:
3005 <pre>
3007 <pre>
3006 \$ ls (re)
3008 \$ ls (re)
3007 bar.c foo.c
3009 bar.c foo.c
3008 \$ hg status (re)
3010 \$ hg status (re)
3009 ? bar.c
3011 ? bar.c
3010 ? foo.c
3012 ? foo.c
3011 \$ hg add bar.c (re)
3013 \$ hg add bar.c (re)
3012 \$ hg status (re)
3014 \$ hg status (re)
3013 A bar.c
3015 A bar.c
3014 ? foo.c
3016 ? foo.c
3015 </pre>
3017 </pre>
3016 </ul>
3018 </ul>
3017 <p>
3019 <p>
3018 Returns 0 if all files are successfully added.
3020 Returns 0 if all files are successfully added.
3019 </p>
3021 </p>
3020 <p>
3022 <p>
3021 options ([+] can be repeated):
3023 options ([+] can be repeated):
3022 </p>
3024 </p>
3023 <table>
3025 <table>
3024 <tr><td>-I</td>
3026 <tr><td>-I</td>
3025 <td>--include PATTERN [+]</td>
3027 <td>--include PATTERN [+]</td>
3026 <td>include names matching the given patterns</td></tr>
3028 <td>include names matching the given patterns</td></tr>
3027 <tr><td>-X</td>
3029 <tr><td>-X</td>
3028 <td>--exclude PATTERN [+]</td>
3030 <td>--exclude PATTERN [+]</td>
3029 <td>exclude names matching the given patterns</td></tr>
3031 <td>exclude names matching the given patterns</td></tr>
3030 <tr><td>-S</td>
3032 <tr><td>-S</td>
3031 <td>--subrepos</td>
3033 <td>--subrepos</td>
3032 <td>recurse into subrepositories</td></tr>
3034 <td>recurse into subrepositories</td></tr>
3033 <tr><td>-n</td>
3035 <tr><td>-n</td>
3034 <td>--dry-run</td>
3036 <td>--dry-run</td>
3035 <td>do not perform actions, just print output</td></tr>
3037 <td>do not perform actions, just print output</td></tr>
3036 </table>
3038 </table>
3037 <p>
3039 <p>
3038 global options ([+] can be repeated):
3040 global options ([+] can be repeated):
3039 </p>
3041 </p>
3040 <table>
3042 <table>
3041 <tr><td>-R</td>
3043 <tr><td>-R</td>
3042 <td>--repository REPO</td>
3044 <td>--repository REPO</td>
3043 <td>repository root directory or name of overlay bundle file</td></tr>
3045 <td>repository root directory or name of overlay bundle file</td></tr>
3044 <tr><td></td>
3046 <tr><td></td>
3045 <td>--cwd DIR</td>
3047 <td>--cwd DIR</td>
3046 <td>change working directory</td></tr>
3048 <td>change working directory</td></tr>
3047 <tr><td>-y</td>
3049 <tr><td>-y</td>
3048 <td>--noninteractive</td>
3050 <td>--noninteractive</td>
3049 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
3051 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
3050 <tr><td>-q</td>
3052 <tr><td>-q</td>
3051 <td>--quiet</td>
3053 <td>--quiet</td>
3052 <td>suppress output</td></tr>
3054 <td>suppress output</td></tr>
3053 <tr><td>-v</td>
3055 <tr><td>-v</td>
3054 <td>--verbose</td>
3056 <td>--verbose</td>
3055 <td>enable additional output</td></tr>
3057 <td>enable additional output</td></tr>
3056 <tr><td></td>
3058 <tr><td></td>
3057 <td>--color TYPE</td>
3059 <td>--color TYPE</td>
3058 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
3060 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
3059 <tr><td></td>
3061 <tr><td></td>
3060 <td>--config CONFIG [+]</td>
3062 <td>--config CONFIG [+]</td>
3061 <td>set/override config option (use 'section.name=value')</td></tr>
3063 <td>set/override config option (use 'section.name=value')</td></tr>
3062 <tr><td></td>
3064 <tr><td></td>
3063 <td>--debug</td>
3065 <td>--debug</td>
3064 <td>enable debugging output</td></tr>
3066 <td>enable debugging output</td></tr>
3065 <tr><td></td>
3067 <tr><td></td>
3066 <td>--debugger</td>
3068 <td>--debugger</td>
3067 <td>start debugger</td></tr>
3069 <td>start debugger</td></tr>
3068 <tr><td></td>
3070 <tr><td></td>
3069 <td>--encoding ENCODE</td>
3071 <td>--encoding ENCODE</td>
3070 <td>set the charset encoding (default: ascii)</td></tr>
3072 <td>set the charset encoding (default: ascii)</td></tr>
3071 <tr><td></td>
3073 <tr><td></td>
3072 <td>--encodingmode MODE</td>
3074 <td>--encodingmode MODE</td>
3073 <td>set the charset encoding mode (default: strict)</td></tr>
3075 <td>set the charset encoding mode (default: strict)</td></tr>
3074 <tr><td></td>
3076 <tr><td></td>
3075 <td>--traceback</td>
3077 <td>--traceback</td>
3076 <td>always print a traceback on exception</td></tr>
3078 <td>always print a traceback on exception</td></tr>
3077 <tr><td></td>
3079 <tr><td></td>
3078 <td>--time</td>
3080 <td>--time</td>
3079 <td>time how long the command takes</td></tr>
3081 <td>time how long the command takes</td></tr>
3080 <tr><td></td>
3082 <tr><td></td>
3081 <td>--profile</td>
3083 <td>--profile</td>
3082 <td>print command execution profile</td></tr>
3084 <td>print command execution profile</td></tr>
3083 <tr><td></td>
3085 <tr><td></td>
3084 <td>--version</td>
3086 <td>--version</td>
3085 <td>output version information and exit</td></tr>
3087 <td>output version information and exit</td></tr>
3086 <tr><td>-h</td>
3088 <tr><td>-h</td>
3087 <td>--help</td>
3089 <td>--help</td>
3088 <td>display help and exit</td></tr>
3090 <td>display help and exit</td></tr>
3089 <tr><td></td>
3091 <tr><td></td>
3090 <td>--hidden</td>
3092 <td>--hidden</td>
3091 <td>consider hidden changesets</td></tr>
3093 <td>consider hidden changesets</td></tr>
3092 <tr><td></td>
3094 <tr><td></td>
3093 <td>--pager TYPE</td>
3095 <td>--pager TYPE</td>
3094 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
3096 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
3095 </table>
3097 </table>
3096
3098
3097 </div>
3099 </div>
3098 </div>
3100 </div>
3099 </div>
3101 </div>
3100
3102
3101
3103
3102
3104
3103 </body>
3105 </body>
3104 </html>
3106 </html>
3105
3107
3106
3108
3107 $ get-with-headers.py $LOCALIP:$HGPORT "help/remove"
3109 $ get-with-headers.py $LOCALIP:$HGPORT "help/remove"
3108 200 Script output follows
3110 200 Script output follows
3109
3111
3110 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3112 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3111 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3113 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3112 <head>
3114 <head>
3113 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3115 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3114 <meta name="robots" content="index, nofollow" />
3116 <meta name="robots" content="index, nofollow" />
3115 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3117 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3116 <script type="text/javascript" src="/static/mercurial.js"></script>
3118 <script type="text/javascript" src="/static/mercurial.js"></script>
3117
3119
3118 <title>Help: remove</title>
3120 <title>Help: remove</title>
3119 </head>
3121 </head>
3120 <body>
3122 <body>
3121
3123
3122 <div class="container">
3124 <div class="container">
3123 <div class="menu">
3125 <div class="menu">
3124 <div class="logo">
3126 <div class="logo">
3125 <a href="https://mercurial-scm.org/">
3127 <a href="https://mercurial-scm.org/">
3126 <img src="/static/hglogo.png" alt="mercurial" /></a>
3128 <img src="/static/hglogo.png" alt="mercurial" /></a>
3127 </div>
3129 </div>
3128 <ul>
3130 <ul>
3129 <li><a href="/shortlog">log</a></li>
3131 <li><a href="/shortlog">log</a></li>
3130 <li><a href="/graph">graph</a></li>
3132 <li><a href="/graph">graph</a></li>
3131 <li><a href="/tags">tags</a></li>
3133 <li><a href="/tags">tags</a></li>
3132 <li><a href="/bookmarks">bookmarks</a></li>
3134 <li><a href="/bookmarks">bookmarks</a></li>
3133 <li><a href="/branches">branches</a></li>
3135 <li><a href="/branches">branches</a></li>
3134 </ul>
3136 </ul>
3135 <ul>
3137 <ul>
3136 <li class="active"><a href="/help">help</a></li>
3138 <li class="active"><a href="/help">help</a></li>
3137 </ul>
3139 </ul>
3138 </div>
3140 </div>
3139
3141
3140 <div class="main">
3142 <div class="main">
3141 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3143 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3142 <h3>Help: remove</h3>
3144 <h3>Help: remove</h3>
3143
3145
3144 <form class="search" action="/log">
3146 <form class="search" action="/log">
3145
3147
3146 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3148 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3147 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3149 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3148 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3150 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3149 </form>
3151 </form>
3150 <div id="doc">
3152 <div id="doc">
3151 <p>
3153 <p>
3152 hg remove [OPTION]... FILE...
3154 hg remove [OPTION]... FILE...
3153 </p>
3155 </p>
3154 <p>
3156 <p>
3155 aliases: rm
3157 aliases: rm
3156 </p>
3158 </p>
3157 <p>
3159 <p>
3158 remove the specified files on the next commit
3160 remove the specified files on the next commit
3159 </p>
3161 </p>
3160 <p>
3162 <p>
3161 Schedule the indicated files for removal from the current branch.
3163 Schedule the indicated files for removal from the current branch.
3162 </p>
3164 </p>
3163 <p>
3165 <p>
3164 This command schedules the files to be removed at the next commit.
3166 This command schedules the files to be removed at the next commit.
3165 To undo a remove before that, see 'hg revert'. To undo added
3167 To undo a remove before that, see 'hg revert'. To undo added
3166 files, see 'hg forget'.
3168 files, see 'hg forget'.
3167 </p>
3169 </p>
3168 <p>
3170 <p>
3169 -A/--after can be used to remove only files that have already
3171 -A/--after can be used to remove only files that have already
3170 been deleted, -f/--force can be used to force deletion, and -Af
3172 been deleted, -f/--force can be used to force deletion, and -Af
3171 can be used to remove files from the next revision without
3173 can be used to remove files from the next revision without
3172 deleting them from the working directory.
3174 deleting them from the working directory.
3173 </p>
3175 </p>
3174 <p>
3176 <p>
3175 The following table details the behavior of remove for different
3177 The following table details the behavior of remove for different
3176 file states (columns) and option combinations (rows). The file
3178 file states (columns) and option combinations (rows). The file
3177 states are Added [A], Clean [C], Modified [M] and Missing [!]
3179 states are Added [A], Clean [C], Modified [M] and Missing [!]
3178 (as reported by 'hg status'). The actions are Warn, Remove
3180 (as reported by 'hg status'). The actions are Warn, Remove
3179 (from branch) and Delete (from disk):
3181 (from branch) and Delete (from disk):
3180 </p>
3182 </p>
3181 <table>
3183 <table>
3182 <tr><td>opt/state</td>
3184 <tr><td>opt/state</td>
3183 <td>A</td>
3185 <td>A</td>
3184 <td>C</td>
3186 <td>C</td>
3185 <td>M</td>
3187 <td>M</td>
3186 <td>!</td></tr>
3188 <td>!</td></tr>
3187 <tr><td>none</td>
3189 <tr><td>none</td>
3188 <td>W</td>
3190 <td>W</td>
3189 <td>RD</td>
3191 <td>RD</td>
3190 <td>W</td>
3192 <td>W</td>
3191 <td>R</td></tr>
3193 <td>R</td></tr>
3192 <tr><td>-f</td>
3194 <tr><td>-f</td>
3193 <td>R</td>
3195 <td>R</td>
3194 <td>RD</td>
3196 <td>RD</td>
3195 <td>RD</td>
3197 <td>RD</td>
3196 <td>R</td></tr>
3198 <td>R</td></tr>
3197 <tr><td>-A</td>
3199 <tr><td>-A</td>
3198 <td>W</td>
3200 <td>W</td>
3199 <td>W</td>
3201 <td>W</td>
3200 <td>W</td>
3202 <td>W</td>
3201 <td>R</td></tr>
3203 <td>R</td></tr>
3202 <tr><td>-Af</td>
3204 <tr><td>-Af</td>
3203 <td>R</td>
3205 <td>R</td>
3204 <td>R</td>
3206 <td>R</td>
3205 <td>R</td>
3207 <td>R</td>
3206 <td>R</td></tr>
3208 <td>R</td></tr>
3207 </table>
3209 </table>
3208 <p>
3210 <p>
3209 <b>Note:</b>
3211 <b>Note:</b>
3210 </p>
3212 </p>
3211 <p>
3213 <p>
3212 'hg remove' never deletes files in Added [A] state from the
3214 'hg remove' never deletes files in Added [A] state from the
3213 working directory, not even if &quot;--force&quot; is specified.
3215 working directory, not even if &quot;--force&quot; is specified.
3214 </p>
3216 </p>
3215 <p>
3217 <p>
3216 Returns 0 on success, 1 if any warnings encountered.
3218 Returns 0 on success, 1 if any warnings encountered.
3217 </p>
3219 </p>
3218 <p>
3220 <p>
3219 options ([+] can be repeated):
3221 options ([+] can be repeated):
3220 </p>
3222 </p>
3221 <table>
3223 <table>
3222 <tr><td>-A</td>
3224 <tr><td>-A</td>
3223 <td>--after</td>
3225 <td>--after</td>
3224 <td>record delete for missing files</td></tr>
3226 <td>record delete for missing files</td></tr>
3225 <tr><td>-f</td>
3227 <tr><td>-f</td>
3226 <td>--force</td>
3228 <td>--force</td>
3227 <td>forget added files, delete modified files</td></tr>
3229 <td>forget added files, delete modified files</td></tr>
3228 <tr><td>-S</td>
3230 <tr><td>-S</td>
3229 <td>--subrepos</td>
3231 <td>--subrepos</td>
3230 <td>recurse into subrepositories</td></tr>
3232 <td>recurse into subrepositories</td></tr>
3231 <tr><td>-I</td>
3233 <tr><td>-I</td>
3232 <td>--include PATTERN [+]</td>
3234 <td>--include PATTERN [+]</td>
3233 <td>include names matching the given patterns</td></tr>
3235 <td>include names matching the given patterns</td></tr>
3234 <tr><td>-X</td>
3236 <tr><td>-X</td>
3235 <td>--exclude PATTERN [+]</td>
3237 <td>--exclude PATTERN [+]</td>
3236 <td>exclude names matching the given patterns</td></tr>
3238 <td>exclude names matching the given patterns</td></tr>
3237 <tr><td>-n</td>
3239 <tr><td>-n</td>
3238 <td>--dry-run</td>
3240 <td>--dry-run</td>
3239 <td>do not perform actions, just print output</td></tr>
3241 <td>do not perform actions, just print output</td></tr>
3240 </table>
3242 </table>
3241 <p>
3243 <p>
3242 global options ([+] can be repeated):
3244 global options ([+] can be repeated):
3243 </p>
3245 </p>
3244 <table>
3246 <table>
3245 <tr><td>-R</td>
3247 <tr><td>-R</td>
3246 <td>--repository REPO</td>
3248 <td>--repository REPO</td>
3247 <td>repository root directory or name of overlay bundle file</td></tr>
3249 <td>repository root directory or name of overlay bundle file</td></tr>
3248 <tr><td></td>
3250 <tr><td></td>
3249 <td>--cwd DIR</td>
3251 <td>--cwd DIR</td>
3250 <td>change working directory</td></tr>
3252 <td>change working directory</td></tr>
3251 <tr><td>-y</td>
3253 <tr><td>-y</td>
3252 <td>--noninteractive</td>
3254 <td>--noninteractive</td>
3253 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
3255 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
3254 <tr><td>-q</td>
3256 <tr><td>-q</td>
3255 <td>--quiet</td>
3257 <td>--quiet</td>
3256 <td>suppress output</td></tr>
3258 <td>suppress output</td></tr>
3257 <tr><td>-v</td>
3259 <tr><td>-v</td>
3258 <td>--verbose</td>
3260 <td>--verbose</td>
3259 <td>enable additional output</td></tr>
3261 <td>enable additional output</td></tr>
3260 <tr><td></td>
3262 <tr><td></td>
3261 <td>--color TYPE</td>
3263 <td>--color TYPE</td>
3262 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
3264 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
3263 <tr><td></td>
3265 <tr><td></td>
3264 <td>--config CONFIG [+]</td>
3266 <td>--config CONFIG [+]</td>
3265 <td>set/override config option (use 'section.name=value')</td></tr>
3267 <td>set/override config option (use 'section.name=value')</td></tr>
3266 <tr><td></td>
3268 <tr><td></td>
3267 <td>--debug</td>
3269 <td>--debug</td>
3268 <td>enable debugging output</td></tr>
3270 <td>enable debugging output</td></tr>
3269 <tr><td></td>
3271 <tr><td></td>
3270 <td>--debugger</td>
3272 <td>--debugger</td>
3271 <td>start debugger</td></tr>
3273 <td>start debugger</td></tr>
3272 <tr><td></td>
3274 <tr><td></td>
3273 <td>--encoding ENCODE</td>
3275 <td>--encoding ENCODE</td>
3274 <td>set the charset encoding (default: ascii)</td></tr>
3276 <td>set the charset encoding (default: ascii)</td></tr>
3275 <tr><td></td>
3277 <tr><td></td>
3276 <td>--encodingmode MODE</td>
3278 <td>--encodingmode MODE</td>
3277 <td>set the charset encoding mode (default: strict)</td></tr>
3279 <td>set the charset encoding mode (default: strict)</td></tr>
3278 <tr><td></td>
3280 <tr><td></td>
3279 <td>--traceback</td>
3281 <td>--traceback</td>
3280 <td>always print a traceback on exception</td></tr>
3282 <td>always print a traceback on exception</td></tr>
3281 <tr><td></td>
3283 <tr><td></td>
3282 <td>--time</td>
3284 <td>--time</td>
3283 <td>time how long the command takes</td></tr>
3285 <td>time how long the command takes</td></tr>
3284 <tr><td></td>
3286 <tr><td></td>
3285 <td>--profile</td>
3287 <td>--profile</td>
3286 <td>print command execution profile</td></tr>
3288 <td>print command execution profile</td></tr>
3287 <tr><td></td>
3289 <tr><td></td>
3288 <td>--version</td>
3290 <td>--version</td>
3289 <td>output version information and exit</td></tr>
3291 <td>output version information and exit</td></tr>
3290 <tr><td>-h</td>
3292 <tr><td>-h</td>
3291 <td>--help</td>
3293 <td>--help</td>
3292 <td>display help and exit</td></tr>
3294 <td>display help and exit</td></tr>
3293 <tr><td></td>
3295 <tr><td></td>
3294 <td>--hidden</td>
3296 <td>--hidden</td>
3295 <td>consider hidden changesets</td></tr>
3297 <td>consider hidden changesets</td></tr>
3296 <tr><td></td>
3298 <tr><td></td>
3297 <td>--pager TYPE</td>
3299 <td>--pager TYPE</td>
3298 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
3300 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
3299 </table>
3301 </table>
3300
3302
3301 </div>
3303 </div>
3302 </div>
3304 </div>
3303 </div>
3305 </div>
3304
3306
3305
3307
3306
3308
3307 </body>
3309 </body>
3308 </html>
3310 </html>
3309
3311
3310
3312
3311 $ get-with-headers.py $LOCALIP:$HGPORT "help/dates"
3313 $ get-with-headers.py $LOCALIP:$HGPORT "help/dates"
3312 200 Script output follows
3314 200 Script output follows
3313
3315
3314 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3316 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3315 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3317 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3316 <head>
3318 <head>
3317 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3319 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3318 <meta name="robots" content="index, nofollow" />
3320 <meta name="robots" content="index, nofollow" />
3319 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3321 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3320 <script type="text/javascript" src="/static/mercurial.js"></script>
3322 <script type="text/javascript" src="/static/mercurial.js"></script>
3321
3323
3322 <title>Help: dates</title>
3324 <title>Help: dates</title>
3323 </head>
3325 </head>
3324 <body>
3326 <body>
3325
3327
3326 <div class="container">
3328 <div class="container">
3327 <div class="menu">
3329 <div class="menu">
3328 <div class="logo">
3330 <div class="logo">
3329 <a href="https://mercurial-scm.org/">
3331 <a href="https://mercurial-scm.org/">
3330 <img src="/static/hglogo.png" alt="mercurial" /></a>
3332 <img src="/static/hglogo.png" alt="mercurial" /></a>
3331 </div>
3333 </div>
3332 <ul>
3334 <ul>
3333 <li><a href="/shortlog">log</a></li>
3335 <li><a href="/shortlog">log</a></li>
3334 <li><a href="/graph">graph</a></li>
3336 <li><a href="/graph">graph</a></li>
3335 <li><a href="/tags">tags</a></li>
3337 <li><a href="/tags">tags</a></li>
3336 <li><a href="/bookmarks">bookmarks</a></li>
3338 <li><a href="/bookmarks">bookmarks</a></li>
3337 <li><a href="/branches">branches</a></li>
3339 <li><a href="/branches">branches</a></li>
3338 </ul>
3340 </ul>
3339 <ul>
3341 <ul>
3340 <li class="active"><a href="/help">help</a></li>
3342 <li class="active"><a href="/help">help</a></li>
3341 </ul>
3343 </ul>
3342 </div>
3344 </div>
3343
3345
3344 <div class="main">
3346 <div class="main">
3345 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3347 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3346 <h3>Help: dates</h3>
3348 <h3>Help: dates</h3>
3347
3349
3348 <form class="search" action="/log">
3350 <form class="search" action="/log">
3349
3351
3350 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3352 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3351 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3353 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3352 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3354 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3353 </form>
3355 </form>
3354 <div id="doc">
3356 <div id="doc">
3355 <h1>Date Formats</h1>
3357 <h1>Date Formats</h1>
3356 <p>
3358 <p>
3357 Some commands allow the user to specify a date, e.g.:
3359 Some commands allow the user to specify a date, e.g.:
3358 </p>
3360 </p>
3359 <ul>
3361 <ul>
3360 <li> backout, commit, import, tag: Specify the commit date.
3362 <li> backout, commit, import, tag: Specify the commit date.
3361 <li> log, revert, update: Select revision(s) by date.
3363 <li> log, revert, update: Select revision(s) by date.
3362 </ul>
3364 </ul>
3363 <p>
3365 <p>
3364 Many date formats are valid. Here are some examples:
3366 Many date formats are valid. Here are some examples:
3365 </p>
3367 </p>
3366 <ul>
3368 <ul>
3367 <li> &quot;Wed Dec 6 13:18:29 2006&quot; (local timezone assumed)
3369 <li> &quot;Wed Dec 6 13:18:29 2006&quot; (local timezone assumed)
3368 <li> &quot;Dec 6 13:18 -0600&quot; (year assumed, time offset provided)
3370 <li> &quot;Dec 6 13:18 -0600&quot; (year assumed, time offset provided)
3369 <li> &quot;Dec 6 13:18 UTC&quot; (UTC and GMT are aliases for +0000)
3371 <li> &quot;Dec 6 13:18 UTC&quot; (UTC and GMT are aliases for +0000)
3370 <li> &quot;Dec 6&quot; (midnight)
3372 <li> &quot;Dec 6&quot; (midnight)
3371 <li> &quot;13:18&quot; (today assumed)
3373 <li> &quot;13:18&quot; (today assumed)
3372 <li> &quot;3:39&quot; (3:39AM assumed)
3374 <li> &quot;3:39&quot; (3:39AM assumed)
3373 <li> &quot;3:39pm&quot; (15:39)
3375 <li> &quot;3:39pm&quot; (15:39)
3374 <li> &quot;2006-12-06 13:18:29&quot; (ISO 8601 format)
3376 <li> &quot;2006-12-06 13:18:29&quot; (ISO 8601 format)
3375 <li> &quot;2006-12-6 13:18&quot;
3377 <li> &quot;2006-12-6 13:18&quot;
3376 <li> &quot;2006-12-6&quot;
3378 <li> &quot;2006-12-6&quot;
3377 <li> &quot;12-6&quot;
3379 <li> &quot;12-6&quot;
3378 <li> &quot;12/6&quot;
3380 <li> &quot;12/6&quot;
3379 <li> &quot;12/6/6&quot; (Dec 6 2006)
3381 <li> &quot;12/6/6&quot; (Dec 6 2006)
3380 <li> &quot;today&quot; (midnight)
3382 <li> &quot;today&quot; (midnight)
3381 <li> &quot;yesterday&quot; (midnight)
3383 <li> &quot;yesterday&quot; (midnight)
3382 <li> &quot;now&quot; - right now
3384 <li> &quot;now&quot; - right now
3383 </ul>
3385 </ul>
3384 <p>
3386 <p>
3385 Lastly, there is Mercurial's internal format:
3387 Lastly, there is Mercurial's internal format:
3386 </p>
3388 </p>
3387 <ul>
3389 <ul>
3388 <li> &quot;1165411109 0&quot; (Wed Dec 6 13:18:29 2006 UTC)
3390 <li> &quot;1165411109 0&quot; (Wed Dec 6 13:18:29 2006 UTC)
3389 </ul>
3391 </ul>
3390 <p>
3392 <p>
3391 This is the internal representation format for dates. The first number
3393 This is the internal representation format for dates. The first number
3392 is the number of seconds since the epoch (1970-01-01 00:00 UTC). The
3394 is the number of seconds since the epoch (1970-01-01 00:00 UTC). The
3393 second is the offset of the local timezone, in seconds west of UTC
3395 second is the offset of the local timezone, in seconds west of UTC
3394 (negative if the timezone is east of UTC).
3396 (negative if the timezone is east of UTC).
3395 </p>
3397 </p>
3396 <p>
3398 <p>
3397 The log command also accepts date ranges:
3399 The log command also accepts date ranges:
3398 </p>
3400 </p>
3399 <ul>
3401 <ul>
3400 <li> &quot;&lt;DATE&quot; - at or before a given date/time
3402 <li> &quot;&lt;DATE&quot; - at or before a given date/time
3401 <li> &quot;&gt;DATE&quot; - on or after a given date/time
3403 <li> &quot;&gt;DATE&quot; - on or after a given date/time
3402 <li> &quot;DATE to DATE&quot; - a date range, inclusive
3404 <li> &quot;DATE to DATE&quot; - a date range, inclusive
3403 <li> &quot;-DAYS&quot; - within a given number of days from today
3405 <li> &quot;-DAYS&quot; - within a given number of days from today
3404 </ul>
3406 </ul>
3405
3407
3406 </div>
3408 </div>
3407 </div>
3409 </div>
3408 </div>
3410 </div>
3409
3411
3410
3412
3411
3413
3412 </body>
3414 </body>
3413 </html>
3415 </html>
3414
3416
3415
3417
3416 $ get-with-headers.py $LOCALIP:$HGPORT "help/pager"
3418 $ get-with-headers.py $LOCALIP:$HGPORT "help/pager"
3417 200 Script output follows
3419 200 Script output follows
3418
3420
3419 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3421 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3420 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3422 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3421 <head>
3423 <head>
3422 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3424 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3423 <meta name="robots" content="index, nofollow" />
3425 <meta name="robots" content="index, nofollow" />
3424 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3426 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3425 <script type="text/javascript" src="/static/mercurial.js"></script>
3427 <script type="text/javascript" src="/static/mercurial.js"></script>
3426
3428
3427 <title>Help: pager</title>
3429 <title>Help: pager</title>
3428 </head>
3430 </head>
3429 <body>
3431 <body>
3430
3432
3431 <div class="container">
3433 <div class="container">
3432 <div class="menu">
3434 <div class="menu">
3433 <div class="logo">
3435 <div class="logo">
3434 <a href="https://mercurial-scm.org/">
3436 <a href="https://mercurial-scm.org/">
3435 <img src="/static/hglogo.png" alt="mercurial" /></a>
3437 <img src="/static/hglogo.png" alt="mercurial" /></a>
3436 </div>
3438 </div>
3437 <ul>
3439 <ul>
3438 <li><a href="/shortlog">log</a></li>
3440 <li><a href="/shortlog">log</a></li>
3439 <li><a href="/graph">graph</a></li>
3441 <li><a href="/graph">graph</a></li>
3440 <li><a href="/tags">tags</a></li>
3442 <li><a href="/tags">tags</a></li>
3441 <li><a href="/bookmarks">bookmarks</a></li>
3443 <li><a href="/bookmarks">bookmarks</a></li>
3442 <li><a href="/branches">branches</a></li>
3444 <li><a href="/branches">branches</a></li>
3443 </ul>
3445 </ul>
3444 <ul>
3446 <ul>
3445 <li class="active"><a href="/help">help</a></li>
3447 <li class="active"><a href="/help">help</a></li>
3446 </ul>
3448 </ul>
3447 </div>
3449 </div>
3448
3450
3449 <div class="main">
3451 <div class="main">
3450 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3452 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3451 <h3>Help: pager</h3>
3453 <h3>Help: pager</h3>
3452
3454
3453 <form class="search" action="/log">
3455 <form class="search" action="/log">
3454
3456
3455 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3457 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3456 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3458 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3457 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3459 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3458 </form>
3460 </form>
3459 <div id="doc">
3461 <div id="doc">
3460 <h1>Pager Support</h1>
3462 <h1>Pager Support</h1>
3461 <p>
3463 <p>
3462 Some Mercurial commands can produce a lot of output, and Mercurial will
3464 Some Mercurial commands can produce a lot of output, and Mercurial will
3463 attempt to use a pager to make those commands more pleasant.
3465 attempt to use a pager to make those commands more pleasant.
3464 </p>
3466 </p>
3465 <p>
3467 <p>
3466 To set the pager that should be used, set the application variable:
3468 To set the pager that should be used, set the application variable:
3467 </p>
3469 </p>
3468 <pre>
3470 <pre>
3469 [pager]
3471 [pager]
3470 pager = less -FRX
3472 pager = less -FRX
3471 </pre>
3473 </pre>
3472 <p>
3474 <p>
3473 If no pager is set in the user or repository configuration, Mercurial uses the
3475 If no pager is set in the user or repository configuration, Mercurial uses the
3474 environment variable $PAGER. If $PAGER is not set, pager.pager from the default
3476 environment variable $PAGER. If $PAGER is not set, pager.pager from the default
3475 or system configuration is used. If none of these are set, a default pager will
3477 or system configuration is used. If none of these are set, a default pager will
3476 be used, typically 'less' on Unix and 'more' on Windows.
3478 be used, typically 'less' on Unix and 'more' on Windows.
3477 </p>
3479 </p>
3478 <p>
3480 <p>
3479 You can disable the pager for certain commands by adding them to the
3481 You can disable the pager for certain commands by adding them to the
3480 pager.ignore list:
3482 pager.ignore list:
3481 </p>
3483 </p>
3482 <pre>
3484 <pre>
3483 [pager]
3485 [pager]
3484 ignore = version, help, update
3486 ignore = version, help, update
3485 </pre>
3487 </pre>
3486 <p>
3488 <p>
3487 To ignore global commands like 'hg version' or 'hg help', you have
3489 To ignore global commands like 'hg version' or 'hg help', you have
3488 to specify them in your user configuration file.
3490 to specify them in your user configuration file.
3489 </p>
3491 </p>
3490 <p>
3492 <p>
3491 To control whether the pager is used at all for an individual command,
3493 To control whether the pager is used at all for an individual command,
3492 you can use --pager=&lt;value&gt;:
3494 you can use --pager=&lt;value&gt;:
3493 </p>
3495 </p>
3494 <ul>
3496 <ul>
3495 <li> use as needed: 'auto'.
3497 <li> use as needed: 'auto'.
3496 <li> require the pager: 'yes' or 'on'.
3498 <li> require the pager: 'yes' or 'on'.
3497 <li> suppress the pager: 'no' or 'off' (any unrecognized value will also work).
3499 <li> suppress the pager: 'no' or 'off' (any unrecognized value will also work).
3498 </ul>
3500 </ul>
3499 <p>
3501 <p>
3500 To globally turn off all attempts to use a pager, set:
3502 To globally turn off all attempts to use a pager, set:
3501 </p>
3503 </p>
3502 <pre>
3504 <pre>
3503 [ui]
3505 [ui]
3504 paginate = never
3506 paginate = never
3505 </pre>
3507 </pre>
3506 <p>
3508 <p>
3507 which will prevent the pager from running.
3509 which will prevent the pager from running.
3508 </p>
3510 </p>
3509
3511
3510 </div>
3512 </div>
3511 </div>
3513 </div>
3512 </div>
3514 </div>
3513
3515
3514
3516
3515
3517
3516 </body>
3518 </body>
3517 </html>
3519 </html>
3518
3520
3519
3521
3520 Sub-topic indexes rendered properly
3522 Sub-topic indexes rendered properly
3521
3523
3522 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals"
3524 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals"
3523 200 Script output follows
3525 200 Script output follows
3524
3526
3525 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3527 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3526 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3528 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3527 <head>
3529 <head>
3528 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3530 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3529 <meta name="robots" content="index, nofollow" />
3531 <meta name="robots" content="index, nofollow" />
3530 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3532 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3531 <script type="text/javascript" src="/static/mercurial.js"></script>
3533 <script type="text/javascript" src="/static/mercurial.js"></script>
3532
3534
3533 <title>Help: internals</title>
3535 <title>Help: internals</title>
3534 </head>
3536 </head>
3535 <body>
3537 <body>
3536
3538
3537 <div class="container">
3539 <div class="container">
3538 <div class="menu">
3540 <div class="menu">
3539 <div class="logo">
3541 <div class="logo">
3540 <a href="https://mercurial-scm.org/">
3542 <a href="https://mercurial-scm.org/">
3541 <img src="/static/hglogo.png" alt="mercurial" /></a>
3543 <img src="/static/hglogo.png" alt="mercurial" /></a>
3542 </div>
3544 </div>
3543 <ul>
3545 <ul>
3544 <li><a href="/shortlog">log</a></li>
3546 <li><a href="/shortlog">log</a></li>
3545 <li><a href="/graph">graph</a></li>
3547 <li><a href="/graph">graph</a></li>
3546 <li><a href="/tags">tags</a></li>
3548 <li><a href="/tags">tags</a></li>
3547 <li><a href="/bookmarks">bookmarks</a></li>
3549 <li><a href="/bookmarks">bookmarks</a></li>
3548 <li><a href="/branches">branches</a></li>
3550 <li><a href="/branches">branches</a></li>
3549 </ul>
3551 </ul>
3550 <ul>
3552 <ul>
3551 <li><a href="/help">help</a></li>
3553 <li><a href="/help">help</a></li>
3552 </ul>
3554 </ul>
3553 </div>
3555 </div>
3554
3556
3555 <div class="main">
3557 <div class="main">
3556 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3558 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3557
3559
3558 <form class="search" action="/log">
3560 <form class="search" action="/log">
3559
3561
3560 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3562 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3561 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3563 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3562 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3564 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3563 </form>
3565 </form>
3564 <table class="bigtable">
3566 <table class="bigtable">
3565 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
3567 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
3566
3568
3567 <tr><td>
3569 <tr><td>
3568 <a href="/help/internals.bid-merge">
3570 <a href="/help/internals.bid-merge">
3569 bid-merge
3571 bid-merge
3570 </a>
3572 </a>
3571 </td><td>
3573 </td><td>
3572 Bid Merge Algorithm
3574 Bid Merge Algorithm
3573 </td></tr>
3575 </td></tr>
3574 <tr><td>
3576 <tr><td>
3575 <a href="/help/internals.bundle2">
3577 <a href="/help/internals.bundle2">
3576 bundle2
3578 bundle2
3577 </a>
3579 </a>
3578 </td><td>
3580 </td><td>
3579 Bundle2
3581 Bundle2
3580 </td></tr>
3582 </td></tr>
3581 <tr><td>
3583 <tr><td>
3582 <a href="/help/internals.bundles">
3584 <a href="/help/internals.bundles">
3583 bundles
3585 bundles
3584 </a>
3586 </a>
3585 </td><td>
3587 </td><td>
3586 Bundles
3588 Bundles
3587 </td></tr>
3589 </td></tr>
3588 <tr><td>
3590 <tr><td>
3589 <a href="/help/internals.cbor">
3591 <a href="/help/internals.cbor">
3590 cbor
3592 cbor
3591 </a>
3593 </a>
3592 </td><td>
3594 </td><td>
3593 CBOR
3595 CBOR
3594 </td></tr>
3596 </td></tr>
3595 <tr><td>
3597 <tr><td>
3596 <a href="/help/internals.censor">
3598 <a href="/help/internals.censor">
3597 censor
3599 censor
3598 </a>
3600 </a>
3599 </td><td>
3601 </td><td>
3600 Censor
3602 Censor
3601 </td></tr>
3603 </td></tr>
3602 <tr><td>
3604 <tr><td>
3603 <a href="/help/internals.changegroups">
3605 <a href="/help/internals.changegroups">
3604 changegroups
3606 changegroups
3605 </a>
3607 </a>
3606 </td><td>
3608 </td><td>
3607 Changegroups
3609 Changegroups
3608 </td></tr>
3610 </td></tr>
3609 <tr><td>
3611 <tr><td>
3610 <a href="/help/internals.config">
3612 <a href="/help/internals.config">
3611 config
3613 config
3612 </a>
3614 </a>
3613 </td><td>
3615 </td><td>
3614 Config Registrar
3616 Config Registrar
3615 </td></tr>
3617 </td></tr>
3616 <tr><td>
3618 <tr><td>
3617 <a href="/help/internals.dirstate-v2">
3619 <a href="/help/internals.dirstate-v2">
3618 dirstate-v2
3620 dirstate-v2
3619 </a>
3621 </a>
3620 </td><td>
3622 </td><td>
3621 dirstate-v2 file format
3623 dirstate-v2 file format
3622 </td></tr>
3624 </td></tr>
3623 <tr><td>
3625 <tr><td>
3624 <a href="/help/internals.extensions">
3626 <a href="/help/internals.extensions">
3625 extensions
3627 extensions
3626 </a>
3628 </a>
3627 </td><td>
3629 </td><td>
3628 Extension API
3630 Extension API
3629 </td></tr>
3631 </td></tr>
3630 <tr><td>
3632 <tr><td>
3631 <a href="/help/internals.mergestate">
3633 <a href="/help/internals.mergestate">
3632 mergestate
3634 mergestate
3633 </a>
3635 </a>
3634 </td><td>
3636 </td><td>
3635 Mergestate
3637 Mergestate
3636 </td></tr>
3638 </td></tr>
3637 <tr><td>
3639 <tr><td>
3638 <a href="/help/internals.requirements">
3640 <a href="/help/internals.requirements">
3639 requirements
3641 requirements
3640 </a>
3642 </a>
3641 </td><td>
3643 </td><td>
3642 Repository Requirements
3644 Repository Requirements
3643 </td></tr>
3645 </td></tr>
3644 <tr><td>
3646 <tr><td>
3645 <a href="/help/internals.revlogs">
3647 <a href="/help/internals.revlogs">
3646 revlogs
3648 revlogs
3647 </a>
3649 </a>
3648 </td><td>
3650 </td><td>
3649 Revision Logs
3651 Revision Logs
3650 </td></tr>
3652 </td></tr>
3651 <tr><td>
3653 <tr><td>
3652 <a href="/help/internals.wireprotocol">
3654 <a href="/help/internals.wireprotocol">
3653 wireprotocol
3655 wireprotocol
3654 </a>
3656 </a>
3655 </td><td>
3657 </td><td>
3656 Wire Protocol
3658 Wire Protocol
3657 </td></tr>
3659 </td></tr>
3658 <tr><td>
3660 <tr><td>
3659 <a href="/help/internals.wireprotocolrpc">
3661 <a href="/help/internals.wireprotocolrpc">
3660 wireprotocolrpc
3662 wireprotocolrpc
3661 </a>
3663 </a>
3662 </td><td>
3664 </td><td>
3663 Wire Protocol RPC
3665 Wire Protocol RPC
3664 </td></tr>
3666 </td></tr>
3665 <tr><td>
3667 <tr><td>
3666 <a href="/help/internals.wireprotocolv2">
3668 <a href="/help/internals.wireprotocolv2">
3667 wireprotocolv2
3669 wireprotocolv2
3668 </a>
3670 </a>
3669 </td><td>
3671 </td><td>
3670 Wire Protocol Version 2
3672 Wire Protocol Version 2
3671 </td></tr>
3673 </td></tr>
3672
3674
3673
3675
3674
3676
3675
3677
3676
3678
3677 </table>
3679 </table>
3678 </div>
3680 </div>
3679 </div>
3681 </div>
3680
3682
3681
3683
3682
3684
3683 </body>
3685 </body>
3684 </html>
3686 </html>
3685
3687
3686
3688
3687 Sub-topic topics rendered properly
3689 Sub-topic topics rendered properly
3688
3690
3689 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals.changegroups"
3691 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals.changegroups"
3690 200 Script output follows
3692 200 Script output follows
3691
3693
3692 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3694 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3693 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3695 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3694 <head>
3696 <head>
3695 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3697 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3696 <meta name="robots" content="index, nofollow" />
3698 <meta name="robots" content="index, nofollow" />
3697 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3699 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3698 <script type="text/javascript" src="/static/mercurial.js"></script>
3700 <script type="text/javascript" src="/static/mercurial.js"></script>
3699
3701
3700 <title>Help: internals.changegroups</title>
3702 <title>Help: internals.changegroups</title>
3701 </head>
3703 </head>
3702 <body>
3704 <body>
3703
3705
3704 <div class="container">
3706 <div class="container">
3705 <div class="menu">
3707 <div class="menu">
3706 <div class="logo">
3708 <div class="logo">
3707 <a href="https://mercurial-scm.org/">
3709 <a href="https://mercurial-scm.org/">
3708 <img src="/static/hglogo.png" alt="mercurial" /></a>
3710 <img src="/static/hglogo.png" alt="mercurial" /></a>
3709 </div>
3711 </div>
3710 <ul>
3712 <ul>
3711 <li><a href="/shortlog">log</a></li>
3713 <li><a href="/shortlog">log</a></li>
3712 <li><a href="/graph">graph</a></li>
3714 <li><a href="/graph">graph</a></li>
3713 <li><a href="/tags">tags</a></li>
3715 <li><a href="/tags">tags</a></li>
3714 <li><a href="/bookmarks">bookmarks</a></li>
3716 <li><a href="/bookmarks">bookmarks</a></li>
3715 <li><a href="/branches">branches</a></li>
3717 <li><a href="/branches">branches</a></li>
3716 </ul>
3718 </ul>
3717 <ul>
3719 <ul>
3718 <li class="active"><a href="/help">help</a></li>
3720 <li class="active"><a href="/help">help</a></li>
3719 </ul>
3721 </ul>
3720 </div>
3722 </div>
3721
3723
3722 <div class="main">
3724 <div class="main">
3723 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3725 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3724 <h3>Help: internals.changegroups</h3>
3726 <h3>Help: internals.changegroups</h3>
3725
3727
3726 <form class="search" action="/log">
3728 <form class="search" action="/log">
3727
3729
3728 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3730 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3729 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3731 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3730 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3732 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3731 </form>
3733 </form>
3732 <div id="doc">
3734 <div id="doc">
3733 <h1>Changegroups</h1>
3735 <h1>Changegroups</h1>
3734 <p>
3736 <p>
3735 Changegroups are representations of repository revlog data, specifically
3737 Changegroups are representations of repository revlog data, specifically
3736 the changelog data, root/flat manifest data, treemanifest data, and
3738 the changelog data, root/flat manifest data, treemanifest data, and
3737 filelogs.
3739 filelogs.
3738 </p>
3740 </p>
3739 <p>
3741 <p>
3740 There are 4 versions of changegroups: &quot;1&quot;, &quot;2&quot;, &quot;3&quot; and &quot;4&quot;. From a
3742 There are 4 versions of changegroups: &quot;1&quot;, &quot;2&quot;, &quot;3&quot; and &quot;4&quot;. From a
3741 high-level, versions &quot;1&quot; and &quot;2&quot; are almost exactly the same, with the
3743 high-level, versions &quot;1&quot; and &quot;2&quot; are almost exactly the same, with the
3742 only difference being an additional item in the *delta header*. Version
3744 only difference being an additional item in the *delta header*. Version
3743 &quot;3&quot; adds support for storage flags in the *delta header* and optionally
3745 &quot;3&quot; adds support for storage flags in the *delta header* and optionally
3744 exchanging treemanifests (enabled by setting an option on the
3746 exchanging treemanifests (enabled by setting an option on the
3745 &quot;changegroup&quot; part in the bundle2). Version &quot;4&quot; adds support for exchanging
3747 &quot;changegroup&quot; part in the bundle2). Version &quot;4&quot; adds support for exchanging
3746 sidedata (additional revision metadata not part of the digest).
3748 sidedata (additional revision metadata not part of the digest).
3747 </p>
3749 </p>
3748 <p>
3750 <p>
3749 Changegroups when not exchanging treemanifests consist of 3 logical
3751 Changegroups when not exchanging treemanifests consist of 3 logical
3750 segments:
3752 segments:
3751 </p>
3753 </p>
3752 <pre>
3754 <pre>
3753 +---------------------------------+
3755 +---------------------------------+
3754 | | | |
3756 | | | |
3755 | changeset | manifest | filelogs |
3757 | changeset | manifest | filelogs |
3756 | | | |
3758 | | | |
3757 | | | |
3759 | | | |
3758 +---------------------------------+
3760 +---------------------------------+
3759 </pre>
3761 </pre>
3760 <p>
3762 <p>
3761 When exchanging treemanifests, there are 4 logical segments:
3763 When exchanging treemanifests, there are 4 logical segments:
3762 </p>
3764 </p>
3763 <pre>
3765 <pre>
3764 +-------------------------------------------------+
3766 +-------------------------------------------------+
3765 | | | | |
3767 | | | | |
3766 | changeset | root | treemanifests | filelogs |
3768 | changeset | root | treemanifests | filelogs |
3767 | | manifest | | |
3769 | | manifest | | |
3768 | | | | |
3770 | | | | |
3769 +-------------------------------------------------+
3771 +-------------------------------------------------+
3770 </pre>
3772 </pre>
3771 <p>
3773 <p>
3772 The principle building block of each segment is a *chunk*. A *chunk*
3774 The principle building block of each segment is a *chunk*. A *chunk*
3773 is a framed piece of data:
3775 is a framed piece of data:
3774 </p>
3776 </p>
3775 <pre>
3777 <pre>
3776 +---------------------------------------+
3778 +---------------------------------------+
3777 | | |
3779 | | |
3778 | length | data |
3780 | length | data |
3779 | (4 bytes) | (&lt;length - 4&gt; bytes) |
3781 | (4 bytes) | (&lt;length - 4&gt; bytes) |
3780 | | |
3782 | | |
3781 +---------------------------------------+
3783 +---------------------------------------+
3782 </pre>
3784 </pre>
3783 <p>
3785 <p>
3784 All integers are big-endian signed integers. Each chunk starts with a 32-bit
3786 All integers are big-endian signed integers. Each chunk starts with a 32-bit
3785 integer indicating the length of the entire chunk (including the length field
3787 integer indicating the length of the entire chunk (including the length field
3786 itself).
3788 itself).
3787 </p>
3789 </p>
3788 <p>
3790 <p>
3789 There is a special case chunk that has a value of 0 for the length
3791 There is a special case chunk that has a value of 0 for the length
3790 (&quot;0x00000000&quot;). We call this an *empty chunk*.
3792 (&quot;0x00000000&quot;). We call this an *empty chunk*.
3791 </p>
3793 </p>
3792 <h2>Delta Groups</h2>
3794 <h2>Delta Groups</h2>
3793 <p>
3795 <p>
3794 A *delta group* expresses the content of a revlog as a series of deltas,
3796 A *delta group* expresses the content of a revlog as a series of deltas,
3795 or patches against previous revisions.
3797 or patches against previous revisions.
3796 </p>
3798 </p>
3797 <p>
3799 <p>
3798 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
3800 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
3799 to signal the end of the delta group:
3801 to signal the end of the delta group:
3800 </p>
3802 </p>
3801 <pre>
3803 <pre>
3802 +------------------------------------------------------------------------+
3804 +------------------------------------------------------------------------+
3803 | | | | | |
3805 | | | | | |
3804 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
3806 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
3805 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
3807 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
3806 | | | | | |
3808 | | | | | |
3807 +------------------------------------------------------------------------+
3809 +------------------------------------------------------------------------+
3808 </pre>
3810 </pre>
3809 <p>
3811 <p>
3810 Each *chunk*'s data consists of the following:
3812 Each *chunk*'s data consists of the following:
3811 </p>
3813 </p>
3812 <pre>
3814 <pre>
3813 +---------------------------------------+
3815 +---------------------------------------+
3814 | | |
3816 | | |
3815 | delta header | delta data |
3817 | delta header | delta data |
3816 | (various by version) | (various) |
3818 | (various by version) | (various) |
3817 | | |
3819 | | |
3818 +---------------------------------------+
3820 +---------------------------------------+
3819 </pre>
3821 </pre>
3820 <p>
3822 <p>
3821 The *delta data* is a series of *delta*s that describe a diff from an existing
3823 The *delta data* is a series of *delta*s that describe a diff from an existing
3822 entry (either that the recipient already has, or previously specified in the
3824 entry (either that the recipient already has, or previously specified in the
3823 bundle/changegroup).
3825 bundle/changegroup).
3824 </p>
3826 </p>
3825 <p>
3827 <p>
3826 The *delta header* is different between versions &quot;1&quot;, &quot;2&quot;, &quot;3&quot; and &quot;4&quot;
3828 The *delta header* is different between versions &quot;1&quot;, &quot;2&quot;, &quot;3&quot; and &quot;4&quot;
3827 of the changegroup format.
3829 of the changegroup format.
3828 </p>
3830 </p>
3829 <p>
3831 <p>
3830 Version 1 (headerlen=80):
3832 Version 1 (headerlen=80):
3831 </p>
3833 </p>
3832 <pre>
3834 <pre>
3833 +------------------------------------------------------+
3835 +------------------------------------------------------+
3834 | | | | |
3836 | | | | |
3835 | node | p1 node | p2 node | link node |
3837 | node | p1 node | p2 node | link node |
3836 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3838 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3837 | | | | |
3839 | | | | |
3838 +------------------------------------------------------+
3840 +------------------------------------------------------+
3839 </pre>
3841 </pre>
3840 <p>
3842 <p>
3841 Version 2 (headerlen=100):
3843 Version 2 (headerlen=100):
3842 </p>
3844 </p>
3843 <pre>
3845 <pre>
3844 +------------------------------------------------------------------+
3846 +------------------------------------------------------------------+
3845 | | | | | |
3847 | | | | | |
3846 | node | p1 node | p2 node | base node | link node |
3848 | node | p1 node | p2 node | base node | link node |
3847 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3849 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3848 | | | | | |
3850 | | | | | |
3849 +------------------------------------------------------------------+
3851 +------------------------------------------------------------------+
3850 </pre>
3852 </pre>
3851 <p>
3853 <p>
3852 Version 3 (headerlen=102):
3854 Version 3 (headerlen=102):
3853 </p>
3855 </p>
3854 <pre>
3856 <pre>
3855 +------------------------------------------------------------------------------+
3857 +------------------------------------------------------------------------------+
3856 | | | | | | |
3858 | | | | | | |
3857 | node | p1 node | p2 node | base node | link node | flags |
3859 | node | p1 node | p2 node | base node | link node | flags |
3858 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
3860 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
3859 | | | | | | |
3861 | | | | | | |
3860 +------------------------------------------------------------------------------+
3862 +------------------------------------------------------------------------------+
3861 </pre>
3863 </pre>
3862 <p>
3864 <p>
3863 Version 4 (headerlen=103):
3865 Version 4 (headerlen=103):
3864 </p>
3866 </p>
3865 <pre>
3867 <pre>
3866 +------------------------------------------------------------------------------+----------+
3868 +------------------------------------------------------------------------------+----------+
3867 | | | | | | | |
3869 | | | | | | | |
3868 | node | p1 node | p2 node | base node | link node | flags | pflags |
3870 | node | p1 node | p2 node | base node | link node | flags | pflags |
3869 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) | (1 byte) |
3871 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) | (1 byte) |
3870 | | | | | | | |
3872 | | | | | | | |
3871 +------------------------------------------------------------------------------+----------+
3873 +------------------------------------------------------------------------------+----------+
3872 </pre>
3874 </pre>
3873 <p>
3875 <p>
3874 The *delta data* consists of &quot;chunklen - 4 - headerlen&quot; bytes, which contain a
3876 The *delta data* consists of &quot;chunklen - 4 - headerlen&quot; bytes, which contain a
3875 series of *delta*s, densely packed (no separators). These deltas describe a diff
3877 series of *delta*s, densely packed (no separators). These deltas describe a diff
3876 from an existing entry (either that the recipient already has, or previously
3878 from an existing entry (either that the recipient already has, or previously
3877 specified in the bundle/changegroup). The format is described more fully in
3879 specified in the bundle/changegroup). The format is described more fully in
3878 &quot;hg help internals.bdiff&quot;, but briefly:
3880 &quot;hg help internals.bdiff&quot;, but briefly:
3879 </p>
3881 </p>
3880 <pre>
3882 <pre>
3881 +---------------------------------------------------------------+
3883 +---------------------------------------------------------------+
3882 | | | | |
3884 | | | | |
3883 | start offset | end offset | new length | content |
3885 | start offset | end offset | new length | content |
3884 | (4 bytes) | (4 bytes) | (4 bytes) | (&lt;new length&gt; bytes) |
3886 | (4 bytes) | (4 bytes) | (4 bytes) | (&lt;new length&gt; bytes) |
3885 | | | | |
3887 | | | | |
3886 +---------------------------------------------------------------+
3888 +---------------------------------------------------------------+
3887 </pre>
3889 </pre>
3888 <p>
3890 <p>
3889 Please note that the length field in the delta data does *not* include itself.
3891 Please note that the length field in the delta data does *not* include itself.
3890 </p>
3892 </p>
3891 <p>
3893 <p>
3892 In version 1, the delta is always applied against the previous node from
3894 In version 1, the delta is always applied against the previous node from
3893 the changegroup or the first parent if this is the first entry in the
3895 the changegroup or the first parent if this is the first entry in the
3894 changegroup.
3896 changegroup.
3895 </p>
3897 </p>
3896 <p>
3898 <p>
3897 In version 2 and up, the delta base node is encoded in the entry in the
3899 In version 2 and up, the delta base node is encoded in the entry in the
3898 changegroup. This allows the delta to be expressed against any parent,
3900 changegroup. This allows the delta to be expressed against any parent,
3899 which can result in smaller deltas and more efficient encoding of data.
3901 which can result in smaller deltas and more efficient encoding of data.
3900 </p>
3902 </p>
3901 <p>
3903 <p>
3902 The *flags* field holds bitwise flags affecting the processing of revision
3904 The *flags* field holds bitwise flags affecting the processing of revision
3903 data. The following flags are defined:
3905 data. The following flags are defined:
3904 </p>
3906 </p>
3905 <dl>
3907 <dl>
3906 <dt>32768
3908 <dt>32768
3907 <dd>Censored revision. The revision's fulltext has been replaced by censor metadata. May only occur on file revisions.
3909 <dd>Censored revision. The revision's fulltext has been replaced by censor metadata. May only occur on file revisions.
3908 <dt>16384
3910 <dt>16384
3909 <dd>Ellipsis revision. Revision hash does not match data (likely due to rewritten parents).
3911 <dd>Ellipsis revision. Revision hash does not match data (likely due to rewritten parents).
3910 <dt>8192
3912 <dt>8192
3911 <dd>Externally stored. The revision fulltext contains &quot;key:value&quot; &quot;\n&quot; delimited metadata defining an object stored elsewhere. Used by the LFS extension.
3913 <dd>Externally stored. The revision fulltext contains &quot;key:value&quot; &quot;\n&quot; delimited metadata defining an object stored elsewhere. Used by the LFS extension.
3912 <dt>4096
3914 <dt>4096
3913 <dd>Contains copy information. This revision changes files in a way that could affect copy tracing. This does *not* affect changegroup handling, but is relevant for other parts of Mercurial.
3915 <dd>Contains copy information. This revision changes files in a way that could affect copy tracing. This does *not* affect changegroup handling, but is relevant for other parts of Mercurial.
3914 </dl>
3916 </dl>
3915 <p>
3917 <p>
3916 For historical reasons, the integer values are identical to revlog version 1
3918 For historical reasons, the integer values are identical to revlog version 1
3917 per-revision storage flags and correspond to bits being set in this 2-byte
3919 per-revision storage flags and correspond to bits being set in this 2-byte
3918 field. Bits were allocated starting from the most-significant bit, hence the
3920 field. Bits were allocated starting from the most-significant bit, hence the
3919 reverse ordering and allocation of these flags.
3921 reverse ordering and allocation of these flags.
3920 </p>
3922 </p>
3921 <p>
3923 <p>
3922 The *pflags* (protocol flags) field holds bitwise flags affecting the protocol
3924 The *pflags* (protocol flags) field holds bitwise flags affecting the protocol
3923 itself. They are first in the header since they may affect the handling of the
3925 itself. They are first in the header since they may affect the handling of the
3924 rest of the fields in a future version. They are defined as such:
3926 rest of the fields in a future version. They are defined as such:
3925 </p>
3927 </p>
3926 <dl>
3928 <dl>
3927 <dt>1 indicates whether to read a chunk of sidedata (of variable length) right
3929 <dt>1 indicates whether to read a chunk of sidedata (of variable length) right
3928 <dd>after the revision flags.
3930 <dd>after the revision flags.
3929 </dl>
3931 </dl>
3930 <h2>Changeset Segment</h2>
3932 <h2>Changeset Segment</h2>
3931 <p>
3933 <p>
3932 The *changeset segment* consists of a single *delta group* holding
3934 The *changeset segment* consists of a single *delta group* holding
3933 changelog data. The *empty chunk* at the end of the *delta group* denotes
3935 changelog data. The *empty chunk* at the end of the *delta group* denotes
3934 the boundary to the *manifest segment*.
3936 the boundary to the *manifest segment*.
3935 </p>
3937 </p>
3936 <h2>Manifest Segment</h2>
3938 <h2>Manifest Segment</h2>
3937 <p>
3939 <p>
3938 The *manifest segment* consists of a single *delta group* holding manifest
3940 The *manifest segment* consists of a single *delta group* holding manifest
3939 data. If treemanifests are in use, it contains only the manifest for the
3941 data. If treemanifests are in use, it contains only the manifest for the
3940 root directory of the repository. Otherwise, it contains the entire
3942 root directory of the repository. Otherwise, it contains the entire
3941 manifest data. The *empty chunk* at the end of the *delta group* denotes
3943 manifest data. The *empty chunk* at the end of the *delta group* denotes
3942 the boundary to the next segment (either the *treemanifests segment* or the
3944 the boundary to the next segment (either the *treemanifests segment* or the
3943 *filelogs segment*, depending on version and the request options).
3945 *filelogs segment*, depending on version and the request options).
3944 </p>
3946 </p>
3945 <h3>Treemanifests Segment</h3>
3947 <h3>Treemanifests Segment</h3>
3946 <p>
3948 <p>
3947 The *treemanifests segment* only exists in changegroup version &quot;3&quot; and &quot;4&quot;,
3949 The *treemanifests segment* only exists in changegroup version &quot;3&quot; and &quot;4&quot;,
3948 and only if the 'treemanifest' param is part of the bundle2 changegroup part
3950 and only if the 'treemanifest' param is part of the bundle2 changegroup part
3949 (it is not possible to use changegroup version 3 or 4 outside of bundle2).
3951 (it is not possible to use changegroup version 3 or 4 outside of bundle2).
3950 Aside from the filenames in the *treemanifests segment* containing a
3952 Aside from the filenames in the *treemanifests segment* containing a
3951 trailing &quot;/&quot; character, it behaves identically to the *filelogs segment*
3953 trailing &quot;/&quot; character, it behaves identically to the *filelogs segment*
3952 (see below). The final sub-segment is followed by an *empty chunk* (logically,
3954 (see below). The final sub-segment is followed by an *empty chunk* (logically,
3953 a sub-segment with filename size 0). This denotes the boundary to the
3955 a sub-segment with filename size 0). This denotes the boundary to the
3954 *filelogs segment*.
3956 *filelogs segment*.
3955 </p>
3957 </p>
3956 <h2>Filelogs Segment</h2>
3958 <h2>Filelogs Segment</h2>
3957 <p>
3959 <p>
3958 The *filelogs segment* consists of multiple sub-segments, each
3960 The *filelogs segment* consists of multiple sub-segments, each
3959 corresponding to an individual file whose data is being described:
3961 corresponding to an individual file whose data is being described:
3960 </p>
3962 </p>
3961 <pre>
3963 <pre>
3962 +--------------------------------------------------+
3964 +--------------------------------------------------+
3963 | | | | | |
3965 | | | | | |
3964 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
3966 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
3965 | | | | | (4 bytes) |
3967 | | | | | (4 bytes) |
3966 | | | | | |
3968 | | | | | |
3967 +--------------------------------------------------+
3969 +--------------------------------------------------+
3968 </pre>
3970 </pre>
3969 <p>
3971 <p>
3970 The final filelog sub-segment is followed by an *empty chunk* (logically,
3972 The final filelog sub-segment is followed by an *empty chunk* (logically,
3971 a sub-segment with filename size 0). This denotes the end of the segment
3973 a sub-segment with filename size 0). This denotes the end of the segment
3972 and of the overall changegroup.
3974 and of the overall changegroup.
3973 </p>
3975 </p>
3974 <p>
3976 <p>
3975 Each filelog sub-segment consists of the following:
3977 Each filelog sub-segment consists of the following:
3976 </p>
3978 </p>
3977 <pre>
3979 <pre>
3978 +------------------------------------------------------+
3980 +------------------------------------------------------+
3979 | | | |
3981 | | | |
3980 | filename length | filename | delta group |
3982 | filename length | filename | delta group |
3981 | (4 bytes) | (&lt;length - 4&gt; bytes) | (various) |
3983 | (4 bytes) | (&lt;length - 4&gt; bytes) | (various) |
3982 | | | |
3984 | | | |
3983 +------------------------------------------------------+
3985 +------------------------------------------------------+
3984 </pre>
3986 </pre>
3985 <p>
3987 <p>
3986 That is, a *chunk* consisting of the filename (not terminated or padded)
3988 That is, a *chunk* consisting of the filename (not terminated or padded)
3987 followed by N chunks constituting the *delta group* for this file. The
3989 followed by N chunks constituting the *delta group* for this file. The
3988 *empty chunk* at the end of each *delta group* denotes the boundary to the
3990 *empty chunk* at the end of each *delta group* denotes the boundary to the
3989 next filelog sub-segment.
3991 next filelog sub-segment.
3990 </p>
3992 </p>
3991
3993
3992 </div>
3994 </div>
3993 </div>
3995 </div>
3994 </div>
3996 </div>
3995
3997
3996
3998
3997
3999
3998 </body>
4000 </body>
3999 </html>
4001 </html>
4000
4002
4001
4003
4002 $ get-with-headers.py 127.0.0.1:$HGPORT "help/unknowntopic"
4004 $ get-with-headers.py 127.0.0.1:$HGPORT "help/unknowntopic"
4003 404 Not Found
4005 404 Not Found
4004
4006
4005 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4007 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4006 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
4008 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
4007 <head>
4009 <head>
4008 <link rel="icon" href="/static/hgicon.png" type="image/png" />
4010 <link rel="icon" href="/static/hgicon.png" type="image/png" />
4009 <meta name="robots" content="index, nofollow" />
4011 <meta name="robots" content="index, nofollow" />
4010 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
4012 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
4011 <script type="text/javascript" src="/static/mercurial.js"></script>
4013 <script type="text/javascript" src="/static/mercurial.js"></script>
4012
4014
4013 <title>test: error</title>
4015 <title>test: error</title>
4014 </head>
4016 </head>
4015 <body>
4017 <body>
4016
4018
4017 <div class="container">
4019 <div class="container">
4018 <div class="menu">
4020 <div class="menu">
4019 <div class="logo">
4021 <div class="logo">
4020 <a href="https://mercurial-scm.org/">
4022 <a href="https://mercurial-scm.org/">
4021 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
4023 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
4022 </div>
4024 </div>
4023 <ul>
4025 <ul>
4024 <li><a href="/shortlog">log</a></li>
4026 <li><a href="/shortlog">log</a></li>
4025 <li><a href="/graph">graph</a></li>
4027 <li><a href="/graph">graph</a></li>
4026 <li><a href="/tags">tags</a></li>
4028 <li><a href="/tags">tags</a></li>
4027 <li><a href="/bookmarks">bookmarks</a></li>
4029 <li><a href="/bookmarks">bookmarks</a></li>
4028 <li><a href="/branches">branches</a></li>
4030 <li><a href="/branches">branches</a></li>
4029 </ul>
4031 </ul>
4030 <ul>
4032 <ul>
4031 <li><a href="/help">help</a></li>
4033 <li><a href="/help">help</a></li>
4032 </ul>
4034 </ul>
4033 </div>
4035 </div>
4034
4036
4035 <div class="main">
4037 <div class="main">
4036
4038
4037 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
4039 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
4038 <h3>error</h3>
4040 <h3>error</h3>
4039
4041
4040
4042
4041 <form class="search" action="/log">
4043 <form class="search" action="/log">
4042
4044
4043 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
4045 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
4044 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
4046 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
4045 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
4047 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
4046 </form>
4048 </form>
4047
4049
4048 <div class="description">
4050 <div class="description">
4049 <p>
4051 <p>
4050 An error occurred while processing your request:
4052 An error occurred while processing your request:
4051 </p>
4053 </p>
4052 <p>
4054 <p>
4053 Not Found
4055 Not Found
4054 </p>
4056 </p>
4055 </div>
4057 </div>
4056 </div>
4058 </div>
4057 </div>
4059 </div>
4058
4060
4059
4061
4060
4062
4061 </body>
4063 </body>
4062 </html>
4064 </html>
4063
4065
4064 [1]
4066 [1]
4065
4067
4066 $ killdaemons.py
4068 $ killdaemons.py
4067
4069
4068 #endif
4070 #endif
@@ -1,2132 +1,2130 b''
1 #require no-reposimplestore
1 #require no-reposimplestore
2
2
3 $ cat >> $HGRCPATH << EOF
3 $ cat >> $HGRCPATH << EOF
4 > [extensions]
4 > [extensions]
5 > share =
5 > share =
6 > [format]
6 > [format]
7 > # stabilize test accross variant
7 > # stabilize test accross variant
8 > revlog-compression=zlib
8 > revlog-compression=zlib
9 > [storage]
9 > [storage]
10 > dirstate-v2.slow-path=allow
10 > dirstate-v2.slow-path=allow
11 > EOF
11 > EOF
12
12
13 store and revlogv1 are required in source
13 store and revlogv1 are required in source
14
14
15 $ hg --config format.usestore=false init no-store
15 $ hg --config format.usestore=false init no-store
16 $ hg -R no-store debugupgraderepo
16 $ hg -R no-store debugupgraderepo
17 abort: cannot upgrade repository; requirement missing: store
17 abort: cannot upgrade repository; requirement missing: store
18 [255]
18 [255]
19
19
20 $ hg init no-revlogv1
20 $ hg init no-revlogv1
21 $ cat > no-revlogv1/.hg/requires << EOF
21 $ cat > no-revlogv1/.hg/requires << EOF
22 > dotencode
22 > dotencode
23 > fncache
23 > fncache
24 > generaldelta
24 > generaldelta
25 > store
25 > store
26 > EOF
26 > EOF
27
27
28 $ hg -R no-revlogv1 debugupgraderepo
28 $ hg -R no-revlogv1 debugupgraderepo
29 abort: cannot upgrade repository; missing a revlog version
29 abort: cannot upgrade repository; missing a revlog version
30 [255]
30 [255]
31
31
32 Cannot upgrade shared repositories
32 Cannot upgrade shared repositories
33
33
34 $ hg init share-parent
34 $ hg init share-parent
35 $ hg -R share-parent debugbuilddag -n .+9
35 $ hg -R share-parent debugbuilddag -n .+9
36 $ hg -R share-parent up tip
36 $ hg -R share-parent up tip
37 10 files updated, 0 files merged, 0 files removed, 0 files unresolved
37 10 files updated, 0 files merged, 0 files removed, 0 files unresolved
38 $ hg -q share share-parent share-child
38 $ hg -q share share-parent share-child
39
39
40 $ hg -R share-child debugupgraderepo --config format.sparse-revlog=no
40 $ hg -R share-child debugupgraderepo --config format.sparse-revlog=no
41 abort: cannot use these actions on a share repository: sparserevlog
41 abort: cannot use these actions on a share repository: sparserevlog
42 (upgrade the main repository directly)
42 (upgrade the main repository directly)
43 [255]
43 [255]
44
44
45 Unless the action is compatible with share
45 Unless the action is compatible with share
46
46
47 $ hg -R share-child debugupgraderepo --config format.use-dirstate-v2=yes --quiet
47 $ hg -R share-child debugupgraderepo --config format.use-dirstate-v2=yes --quiet
48 requirements
48 requirements
49 preserved: * (glob)
49 preserved: * (glob)
50 added: dirstate-v2
50 added: dirstate-v2
51
51
52 no revlogs to process
52 no revlogs to process
53
53
54
54
55 $ hg -R share-child debugupgraderepo --config format.use-dirstate-v2=yes --quiet --run
55 $ hg -R share-child debugupgraderepo --config format.use-dirstate-v2=yes --quiet --run
56 upgrade will perform the following actions:
56 upgrade will perform the following actions:
57
57
58 requirements
58 requirements
59 preserved: * (glob)
59 preserved: * (glob)
60 added: dirstate-v2
60 added: dirstate-v2
61
61
62 no revlogs to process
62 no revlogs to process
63
63
64 $ hg debugformat -R share-child | grep dirstate-v2
64 $ hg debugformat -R share-child | grep dirstate-v2
65 dirstate-v2: yes
65 dirstate-v2: yes
66 $ hg debugformat -R share-parent | grep dirstate-v2
66 $ hg debugformat -R share-parent | grep dirstate-v2
67 dirstate-v2: no
67 dirstate-v2: no
68 $ hg status --all -R share-child
68 $ hg status --all -R share-child
69 C nf0
69 C nf0
70 C nf1
70 C nf1
71 C nf2
71 C nf2
72 C nf3
72 C nf3
73 C nf4
73 C nf4
74 C nf5
74 C nf5
75 C nf6
75 C nf6
76 C nf7
76 C nf7
77 C nf8
77 C nf8
78 C nf9
78 C nf9
79 $ hg log -l 3 -R share-child
79 $ hg log -l 3 -R share-child
80 changeset: 9:0059eb38e4a4
80 changeset: 9:0059eb38e4a4
81 tag: tip
81 tag: tip
82 user: debugbuilddag
82 user: debugbuilddag
83 date: Thu Jan 01 00:00:09 1970 +0000
83 date: Thu Jan 01 00:00:09 1970 +0000
84 summary: r9
84 summary: r9
85
85
86 changeset: 8:4d5be70c8130
86 changeset: 8:4d5be70c8130
87 user: debugbuilddag
87 user: debugbuilddag
88 date: Thu Jan 01 00:00:08 1970 +0000
88 date: Thu Jan 01 00:00:08 1970 +0000
89 summary: r8
89 summary: r8
90
90
91 changeset: 7:e60bfe72517e
91 changeset: 7:e60bfe72517e
92 user: debugbuilddag
92 user: debugbuilddag
93 date: Thu Jan 01 00:00:07 1970 +0000
93 date: Thu Jan 01 00:00:07 1970 +0000
94 summary: r7
94 summary: r7
95
95
96 $ hg status --all -R share-parent
96 $ hg status --all -R share-parent
97 C nf0
97 C nf0
98 C nf1
98 C nf1
99 C nf2
99 C nf2
100 C nf3
100 C nf3
101 C nf4
101 C nf4
102 C nf5
102 C nf5
103 C nf6
103 C nf6
104 C nf7
104 C nf7
105 C nf8
105 C nf8
106 C nf9
106 C nf9
107 $ hg log -l 3 -R share-parent
107 $ hg log -l 3 -R share-parent
108 changeset: 9:0059eb38e4a4
108 changeset: 9:0059eb38e4a4
109 tag: tip
109 tag: tip
110 user: debugbuilddag
110 user: debugbuilddag
111 date: Thu Jan 01 00:00:09 1970 +0000
111 date: Thu Jan 01 00:00:09 1970 +0000
112 summary: r9
112 summary: r9
113
113
114 changeset: 8:4d5be70c8130
114 changeset: 8:4d5be70c8130
115 user: debugbuilddag
115 user: debugbuilddag
116 date: Thu Jan 01 00:00:08 1970 +0000
116 date: Thu Jan 01 00:00:08 1970 +0000
117 summary: r8
117 summary: r8
118
118
119 changeset: 7:e60bfe72517e
119 changeset: 7:e60bfe72517e
120 user: debugbuilddag
120 user: debugbuilddag
121 date: Thu Jan 01 00:00:07 1970 +0000
121 date: Thu Jan 01 00:00:07 1970 +0000
122 summary: r7
122 summary: r7
123
123
124
124
125 $ hg -R share-child debugupgraderepo --config format.use-dirstate-v2=no --quiet --run
125 $ hg -R share-child debugupgraderepo --config format.use-dirstate-v2=no --quiet --run
126 upgrade will perform the following actions:
126 upgrade will perform the following actions:
127
127
128 requirements
128 requirements
129 preserved: * (glob)
129 preserved: * (glob)
130 removed: dirstate-v2
130 removed: dirstate-v2
131
131
132 no revlogs to process
132 no revlogs to process
133
133
134 $ hg debugformat -R share-child | grep dirstate-v2
134 $ hg debugformat -R share-child | grep dirstate-v2
135 dirstate-v2: no
135 dirstate-v2: no
136 $ hg debugformat -R share-parent | grep dirstate-v2
136 $ hg debugformat -R share-parent | grep dirstate-v2
137 dirstate-v2: no
137 dirstate-v2: no
138 $ hg status --all -R share-child
138 $ hg status --all -R share-child
139 C nf0
139 C nf0
140 C nf1
140 C nf1
141 C nf2
141 C nf2
142 C nf3
142 C nf3
143 C nf4
143 C nf4
144 C nf5
144 C nf5
145 C nf6
145 C nf6
146 C nf7
146 C nf7
147 C nf8
147 C nf8
148 C nf9
148 C nf9
149 $ hg log -l 3 -R share-child
149 $ hg log -l 3 -R share-child
150 changeset: 9:0059eb38e4a4
150 changeset: 9:0059eb38e4a4
151 tag: tip
151 tag: tip
152 user: debugbuilddag
152 user: debugbuilddag
153 date: Thu Jan 01 00:00:09 1970 +0000
153 date: Thu Jan 01 00:00:09 1970 +0000
154 summary: r9
154 summary: r9
155
155
156 changeset: 8:4d5be70c8130
156 changeset: 8:4d5be70c8130
157 user: debugbuilddag
157 user: debugbuilddag
158 date: Thu Jan 01 00:00:08 1970 +0000
158 date: Thu Jan 01 00:00:08 1970 +0000
159 summary: r8
159 summary: r8
160
160
161 changeset: 7:e60bfe72517e
161 changeset: 7:e60bfe72517e
162 user: debugbuilddag
162 user: debugbuilddag
163 date: Thu Jan 01 00:00:07 1970 +0000
163 date: Thu Jan 01 00:00:07 1970 +0000
164 summary: r7
164 summary: r7
165
165
166 $ hg status --all -R share-parent
166 $ hg status --all -R share-parent
167 C nf0
167 C nf0
168 C nf1
168 C nf1
169 C nf2
169 C nf2
170 C nf3
170 C nf3
171 C nf4
171 C nf4
172 C nf5
172 C nf5
173 C nf6
173 C nf6
174 C nf7
174 C nf7
175 C nf8
175 C nf8
176 C nf9
176 C nf9
177 $ hg log -l 3 -R share-parent
177 $ hg log -l 3 -R share-parent
178 changeset: 9:0059eb38e4a4
178 changeset: 9:0059eb38e4a4
179 tag: tip
179 tag: tip
180 user: debugbuilddag
180 user: debugbuilddag
181 date: Thu Jan 01 00:00:09 1970 +0000
181 date: Thu Jan 01 00:00:09 1970 +0000
182 summary: r9
182 summary: r9
183
183
184 changeset: 8:4d5be70c8130
184 changeset: 8:4d5be70c8130
185 user: debugbuilddag
185 user: debugbuilddag
186 date: Thu Jan 01 00:00:08 1970 +0000
186 date: Thu Jan 01 00:00:08 1970 +0000
187 summary: r8
187 summary: r8
188
188
189 changeset: 7:e60bfe72517e
189 changeset: 7:e60bfe72517e
190 user: debugbuilddag
190 user: debugbuilddag
191 date: Thu Jan 01 00:00:07 1970 +0000
191 date: Thu Jan 01 00:00:07 1970 +0000
192 summary: r7
192 summary: r7
193
193
194
194
195 Do not yet support upgrading treemanifest repos
195 Do not yet support upgrading treemanifest repos
196
196
197 $ hg --config experimental.treemanifest=true init treemanifest
197 $ hg --config experimental.treemanifest=true init treemanifest
198 $ hg -R treemanifest debugupgraderepo
198 $ hg -R treemanifest debugupgraderepo
199 abort: cannot upgrade repository; unsupported source requirement: treemanifest
199 abort: cannot upgrade repository; unsupported source requirement: treemanifest
200 [255]
200 [255]
201
201
202 Cannot add treemanifest requirement during upgrade
202 Cannot add treemanifest requirement during upgrade
203
203
204 $ hg init disallowaddedreq
204 $ hg init disallowaddedreq
205 $ hg -R disallowaddedreq --config experimental.treemanifest=true debugupgraderepo
205 $ hg -R disallowaddedreq --config experimental.treemanifest=true debugupgraderepo
206 abort: cannot upgrade repository; do not support adding requirement: treemanifest
206 abort: cannot upgrade repository; do not support adding requirement: treemanifest
207 [255]
207 [255]
208
208
209 An upgrade of a repository created with recommended settings only suggests optimizations
209 An upgrade of a repository created with recommended settings only suggests optimizations
210
210
211 $ hg init empty
211 $ hg init empty
212 $ cd empty
212 $ cd empty
213 $ hg debugformat
213 $ hg debugformat
214 format-variant repo
214 format-variant repo
215 fncache: yes
215 fncache: yes
216 dirstate-v2: no
216 dirstate-v2: no
217 tracked-hint: no
217 tracked-hint: no
218 dotencode: yes
218 dotencode: yes
219 generaldelta: yes
219 generaldelta: yes
220 share-safe: yes
220 share-safe: yes
221 sparserevlog: yes
221 sparserevlog: yes
222 persistent-nodemap: no (no-rust !)
222 persistent-nodemap: no (no-rust !)
223 persistent-nodemap: yes (rust !)
223 persistent-nodemap: yes (rust !)
224 copies-sdc: no
224 copies-sdc: no
225 revlog-v2: no
225 revlog-v2: no
226 changelog-v2: no
226 changelog-v2: no
227 plain-cl-delta: yes
227 plain-cl-delta: yes
228 compression: zlib
228 compression: zlib
229 compression-level: default
229 compression-level: default
230 $ hg debugformat --verbose
230 $ hg debugformat --verbose
231 format-variant repo config default
231 format-variant repo config default
232 fncache: yes yes yes
232 fncache: yes yes yes
233 dirstate-v2: no no no
233 dirstate-v2: no no no
234 tracked-hint: no no no
234 tracked-hint: no no no
235 dotencode: yes yes yes
235 dotencode: yes yes yes
236 generaldelta: yes yes yes
236 generaldelta: yes yes yes
237 share-safe: yes yes yes
237 share-safe: yes yes yes
238 sparserevlog: yes yes yes
238 sparserevlog: yes yes yes
239 persistent-nodemap: no no no (no-rust !)
239 persistent-nodemap: no no no (no-rust !)
240 persistent-nodemap: yes yes no (rust !)
240 persistent-nodemap: yes yes no (rust !)
241 copies-sdc: no no no
241 copies-sdc: no no no
242 revlog-v2: no no no
242 revlog-v2: no no no
243 changelog-v2: no no no
243 changelog-v2: no no no
244 plain-cl-delta: yes yes yes
244 plain-cl-delta: yes yes yes
245 compression: zlib zlib zlib (no-zstd !)
245 compression: zlib zlib zlib (no-zstd !)
246 compression: zlib zlib zstd (zstd !)
246 compression: zlib zlib zstd (zstd !)
247 compression-level: default default default
247 compression-level: default default default
248 $ hg debugformat --verbose --config format.usefncache=no
248 $ hg debugformat --verbose --config format.usefncache=no
249 format-variant repo config default
249 format-variant repo config default
250 fncache: yes no yes
250 fncache: yes no yes
251 dirstate-v2: no no no
251 dirstate-v2: no no no
252 tracked-hint: no no no
252 tracked-hint: no no no
253 dotencode: yes no yes
253 dotencode: yes no yes
254 generaldelta: yes yes yes
254 generaldelta: yes yes yes
255 share-safe: yes yes yes
255 share-safe: yes yes yes
256 sparserevlog: yes yes yes
256 sparserevlog: yes yes yes
257 persistent-nodemap: no no no (no-rust !)
257 persistent-nodemap: no no no (no-rust !)
258 persistent-nodemap: yes yes no (rust !)
258 persistent-nodemap: yes yes no (rust !)
259 copies-sdc: no no no
259 copies-sdc: no no no
260 revlog-v2: no no no
260 revlog-v2: no no no
261 changelog-v2: no no no
261 changelog-v2: no no no
262 plain-cl-delta: yes yes yes
262 plain-cl-delta: yes yes yes
263 compression: zlib zlib zlib (no-zstd !)
263 compression: zlib zlib zlib (no-zstd !)
264 compression: zlib zlib zstd (zstd !)
264 compression: zlib zlib zstd (zstd !)
265 compression-level: default default default
265 compression-level: default default default
266 $ hg debugformat --verbose --config format.usefncache=no --color=debug
266 $ hg debugformat --verbose --config format.usefncache=no --color=debug
267 format-variant repo config default
267 format-variant repo config default
268 [formatvariant.name.mismatchconfig|fncache: ][formatvariant.repo.mismatchconfig| yes][formatvariant.config.special| no][formatvariant.default| yes]
268 [formatvariant.name.mismatchconfig|fncache: ][formatvariant.repo.mismatchconfig| yes][formatvariant.config.special| no][formatvariant.default| yes]
269 [formatvariant.name.uptodate|dirstate-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
269 [formatvariant.name.uptodate|dirstate-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
270 [formatvariant.name.uptodate|tracked-hint: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
270 [formatvariant.name.uptodate|tracked-hint: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
271 [formatvariant.name.mismatchconfig|dotencode: ][formatvariant.repo.mismatchconfig| yes][formatvariant.config.special| no][formatvariant.default| yes]
271 [formatvariant.name.mismatchconfig|dotencode: ][formatvariant.repo.mismatchconfig| yes][formatvariant.config.special| no][formatvariant.default| yes]
272 [formatvariant.name.uptodate|generaldelta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
272 [formatvariant.name.uptodate|generaldelta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
273 [formatvariant.name.uptodate|share-safe: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
273 [formatvariant.name.uptodate|share-safe: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
274 [formatvariant.name.uptodate|sparserevlog: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
274 [formatvariant.name.uptodate|sparserevlog: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
275 [formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] (no-rust !)
275 [formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] (no-rust !)
276 [formatvariant.name.mismatchdefault|persistent-nodemap:][formatvariant.repo.mismatchdefault| yes][formatvariant.config.special| yes][formatvariant.default| no] (rust !)
276 [formatvariant.name.mismatchdefault|persistent-nodemap:][formatvariant.repo.mismatchdefault| yes][formatvariant.config.special| yes][formatvariant.default| no] (rust !)
277 [formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
277 [formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
278 [formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
278 [formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
279 [formatvariant.name.uptodate|changelog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
279 [formatvariant.name.uptodate|changelog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
280 [formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
280 [formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
281 [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !)
281 [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !)
282 [formatvariant.name.mismatchdefault|compression: ][formatvariant.repo.mismatchdefault| zlib][formatvariant.config.special| zlib][formatvariant.default| zstd] (zstd !)
282 [formatvariant.name.mismatchdefault|compression: ][formatvariant.repo.mismatchdefault| zlib][formatvariant.config.special| zlib][formatvariant.default| zstd] (zstd !)
283 [formatvariant.name.uptodate|compression-level: ][formatvariant.repo.uptodate| default][formatvariant.config.default| default][formatvariant.default| default]
283 [formatvariant.name.uptodate|compression-level: ][formatvariant.repo.uptodate| default][formatvariant.config.default| default][formatvariant.default| default]
284 $ hg debugformat -Tjson
284 $ hg debugformat -Tjson
285 [
285 [
286 {
286 {
287 "config": true,
287 "config": true,
288 "default": true,
288 "default": true,
289 "name": "fncache",
289 "name": "fncache",
290 "repo": true
290 "repo": true
291 },
291 },
292 {
292 {
293 "config": false,
293 "config": false,
294 "default": false,
294 "default": false,
295 "name": "dirstate-v2",
295 "name": "dirstate-v2",
296 "repo": false
296 "repo": false
297 },
297 },
298 {
298 {
299 "config": false,
299 "config": false,
300 "default": false,
300 "default": false,
301 "name": "tracked-hint",
301 "name": "tracked-hint",
302 "repo": false
302 "repo": false
303 },
303 },
304 {
304 {
305 "config": true,
305 "config": true,
306 "default": true,
306 "default": true,
307 "name": "dotencode",
307 "name": "dotencode",
308 "repo": true
308 "repo": true
309 },
309 },
310 {
310 {
311 "config": true,
311 "config": true,
312 "default": true,
312 "default": true,
313 "name": "generaldelta",
313 "name": "generaldelta",
314 "repo": true
314 "repo": true
315 },
315 },
316 {
316 {
317 "config": true,
317 "config": true,
318 "default": true,
318 "default": true,
319 "name": "share-safe",
319 "name": "share-safe",
320 "repo": true
320 "repo": true
321 },
321 },
322 {
322 {
323 "config": true,
323 "config": true,
324 "default": true,
324 "default": true,
325 "name": "sparserevlog",
325 "name": "sparserevlog",
326 "repo": true
326 "repo": true
327 },
327 },
328 {
328 {
329 "config": false, (no-rust !)
329 "config": false, (no-rust !)
330 "config": true, (rust !)
330 "config": true, (rust !)
331 "default": false,
331 "default": false,
332 "name": "persistent-nodemap",
332 "name": "persistent-nodemap",
333 "repo": false (no-rust !)
333 "repo": false (no-rust !)
334 "repo": true (rust !)
334 "repo": true (rust !)
335 },
335 },
336 {
336 {
337 "config": false,
337 "config": false,
338 "default": false,
338 "default": false,
339 "name": "copies-sdc",
339 "name": "copies-sdc",
340 "repo": false
340 "repo": false
341 },
341 },
342 {
342 {
343 "config": false,
343 "config": false,
344 "default": false,
344 "default": false,
345 "name": "revlog-v2",
345 "name": "revlog-v2",
346 "repo": false
346 "repo": false
347 },
347 },
348 {
348 {
349 "config": false,
349 "config": false,
350 "default": false,
350 "default": false,
351 "name": "changelog-v2",
351 "name": "changelog-v2",
352 "repo": false
352 "repo": false
353 },
353 },
354 {
354 {
355 "config": true,
355 "config": true,
356 "default": true,
356 "default": true,
357 "name": "plain-cl-delta",
357 "name": "plain-cl-delta",
358 "repo": true
358 "repo": true
359 },
359 },
360 {
360 {
361 "config": "zlib",
361 "config": "zlib",
362 "default": "zlib", (no-zstd !)
362 "default": "zlib", (no-zstd !)
363 "default": "zstd", (zstd !)
363 "default": "zstd", (zstd !)
364 "name": "compression",
364 "name": "compression",
365 "repo": "zlib"
365 "repo": "zlib"
366 },
366 },
367 {
367 {
368 "config": "default",
368 "config": "default",
369 "default": "default",
369 "default": "default",
370 "name": "compression-level",
370 "name": "compression-level",
371 "repo": "default"
371 "repo": "default"
372 }
372 }
373 ]
373 ]
374 $ hg debugupgraderepo
374 $ hg debugupgraderepo
375 (no format upgrades found in existing repository)
375 (no format upgrades found in existing repository)
376 performing an upgrade with "--run" will make the following changes:
376 performing an upgrade with "--run" will make the following changes:
377
377
378 requirements
378 requirements
379 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
379 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
380 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
380 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
381
381
382 no revlogs to process
382 no revlogs to process
383
383
384 additional optimizations are available by specifying "--optimize <name>":
384 additional optimizations are available by specifying "--optimize <name>":
385
385
386 re-delta-parent
386 re-delta-parent
387 deltas within internal storage will be recalculated to choose an optimal base revision where this was not already done; the size of the repository may shrink and various operations may become faster; the first time this optimization is performed could slow down upgrade execution considerably; subsequent invocations should not run noticeably slower
387 deltas within internal storage will be recalculated to choose an optimal base revision where this was not already done; the size of the repository may shrink and various operations may become faster; the first time this optimization is performed could slow down upgrade execution considerably; subsequent invocations should not run noticeably slower
388
388
389 re-delta-multibase
389 re-delta-multibase
390 deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges
390 deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges
391
391
392 re-delta-all
392 re-delta-all
393 deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed
393 deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed
394
394
395 re-delta-fulladd
395 re-delta-fulladd
396 every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved.
396 every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved.
397
397
398
398
399 $ hg debugupgraderepo --quiet
399 $ hg debugupgraderepo --quiet
400 requirements
400 requirements
401 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
401 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
402 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
402 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
403
403
404 no revlogs to process
404 no revlogs to process
405
405
406
406
407 --optimize can be used to add optimizations
407 --optimize can be used to add optimizations
408
408
409 $ hg debugupgrade --optimize 're-delta-parent'
409 $ hg debugupgrade --optimize 're-delta-parent'
410 (no format upgrades found in existing repository)
410 (no format upgrades found in existing repository)
411 performing an upgrade with "--run" will make the following changes:
411 performing an upgrade with "--run" will make the following changes:
412
412
413 requirements
413 requirements
414 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
414 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
415 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
415 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
416
416
417 optimisations: re-delta-parent
417 optimisations: re-delta-parent
418
418
419 re-delta-parent
419 re-delta-parent
420 deltas within internal storage will choose a new base revision if needed
420 deltas within internal storage will choose a new base revision if needed
421
421
422 processed revlogs:
422 processed revlogs:
423 - all-filelogs
423 - all-filelogs
424 - changelog
424 - changelog
425 - manifest
425 - manifest
426
426
427 additional optimizations are available by specifying "--optimize <name>":
427 additional optimizations are available by specifying "--optimize <name>":
428
428
429 re-delta-multibase
429 re-delta-multibase
430 deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges
430 deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges
431
431
432 re-delta-all
432 re-delta-all
433 deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed
433 deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed
434
434
435 re-delta-fulladd
435 re-delta-fulladd
436 every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved.
436 every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved.
437
437
438
438
439 modern form of the option
439 modern form of the option
440
440
441 $ hg debugupgrade --optimize re-delta-parent
441 $ hg debugupgrade --optimize re-delta-parent
442 (no format upgrades found in existing repository)
442 (no format upgrades found in existing repository)
443 performing an upgrade with "--run" will make the following changes:
443 performing an upgrade with "--run" will make the following changes:
444
444
445 requirements
445 requirements
446 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
446 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
447 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
447 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
448
448
449 optimisations: re-delta-parent
449 optimisations: re-delta-parent
450
450
451 re-delta-parent
451 re-delta-parent
452 deltas within internal storage will choose a new base revision if needed
452 deltas within internal storage will choose a new base revision if needed
453
453
454 processed revlogs:
454 processed revlogs:
455 - all-filelogs
455 - all-filelogs
456 - changelog
456 - changelog
457 - manifest
457 - manifest
458
458
459 additional optimizations are available by specifying "--optimize <name>":
459 additional optimizations are available by specifying "--optimize <name>":
460
460
461 re-delta-multibase
461 re-delta-multibase
462 deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges
462 deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges
463
463
464 re-delta-all
464 re-delta-all
465 deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed
465 deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed
466
466
467 re-delta-fulladd
467 re-delta-fulladd
468 every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved.
468 every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved.
469
469
470 $ hg debugupgrade --optimize re-delta-parent --quiet
470 $ hg debugupgrade --optimize re-delta-parent --quiet
471 requirements
471 requirements
472 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
472 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
473 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
473 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
474
474
475 optimisations: re-delta-parent
475 optimisations: re-delta-parent
476
476
477 processed revlogs:
477 processed revlogs:
478 - all-filelogs
478 - all-filelogs
479 - changelog
479 - changelog
480 - manifest
480 - manifest
481
481
482
482
483 unknown optimization:
483 unknown optimization:
484
484
485 $ hg debugupgrade --optimize foobar
485 $ hg debugupgrade --optimize foobar
486 abort: unknown optimization action requested: foobar
486 abort: unknown optimization action requested: foobar
487 (run without arguments to see valid optimizations)
487 (run without arguments to see valid optimizations)
488 [255]
488 [255]
489
489
490 Various sub-optimal detections work
490 Various sub-optimal detections work
491
491
492 $ cat > .hg/requires << EOF
492 $ cat > .hg/requires << EOF
493 > revlogv1
493 > revlogv1
494 > store
494 > store
495 > EOF
495 > EOF
496
496
497 $ hg debugformat
497 $ hg debugformat
498 format-variant repo
498 format-variant repo
499 fncache: no
499 fncache: no
500 dirstate-v2: no
500 dirstate-v2: no
501 tracked-hint: no
501 tracked-hint: no
502 dotencode: no
502 dotencode: no
503 generaldelta: no
503 generaldelta: no
504 share-safe: no
504 share-safe: no
505 sparserevlog: no
505 sparserevlog: no
506 persistent-nodemap: no
506 persistent-nodemap: no
507 copies-sdc: no
507 copies-sdc: no
508 revlog-v2: no
508 revlog-v2: no
509 changelog-v2: no
509 changelog-v2: no
510 plain-cl-delta: yes
510 plain-cl-delta: yes
511 compression: zlib
511 compression: zlib
512 compression-level: default
512 compression-level: default
513 $ hg debugformat --verbose
513 $ hg debugformat --verbose
514 format-variant repo config default
514 format-variant repo config default
515 fncache: no yes yes
515 fncache: no yes yes
516 dirstate-v2: no no no
516 dirstate-v2: no no no
517 tracked-hint: no no no
517 tracked-hint: no no no
518 dotencode: no yes yes
518 dotencode: no yes yes
519 generaldelta: no yes yes
519 generaldelta: no yes yes
520 share-safe: no yes yes
520 share-safe: no yes yes
521 sparserevlog: no yes yes
521 sparserevlog: no yes yes
522 persistent-nodemap: no no no (no-rust !)
522 persistent-nodemap: no no no (no-rust !)
523 persistent-nodemap: no yes no (rust !)
523 persistent-nodemap: no yes no (rust !)
524 copies-sdc: no no no
524 copies-sdc: no no no
525 revlog-v2: no no no
525 revlog-v2: no no no
526 changelog-v2: no no no
526 changelog-v2: no no no
527 plain-cl-delta: yes yes yes
527 plain-cl-delta: yes yes yes
528 compression: zlib zlib zlib (no-zstd !)
528 compression: zlib zlib zlib (no-zstd !)
529 compression: zlib zlib zstd (zstd !)
529 compression: zlib zlib zstd (zstd !)
530 compression-level: default default default
530 compression-level: default default default
531 $ hg debugformat --verbose --config format.usegeneraldelta=no
531 $ hg debugformat --verbose --config format.usegeneraldelta=no
532 format-variant repo config default
532 format-variant repo config default
533 fncache: no yes yes
533 fncache: no yes yes
534 dirstate-v2: no no no
534 dirstate-v2: no no no
535 tracked-hint: no no no
535 tracked-hint: no no no
536 dotencode: no yes yes
536 dotencode: no yes yes
537 generaldelta: no no yes
537 generaldelta: no no yes
538 share-safe: no yes yes
538 share-safe: no yes yes
539 sparserevlog: no no yes
539 sparserevlog: no no yes
540 persistent-nodemap: no no no (no-rust !)
540 persistent-nodemap: no no no (no-rust !)
541 persistent-nodemap: no yes no (rust !)
541 persistent-nodemap: no yes no (rust !)
542 copies-sdc: no no no
542 copies-sdc: no no no
543 revlog-v2: no no no
543 revlog-v2: no no no
544 changelog-v2: no no no
544 changelog-v2: no no no
545 plain-cl-delta: yes yes yes
545 plain-cl-delta: yes yes yes
546 compression: zlib zlib zlib (no-zstd !)
546 compression: zlib zlib zlib (no-zstd !)
547 compression: zlib zlib zstd (zstd !)
547 compression: zlib zlib zstd (zstd !)
548 compression-level: default default default
548 compression-level: default default default
549 $ hg debugformat --verbose --config format.usegeneraldelta=no --color=debug
549 $ hg debugformat --verbose --config format.usegeneraldelta=no --color=debug
550 format-variant repo config default
550 format-variant repo config default
551 [formatvariant.name.mismatchconfig|fncache: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes]
551 [formatvariant.name.mismatchconfig|fncache: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes]
552 [formatvariant.name.uptodate|dirstate-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
552 [formatvariant.name.uptodate|dirstate-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
553 [formatvariant.name.uptodate|tracked-hint: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
553 [formatvariant.name.uptodate|tracked-hint: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
554 [formatvariant.name.mismatchconfig|dotencode: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes]
554 [formatvariant.name.mismatchconfig|dotencode: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes]
555 [formatvariant.name.mismatchdefault|generaldelta: ][formatvariant.repo.mismatchdefault| no][formatvariant.config.special| no][formatvariant.default| yes]
555 [formatvariant.name.mismatchdefault|generaldelta: ][formatvariant.repo.mismatchdefault| no][formatvariant.config.special| no][formatvariant.default| yes]
556 [formatvariant.name.mismatchconfig|share-safe: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes]
556 [formatvariant.name.mismatchconfig|share-safe: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes]
557 [formatvariant.name.mismatchdefault|sparserevlog: ][formatvariant.repo.mismatchdefault| no][formatvariant.config.special| no][formatvariant.default| yes]
557 [formatvariant.name.mismatchdefault|sparserevlog: ][formatvariant.repo.mismatchdefault| no][formatvariant.config.special| no][formatvariant.default| yes]
558 [formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] (no-rust !)
558 [formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] (no-rust !)
559 [formatvariant.name.mismatchconfig|persistent-nodemap:][formatvariant.repo.mismatchconfig| no][formatvariant.config.special| yes][formatvariant.default| no] (rust !)
559 [formatvariant.name.mismatchconfig|persistent-nodemap:][formatvariant.repo.mismatchconfig| no][formatvariant.config.special| yes][formatvariant.default| no] (rust !)
560 [formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
560 [formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
561 [formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
561 [formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
562 [formatvariant.name.uptodate|changelog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
562 [formatvariant.name.uptodate|changelog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no]
563 [formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
563 [formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes]
564 [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !)
564 [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !)
565 [formatvariant.name.mismatchdefault|compression: ][formatvariant.repo.mismatchdefault| zlib][formatvariant.config.special| zlib][formatvariant.default| zstd] (zstd !)
565 [formatvariant.name.mismatchdefault|compression: ][formatvariant.repo.mismatchdefault| zlib][formatvariant.config.special| zlib][formatvariant.default| zstd] (zstd !)
566 [formatvariant.name.uptodate|compression-level: ][formatvariant.repo.uptodate| default][formatvariant.config.default| default][formatvariant.default| default]
566 [formatvariant.name.uptodate|compression-level: ][formatvariant.repo.uptodate| default][formatvariant.config.default| default][formatvariant.default| default]
567 $ hg debugupgraderepo
567 $ hg debugupgraderepo
568 note: selecting all-filelogs for processing to change: dotencode
568 note: selecting all-filelogs for processing to change: dotencode
569 note: selecting all-manifestlogs for processing to change: dotencode
569 note: selecting all-manifestlogs for processing to change: dotencode
570 note: selecting changelog for processing to change: dotencode
570 note: selecting changelog for processing to change: dotencode
571
571
572 repository lacks features recommended by current config options:
572 repository lacks features recommended by current config options:
573
573
574 fncache
574 fncache
575 long and reserved filenames may not work correctly; repository performance is sub-optimal
575 long and reserved filenames may not work correctly; repository performance is sub-optimal
576
576
577 dotencode
577 dotencode
578 storage of filenames beginning with a period or space may not work correctly
578 storage of filenames beginning with a period or space may not work correctly
579
579
580 generaldelta
580 generaldelta
581 deltas within internal storage are unable to choose optimal revisions; repository is larger and slower than it could be; interaction with other repositories may require extra network and CPU resources, making "hg push" and "hg pull" slower
581 deltas within internal storage are unable to choose optimal revisions; repository is larger and slower than it could be; interaction with other repositories may require extra network and CPU resources, making "hg push" and "hg pull" slower
582
582
583 share-safe
583 share-safe
584 old shared repositories do not share source repository requirements and config. This leads to various problems when the source repository format is upgraded or some new extensions are enabled.
584 old shared repositories do not share source repository requirements and config. This leads to various problems when the source repository format is upgraded or some new extensions are enabled.
585
585
586 sparserevlog
586 sparserevlog
587 in order to limit disk reading and memory usage on older version, the span of a delta chain from its root to its end is limited, whatever the relevant data in this span. This can severly limit Mercurial ability to build good chain of delta resulting is much more storage space being taken and limit reusability of on disk delta during exchange.
587 in order to limit disk reading and memory usage on older version, the span of a delta chain from its root to its end is limited, whatever the relevant data in this span. This can severly limit Mercurial ability to build good chain of delta resulting is much more storage space being taken and limit reusability of on disk delta during exchange.
588
588
589 persistent-nodemap (rust !)
589 persistent-nodemap (rust !)
590 persist the node -> rev mapping on disk to speedup lookup (rust !)
590 persist the node -> rev mapping on disk to speedup lookup (rust !)
591 (rust !)
591 (rust !)
592
592
593 performing an upgrade with "--run" will make the following changes:
593 performing an upgrade with "--run" will make the following changes:
594
594
595 requirements
595 requirements
596 preserved: revlogv1, store
596 preserved: revlogv1, store
597 added: dotencode, fncache, generaldelta, share-safe, sparserevlog (no-rust !)
597 added: dotencode, fncache, generaldelta, share-safe, sparserevlog (no-rust !)
598 added: dotencode, fncache, generaldelta, persistent-nodemap, share-safe, sparserevlog (rust !)
598 added: dotencode, fncache, generaldelta, persistent-nodemap, share-safe, sparserevlog (rust !)
599
599
600 fncache
600 fncache
601 repository will be more resilient to storing certain paths and performance of certain operations should be improved
601 repository will be more resilient to storing certain paths and performance of certain operations should be improved
602
602
603 dotencode
603 dotencode
604 repository will be better able to store files beginning with a space or period
604 repository will be better able to store files beginning with a space or period
605
605
606 generaldelta
606 generaldelta
607 repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster
607 repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster
608
608
609 share-safe
609 share-safe
610 Upgrades a repository to share-safe format so that future shares of this repository share its requirements and configs.
610 Upgrades a repository to share-safe format so that future shares of this repository share its requirements and configs.
611
611
612 sparserevlog
612 sparserevlog
613 Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server.
613 Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server.
614
614
615 persistent-nodemap (rust !)
615 persistent-nodemap (rust !)
616 Speedup revision lookup by node id. (rust !)
616 Speedup revision lookup by node id. (rust !)
617 (rust !)
617 (rust !)
618 processed revlogs:
618 processed revlogs:
619 - all-filelogs
619 - all-filelogs
620 - changelog
620 - changelog
621 - manifest
621 - manifest
622
622
623 additional optimizations are available by specifying "--optimize <name>":
623 additional optimizations are available by specifying "--optimize <name>":
624
624
625 re-delta-parent
625 re-delta-parent
626 deltas within internal storage will be recalculated to choose an optimal base revision where this was not already done; the size of the repository may shrink and various operations may become faster; the first time this optimization is performed could slow down upgrade execution considerably; subsequent invocations should not run noticeably slower
626 deltas within internal storage will be recalculated to choose an optimal base revision where this was not already done; the size of the repository may shrink and various operations may become faster; the first time this optimization is performed could slow down upgrade execution considerably; subsequent invocations should not run noticeably slower
627
627
628 re-delta-multibase
628 re-delta-multibase
629 deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges
629 deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges
630
630
631 re-delta-all
631 re-delta-all
632 deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed
632 deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed
633
633
634 re-delta-fulladd
634 re-delta-fulladd
635 every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved.
635 every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved.
636
636
637 $ hg debugupgraderepo --quiet
637 $ hg debugupgraderepo --quiet
638 requirements
638 requirements
639 preserved: revlogv1, store
639 preserved: revlogv1, store
640 added: dotencode, fncache, generaldelta, share-safe, sparserevlog (no-rust !)
640 added: dotencode, fncache, generaldelta, share-safe, sparserevlog (no-rust !)
641 added: dotencode, fncache, generaldelta, persistent-nodemap, share-safe, sparserevlog (rust !)
641 added: dotencode, fncache, generaldelta, persistent-nodemap, share-safe, sparserevlog (rust !)
642
642
643 processed revlogs:
643 processed revlogs:
644 - all-filelogs
644 - all-filelogs
645 - changelog
645 - changelog
646 - manifest
646 - manifest
647
647
648
648
649 $ hg --config format.dotencode=false debugupgraderepo
649 $ hg --config format.dotencode=false debugupgraderepo
650 note: selecting all-filelogs for processing to change: fncache
650 note: selecting all-filelogs for processing to change: fncache
651 note: selecting all-manifestlogs for processing to change: fncache
651 note: selecting all-manifestlogs for processing to change: fncache
652 note: selecting changelog for processing to change: fncache
652 note: selecting changelog for processing to change: fncache
653
653
654 repository lacks features recommended by current config options:
654 repository lacks features recommended by current config options:
655
655
656 fncache
656 fncache
657 long and reserved filenames may not work correctly; repository performance is sub-optimal
657 long and reserved filenames may not work correctly; repository performance is sub-optimal
658
658
659 generaldelta
659 generaldelta
660 deltas within internal storage are unable to choose optimal revisions; repository is larger and slower than it could be; interaction with other repositories may require extra network and CPU resources, making "hg push" and "hg pull" slower
660 deltas within internal storage are unable to choose optimal revisions; repository is larger and slower than it could be; interaction with other repositories may require extra network and CPU resources, making "hg push" and "hg pull" slower
661
661
662 share-safe
662 share-safe
663 old shared repositories do not share source repository requirements and config. This leads to various problems when the source repository format is upgraded or some new extensions are enabled.
663 old shared repositories do not share source repository requirements and config. This leads to various problems when the source repository format is upgraded or some new extensions are enabled.
664
664
665 sparserevlog
665 sparserevlog
666 in order to limit disk reading and memory usage on older version, the span of a delta chain from its root to its end is limited, whatever the relevant data in this span. This can severly limit Mercurial ability to build good chain of delta resulting is much more storage space being taken and limit reusability of on disk delta during exchange.
666 in order to limit disk reading and memory usage on older version, the span of a delta chain from its root to its end is limited, whatever the relevant data in this span. This can severly limit Mercurial ability to build good chain of delta resulting is much more storage space being taken and limit reusability of on disk delta during exchange.
667
667
668 persistent-nodemap (rust !)
668 persistent-nodemap (rust !)
669 persist the node -> rev mapping on disk to speedup lookup (rust !)
669 persist the node -> rev mapping on disk to speedup lookup (rust !)
670 (rust !)
670 (rust !)
671 repository lacks features used by the default config options:
671 repository lacks features used by the default config options:
672
672
673 dotencode
673 dotencode
674 storage of filenames beginning with a period or space may not work correctly
674 storage of filenames beginning with a period or space may not work correctly
675
675
676
676
677 performing an upgrade with "--run" will make the following changes:
677 performing an upgrade with "--run" will make the following changes:
678
678
679 requirements
679 requirements
680 preserved: revlogv1, store
680 preserved: revlogv1, store
681 added: fncache, generaldelta, share-safe, sparserevlog (no-rust !)
681 added: fncache, generaldelta, share-safe, sparserevlog (no-rust !)
682 added: fncache, generaldelta, persistent-nodemap, share-safe, sparserevlog (rust !)
682 added: fncache, generaldelta, persistent-nodemap, share-safe, sparserevlog (rust !)
683
683
684 fncache
684 fncache
685 repository will be more resilient to storing certain paths and performance of certain operations should be improved
685 repository will be more resilient to storing certain paths and performance of certain operations should be improved
686
686
687 generaldelta
687 generaldelta
688 repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster
688 repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster
689
689
690 share-safe
690 share-safe
691 Upgrades a repository to share-safe format so that future shares of this repository share its requirements and configs.
691 Upgrades a repository to share-safe format so that future shares of this repository share its requirements and configs.
692
692
693 sparserevlog
693 sparserevlog
694 Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server.
694 Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server.
695
695
696 persistent-nodemap (rust !)
696 persistent-nodemap (rust !)
697 Speedup revision lookup by node id. (rust !)
697 Speedup revision lookup by node id. (rust !)
698 (rust !)
698 (rust !)
699 processed revlogs:
699 processed revlogs:
700 - all-filelogs
700 - all-filelogs
701 - changelog
701 - changelog
702 - manifest
702 - manifest
703
703
704 additional optimizations are available by specifying "--optimize <name>":
704 additional optimizations are available by specifying "--optimize <name>":
705
705
706 re-delta-parent
706 re-delta-parent
707 deltas within internal storage will be recalculated to choose an optimal base revision where this was not already done; the size of the repository may shrink and various operations may become faster; the first time this optimization is performed could slow down upgrade execution considerably; subsequent invocations should not run noticeably slower
707 deltas within internal storage will be recalculated to choose an optimal base revision where this was not already done; the size of the repository may shrink and various operations may become faster; the first time this optimization is performed could slow down upgrade execution considerably; subsequent invocations should not run noticeably slower
708
708
709 re-delta-multibase
709 re-delta-multibase
710 deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges
710 deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges
711
711
712 re-delta-all
712 re-delta-all
713 deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed
713 deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed
714
714
715 re-delta-fulladd
715 re-delta-fulladd
716 every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved.
716 every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved.
717
717
718
718
719 $ cd ..
719 $ cd ..
720
720
721 Upgrading a repository that is already modern essentially no-ops
721 Upgrading a repository that is already modern essentially no-ops
722
722
723 $ hg init modern
723 $ hg init modern
724 $ hg -R modern debugupgraderepo --run
724 $ hg -R modern debugupgraderepo --run
725 nothing to do
725 nothing to do
726
726
727 Upgrading a repository to generaldelta works
727 Upgrading a repository to generaldelta works
728
728
729 $ hg --config format.usegeneraldelta=false init upgradegd
729 $ hg --config format.usegeneraldelta=false init upgradegd
730 $ cd upgradegd
730 $ cd upgradegd
731 $ touch f0
731 $ touch f0
732 $ hg -q commit -A -m initial
732 $ hg -q commit -A -m initial
733 $ mkdir FooBarDirectory.d
733 $ mkdir FooBarDirectory.d
734 $ touch FooBarDirectory.d/f1
734 $ touch FooBarDirectory.d/f1
735 $ hg -q commit -A -m 'add f1'
735 $ hg -q commit -A -m 'add f1'
736 $ hg -q up -r 0
736 $ hg -q up -r 0
737 >>> import random
737 >>> import random
738 >>> random.seed(0) # have a reproducible content
738 >>> random.seed(0) # have a reproducible content
739 >>> with open("f2", "wb") as f:
739 >>> with open("f2", "wb") as f:
740 ... for i in range(100000):
740 ... for i in range(100000):
741 ... f.write(b"%d\n" % random.randint(1000000000, 9999999999)) and None
741 ... f.write(b"%d\n" % random.randint(1000000000, 9999999999)) and None
742 $ hg -q commit -A -m 'add f2'
742 $ hg -q commit -A -m 'add f2'
743
743
744 make sure we have a .d file
744 make sure we have a .d file
745
745
746 $ ls -d .hg/store/data/*
746 $ ls -d .hg/store/data/*
747 .hg/store/data/_foo_bar_directory.d.hg
747 .hg/store/data/_foo_bar_directory.d.hg
748 .hg/store/data/f0.i
748 .hg/store/data/f0.i
749 .hg/store/data/f2.d
749 .hg/store/data/f2.d
750 .hg/store/data/f2.i
750 .hg/store/data/f2.i
751
751
752 $ hg debugupgraderepo --run --config format.sparse-revlog=false
752 $ hg debugupgraderepo --run --config format.sparse-revlog=false
753 note: selecting all-filelogs for processing to change: generaldelta
753 note: selecting all-filelogs for processing to change: generaldelta
754 note: selecting all-manifestlogs for processing to change: generaldelta
754 note: selecting all-manifestlogs for processing to change: generaldelta
755 note: selecting changelog for processing to change: generaldelta
755 note: selecting changelog for processing to change: generaldelta
756
756
757 upgrade will perform the following actions:
757 upgrade will perform the following actions:
758
758
759 requirements
759 requirements
760 preserved: dotencode, fncache, revlogv1, share-safe, store (no-rust !)
760 preserved: dotencode, fncache, revlogv1, share-safe, store (no-rust !)
761 preserved: dotencode, fncache, persistent-nodemap, revlogv1, share-safe, store (rust !)
761 preserved: dotencode, fncache, persistent-nodemap, revlogv1, share-safe, store (rust !)
762 added: generaldelta
762 added: generaldelta
763
763
764 generaldelta
764 generaldelta
765 repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster
765 repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster
766
766
767 processed revlogs:
767 processed revlogs:
768 - all-filelogs
768 - all-filelogs
769 - changelog
769 - changelog
770 - manifest
770 - manifest
771
771
772 beginning upgrade...
772 beginning upgrade...
773 repository locked and read-only
773 repository locked and read-only
774 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
774 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
775 (it is safe to interrupt this process any time before data migration completes)
775 (it is safe to interrupt this process any time before data migration completes)
776 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
776 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
777 migrating 519 KB in store; 1.05 MB tracked data
777 migrating 519 KB in store; 1.05 MB tracked data
778 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
778 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
779 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
779 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
780 migrating 1 manifests containing 3 revisions (384 bytes in store; 238 bytes tracked data)
780 migrating 1 manifests containing 3 revisions (384 bytes in store; 238 bytes tracked data)
781 finished migrating 3 manifest revisions across 1 manifests; change in size: -17 bytes
781 finished migrating 3 manifest revisions across 1 manifests; change in size: -17 bytes
782 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
782 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
783 finished migrating 3 changelog revisions; change in size: 0 bytes
783 finished migrating 3 changelog revisions; change in size: 0 bytes
784 finished migrating 9 total revisions; total change in store size: -17 bytes
784 finished migrating 9 total revisions; total change in store size: -17 bytes
785 copying phaseroots
785 copying phaseroots
786 copying requires
786 copying requires
787 data fully upgraded in a temporary repository
787 data fully upgraded in a temporary repository
788 marking source repository as being upgraded; clients will be unable to read from repository
788 marking source repository as being upgraded; clients will be unable to read from repository
789 starting in-place swap of repository data
789 starting in-place swap of repository data
790 replaced files will be backed up at $TESTTMP/upgradegd/.hg/upgradebackup.* (glob)
790 replaced files will be backed up at $TESTTMP/upgradegd/.hg/upgradebackup.* (glob)
791 replacing store...
791 replacing store...
792 store replacement complete; repository was inconsistent for *s (glob)
792 store replacement complete; repository was inconsistent for *s (glob)
793 finalizing requirements file and making repository readable again
793 finalizing requirements file and making repository readable again
794 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
794 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
795 copy of old repository backed up at $TESTTMP/upgradegd/.hg/upgradebackup.* (glob)
795 copy of old repository backed up at $TESTTMP/upgradegd/.hg/upgradebackup.* (glob)
796 the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
796 the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
797
797
798 Original requirements backed up
798 Original requirements backed up
799
799
800 $ cat .hg/upgradebackup.*/requires
800 $ cat .hg/upgradebackup.*/requires
801 share-safe
801 share-safe
802 $ cat .hg/upgradebackup.*/store/requires
802 $ cat .hg/upgradebackup.*/store/requires
803 dotencode
803 dotencode
804 fncache
804 fncache
805 persistent-nodemap (rust !)
805 persistent-nodemap (rust !)
806 revlogv1
806 revlogv1
807 store
807 store
808 upgradeinprogress
808 upgradeinprogress
809
809
810 generaldelta added to original requirements files
810 generaldelta added to original requirements files
811
811
812 $ hg debugrequires
812 $ hg debugrequires
813 dotencode
813 dotencode
814 fncache
814 fncache
815 generaldelta
815 generaldelta
816 persistent-nodemap (rust !)
816 persistent-nodemap (rust !)
817 revlogv1
817 revlogv1
818 share-safe
818 share-safe
819 store
819 store
820
820
821 store directory has files we expect
821 store directory has files we expect
822
822
823 $ ls .hg/store
823 $ ls .hg/store
824 00changelog.i
824 00changelog.i
825 00manifest.i
825 00manifest.i
826 data
826 data
827 fncache
827 fncache
828 phaseroots
828 phaseroots
829 requires
829 requires
830 undo
830 undo
831 undo.backupfiles
831 undo.backupfiles
832 undo.phaseroots
832 undo.phaseroots
833
833
834 manifest should be generaldelta
834 manifest should be generaldelta
835
835
836 $ hg debugrevlog -m | grep flags
836 $ hg debugrevlog -m | grep flags
837 flags : inline, generaldelta
837 flags : inline, generaldelta
838
838
839 verify should be happy
839 verify should be happy
840
840
841 $ hg verify
841 $ hg verify
842 checking changesets
842 checking changesets
843 checking manifests
843 checking manifests
844 crosschecking files in changesets and manifests
844 crosschecking files in changesets and manifests
845 checking files
845 checking files
846 checked 3 changesets with 3 changes to 3 files
846 checked 3 changesets with 3 changes to 3 files
847
847
848 old store should be backed up
848 old store should be backed up
849
849
850 $ ls -d .hg/upgradebackup.*/
850 $ ls -d .hg/upgradebackup.*/
851 .hg/upgradebackup.*/ (glob)
851 .hg/upgradebackup.*/ (glob)
852 $ ls .hg/upgradebackup.*/store
852 $ ls .hg/upgradebackup.*/store
853 00changelog.i
853 00changelog.i
854 00manifest.i
854 00manifest.i
855 data
855 data
856 fncache
856 fncache
857 phaseroots
857 phaseroots
858 requires
858 requires
859 undo
859 undo
860 undo.backup.fncache
860 undo.backup.fncache
861 undo.backupfiles
861 undo.backupfiles
862 undo.phaseroots
862 undo.phaseroots
863
863
864 unless --no-backup is passed
864 unless --no-backup is passed
865
865
866 $ rm -rf .hg/upgradebackup.*/
866 $ rm -rf .hg/upgradebackup.*/
867 $ hg debugupgraderepo --run --no-backup
867 $ hg debugupgraderepo --run --no-backup
868 note: selecting all-filelogs for processing to change: sparserevlog
868 note: selecting all-filelogs for processing to change: sparserevlog
869 note: selecting all-manifestlogs for processing to change: sparserevlog
869 note: selecting all-manifestlogs for processing to change: sparserevlog
870 note: selecting changelog for processing to change: sparserevlog
870 note: selecting changelog for processing to change: sparserevlog
871
871
872 upgrade will perform the following actions:
872 upgrade will perform the following actions:
873
873
874 requirements
874 requirements
875 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
875 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
876 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
876 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
877 added: sparserevlog
877 added: sparserevlog
878
878
879 sparserevlog
879 sparserevlog
880 Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server.
880 Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server.
881
881
882 processed revlogs:
882 processed revlogs:
883 - all-filelogs
883 - all-filelogs
884 - changelog
884 - changelog
885 - manifest
885 - manifest
886
886
887 beginning upgrade...
887 beginning upgrade...
888 repository locked and read-only
888 repository locked and read-only
889 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
889 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
890 (it is safe to interrupt this process any time before data migration completes)
890 (it is safe to interrupt this process any time before data migration completes)
891 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
891 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
892 migrating 519 KB in store; 1.05 MB tracked data
892 migrating 519 KB in store; 1.05 MB tracked data
893 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
893 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
894 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
894 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
895 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
895 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
896 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
896 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
897 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
897 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
898 finished migrating 3 changelog revisions; change in size: 0 bytes
898 finished migrating 3 changelog revisions; change in size: 0 bytes
899 finished migrating 9 total revisions; total change in store size: 0 bytes
899 finished migrating 9 total revisions; total change in store size: 0 bytes
900 copying phaseroots
900 copying phaseroots
901 copying requires
901 copying requires
902 data fully upgraded in a temporary repository
902 data fully upgraded in a temporary repository
903 marking source repository as being upgraded; clients will be unable to read from repository
903 marking source repository as being upgraded; clients will be unable to read from repository
904 starting in-place swap of repository data
904 starting in-place swap of repository data
905 replacing store...
905 replacing store...
906 store replacement complete; repository was inconsistent for * (glob)
906 store replacement complete; repository was inconsistent for * (glob)
907 finalizing requirements file and making repository readable again
907 finalizing requirements file and making repository readable again
908 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
908 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
909 $ ls -1 .hg/ | grep upgradebackup
909 $ ls -1 .hg/ | grep upgradebackup
910 [1]
910 [1]
911
911
912 We can restrict optimization to some revlog:
912 We can restrict optimization to some revlog:
913
913
914 $ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback
914 $ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback
915 upgrade will perform the following actions:
915 upgrade will perform the following actions:
916
916
917 requirements
917 requirements
918 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
918 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
919 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
919 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
920
920
921 optimisations: re-delta-parent
921 optimisations: re-delta-parent
922
922
923 re-delta-parent
923 re-delta-parent
924 deltas within internal storage will choose a new base revision if needed
924 deltas within internal storage will choose a new base revision if needed
925
925
926 processed revlogs:
926 processed revlogs:
927 - manifest
927 - manifest
928
928
929 beginning upgrade...
929 beginning upgrade...
930 repository locked and read-only
930 repository locked and read-only
931 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
931 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
932 (it is safe to interrupt this process any time before data migration completes)
932 (it is safe to interrupt this process any time before data migration completes)
933 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
933 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
934 migrating 519 KB in store; 1.05 MB tracked data
934 migrating 519 KB in store; 1.05 MB tracked data
935 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
935 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
936 blindly copying data/FooBarDirectory.d/f1.i containing 1 revisions
936 blindly copying data/FooBarDirectory.d/f1.i containing 1 revisions
937 blindly copying data/f0.i containing 1 revisions
937 blindly copying data/f0.i containing 1 revisions
938 blindly copying data/f2.i containing 1 revisions
938 blindly copying data/f2.i containing 1 revisions
939 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
939 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
940 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
940 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
941 cloning 3 revisions from 00manifest.i
941 cloning 3 revisions from 00manifest.i
942 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
942 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
943 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
943 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
944 blindly copying 00changelog.i containing 3 revisions
944 blindly copying 00changelog.i containing 3 revisions
945 finished migrating 3 changelog revisions; change in size: 0 bytes
945 finished migrating 3 changelog revisions; change in size: 0 bytes
946 finished migrating 9 total revisions; total change in store size: 0 bytes
946 finished migrating 9 total revisions; total change in store size: 0 bytes
947 copying phaseroots
947 copying phaseroots
948 copying requires
948 copying requires
949 data fully upgraded in a temporary repository
949 data fully upgraded in a temporary repository
950 marking source repository as being upgraded; clients will be unable to read from repository
950 marking source repository as being upgraded; clients will be unable to read from repository
951 starting in-place swap of repository data
951 starting in-place swap of repository data
952 replacing store...
952 replacing store...
953 store replacement complete; repository was inconsistent for *s (glob)
953 store replacement complete; repository was inconsistent for *s (glob)
954 finalizing requirements file and making repository readable again
954 finalizing requirements file and making repository readable again
955 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
955 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
956
956
957 Check that the repo still works fine
957 Check that the repo still works fine
958
958
959 $ hg log -G --stat
959 $ hg log -G --stat
960 @ changeset: 2:fca376863211 (py3 !)
960 @ changeset: 2:fca376863211 (py3 !)
961 | tag: tip
961 | tag: tip
962 | parent: 0:ba592bf28da2
962 | parent: 0:ba592bf28da2
963 | user: test
963 | user: test
964 | date: Thu Jan 01 00:00:00 1970 +0000
964 | date: Thu Jan 01 00:00:00 1970 +0000
965 | summary: add f2
965 | summary: add f2
966 |
966 |
967 | f2 | 100000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
967 | f2 | 100000 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
968 | 1 files changed, 100000 insertions(+), 0 deletions(-)
968 | 1 files changed, 100000 insertions(+), 0 deletions(-)
969 |
969 |
970 | o changeset: 1:2029ce2354e2
970 | o changeset: 1:2029ce2354e2
971 |/ user: test
971 |/ user: test
972 | date: Thu Jan 01 00:00:00 1970 +0000
972 | date: Thu Jan 01 00:00:00 1970 +0000
973 | summary: add f1
973 | summary: add f1
974 |
974 |
975 |
975 |
976 o changeset: 0:ba592bf28da2
976 o changeset: 0:ba592bf28da2
977 user: test
977 user: test
978 date: Thu Jan 01 00:00:00 1970 +0000
978 date: Thu Jan 01 00:00:00 1970 +0000
979 summary: initial
979 summary: initial
980
980
981
981
982
982
983 $ hg verify
983 $ hg verify
984 checking changesets
984 checking changesets
985 checking manifests
985 checking manifests
986 crosschecking files in changesets and manifests
986 crosschecking files in changesets and manifests
987 checking files
987 checking files
988 checked 3 changesets with 3 changes to 3 files
988 checked 3 changesets with 3 changes to 3 files
989
989
990 Check we can select negatively
990 Check we can select negatively
991
991
992 $ hg debugupgrade --optimize re-delta-parent --run --no-manifest --no-backup --debug --traceback
992 $ hg debugupgrade --optimize re-delta-parent --run --no-manifest --no-backup --debug --traceback
993 upgrade will perform the following actions:
993 upgrade will perform the following actions:
994
994
995 requirements
995 requirements
996 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
996 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
997 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
997 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
998
998
999 optimisations: re-delta-parent
999 optimisations: re-delta-parent
1000
1000
1001 re-delta-parent
1001 re-delta-parent
1002 deltas within internal storage will choose a new base revision if needed
1002 deltas within internal storage will choose a new base revision if needed
1003
1003
1004 processed revlogs:
1004 processed revlogs:
1005 - all-filelogs
1005 - all-filelogs
1006 - changelog
1006 - changelog
1007
1007
1008 beginning upgrade...
1008 beginning upgrade...
1009 repository locked and read-only
1009 repository locked and read-only
1010 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1010 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1011 (it is safe to interrupt this process any time before data migration completes)
1011 (it is safe to interrupt this process any time before data migration completes)
1012 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1012 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1013 migrating 519 KB in store; 1.05 MB tracked data
1013 migrating 519 KB in store; 1.05 MB tracked data
1014 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
1014 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
1015 cloning 1 revisions from data/FooBarDirectory.d/f1.i
1015 cloning 1 revisions from data/FooBarDirectory.d/f1.i
1016 cloning 1 revisions from data/f0.i
1016 cloning 1 revisions from data/f0.i
1017 cloning 1 revisions from data/f2.i
1017 cloning 1 revisions from data/f2.i
1018 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
1018 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
1019 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
1019 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
1020 blindly copying 00manifest.i containing 3 revisions
1020 blindly copying 00manifest.i containing 3 revisions
1021 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1021 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1022 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
1022 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
1023 cloning 3 revisions from 00changelog.i
1023 cloning 3 revisions from 00changelog.i
1024 finished migrating 3 changelog revisions; change in size: 0 bytes
1024 finished migrating 3 changelog revisions; change in size: 0 bytes
1025 finished migrating 9 total revisions; total change in store size: 0 bytes
1025 finished migrating 9 total revisions; total change in store size: 0 bytes
1026 copying phaseroots
1026 copying phaseroots
1027 copying requires
1027 copying requires
1028 data fully upgraded in a temporary repository
1028 data fully upgraded in a temporary repository
1029 marking source repository as being upgraded; clients will be unable to read from repository
1029 marking source repository as being upgraded; clients will be unable to read from repository
1030 starting in-place swap of repository data
1030 starting in-place swap of repository data
1031 replacing store...
1031 replacing store...
1032 store replacement complete; repository was inconsistent for *s (glob)
1032 store replacement complete; repository was inconsistent for *s (glob)
1033 finalizing requirements file and making repository readable again
1033 finalizing requirements file and making repository readable again
1034 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1034 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1035 $ hg verify
1035 $ hg verify
1036 checking changesets
1036 checking changesets
1037 checking manifests
1037 checking manifests
1038 crosschecking files in changesets and manifests
1038 crosschecking files in changesets and manifests
1039 checking files
1039 checking files
1040 checked 3 changesets with 3 changes to 3 files
1040 checked 3 changesets with 3 changes to 3 files
1041
1041
1042 Check that we can select changelog only
1042 Check that we can select changelog only
1043
1043
1044 $ hg debugupgrade --optimize re-delta-parent --run --changelog --no-backup --debug --traceback
1044 $ hg debugupgrade --optimize re-delta-parent --run --changelog --no-backup --debug --traceback
1045 upgrade will perform the following actions:
1045 upgrade will perform the following actions:
1046
1046
1047 requirements
1047 requirements
1048 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1048 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1049 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1049 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1050
1050
1051 optimisations: re-delta-parent
1051 optimisations: re-delta-parent
1052
1052
1053 re-delta-parent
1053 re-delta-parent
1054 deltas within internal storage will choose a new base revision if needed
1054 deltas within internal storage will choose a new base revision if needed
1055
1055
1056 processed revlogs:
1056 processed revlogs:
1057 - changelog
1057 - changelog
1058
1058
1059 beginning upgrade...
1059 beginning upgrade...
1060 repository locked and read-only
1060 repository locked and read-only
1061 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1061 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1062 (it is safe to interrupt this process any time before data migration completes)
1062 (it is safe to interrupt this process any time before data migration completes)
1063 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1063 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1064 migrating 519 KB in store; 1.05 MB tracked data
1064 migrating 519 KB in store; 1.05 MB tracked data
1065 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
1065 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
1066 blindly copying data/FooBarDirectory.d/f1.i containing 1 revisions
1066 blindly copying data/FooBarDirectory.d/f1.i containing 1 revisions
1067 blindly copying data/f0.i containing 1 revisions
1067 blindly copying data/f0.i containing 1 revisions
1068 blindly copying data/f2.i containing 1 revisions
1068 blindly copying data/f2.i containing 1 revisions
1069 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
1069 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
1070 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
1070 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
1071 blindly copying 00manifest.i containing 3 revisions
1071 blindly copying 00manifest.i containing 3 revisions
1072 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1072 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1073 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
1073 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
1074 cloning 3 revisions from 00changelog.i
1074 cloning 3 revisions from 00changelog.i
1075 finished migrating 3 changelog revisions; change in size: 0 bytes
1075 finished migrating 3 changelog revisions; change in size: 0 bytes
1076 finished migrating 9 total revisions; total change in store size: 0 bytes
1076 finished migrating 9 total revisions; total change in store size: 0 bytes
1077 copying phaseroots
1077 copying phaseroots
1078 copying requires
1078 copying requires
1079 data fully upgraded in a temporary repository
1079 data fully upgraded in a temporary repository
1080 marking source repository as being upgraded; clients will be unable to read from repository
1080 marking source repository as being upgraded; clients will be unable to read from repository
1081 starting in-place swap of repository data
1081 starting in-place swap of repository data
1082 replacing store...
1082 replacing store...
1083 store replacement complete; repository was inconsistent for *s (glob)
1083 store replacement complete; repository was inconsistent for *s (glob)
1084 finalizing requirements file and making repository readable again
1084 finalizing requirements file and making repository readable again
1085 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1085 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1086 $ hg verify
1086 $ hg verify
1087 checking changesets
1087 checking changesets
1088 checking manifests
1088 checking manifests
1089 crosschecking files in changesets and manifests
1089 crosschecking files in changesets and manifests
1090 checking files
1090 checking files
1091 checked 3 changesets with 3 changes to 3 files
1091 checked 3 changesets with 3 changes to 3 files
1092
1092
1093 Check that we can select filelog only
1093 Check that we can select filelog only
1094
1094
1095 $ hg debugupgrade --optimize re-delta-parent --run --no-changelog --no-manifest --no-backup --debug --traceback
1095 $ hg debugupgrade --optimize re-delta-parent --run --no-changelog --no-manifest --no-backup --debug --traceback
1096 upgrade will perform the following actions:
1096 upgrade will perform the following actions:
1097
1097
1098 requirements
1098 requirements
1099 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1099 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1100 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1100 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1101
1101
1102 optimisations: re-delta-parent
1102 optimisations: re-delta-parent
1103
1103
1104 re-delta-parent
1104 re-delta-parent
1105 deltas within internal storage will choose a new base revision if needed
1105 deltas within internal storage will choose a new base revision if needed
1106
1106
1107 processed revlogs:
1107 processed revlogs:
1108 - all-filelogs
1108 - all-filelogs
1109
1109
1110 beginning upgrade...
1110 beginning upgrade...
1111 repository locked and read-only
1111 repository locked and read-only
1112 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1112 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1113 (it is safe to interrupt this process any time before data migration completes)
1113 (it is safe to interrupt this process any time before data migration completes)
1114 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1114 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1115 migrating 519 KB in store; 1.05 MB tracked data
1115 migrating 519 KB in store; 1.05 MB tracked data
1116 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
1116 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
1117 cloning 1 revisions from data/FooBarDirectory.d/f1.i
1117 cloning 1 revisions from data/FooBarDirectory.d/f1.i
1118 cloning 1 revisions from data/f0.i
1118 cloning 1 revisions from data/f0.i
1119 cloning 1 revisions from data/f2.i
1119 cloning 1 revisions from data/f2.i
1120 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
1120 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
1121 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
1121 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
1122 blindly copying 00manifest.i containing 3 revisions
1122 blindly copying 00manifest.i containing 3 revisions
1123 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1123 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1124 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
1124 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
1125 blindly copying 00changelog.i containing 3 revisions
1125 blindly copying 00changelog.i containing 3 revisions
1126 finished migrating 3 changelog revisions; change in size: 0 bytes
1126 finished migrating 3 changelog revisions; change in size: 0 bytes
1127 finished migrating 9 total revisions; total change in store size: 0 bytes
1127 finished migrating 9 total revisions; total change in store size: 0 bytes
1128 copying phaseroots
1128 copying phaseroots
1129 copying requires
1129 copying requires
1130 data fully upgraded in a temporary repository
1130 data fully upgraded in a temporary repository
1131 marking source repository as being upgraded; clients will be unable to read from repository
1131 marking source repository as being upgraded; clients will be unable to read from repository
1132 starting in-place swap of repository data
1132 starting in-place swap of repository data
1133 replacing store...
1133 replacing store...
1134 store replacement complete; repository was inconsistent for *s (glob)
1134 store replacement complete; repository was inconsistent for *s (glob)
1135 finalizing requirements file and making repository readable again
1135 finalizing requirements file and making repository readable again
1136 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1136 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1137 $ hg verify
1137 $ hg verify
1138 checking changesets
1138 checking changesets
1139 checking manifests
1139 checking manifests
1140 crosschecking files in changesets and manifests
1140 crosschecking files in changesets and manifests
1141 checking files
1141 checking files
1142 checked 3 changesets with 3 changes to 3 files
1142 checked 3 changesets with 3 changes to 3 files
1143
1143
1144
1144
1145 Check you can't skip revlog clone during important format downgrade
1145 Check you can't skip revlog clone during important format downgrade
1146
1146
1147 $ echo "[format]" > .hg/hgrc
1147 $ echo "[format]" > .hg/hgrc
1148 $ echo "sparse-revlog=no" >> .hg/hgrc
1148 $ echo "sparse-revlog=no" >> .hg/hgrc
1149 $ hg debugupgrade --optimize re-delta-parent --no-manifest --no-backup --quiet
1149 $ hg debugupgrade --optimize re-delta-parent --no-manifest --no-backup --quiet
1150 warning: ignoring --no-manifest, as upgrade is changing: sparserevlog
1150 warning: ignoring --no-manifest, as upgrade is changing: sparserevlog
1151
1151
1152 requirements
1152 requirements
1153 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1153 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1154 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1154 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1155 removed: sparserevlog
1155 removed: sparserevlog
1156
1156
1157 optimisations: re-delta-parent
1157 optimisations: re-delta-parent
1158
1158
1159 processed revlogs:
1159 processed revlogs:
1160 - all-filelogs
1160 - all-filelogs
1161 - changelog
1161 - changelog
1162 - manifest
1162 - manifest
1163
1163
1164 $ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback
1164 $ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback
1165 note: selecting all-filelogs for processing to change: sparserevlog
1165 note: selecting all-filelogs for processing to change: sparserevlog
1166 note: selecting changelog for processing to change: sparserevlog
1166 note: selecting changelog for processing to change: sparserevlog
1167
1167
1168 upgrade will perform the following actions:
1168 upgrade will perform the following actions:
1169
1169
1170 requirements
1170 requirements
1171 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1171 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1172 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1172 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1173 removed: sparserevlog
1173 removed: sparserevlog
1174
1174
1175 optimisations: re-delta-parent
1175 optimisations: re-delta-parent
1176
1176
1177 re-delta-parent
1177 re-delta-parent
1178 deltas within internal storage will choose a new base revision if needed
1178 deltas within internal storage will choose a new base revision if needed
1179
1179
1180 processed revlogs:
1180 processed revlogs:
1181 - all-filelogs
1181 - all-filelogs
1182 - changelog
1182 - changelog
1183 - manifest
1183 - manifest
1184
1184
1185 beginning upgrade...
1185 beginning upgrade...
1186 repository locked and read-only
1186 repository locked and read-only
1187 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1187 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1188 (it is safe to interrupt this process any time before data migration completes)
1188 (it is safe to interrupt this process any time before data migration completes)
1189 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1189 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1190 migrating 519 KB in store; 1.05 MB tracked data
1190 migrating 519 KB in store; 1.05 MB tracked data
1191 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
1191 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
1192 cloning 1 revisions from data/FooBarDirectory.d/f1.i
1192 cloning 1 revisions from data/FooBarDirectory.d/f1.i
1193 cloning 1 revisions from data/f0.i
1193 cloning 1 revisions from data/f0.i
1194 cloning 1 revisions from data/f2.i
1194 cloning 1 revisions from data/f2.i
1195 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
1195 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
1196 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
1196 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
1197 cloning 3 revisions from 00manifest.i
1197 cloning 3 revisions from 00manifest.i
1198 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1198 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1199 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
1199 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
1200 cloning 3 revisions from 00changelog.i
1200 cloning 3 revisions from 00changelog.i
1201 finished migrating 3 changelog revisions; change in size: 0 bytes
1201 finished migrating 3 changelog revisions; change in size: 0 bytes
1202 finished migrating 9 total revisions; total change in store size: 0 bytes
1202 finished migrating 9 total revisions; total change in store size: 0 bytes
1203 copying phaseroots
1203 copying phaseroots
1204 copying requires
1204 copying requires
1205 data fully upgraded in a temporary repository
1205 data fully upgraded in a temporary repository
1206 marking source repository as being upgraded; clients will be unable to read from repository
1206 marking source repository as being upgraded; clients will be unable to read from repository
1207 starting in-place swap of repository data
1207 starting in-place swap of repository data
1208 replacing store...
1208 replacing store...
1209 store replacement complete; repository was inconsistent for *s (glob)
1209 store replacement complete; repository was inconsistent for *s (glob)
1210 finalizing requirements file and making repository readable again
1210 finalizing requirements file and making repository readable again
1211 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1211 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1212 $ hg verify
1212 $ hg verify
1213 checking changesets
1213 checking changesets
1214 checking manifests
1214 checking manifests
1215 crosschecking files in changesets and manifests
1215 crosschecking files in changesets and manifests
1216 checking files
1216 checking files
1217 checked 3 changesets with 3 changes to 3 files
1217 checked 3 changesets with 3 changes to 3 files
1218
1218
1219 Check you can't skip revlog clone during important format upgrade
1219 Check you can't skip revlog clone during important format upgrade
1220
1220
1221 $ echo "sparse-revlog=yes" >> .hg/hgrc
1221 $ echo "sparse-revlog=yes" >> .hg/hgrc
1222 $ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback
1222 $ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback
1223 note: selecting all-filelogs for processing to change: sparserevlog
1223 note: selecting all-filelogs for processing to change: sparserevlog
1224 note: selecting changelog for processing to change: sparserevlog
1224 note: selecting changelog for processing to change: sparserevlog
1225
1225
1226 upgrade will perform the following actions:
1226 upgrade will perform the following actions:
1227
1227
1228 requirements
1228 requirements
1229 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1229 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1230 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1230 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1231 added: sparserevlog
1231 added: sparserevlog
1232
1232
1233 optimisations: re-delta-parent
1233 optimisations: re-delta-parent
1234
1234
1235 sparserevlog
1235 sparserevlog
1236 Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server.
1236 Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server.
1237
1237
1238 re-delta-parent
1238 re-delta-parent
1239 deltas within internal storage will choose a new base revision if needed
1239 deltas within internal storage will choose a new base revision if needed
1240
1240
1241 processed revlogs:
1241 processed revlogs:
1242 - all-filelogs
1242 - all-filelogs
1243 - changelog
1243 - changelog
1244 - manifest
1244 - manifest
1245
1245
1246 beginning upgrade...
1246 beginning upgrade...
1247 repository locked and read-only
1247 repository locked and read-only
1248 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1248 creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1249 (it is safe to interrupt this process any time before data migration completes)
1249 (it is safe to interrupt this process any time before data migration completes)
1250 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1250 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1251 migrating 519 KB in store; 1.05 MB tracked data
1251 migrating 519 KB in store; 1.05 MB tracked data
1252 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
1252 migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data)
1253 cloning 1 revisions from data/FooBarDirectory.d/f1.i
1253 cloning 1 revisions from data/FooBarDirectory.d/f1.i
1254 cloning 1 revisions from data/f0.i
1254 cloning 1 revisions from data/f0.i
1255 cloning 1 revisions from data/f2.i
1255 cloning 1 revisions from data/f2.i
1256 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
1256 finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes
1257 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
1257 migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data)
1258 cloning 3 revisions from 00manifest.i
1258 cloning 3 revisions from 00manifest.i
1259 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1259 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1260 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
1260 migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data)
1261 cloning 3 revisions from 00changelog.i
1261 cloning 3 revisions from 00changelog.i
1262 finished migrating 3 changelog revisions; change in size: 0 bytes
1262 finished migrating 3 changelog revisions; change in size: 0 bytes
1263 finished migrating 9 total revisions; total change in store size: 0 bytes
1263 finished migrating 9 total revisions; total change in store size: 0 bytes
1264 copying phaseroots
1264 copying phaseroots
1265 copying requires
1265 copying requires
1266 data fully upgraded in a temporary repository
1266 data fully upgraded in a temporary repository
1267 marking source repository as being upgraded; clients will be unable to read from repository
1267 marking source repository as being upgraded; clients will be unable to read from repository
1268 starting in-place swap of repository data
1268 starting in-place swap of repository data
1269 replacing store...
1269 replacing store...
1270 store replacement complete; repository was inconsistent for *s (glob)
1270 store replacement complete; repository was inconsistent for *s (glob)
1271 finalizing requirements file and making repository readable again
1271 finalizing requirements file and making repository readable again
1272 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1272 removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob)
1273 $ hg verify
1273 $ hg verify
1274 checking changesets
1274 checking changesets
1275 checking manifests
1275 checking manifests
1276 crosschecking files in changesets and manifests
1276 crosschecking files in changesets and manifests
1277 checking files
1277 checking files
1278 checked 3 changesets with 3 changes to 3 files
1278 checked 3 changesets with 3 changes to 3 files
1279
1279
1280 $ cd ..
1280 $ cd ..
1281
1281
1282 store files with special filenames aren't encoded during copy
1282 store files with special filenames aren't encoded during copy
1283
1283
1284 $ hg init store-filenames
1284 $ hg init store-filenames
1285 $ cd store-filenames
1285 $ cd store-filenames
1286 $ touch foo
1286 $ touch foo
1287 $ hg -q commit -A -m initial
1287 $ hg -q commit -A -m initial
1288 $ touch .hg/store/.XX_special_filename
1288 $ touch .hg/store/.XX_special_filename
1289
1289
1290 $ hg debugupgraderepo --run
1290 $ hg debugupgraderepo --run
1291 nothing to do
1291 nothing to do
1292 $ hg debugupgraderepo --run --optimize 're-delta-fulladd'
1292 $ hg debugupgraderepo --run --optimize 're-delta-fulladd'
1293 upgrade will perform the following actions:
1293 upgrade will perform the following actions:
1294
1294
1295 requirements
1295 requirements
1296 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1296 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1297 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1297 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1298
1298
1299 optimisations: re-delta-fulladd
1299 optimisations: re-delta-fulladd
1300
1300
1301 re-delta-fulladd
1301 re-delta-fulladd
1302 each revision will be added as new content to the internal storage; this will likely drastically slow down execution time, but some extensions might need it
1302 each revision will be added as new content to the internal storage; this will likely drastically slow down execution time, but some extensions might need it
1303
1303
1304 processed revlogs:
1304 processed revlogs:
1305 - all-filelogs
1305 - all-filelogs
1306 - changelog
1306 - changelog
1307 - manifest
1307 - manifest
1308
1308
1309 beginning upgrade...
1309 beginning upgrade...
1310 repository locked and read-only
1310 repository locked and read-only
1311 creating temporary repository to stage upgraded data: $TESTTMP/store-filenames/.hg/upgrade.* (glob)
1311 creating temporary repository to stage upgraded data: $TESTTMP/store-filenames/.hg/upgrade.* (glob)
1312 (it is safe to interrupt this process any time before data migration completes)
1312 (it is safe to interrupt this process any time before data migration completes)
1313 migrating 3 total revisions (1 in filelogs, 1 in manifests, 1 in changelog)
1313 migrating 3 total revisions (1 in filelogs, 1 in manifests, 1 in changelog)
1314 migrating 301 bytes in store; 107 bytes tracked data
1314 migrating 301 bytes in store; 107 bytes tracked data
1315 migrating 1 filelogs containing 1 revisions (64 bytes in store; 0 bytes tracked data)
1315 migrating 1 filelogs containing 1 revisions (64 bytes in store; 0 bytes tracked data)
1316 finished migrating 1 filelog revisions across 1 filelogs; change in size: 0 bytes
1316 finished migrating 1 filelog revisions across 1 filelogs; change in size: 0 bytes
1317 migrating 1 manifests containing 1 revisions (110 bytes in store; 45 bytes tracked data)
1317 migrating 1 manifests containing 1 revisions (110 bytes in store; 45 bytes tracked data)
1318 finished migrating 1 manifest revisions across 1 manifests; change in size: 0 bytes
1318 finished migrating 1 manifest revisions across 1 manifests; change in size: 0 bytes
1319 migrating changelog containing 1 revisions (127 bytes in store; 62 bytes tracked data)
1319 migrating changelog containing 1 revisions (127 bytes in store; 62 bytes tracked data)
1320 finished migrating 1 changelog revisions; change in size: 0 bytes
1320 finished migrating 1 changelog revisions; change in size: 0 bytes
1321 finished migrating 3 total revisions; total change in store size: 0 bytes
1321 finished migrating 3 total revisions; total change in store size: 0 bytes
1322 copying .XX_special_filename
1322 copying .XX_special_filename
1323 copying phaseroots
1323 copying phaseroots
1324 copying requires
1324 copying requires
1325 data fully upgraded in a temporary repository
1325 data fully upgraded in a temporary repository
1326 marking source repository as being upgraded; clients will be unable to read from repository
1326 marking source repository as being upgraded; clients will be unable to read from repository
1327 starting in-place swap of repository data
1327 starting in-place swap of repository data
1328 replaced files will be backed up at $TESTTMP/store-filenames/.hg/upgradebackup.* (glob)
1328 replaced files will be backed up at $TESTTMP/store-filenames/.hg/upgradebackup.* (glob)
1329 replacing store...
1329 replacing store...
1330 store replacement complete; repository was inconsistent for *s (glob)
1330 store replacement complete; repository was inconsistent for *s (glob)
1331 finalizing requirements file and making repository readable again
1331 finalizing requirements file and making repository readable again
1332 removing temporary repository $TESTTMP/store-filenames/.hg/upgrade.* (glob)
1332 removing temporary repository $TESTTMP/store-filenames/.hg/upgrade.* (glob)
1333 copy of old repository backed up at $TESTTMP/store-filenames/.hg/upgradebackup.* (glob)
1333 copy of old repository backed up at $TESTTMP/store-filenames/.hg/upgradebackup.* (glob)
1334 the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
1334 the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
1335
1335
1336 fncache is valid after upgrade
1336 fncache is valid after upgrade
1337
1337
1338 $ hg debugrebuildfncache
1338 $ hg debugrebuildfncache
1339 fncache already up to date
1339 fncache already up to date
1340
1340
1341 $ cd ..
1341 $ cd ..
1342
1342
1343 Check upgrading a large file repository
1343 Check upgrading a large file repository
1344 ---------------------------------------
1344 ---------------------------------------
1345
1345
1346 $ hg init largefilesrepo
1346 $ hg init largefilesrepo
1347 $ cat << EOF >> largefilesrepo/.hg/hgrc
1347 $ cat << EOF >> largefilesrepo/.hg/hgrc
1348 > [extensions]
1348 > [extensions]
1349 > largefiles =
1349 > largefiles =
1350 > EOF
1350 > EOF
1351
1351
1352 $ cd largefilesrepo
1352 $ cd largefilesrepo
1353 $ touch foo
1353 $ touch foo
1354 $ hg add --large foo
1354 $ hg add --large foo
1355 $ hg -q commit -m initial
1355 $ hg -q commit -m initial
1356 $ hg debugrequires
1356 $ hg debugrequires
1357 dotencode
1357 dotencode
1358 fncache
1358 fncache
1359 generaldelta
1359 generaldelta
1360 largefiles
1360 largefiles
1361 persistent-nodemap (rust !)
1361 persistent-nodemap (rust !)
1362 revlogv1
1362 revlogv1
1363 share-safe
1363 share-safe
1364 sparserevlog
1364 sparserevlog
1365 store
1365 store
1366
1366
1367 $ hg debugupgraderepo --run
1367 $ hg debugupgraderepo --run
1368 nothing to do
1368 nothing to do
1369 $ hg debugrequires
1369 $ hg debugrequires
1370 dotencode
1370 dotencode
1371 fncache
1371 fncache
1372 generaldelta
1372 generaldelta
1373 largefiles
1373 largefiles
1374 persistent-nodemap (rust !)
1374 persistent-nodemap (rust !)
1375 revlogv1
1375 revlogv1
1376 share-safe
1376 share-safe
1377 sparserevlog
1377 sparserevlog
1378 store
1378 store
1379
1379
1380 $ cat << EOF >> .hg/hgrc
1380 $ cat << EOF >> .hg/hgrc
1381 > [extensions]
1381 > [extensions]
1382 > lfs =
1382 > lfs =
1383 > [lfs]
1383 > [lfs]
1384 > threshold = 10
1384 > threshold = 10
1385 > EOF
1385 > EOF
1386 $ echo '123456789012345' > lfs.bin
1386 $ echo '123456789012345' > lfs.bin
1387 $ hg ci -Am 'lfs.bin'
1387 $ hg ci -Am 'lfs.bin'
1388 adding lfs.bin
1388 adding lfs.bin
1389 $ hg debugrequires | grep lfs
1389 $ hg debugrequires | grep lfs
1390 lfs
1390 lfs
1391 $ find .hg/store/lfs -type f
1391 $ find .hg/store/lfs -type f
1392 .hg/store/lfs/objects/d0/beab232adff5ba365880366ad30b1edb85c4c5372442b5d2fe27adc96d653f
1392 .hg/store/lfs/objects/d0/beab232adff5ba365880366ad30b1edb85c4c5372442b5d2fe27adc96d653f
1393
1393
1394 $ hg debugupgraderepo --run
1394 $ hg debugupgraderepo --run
1395 nothing to do
1395 nothing to do
1396
1396
1397 $ hg debugrequires | grep lfs
1397 $ hg debugrequires | grep lfs
1398 lfs
1398 lfs
1399 $ find .hg/store/lfs -type f
1399 $ find .hg/store/lfs -type f
1400 .hg/store/lfs/objects/d0/beab232adff5ba365880366ad30b1edb85c4c5372442b5d2fe27adc96d653f
1400 .hg/store/lfs/objects/d0/beab232adff5ba365880366ad30b1edb85c4c5372442b5d2fe27adc96d653f
1401 $ hg verify
1401 $ hg verify
1402 checking changesets
1402 checking changesets
1403 checking manifests
1403 checking manifests
1404 crosschecking files in changesets and manifests
1404 crosschecking files in changesets and manifests
1405 checking files
1405 checking files
1406 checked 2 changesets with 2 changes to 2 files
1406 checked 2 changesets with 2 changes to 2 files
1407 $ hg debugdata lfs.bin 0
1407 $ hg debugdata lfs.bin 0
1408 version https://git-lfs.github.com/spec/v1
1408 version https://git-lfs.github.com/spec/v1
1409 oid sha256:d0beab232adff5ba365880366ad30b1edb85c4c5372442b5d2fe27adc96d653f
1409 oid sha256:d0beab232adff5ba365880366ad30b1edb85c4c5372442b5d2fe27adc96d653f
1410 size 16
1410 size 16
1411 x-is-binary 0
1411 x-is-binary 0
1412
1412
1413 $ cd ..
1413 $ cd ..
1414
1414
1415 repository config is taken in account
1415 repository config is taken in account
1416 -------------------------------------
1416 -------------------------------------
1417
1417
1418 $ cat << EOF >> $HGRCPATH
1418 $ cat << EOF >> $HGRCPATH
1419 > [format]
1419 > [format]
1420 > maxchainlen = 1
1420 > maxchainlen = 1
1421 > EOF
1421 > EOF
1422
1422
1423 $ hg init localconfig
1423 $ hg init localconfig
1424 $ cd localconfig
1424 $ cd localconfig
1425 $ cat << EOF > file
1425 $ cat << EOF > file
1426 > some content
1426 > some content
1427 > with some length
1427 > with some length
1428 > to make sure we get a delta
1428 > to make sure we get a delta
1429 > after changes
1429 > after changes
1430 > very long
1430 > very long
1431 > very long
1431 > very long
1432 > very long
1432 > very long
1433 > very long
1433 > very long
1434 > very long
1434 > very long
1435 > very long
1435 > very long
1436 > very long
1436 > very long
1437 > very long
1437 > very long
1438 > very long
1438 > very long
1439 > very long
1439 > very long
1440 > very long
1440 > very long
1441 > EOF
1441 > EOF
1442 $ hg -q commit -A -m A
1442 $ hg -q commit -A -m A
1443 $ echo "new line" >> file
1443 $ echo "new line" >> file
1444 $ hg -q commit -m B
1444 $ hg -q commit -m B
1445 $ echo "new line" >> file
1445 $ echo "new line" >> file
1446 $ hg -q commit -m C
1446 $ hg -q commit -m C
1447
1447
1448 $ cat << EOF >> .hg/hgrc
1448 $ cat << EOF >> .hg/hgrc
1449 > [format]
1449 > [format]
1450 > maxchainlen = 9001
1450 > maxchainlen = 9001
1451 > EOF
1451 > EOF
1452 $ hg config format
1452 $ hg config format
1453 format.revlog-compression=$BUNDLE2_COMPRESSIONS$
1453 format.revlog-compression=$BUNDLE2_COMPRESSIONS$
1454 format.maxchainlen=9001
1454 format.maxchainlen=9001
1455 $ hg debugdeltachain file
1455 $ hg debugdeltachain file
1456 rev p1 p2 chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio readsize largestblk rddensity srchunks
1456 rev p1 p2 chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio readsize largestblk rddensity srchunks
1457 0 -1 -1 1 1 -1 base 77 182 77 0.42308 77 0 0.00000 77 77 1.00000 1
1457 0 -1 -1 1 1 -1 base 77 182 77 0.42308 77 0 0.00000 77 77 1.00000 1
1458 1 0 -1 1 2 0 p1 21 191 98 0.51309 98 0 0.00000 98 98 1.00000 1
1458 1 0 -1 1 2 0 p1 21 191 98 0.51309 98 0 0.00000 98 98 1.00000 1
1459 2 1 -1 1 2 0 snap 30 200 107 0.53500 128 21 0.19626 128 128 0.83594 1
1459 2 1 -1 1 2 0 snap 30 200 107 0.53500 128 21 0.19626 128 128 0.83594 1
1460
1460
1461 $ hg debugupgraderepo --run --optimize 're-delta-all'
1461 $ hg debugupgraderepo --run --optimize 're-delta-all'
1462 upgrade will perform the following actions:
1462 upgrade will perform the following actions:
1463
1463
1464 requirements
1464 requirements
1465 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1465 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1466 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1466 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1467
1467
1468 optimisations: re-delta-all
1468 optimisations: re-delta-all
1469
1469
1470 re-delta-all
1470 re-delta-all
1471 deltas within internal storage will be fully recomputed; this will likely drastically slow down execution time
1471 deltas within internal storage will be fully recomputed; this will likely drastically slow down execution time
1472
1472
1473 processed revlogs:
1473 processed revlogs:
1474 - all-filelogs
1474 - all-filelogs
1475 - changelog
1475 - changelog
1476 - manifest
1476 - manifest
1477
1477
1478 beginning upgrade...
1478 beginning upgrade...
1479 repository locked and read-only
1479 repository locked and read-only
1480 creating temporary repository to stage upgraded data: $TESTTMP/localconfig/.hg/upgrade.* (glob)
1480 creating temporary repository to stage upgraded data: $TESTTMP/localconfig/.hg/upgrade.* (glob)
1481 (it is safe to interrupt this process any time before data migration completes)
1481 (it is safe to interrupt this process any time before data migration completes)
1482 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1482 migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog)
1483 migrating 1019 bytes in store; 882 bytes tracked data
1483 migrating 1019 bytes in store; 882 bytes tracked data
1484 migrating 1 filelogs containing 3 revisions (320 bytes in store; 573 bytes tracked data)
1484 migrating 1 filelogs containing 3 revisions (320 bytes in store; 573 bytes tracked data)
1485 finished migrating 3 filelog revisions across 1 filelogs; change in size: -9 bytes
1485 finished migrating 3 filelog revisions across 1 filelogs; change in size: -9 bytes
1486 migrating 1 manifests containing 3 revisions (333 bytes in store; 138 bytes tracked data)
1486 migrating 1 manifests containing 3 revisions (333 bytes in store; 138 bytes tracked data)
1487 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1487 finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes
1488 migrating changelog containing 3 revisions (366 bytes in store; 171 bytes tracked data)
1488 migrating changelog containing 3 revisions (366 bytes in store; 171 bytes tracked data)
1489 finished migrating 3 changelog revisions; change in size: 0 bytes
1489 finished migrating 3 changelog revisions; change in size: 0 bytes
1490 finished migrating 9 total revisions; total change in store size: -9 bytes
1490 finished migrating 9 total revisions; total change in store size: -9 bytes
1491 copying phaseroots
1491 copying phaseroots
1492 copying requires
1492 copying requires
1493 data fully upgraded in a temporary repository
1493 data fully upgraded in a temporary repository
1494 marking source repository as being upgraded; clients will be unable to read from repository
1494 marking source repository as being upgraded; clients will be unable to read from repository
1495 starting in-place swap of repository data
1495 starting in-place swap of repository data
1496 replaced files will be backed up at $TESTTMP/localconfig/.hg/upgradebackup.* (glob)
1496 replaced files will be backed up at $TESTTMP/localconfig/.hg/upgradebackup.* (glob)
1497 replacing store...
1497 replacing store...
1498 store replacement complete; repository was inconsistent for *s (glob)
1498 store replacement complete; repository was inconsistent for *s (glob)
1499 finalizing requirements file and making repository readable again
1499 finalizing requirements file and making repository readable again
1500 removing temporary repository $TESTTMP/localconfig/.hg/upgrade.* (glob)
1500 removing temporary repository $TESTTMP/localconfig/.hg/upgrade.* (glob)
1501 copy of old repository backed up at $TESTTMP/localconfig/.hg/upgradebackup.* (glob)
1501 copy of old repository backed up at $TESTTMP/localconfig/.hg/upgradebackup.* (glob)
1502 the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
1502 the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
1503 $ hg debugdeltachain file
1503 $ hg debugdeltachain file
1504 rev p1 p2 chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio readsize largestblk rddensity srchunks
1504 rev p1 p2 chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio readsize largestblk rddensity srchunks
1505 0 -1 -1 1 1 -1 base 77 182 77 0.42308 77 0 0.00000 77 77 1.00000 1
1505 0 -1 -1 1 1 -1 base 77 182 77 0.42308 77 0 0.00000 77 77 1.00000 1
1506 1 0 -1 1 2 0 p1 21 191 98 0.51309 98 0 0.00000 98 98 1.00000 1
1506 1 0 -1 1 2 0 p1 21 191 98 0.51309 98 0 0.00000 98 98 1.00000 1
1507 2 1 -1 1 3 1 p1 21 200 119 0.59500 119 0 0.00000 119 119 1.00000 1
1507 2 1 -1 1 3 1 p1 21 200 119 0.59500 119 0 0.00000 119 119 1.00000 1
1508 $ cd ..
1508 $ cd ..
1509
1509
1510 $ cat << EOF >> $HGRCPATH
1510 $ cat << EOF >> $HGRCPATH
1511 > [format]
1511 > [format]
1512 > maxchainlen = 9001
1512 > maxchainlen = 9001
1513 > EOF
1513 > EOF
1514
1514
1515 Check upgrading a sparse-revlog repository
1515 Check upgrading a sparse-revlog repository
1516 ---------------------------------------
1516 ---------------------------------------
1517
1517
1518 $ hg init sparserevlogrepo --config format.sparse-revlog=no
1518 $ hg init sparserevlogrepo --config format.sparse-revlog=no
1519 $ cd sparserevlogrepo
1519 $ cd sparserevlogrepo
1520 $ touch foo
1520 $ touch foo
1521 $ hg add foo
1521 $ hg add foo
1522 $ hg -q commit -m "foo"
1522 $ hg -q commit -m "foo"
1523 $ hg debugrequires
1523 $ hg debugrequires
1524 dotencode
1524 dotencode
1525 fncache
1525 fncache
1526 generaldelta
1526 generaldelta
1527 persistent-nodemap (rust !)
1527 persistent-nodemap (rust !)
1528 revlogv1
1528 revlogv1
1529 share-safe
1529 share-safe
1530 store
1530 store
1531
1531
1532 Check that we can add the sparse-revlog format requirement
1532 Check that we can add the sparse-revlog format requirement
1533 $ hg --config format.sparse-revlog=yes debugupgraderepo --run --quiet
1533 $ hg --config format.sparse-revlog=yes debugupgraderepo --run --quiet
1534 upgrade will perform the following actions:
1534 upgrade will perform the following actions:
1535
1535
1536 requirements
1536 requirements
1537 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1537 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1538 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1538 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1539 added: sparserevlog
1539 added: sparserevlog
1540
1540
1541 processed revlogs:
1541 processed revlogs:
1542 - all-filelogs
1542 - all-filelogs
1543 - changelog
1543 - changelog
1544 - manifest
1544 - manifest
1545
1545
1546 $ hg debugrequires
1546 $ hg debugrequires
1547 dotencode
1547 dotencode
1548 fncache
1548 fncache
1549 generaldelta
1549 generaldelta
1550 persistent-nodemap (rust !)
1550 persistent-nodemap (rust !)
1551 revlogv1
1551 revlogv1
1552 share-safe
1552 share-safe
1553 sparserevlog
1553 sparserevlog
1554 store
1554 store
1555
1555
1556 Check that we can remove the sparse-revlog format requirement
1556 Check that we can remove the sparse-revlog format requirement
1557 $ hg --config format.sparse-revlog=no debugupgraderepo --run --quiet
1557 $ hg --config format.sparse-revlog=no debugupgraderepo --run --quiet
1558 upgrade will perform the following actions:
1558 upgrade will perform the following actions:
1559
1559
1560 requirements
1560 requirements
1561 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1561 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1562 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1562 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1563 removed: sparserevlog
1563 removed: sparserevlog
1564
1564
1565 processed revlogs:
1565 processed revlogs:
1566 - all-filelogs
1566 - all-filelogs
1567 - changelog
1567 - changelog
1568 - manifest
1568 - manifest
1569
1569
1570 $ hg debugrequires
1570 $ hg debugrequires
1571 dotencode
1571 dotencode
1572 fncache
1572 fncache
1573 generaldelta
1573 generaldelta
1574 persistent-nodemap (rust !)
1574 persistent-nodemap (rust !)
1575 revlogv1
1575 revlogv1
1576 share-safe
1576 share-safe
1577 store
1577 store
1578
1578
1579 #if zstd
1579 #if zstd
1580
1580
1581 Check upgrading to a zstd revlog
1581 Check upgrading to a zstd revlog
1582 --------------------------------
1582 --------------------------------
1583
1583
1584 upgrade
1584 upgrade
1585
1585
1586 $ hg --config format.revlog-compression=zstd debugupgraderepo --run --no-backup --quiet
1586 $ hg --config format.revlog-compression=zstd debugupgraderepo --run --no-backup --quiet
1587 upgrade will perform the following actions:
1587 upgrade will perform the following actions:
1588
1588
1589 requirements
1589 requirements
1590 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1590 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !)
1591 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1591 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !)
1592 added: revlog-compression-zstd, sparserevlog
1592 added: revlog-compression-zstd, sparserevlog
1593
1593
1594 processed revlogs:
1594 processed revlogs:
1595 - all-filelogs
1595 - all-filelogs
1596 - changelog
1596 - changelog
1597 - manifest
1597 - manifest
1598
1598
1599 $ hg debugformat -v
1599 $ hg debugformat -v
1600 format-variant repo config default
1600 format-variant repo config default
1601 fncache: yes yes yes
1601 fncache: yes yes yes
1602 dirstate-v2: no no no
1602 dirstate-v2: no no no
1603 tracked-hint: no no no
1603 tracked-hint: no no no
1604 dotencode: yes yes yes
1604 dotencode: yes yes yes
1605 generaldelta: yes yes yes
1605 generaldelta: yes yes yes
1606 share-safe: yes yes yes
1606 share-safe: yes yes yes
1607 sparserevlog: yes yes yes
1607 sparserevlog: yes yes yes
1608 persistent-nodemap: no no no (no-rust !)
1608 persistent-nodemap: no no no (no-rust !)
1609 persistent-nodemap: yes yes no (rust !)
1609 persistent-nodemap: yes yes no (rust !)
1610 copies-sdc: no no no
1610 copies-sdc: no no no
1611 revlog-v2: no no no
1611 revlog-v2: no no no
1612 changelog-v2: no no no
1612 changelog-v2: no no no
1613 plain-cl-delta: yes yes yes
1613 plain-cl-delta: yes yes yes
1614 compression: zlib zlib zlib (no-zstd !)
1614 compression: zlib zlib zlib (no-zstd !)
1615 compression: zstd zlib zstd (zstd !)
1615 compression: zstd zlib zstd (zstd !)
1616 compression-level: default default default
1616 compression-level: default default default
1617 $ hg debugrequires
1617 $ hg debugrequires
1618 dotencode
1618 dotencode
1619 fncache
1619 fncache
1620 generaldelta
1620 generaldelta
1621 persistent-nodemap (rust !)
1621 persistent-nodemap (rust !)
1622 revlog-compression-zstd
1622 revlog-compression-zstd
1623 revlogv1
1623 revlogv1
1624 share-safe
1624 share-safe
1625 sparserevlog
1625 sparserevlog
1626 store
1626 store
1627
1627
1628 downgrade
1628 downgrade
1629
1629
1630 $ hg debugupgraderepo --run --no-backup --quiet
1630 $ hg debugupgraderepo --run --no-backup --quiet
1631 upgrade will perform the following actions:
1631 upgrade will perform the following actions:
1632
1632
1633 requirements
1633 requirements
1634 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1634 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1635 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1635 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1636 removed: revlog-compression-zstd
1636 removed: revlog-compression-zstd
1637
1637
1638 processed revlogs:
1638 processed revlogs:
1639 - all-filelogs
1639 - all-filelogs
1640 - changelog
1640 - changelog
1641 - manifest
1641 - manifest
1642
1642
1643 $ hg debugformat -v
1643 $ hg debugformat -v
1644 format-variant repo config default
1644 format-variant repo config default
1645 fncache: yes yes yes
1645 fncache: yes yes yes
1646 dirstate-v2: no no no
1646 dirstate-v2: no no no
1647 tracked-hint: no no no
1647 tracked-hint: no no no
1648 dotencode: yes yes yes
1648 dotencode: yes yes yes
1649 generaldelta: yes yes yes
1649 generaldelta: yes yes yes
1650 share-safe: yes yes yes
1650 share-safe: yes yes yes
1651 sparserevlog: yes yes yes
1651 sparserevlog: yes yes yes
1652 persistent-nodemap: no no no (no-rust !)
1652 persistent-nodemap: no no no (no-rust !)
1653 persistent-nodemap: yes yes no (rust !)
1653 persistent-nodemap: yes yes no (rust !)
1654 copies-sdc: no no no
1654 copies-sdc: no no no
1655 revlog-v2: no no no
1655 revlog-v2: no no no
1656 changelog-v2: no no no
1656 changelog-v2: no no no
1657 plain-cl-delta: yes yes yes
1657 plain-cl-delta: yes yes yes
1658 compression: zlib zlib zlib (no-zstd !)
1658 compression: zlib zlib zlib (no-zstd !)
1659 compression: zlib zlib zstd (zstd !)
1659 compression: zlib zlib zstd (zstd !)
1660 compression-level: default default default
1660 compression-level: default default default
1661 $ hg debugrequires
1661 $ hg debugrequires
1662 dotencode
1662 dotencode
1663 fncache
1663 fncache
1664 generaldelta
1664 generaldelta
1665 persistent-nodemap (rust !)
1665 persistent-nodemap (rust !)
1666 revlogv1
1666 revlogv1
1667 share-safe
1667 share-safe
1668 sparserevlog
1668 sparserevlog
1669 store
1669 store
1670
1670
1671 upgrade from hgrc
1671 upgrade from hgrc
1672
1672
1673 $ cat >> .hg/hgrc << EOF
1673 $ cat >> .hg/hgrc << EOF
1674 > [format]
1674 > [format]
1675 > revlog-compression=zstd
1675 > revlog-compression=zstd
1676 > EOF
1676 > EOF
1677 $ hg debugupgraderepo --run --no-backup --quiet
1677 $ hg debugupgraderepo --run --no-backup --quiet
1678 upgrade will perform the following actions:
1678 upgrade will perform the following actions:
1679
1679
1680 requirements
1680 requirements
1681 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1681 preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !)
1682 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1682 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !)
1683 added: revlog-compression-zstd
1683 added: revlog-compression-zstd
1684
1684
1685 processed revlogs:
1685 processed revlogs:
1686 - all-filelogs
1686 - all-filelogs
1687 - changelog
1687 - changelog
1688 - manifest
1688 - manifest
1689
1689
1690 $ hg debugformat -v
1690 $ hg debugformat -v
1691 format-variant repo config default
1691 format-variant repo config default
1692 fncache: yes yes yes
1692 fncache: yes yes yes
1693 dirstate-v2: no no no
1693 dirstate-v2: no no no
1694 tracked-hint: no no no
1694 tracked-hint: no no no
1695 dotencode: yes yes yes
1695 dotencode: yes yes yes
1696 generaldelta: yes yes yes
1696 generaldelta: yes yes yes
1697 share-safe: yes yes yes
1697 share-safe: yes yes yes
1698 sparserevlog: yes yes yes
1698 sparserevlog: yes yes yes
1699 persistent-nodemap: no no no (no-rust !)
1699 persistent-nodemap: no no no (no-rust !)
1700 persistent-nodemap: yes yes no (rust !)
1700 persistent-nodemap: yes yes no (rust !)
1701 copies-sdc: no no no
1701 copies-sdc: no no no
1702 revlog-v2: no no no
1702 revlog-v2: no no no
1703 changelog-v2: no no no
1703 changelog-v2: no no no
1704 plain-cl-delta: yes yes yes
1704 plain-cl-delta: yes yes yes
1705 compression: zlib zlib zlib (no-zstd !)
1705 compression: zlib zlib zlib (no-zstd !)
1706 compression: zstd zstd zstd (zstd !)
1706 compression: zstd zstd zstd (zstd !)
1707 compression-level: default default default
1707 compression-level: default default default
1708 $ hg debugrequires
1708 $ hg debugrequires
1709 dotencode
1709 dotencode
1710 fncache
1710 fncache
1711 generaldelta
1711 generaldelta
1712 persistent-nodemap (rust !)
1712 persistent-nodemap (rust !)
1713 revlog-compression-zstd
1713 revlog-compression-zstd
1714 revlogv1
1714 revlogv1
1715 share-safe
1715 share-safe
1716 sparserevlog
1716 sparserevlog
1717 store
1717 store
1718
1718
1719 #endif
1719 #endif
1720
1720
1721 Check upgrading to a revlog format supporting sidedata
1721 Check upgrading to a revlog format supporting sidedata
1722 ------------------------------------------------------
1722 ------------------------------------------------------
1723
1723
1724 upgrade
1724 upgrade
1725
1725
1726 $ hg debugsidedata -c 0
1726 $ hg debugsidedata -c 0
1727 $ hg --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data debugupgraderepo --run --no-backup --config "extensions.sidedata=$TESTDIR/testlib/ext-sidedata.py" --quiet
1727 $ hg --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data debugupgraderepo --run --no-backup --config "extensions.sidedata=$TESTDIR/testlib/ext-sidedata.py" --quiet
1728 upgrade will perform the following actions:
1728 upgrade will perform the following actions:
1729
1729
1730 requirements
1730 requirements
1731 preserved: dotencode, fncache, generaldelta, share-safe, store (no-zstd !)
1731 preserved: dotencode, fncache, generaldelta, share-safe, store (no-zstd !)
1732 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, share-safe, sparserevlog, store (zstd no-rust !)
1732 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, share-safe, sparserevlog, store (zstd no-rust !)
1733 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, share-safe, sparserevlog, store (rust !)
1733 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, share-safe, sparserevlog, store (rust !)
1734 removed: revlogv1
1734 removed: revlogv1
1735 added: exp-revlogv2.2 (zstd !)
1735 added: exp-revlogv2.2 (zstd !)
1736 added: exp-revlogv2.2, sparserevlog (no-zstd !)
1736 added: exp-revlogv2.2, sparserevlog (no-zstd !)
1737
1737
1738 processed revlogs:
1738 processed revlogs:
1739 - all-filelogs
1739 - all-filelogs
1740 - changelog
1740 - changelog
1741 - manifest
1741 - manifest
1742
1742
1743 $ hg debugformat -v
1743 $ hg debugformat -v
1744 format-variant repo config default
1744 format-variant repo config default
1745 fncache: yes yes yes
1745 fncache: yes yes yes
1746 dirstate-v2: no no no
1746 dirstate-v2: no no no
1747 tracked-hint: no no no
1747 tracked-hint: no no no
1748 dotencode: yes yes yes
1748 dotencode: yes yes yes
1749 generaldelta: yes yes yes
1749 generaldelta: yes yes yes
1750 share-safe: yes yes yes
1750 share-safe: yes yes yes
1751 sparserevlog: yes yes yes
1751 sparserevlog: yes yes yes
1752 persistent-nodemap: no no no (no-rust !)
1752 persistent-nodemap: no no no (no-rust !)
1753 persistent-nodemap: yes yes no (rust !)
1753 persistent-nodemap: yes yes no (rust !)
1754 copies-sdc: no no no
1754 copies-sdc: no no no
1755 revlog-v2: yes no no
1755 revlog-v2: yes no no
1756 changelog-v2: no no no
1756 changelog-v2: no no no
1757 plain-cl-delta: yes yes yes
1757 plain-cl-delta: yes yes yes
1758 compression: zlib zlib zlib (no-zstd !)
1758 compression: zlib zlib zlib (no-zstd !)
1759 compression: zstd zstd zstd (zstd !)
1759 compression: zstd zstd zstd (zstd !)
1760 compression-level: default default default
1760 compression-level: default default default
1761 $ hg debugrequires
1761 $ hg debugrequires
1762 dotencode
1762 dotencode
1763 exp-revlogv2.2
1763 exp-revlogv2.2
1764 fncache
1764 fncache
1765 generaldelta
1765 generaldelta
1766 persistent-nodemap (rust !)
1766 persistent-nodemap (rust !)
1767 revlog-compression-zstd (zstd !)
1767 revlog-compression-zstd (zstd !)
1768 share-safe
1768 share-safe
1769 sparserevlog
1769 sparserevlog
1770 store
1770 store
1771 $ hg debugsidedata -c 0
1771 $ hg debugsidedata -c 0
1772 2 sidedata entries
1772 2 sidedata entries
1773 entry-0001 size 4
1773 entry-0001 size 4
1774 entry-0002 size 32
1774 entry-0002 size 32
1775
1775
1776 downgrade
1776 downgrade
1777
1777
1778 $ hg debugupgraderepo --config experimental.revlogv2=no --run --no-backup --quiet
1778 $ hg debugupgraderepo --config experimental.revlogv2=no --run --no-backup --quiet
1779 upgrade will perform the following actions:
1779 upgrade will perform the following actions:
1780
1780
1781 requirements
1781 requirements
1782 preserved: dotencode, fncache, generaldelta, share-safe, sparserevlog, store (no-zstd !)
1782 preserved: dotencode, fncache, generaldelta, share-safe, sparserevlog, store (no-zstd !)
1783 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, share-safe, sparserevlog, store (zstd no-rust !)
1783 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, share-safe, sparserevlog, store (zstd no-rust !)
1784 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, share-safe, sparserevlog, store (rust !)
1784 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, share-safe, sparserevlog, store (rust !)
1785 removed: exp-revlogv2.2
1785 removed: exp-revlogv2.2
1786 added: revlogv1
1786 added: revlogv1
1787
1787
1788 processed revlogs:
1788 processed revlogs:
1789 - all-filelogs
1789 - all-filelogs
1790 - changelog
1790 - changelog
1791 - manifest
1791 - manifest
1792
1792
1793 $ hg debugformat -v
1793 $ hg debugformat -v
1794 format-variant repo config default
1794 format-variant repo config default
1795 fncache: yes yes yes
1795 fncache: yes yes yes
1796 dirstate-v2: no no no
1796 dirstate-v2: no no no
1797 tracked-hint: no no no
1797 tracked-hint: no no no
1798 dotencode: yes yes yes
1798 dotencode: yes yes yes
1799 generaldelta: yes yes yes
1799 generaldelta: yes yes yes
1800 share-safe: yes yes yes
1800 share-safe: yes yes yes
1801 sparserevlog: yes yes yes
1801 sparserevlog: yes yes yes
1802 persistent-nodemap: no no no (no-rust !)
1802 persistent-nodemap: no no no (no-rust !)
1803 persistent-nodemap: yes yes no (rust !)
1803 persistent-nodemap: yes yes no (rust !)
1804 copies-sdc: no no no
1804 copies-sdc: no no no
1805 revlog-v2: no no no
1805 revlog-v2: no no no
1806 changelog-v2: no no no
1806 changelog-v2: no no no
1807 plain-cl-delta: yes yes yes
1807 plain-cl-delta: yes yes yes
1808 compression: zlib zlib zlib (no-zstd !)
1808 compression: zlib zlib zlib (no-zstd !)
1809 compression: zstd zstd zstd (zstd !)
1809 compression: zstd zstd zstd (zstd !)
1810 compression-level: default default default
1810 compression-level: default default default
1811 $ hg debugrequires
1811 $ hg debugrequires
1812 dotencode
1812 dotencode
1813 fncache
1813 fncache
1814 generaldelta
1814 generaldelta
1815 persistent-nodemap (rust !)
1815 persistent-nodemap (rust !)
1816 revlog-compression-zstd (zstd !)
1816 revlog-compression-zstd (zstd !)
1817 revlogv1
1817 revlogv1
1818 share-safe
1818 share-safe
1819 sparserevlog
1819 sparserevlog
1820 store
1820 store
1821 $ hg debugsidedata -c 0
1821 $ hg debugsidedata -c 0
1822
1822
1823 upgrade from hgrc
1823 upgrade from hgrc
1824
1824
1825 $ cat >> .hg/hgrc << EOF
1825 $ cat >> .hg/hgrc << EOF
1826 > [experimental]
1826 > [experimental]
1827 > revlogv2=enable-unstable-format-and-corrupt-my-data
1827 > revlogv2=enable-unstable-format-and-corrupt-my-data
1828 > EOF
1828 > EOF
1829 $ hg debugupgraderepo --run --no-backup --quiet
1829 $ hg debugupgraderepo --run --no-backup --quiet
1830 upgrade will perform the following actions:
1830 upgrade will perform the following actions:
1831
1831
1832 requirements
1832 requirements
1833 preserved: dotencode, fncache, generaldelta, share-safe, sparserevlog, store (no-zstd !)
1833 preserved: dotencode, fncache, generaldelta, share-safe, sparserevlog, store (no-zstd !)
1834 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, share-safe, sparserevlog, store (zstd no-rust !)
1834 preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, share-safe, sparserevlog, store (zstd no-rust !)
1835 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, share-safe, sparserevlog, store (rust !)
1835 preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, share-safe, sparserevlog, store (rust !)
1836 removed: revlogv1
1836 removed: revlogv1
1837 added: exp-revlogv2.2
1837 added: exp-revlogv2.2
1838
1838
1839 processed revlogs:
1839 processed revlogs:
1840 - all-filelogs
1840 - all-filelogs
1841 - changelog
1841 - changelog
1842 - manifest
1842 - manifest
1843
1843
1844 $ hg debugformat -v
1844 $ hg debugformat -v
1845 format-variant repo config default
1845 format-variant repo config default
1846 fncache: yes yes yes
1846 fncache: yes yes yes
1847 dirstate-v2: no no no
1847 dirstate-v2: no no no
1848 tracked-hint: no no no
1848 tracked-hint: no no no
1849 dotencode: yes yes yes
1849 dotencode: yes yes yes
1850 generaldelta: yes yes yes
1850 generaldelta: yes yes yes
1851 share-safe: yes yes yes
1851 share-safe: yes yes yes
1852 sparserevlog: yes yes yes
1852 sparserevlog: yes yes yes
1853 persistent-nodemap: no no no (no-rust !)
1853 persistent-nodemap: no no no (no-rust !)
1854 persistent-nodemap: yes yes no (rust !)
1854 persistent-nodemap: yes yes no (rust !)
1855 copies-sdc: no no no
1855 copies-sdc: no no no
1856 revlog-v2: yes yes no
1856 revlog-v2: yes yes no
1857 changelog-v2: no no no
1857 changelog-v2: no no no
1858 plain-cl-delta: yes yes yes
1858 plain-cl-delta: yes yes yes
1859 compression: zlib zlib zlib (no-zstd !)
1859 compression: zlib zlib zlib (no-zstd !)
1860 compression: zstd zstd zstd (zstd !)
1860 compression: zstd zstd zstd (zstd !)
1861 compression-level: default default default
1861 compression-level: default default default
1862 $ hg debugrequires
1862 $ hg debugrequires
1863 dotencode
1863 dotencode
1864 exp-revlogv2.2
1864 exp-revlogv2.2
1865 fncache
1865 fncache
1866 generaldelta
1866 generaldelta
1867 persistent-nodemap (rust !)
1867 persistent-nodemap (rust !)
1868 revlog-compression-zstd (zstd !)
1868 revlog-compression-zstd (zstd !)
1869 share-safe
1869 share-safe
1870 sparserevlog
1870 sparserevlog
1871 store
1871 store
1872 $ hg debugsidedata -c 0
1872 $ hg debugsidedata -c 0
1873
1873
1874 Demonstrate that nothing to perform upgrade will still run all the way through
1874 Demonstrate that nothing to perform upgrade will still run all the way through
1875
1875
1876 $ hg debugupgraderepo --run
1876 $ hg debugupgraderepo --run
1877 nothing to do
1877 nothing to do
1878
1878
1879 #if no-rust
1879 #if no-rust
1880
1880
1881 $ cat << EOF >> $HGRCPATH
1881 $ cat << EOF >> $HGRCPATH
1882 > [storage]
1882 > [storage]
1883 > dirstate-v2.slow-path = allow
1883 > dirstate-v2.slow-path = allow
1884 > EOF
1884 > EOF
1885
1885
1886 #endif
1886 #endif
1887
1887
1888 Upgrade to dirstate-v2
1888 Upgrade to dirstate-v2
1889
1889
1890 $ hg debugformat -v --config format.use-dirstate-v2=1 | grep dirstate-v2
1890 $ hg debugformat -v --config format.use-dirstate-v2=1 | grep dirstate-v2
1891 dirstate-v2: no yes no
1891 dirstate-v2: no yes no
1892 $ hg debugupgraderepo --config format.use-dirstate-v2=1 --run
1892 $ hg debugupgraderepo --config format.use-dirstate-v2=1 --run
1893 upgrade will perform the following actions:
1893 upgrade will perform the following actions:
1894
1894
1895 requirements
1895 requirements
1896 preserved: * (glob)
1896 preserved: * (glob)
1897 added: dirstate-v2
1897 added: dirstate-v2
1898
1898
1899 dirstate-v2
1899 dirstate-v2
1900 "hg status" will be faster
1900 "hg status" will be faster
1901
1901
1902 no revlogs to process
1902 no revlogs to process
1903
1903
1904 beginning upgrade...
1904 beginning upgrade...
1905 repository locked and read-only
1905 repository locked and read-only
1906 creating temporary repository to stage upgraded data: $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
1906 creating temporary repository to stage upgraded data: $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
1907 (it is safe to interrupt this process any time before data migration completes)
1907 (it is safe to interrupt this process any time before data migration completes)
1908 upgrading to dirstate-v2 from v1
1908 upgrading to dirstate-v2 from v1
1909 replaced files will be backed up at $TESTTMP/sparserevlogrepo/.hg/upgradebackup.* (glob)
1909 replaced files will be backed up at $TESTTMP/sparserevlogrepo/.hg/upgradebackup.* (glob)
1910 removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
1910 removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
1911 $ ls .hg/upgradebackup.*/dirstate
1911 $ ls .hg/upgradebackup.*/dirstate
1912 .hg/upgradebackup.*/dirstate (glob)
1912 .hg/upgradebackup.*/dirstate (glob)
1913 $ hg debugformat -v | grep dirstate-v2
1913 $ hg debugformat -v | grep dirstate-v2
1914 dirstate-v2: yes no no
1914 dirstate-v2: yes no no
1915 $ hg status
1915 $ hg status
1916 $ dd bs=12 count=1 if=.hg/dirstate 2> /dev/null
1916 $ dd bs=12 count=1 if=.hg/dirstate 2> /dev/null
1917 dirstate-v2
1917 dirstate-v2
1918
1918
1919 Downgrade from dirstate-v2
1919 Downgrade from dirstate-v2
1920
1920
1921 $ hg debugupgraderepo --run
1921 $ hg debugupgraderepo --run
1922 upgrade will perform the following actions:
1922 upgrade will perform the following actions:
1923
1923
1924 requirements
1924 requirements
1925 preserved: * (glob)
1925 preserved: * (glob)
1926 removed: dirstate-v2
1926 removed: dirstate-v2
1927
1927
1928 no revlogs to process
1928 no revlogs to process
1929
1929
1930 beginning upgrade...
1930 beginning upgrade...
1931 repository locked and read-only
1931 repository locked and read-only
1932 creating temporary repository to stage upgraded data: $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
1932 creating temporary repository to stage upgraded data: $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
1933 (it is safe to interrupt this process any time before data migration completes)
1933 (it is safe to interrupt this process any time before data migration completes)
1934 downgrading from dirstate-v2 to v1
1934 downgrading from dirstate-v2 to v1
1935 replaced files will be backed up at $TESTTMP/sparserevlogrepo/.hg/upgradebackup.* (glob)
1935 replaced files will be backed up at $TESTTMP/sparserevlogrepo/.hg/upgradebackup.* (glob)
1936 removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
1936 removing temporary repository $TESTTMP/sparserevlogrepo/.hg/upgrade.* (glob)
1937 $ hg debugformat -v | grep dirstate-v2
1937 $ hg debugformat -v | grep dirstate-v2
1938 dirstate-v2: no no no
1938 dirstate-v2: no no no
1939 $ hg status
1939 $ hg status
1940
1940
1941 $ cd ..
1941 $ cd ..
1942
1942
1943 dirstate-v2: upgrade and downgrade from and empty repository:
1943 dirstate-v2: upgrade and downgrade from and empty repository:
1944 -------------------------------------------------------------
1944 -------------------------------------------------------------
1945
1945
1946 $ hg init --config format.use-dirstate-v2=no dirstate-v2-empty
1946 $ hg init --config format.use-dirstate-v2=no dirstate-v2-empty
1947 $ cd dirstate-v2-empty
1947 $ cd dirstate-v2-empty
1948 $ hg debugformat | grep dirstate-v2
1948 $ hg debugformat | grep dirstate-v2
1949 dirstate-v2: no
1949 dirstate-v2: no
1950
1950
1951 upgrade
1951 upgrade
1952
1952
1953 $ hg debugupgraderepo --run --config format.use-dirstate-v2=yes
1953 $ hg debugupgraderepo --run --config format.use-dirstate-v2=yes
1954 upgrade will perform the following actions:
1954 upgrade will perform the following actions:
1955
1955
1956 requirements
1956 requirements
1957 preserved: * (glob)
1957 preserved: * (glob)
1958 added: dirstate-v2
1958 added: dirstate-v2
1959
1959
1960 dirstate-v2
1960 dirstate-v2
1961 "hg status" will be faster
1961 "hg status" will be faster
1962
1962
1963 no revlogs to process
1963 no revlogs to process
1964
1964
1965 beginning upgrade...
1965 beginning upgrade...
1966 repository locked and read-only
1966 repository locked and read-only
1967 creating temporary repository to stage upgraded data: $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
1967 creating temporary repository to stage upgraded data: $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
1968 (it is safe to interrupt this process any time before data migration completes)
1968 (it is safe to interrupt this process any time before data migration completes)
1969 upgrading to dirstate-v2 from v1
1969 upgrading to dirstate-v2 from v1
1970 replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob)
1970 replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob)
1971 removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
1971 removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
1972 $ hg debugformat | grep dirstate-v2
1972 $ hg debugformat | grep dirstate-v2
1973 dirstate-v2: yes
1973 dirstate-v2: yes
1974
1974
1975 downgrade
1975 downgrade
1976
1976
1977 $ hg debugupgraderepo --run --config format.use-dirstate-v2=no
1977 $ hg debugupgraderepo --run --config format.use-dirstate-v2=no
1978 upgrade will perform the following actions:
1978 upgrade will perform the following actions:
1979
1979
1980 requirements
1980 requirements
1981 preserved: * (glob)
1981 preserved: * (glob)
1982 removed: dirstate-v2
1982 removed: dirstate-v2
1983
1983
1984 no revlogs to process
1984 no revlogs to process
1985
1985
1986 beginning upgrade...
1986 beginning upgrade...
1987 repository locked and read-only
1987 repository locked and read-only
1988 creating temporary repository to stage upgraded data: $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
1988 creating temporary repository to stage upgraded data: $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
1989 (it is safe to interrupt this process any time before data migration completes)
1989 (it is safe to interrupt this process any time before data migration completes)
1990 downgrading from dirstate-v2 to v1
1990 downgrading from dirstate-v2 to v1
1991 replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob)
1991 replaced files will be backed up at $TESTTMP/dirstate-v2-empty/.hg/upgradebackup.* (glob)
1992 removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
1992 removing temporary repository $TESTTMP/dirstate-v2-empty/.hg/upgrade.* (glob)
1993 $ hg debugformat | grep dirstate-v2
1993 $ hg debugformat | grep dirstate-v2
1994 dirstate-v2: no
1994 dirstate-v2: no
1995
1995
1996 $ cd ..
1996 $ cd ..
1997
1997
1998 Test automatic upgrade/downgrade
1998 Test automatic upgrade/downgrade
1999 ================================
1999 ================================
2000
2000
2001
2001
2002 For dirstate v2
2002 For dirstate v2
2003 ---------------
2003 ---------------
2004
2004
2005 create an initial repository
2005 create an initial repository
2006
2006
2007 $ hg init auto-upgrade \
2007 $ hg init auto-upgrade \
2008 > --config format.use-dirstate-v2=no \
2008 > --config format.use-dirstate-v2=no \
2009 > --config format.use-dirstate-tracked-hint=yes \
2009 > --config format.use-dirstate-tracked-hint=yes \
2010 > --config format.use-share-safe=no
2010 > --config format.use-share-safe=no
2011 $ hg debugbuilddag -R auto-upgrade --new-file .+5
2011 $ hg debugbuilddag -R auto-upgrade --new-file .+5
2012 $ hg -R auto-upgrade update
2012 $ hg -R auto-upgrade update
2013 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
2013 6 files updated, 0 files merged, 0 files removed, 0 files unresolved
2014 $ hg debugformat -R auto-upgrade | grep dirstate-v2
2014 $ hg debugformat -R auto-upgrade | grep dirstate-v2
2015 dirstate-v2: no
2015 dirstate-v2: no
2016
2016
2017 upgrade it to dirstate-v2 automatically
2017 upgrade it to dirstate-v2 automatically
2018
2018
2019 $ hg status -R auto-upgrade \
2019 $ hg status -R auto-upgrade \
2020 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2020 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2021 > --config format.use-dirstate-v2=yes
2021 > --config format.use-dirstate-v2=yes
2022 automatically upgrading repository to the `dirstate-v2` feature
2022 automatically upgrading repository to the `dirstate-v2` feature
2023 (see `hg help config.format.use-dirstate-v2` for details)
2023 (see `hg help config.format.use-dirstate-v2` for details)
2024 $ hg debugformat -R auto-upgrade | grep dirstate-v2
2024 $ hg debugformat -R auto-upgrade | grep dirstate-v2
2025 dirstate-v2: yes
2025 dirstate-v2: yes
2026
2026
2027 downgrade it from dirstate-v2 automatically
2027 downgrade it from dirstate-v2 automatically
2028
2028
2029 $ hg status -R auto-upgrade \
2029 $ hg status -R auto-upgrade \
2030 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2030 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2031 > --config format.use-dirstate-v2=no
2031 > --config format.use-dirstate-v2=no
2032 automatically downgrading repository from the `dirstate-v2` feature
2032 automatically downgrading repository from the `dirstate-v2` feature
2033 (see `hg help config.format.use-dirstate-v2` for details)
2033 (see `hg help config.format.use-dirstate-v2` for details)
2034 $ hg debugformat -R auto-upgrade | grep dirstate-v2
2034 $ hg debugformat -R auto-upgrade | grep dirstate-v2
2035 dirstate-v2: no
2035 dirstate-v2: no
2036
2036
2037
2037
2038 For multiple change at the same time
2038 For multiple change at the same time
2039 ------------------------------------
2039 ------------------------------------
2040
2040
2041 $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)'
2041 $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)'
2042 dirstate-v2: no
2042 dirstate-v2: no
2043 tracked-hint: yes
2043 tracked-hint: yes
2044 share-safe: no
2044 share-safe: no
2045
2045
2046 $ hg status -R auto-upgrade \
2046 $ hg status -R auto-upgrade \
2047 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2047 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2048 > --config format.use-dirstate-v2=yes \
2048 > --config format.use-dirstate-v2=yes \
2049 > --config format.use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories=yes \
2049 > --config format.use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories=yes \
2050 > --config format.use-dirstate-tracked-hint=no\
2050 > --config format.use-dirstate-tracked-hint=no\
2051 > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \
2051 > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \
2052 > --config format.use-share-safe=yes
2052 > --config format.use-share-safe=yes
2053 automatically upgrading repository to the `dirstate-v2` feature
2053 automatically upgrading repository to the `dirstate-v2` feature
2054 (see `hg help config.format.use-dirstate-v2` for details)
2054 (see `hg help config.format.use-dirstate-v2` for details)
2055 automatically upgrading repository to the `share-safe` feature
2055 automatically upgrading repository to the `share-safe` feature
2056 (see `hg help config.format.use-share-safe` for details)
2056 (see `hg help config.format.use-share-safe` for details)
2057 automatically downgrading repository from the `tracked-hint` feature
2057 automatically downgrading repository from the `tracked-hint` feature
2058 (see `hg help config.format.use-dirstate-tracked-hint` for details)
2058 (see `hg help config.format.use-dirstate-tracked-hint` for details)
2059 $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)'
2059 $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)'
2060 dirstate-v2: yes
2060 dirstate-v2: yes
2061 tracked-hint: no
2061 tracked-hint: no
2062 share-safe: yes
2062 share-safe: yes
2063
2063
2064 Quiet upgrade and downgrade
2064 Quiet upgrade and downgrade
2065 ---------------------------
2065 ---------------------------
2066
2066
2067
2067
2068 $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)'
2068 $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)'
2069 dirstate-v2: yes
2069 dirstate-v2: yes
2070 tracked-hint: no
2070 tracked-hint: no
2071 share-safe: yes
2071 share-safe: yes
2072 $ hg status -R auto-upgrade \
2072 $ hg status -R auto-upgrade \
2073 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2073 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2074 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories:quiet=yes \
2074 > --config format.use-dirstate-v2=no \
2075 > --config format.use-dirstate-v2=no \
2075 > --config format.use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories=yes \
2076 > --config format.use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories=yes \
2076 > --config format.use-dirstate-tracked-hint=yes \
2077 > --config format.use-dirstate-tracked-hint=yes \
2077 > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \
2078 > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \
2078 > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \
2079 > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \
2079 > --config format.use-share-safe=no
2080 > --config format.use-share-safe=no
2080 automatically downgrading repository from the `dirstate-v2` feature
2081 (see `hg help config.format.use-dirstate-v2` for details)
2082 automatically upgrading repository to the `tracked-hint` feature
2081 automatically upgrading repository to the `tracked-hint` feature
2083 (see `hg help config.format.use-dirstate-tracked-hint` for details)
2082 (see `hg help config.format.use-dirstate-tracked-hint` for details)
2084
2083
2085 $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)'
2084 $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)'
2086 dirstate-v2: no
2085 dirstate-v2: no
2087 tracked-hint: yes
2086 tracked-hint: yes
2088 share-safe: no
2087 share-safe: no
2089
2088
2090 $ hg status -R auto-upgrade \
2089 $ hg status -R auto-upgrade \
2091 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2090 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2091 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories:quiet=yes \
2092 > --config format.use-dirstate-v2=yes \
2092 > --config format.use-dirstate-v2=yes \
2093 > --config format.use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories=yes \
2093 > --config format.use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories=yes \
2094 > --config format.use-dirstate-tracked-hint=no\
2094 > --config format.use-dirstate-tracked-hint=no\
2095 > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \
2095 > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories=yes \
2096 > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \
2096 > --config format.use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet=yes \
2097 > --config format.use-share-safe=yes
2097 > --config format.use-share-safe=yes
2098 automatically upgrading repository to the `dirstate-v2` feature
2099 (see `hg help config.format.use-dirstate-v2` for details)
2100 automatically downgrading repository from the `tracked-hint` feature
2098 automatically downgrading repository from the `tracked-hint` feature
2101 (see `hg help config.format.use-dirstate-tracked-hint` for details)
2099 (see `hg help config.format.use-dirstate-tracked-hint` for details)
2102 $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)'
2100 $ hg debugformat -R auto-upgrade | egrep '(dirstate-v2|tracked|share-safe)'
2103 dirstate-v2: yes
2101 dirstate-v2: yes
2104 tracked-hint: no
2102 tracked-hint: no
2105 share-safe: yes
2103 share-safe: yes
2106
2104
2107 Attempting Auto-upgrade on a read-only repository
2105 Attempting Auto-upgrade on a read-only repository
2108 -------------------------------------------------
2106 -------------------------------------------------
2109
2107
2110 $ chmod -R a-w auto-upgrade
2108 $ chmod -R a-w auto-upgrade
2111
2109
2112 $ hg status -R auto-upgrade \
2110 $ hg status -R auto-upgrade \
2113 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2111 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2114 > --config format.use-dirstate-v2=no
2112 > --config format.use-dirstate-v2=no
2115 $ hg debugformat -R auto-upgrade | grep dirstate-v2
2113 $ hg debugformat -R auto-upgrade | grep dirstate-v2
2116 dirstate-v2: yes
2114 dirstate-v2: yes
2117
2115
2118 $ chmod -R u+w auto-upgrade
2116 $ chmod -R u+w auto-upgrade
2119
2117
2120 Attempting Auto-upgrade on a locked repository
2118 Attempting Auto-upgrade on a locked repository
2121 ----------------------------------------------
2119 ----------------------------------------------
2122
2120
2123 $ hg -R auto-upgrade debuglock --set-lock --quiet &
2121 $ hg -R auto-upgrade debuglock --set-lock --quiet &
2124 $ echo $! >> $DAEMON_PIDS
2122 $ echo $! >> $DAEMON_PIDS
2125 $ $RUNTESTDIR/testlib/wait-on-file 10 auto-upgrade/.hg/store/lock
2123 $ $RUNTESTDIR/testlib/wait-on-file 10 auto-upgrade/.hg/store/lock
2126 $ hg status -R auto-upgrade \
2124 $ hg status -R auto-upgrade \
2127 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2125 > --config format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories=yes \
2128 > --config format.use-dirstate-v2=no
2126 > --config format.use-dirstate-v2=no
2129 $ hg debugformat -R auto-upgrade | grep dirstate-v2
2127 $ hg debugformat -R auto-upgrade | grep dirstate-v2
2130 dirstate-v2: yes
2128 dirstate-v2: yes
2131
2129
2132 $ killdaemons.py
2130 $ killdaemons.py
General Comments 0
You need to be logged in to leave comments. Login now