##// END OF EJS Templates
censor: document the censor.policy option (issue6909)...
marmoute -
r53123:cd72a88c default
parent child Browse files
Show More
@@ -1,143 +1,144
1 1 # Copyright (C) 2015 - Mike Edgar <adgar@google.com>
2 2 #
3 3 # This extension enables removal of file content at a given revision,
4 4 # rewriting the data/metadata of successive revisions to preserve revision log
5 5 # integrity.
6 6
7 7 """erase file content at a given revision
8 8
9 9 The censor command instructs Mercurial to erase all content of a file at a given
10 10 revision *without updating the changeset hash.* This allows existing history to
11 11 remain valid while preventing future clones/pulls from receiving the erased
12 12 data.
13 13
14 14 Typical uses for censor are due to security or legal requirements, including::
15 15
16 16 * Passwords, private keys, cryptographic material
17 17 * Licensed data/code/libraries for which the license has expired
18 18 * Personally Identifiable Information or other private data
19 19
20 20 Censored nodes can interrupt mercurial's typical operation whenever the excised
21 21 data needs to be materialized. Some commands, like ``hg cat``/``hg revert``,
22 22 simply fail when asked to produce censored data. Others, like ``hg verify`` and
23 23 ``hg update``, must be capable of tolerating censored data to continue to
24 24 function in a meaningful way. Such commands only tolerate censored file
25 25 As having a censored version in a checkout is impractical. The current head
26 26 revisions of the repository are checked. If the revision to be censored is in
27 any of them the command will abort.
27 any of them the command will abort. You can configure this behavior using the
28 following option:
28 29
29 A few informative commands such as ``hg grep`` will unconditionally
30 ignore censored data and merely report that it was encountered.
30 `censor.policy`
31 :config-doc:`censor.policy`
31 32 """
32 33
33 34
34 35 from mercurial.i18n import _
35 36 from mercurial.node import short
36 37
37 38 from mercurial import (
38 39 error,
39 40 registrar,
40 41 scmutil,
41 42 )
42 43
43 44 cmdtable = {}
44 45 command = registrar.command(cmdtable)
45 46 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
46 47 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
47 48 # be specifying the version(s) of Mercurial they are tested with, or
48 49 # leave the attribute unspecified.
49 50 testedwith = b'ships-with-hg-core'
50 51
51 52
52 53 @command(
53 54 b'censor',
54 55 [
55 56 (
56 57 b'r',
57 58 b'rev',
58 59 [],
59 60 _(b'censor file from specified revision'),
60 61 _(b'REV'),
61 62 ),
62 63 (
63 64 b'',
64 65 b'check-heads',
65 66 True,
66 67 _(b'check that repository heads are not affected'),
67 68 ),
68 69 (b't', b'tombstone', b'', _(b'replacement tombstone data'), _(b'TEXT')),
69 70 ],
70 71 _(b'-r REV [-t TEXT] [FILE]'),
71 72 helpcategory=command.CATEGORY_MAINTENANCE,
72 73 )
73 74 def censor(ui, repo, path, rev=(), tombstone=b'', check_heads=True, **opts):
74 75 with repo.wlock(), repo.lock():
75 76 return _docensor(
76 77 ui,
77 78 repo,
78 79 path,
79 80 rev,
80 81 tombstone,
81 82 check_heads=check_heads,
82 83 **opts,
83 84 )
84 85
85 86
86 87 def _docensor(ui, repo, path, revs=(), tombstone=b'', check_heads=True, **opts):
87 88 if not path:
88 89 raise error.Abort(_(b'must specify file path to censor'))
89 90 if not revs:
90 91 raise error.Abort(_(b'must specify revisions to censor'))
91 92
92 93 wctx = repo[None]
93 94
94 95 m = scmutil.match(wctx, (path,))
95 96 if m.anypats() or len(m.files()) != 1:
96 97 raise error.Abort(_(b'can only specify an explicit filename'))
97 98 path = m.files()[0]
98 99 flog = repo.file(path)
99 100 if not len(flog):
100 101 raise error.Abort(_(b'cannot censor file with no history'))
101 102
102 103 revs = scmutil.revrange(repo, revs)
103 104 if not revs:
104 105 raise error.Abort(_(b'no matching revisions'))
105 106 file_nodes = set()
106 107 for r in revs:
107 108 try:
108 109 ctx = repo[r]
109 110 file_nodes.add(ctx.filectx(path).filenode())
110 111 except error.LookupError:
111 112 raise error.Abort(_(b'file does not exist at revision %s') % ctx)
112 113
113 114 if check_heads:
114 115 heads = []
115 116 repo_heads = repo.heads()
116 117 msg = b'checking for the censored content in %d heads\n'
117 118 msg %= len(repo_heads)
118 119 ui.status(msg)
119 120 for headnode in repo_heads:
120 121 hc = repo[headnode]
121 122 if path in hc and hc.filenode(path) in file_nodes:
122 123 heads.append(hc)
123 124 if heads:
124 125 headlist = b', '.join([short(c.node()) for c in heads])
125 126 raise error.Abort(
126 127 _(b'cannot censor file in heads (%s)') % headlist,
127 128 hint=_(b'clean/delete and commit first'),
128 129 )
129 130
130 131 msg = b'checking for the censored content in the working directory\n'
131 132 ui.status(msg)
132 133 wp = wctx.parents()
133 134 if ctx.node() in [p.node() for p in wp]:
134 135 raise error.Abort(
135 136 _(b'cannot censor working directory'),
136 137 hint=_(b'clean/delete/update first'),
137 138 )
138 139
139 140 msg = b'censoring %d file revisions\n'
140 141 msg %= len(file_nodes)
141 142 ui.status(msg)
142 143 with repo.transaction(b'censor') as tr:
143 144 flog.censorrevision(tr, file_nodes, tombstone=tombstone)
@@ -1,2976 +1,2982
1 1 # configitems.toml - centralized declaration of configuration options
2 2 #
3 3 # This file contains declarations of the core Mercurial configuration options.
4 4 #
5 5 # # Structure
6 6 #
7 7 # items: array of config items
8 8 # templates: mapping of template name to template declaration
9 9 # template-applications: array of template applications
10 10 #
11 11 # # Elements
12 12 #
13 13 # ## Item
14 14 #
15 15 # Declares a core Mercurial option.
16 16 #
17 17 # - section: string (required)
18 18 # - name: string (required)
19 19 # - default-type: boolean, changes how `default` is read
20 20 # - default: any
21 21 # - generic: boolean
22 22 # - priority: integer, only if `generic` is true
23 23 # - alias: list of 2-tuples of strings
24 24 # - experimental: boolean
25 25 # - documentation: string
26 26 # - in_core_extension: string
27 27 #
28 28 # ## Template
29 29 #
30 30 # Declares a group of options to be re-used for multiple sections.
31 31 #
32 32 # - all the same fields as `Item`, except `section` and `name`
33 33 # - `suffix` (string, required)
34 34 #
35 35 # ## Template applications
36 36 #
37 37 # Uses a `Template` to instanciate its options in a given section.
38 38 #
39 39 # - template: string (required, must match a `Template` name)
40 40 # - section: string (required)
41 41
42 42 [[items]]
43 43 section = "alias"
44 44 name = ".*"
45 45 default-type = "dynamic"
46 46 generic = true
47 47
48 48 [[items]]
49 49 section = "auth"
50 50 name = "cookiefile"
51 51
52 52 # bookmarks.pushing: internal hack for discovery
53 53 [[items]]
54 54 section = "bookmarks"
55 55 name = "pushing"
56 56 default-type = "list_type"
57 57
58 58 # bundle.mainreporoot: internal hack for bundlerepo
59 59 [[items]]
60 60 section = "bundle"
61 61 name = "mainreporoot"
62 62 default = ""
63 63
64 64 [[items]]
65 65 section = "censor"
66 66 name = "policy"
67 67 default = "abort"
68 experimental = true
68 documentation="""Control how to react when accessing censored content.
69 Accepted value: "abort", "ignore". Defaults to abort.
70
71 A few informative commands such as ``hg grep`` will unconditionally ignore
72 censored data and merely report that it was encountered.
73 """
74
69 75
70 76 [[items]]
71 77 section = "chgserver"
72 78 name = "idletimeout"
73 79 default = 3600
74 80
75 81 [[items]]
76 82 section = "chgserver"
77 83 name = "skiphash"
78 84 default = false
79 85
80 86 [[items]]
81 87 section = "cmdserver"
82 88 name = "log"
83 89
84 90 [[items]]
85 91 section = "cmdserver"
86 92 name = "max-log-files"
87 93 default = 7
88 94
89 95 [[items]]
90 96 section = "cmdserver"
91 97 name = "max-log-size"
92 98 default = "1 MB"
93 99
94 100 [[items]]
95 101 section = "cmdserver"
96 102 name = "max-repo-cache"
97 103 default = 0
98 104 experimental = true
99 105
100 106 [[items]]
101 107 section = "cmdserver"
102 108 name = "message-encodings"
103 109 default-type = "list_type"
104 110
105 111 [[items]]
106 112 section = "cmdserver"
107 113 name = "shutdown-on-interrupt"
108 114 default = true
109 115
110 116 [[items]]
111 117 section = "cmdserver"
112 118 name = "track-log"
113 119 default-type = "lambda"
114 120 default = [ "chgserver", "cmdserver", "repocache",]
115 121
116 122 [[items]]
117 123 section = "color"
118 124 name = ".*"
119 125 generic = true
120 126
121 127 [[items]]
122 128 section = "color"
123 129 name = "mode"
124 130 default = "auto"
125 131
126 132 [[items]]
127 133 section = "color"
128 134 name = "pagermode"
129 135 default-type = "dynamic"
130 136
131 137 [[items]]
132 138 section = "command-templates"
133 139 name = "graphnode"
134 140 alias = [["ui", "graphnodetemplate"]]
135 141
136 142 [[items]]
137 143 section = "command-templates"
138 144 name = "log"
139 145 alias = [["ui", "logtemplate"]]
140 146
141 147 [[items]]
142 148 section = "command-templates"
143 149 name = "mergemarker"
144 150 default = '{node|short} {ifeq(tags, "tip", "", ifeq(tags, "", "", "{tags} "))}{if(bookmarks, "{bookmarks} ")}{ifeq(branch, "default", "", "{branch} ")}- {author|user}: {desc|firstline}'
145 151 alias = [["ui", "mergemarkertemplate"]]
146 152
147 153 [[items]]
148 154 section = "command-templates"
149 155 name = "oneline-summary"
150 156
151 157 [[items]]
152 158 section = "command-templates"
153 159 name = "oneline-summary.*"
154 160 default-type = "dynamic"
155 161 generic = true
156 162
157 163 [[items]]
158 164 section = "command-templates"
159 165 name = "pre-merge-tool-output"
160 166 alias = [["ui", "pre-merge-tool-output-template"]]
161 167
162 168 [[items]]
163 169 section = "commands"
164 170 name = "commit.post-status"
165 171 default = false
166 172
167 173 [[items]]
168 174 section = "commands"
169 175 name = "grep.all-files"
170 176 default = false
171 177 experimental = true
172 178
173 179 [[items]]
174 180 section = "commands"
175 181 name = "merge.require-rev"
176 182 default = false
177 183
178 184 [[items]]
179 185 section = "commands"
180 186 name = "push.require-revs"
181 187 default = false
182 188
183 189 # Rebase related configuration moved to core because other extension are doing
184 190 # strange things. For example, shelve import the extensions to reuse some bit
185 191 # without formally loading it.
186 192 [[items]]
187 193 section = "commands"
188 194 name = "rebase.requiredest"
189 195 default = false
190 196
191 197 [[items]]
192 198 section = "commands"
193 199 name = "resolve.confirm"
194 200 default = false
195 201
196 202 [[items]]
197 203 section = "commands"
198 204 name = "resolve.explicit-re-merge"
199 205 default = false
200 206
201 207 [[items]]
202 208 section = "commands"
203 209 name = "resolve.mark-check"
204 210 default = "none"
205 211
206 212 [[items]]
207 213 section = "commands"
208 214 name = "show.aliasprefix"
209 215 default-type = "list_type"
210 216
211 217 [[items]]
212 218 section = "commands"
213 219 name = "status.relative"
214 220 default = false
215 221
216 222 [[items]]
217 223 section = "commands"
218 224 name = "status.skipstates"
219 225 default = []
220 226 experimental = true
221 227
222 228 [[items]]
223 229 section = "commands"
224 230 name = "status.terse"
225 231 default = ""
226 232
227 233 [[items]]
228 234 section = "commands"
229 235 name = "status.verbose"
230 236 default = false
231 237
232 238 [[items]]
233 239 section = "commands"
234 240 name = "update.check"
235 241
236 242 [[items]]
237 243 section = "commands"
238 244 name = "update.requiredest"
239 245 default = false
240 246
241 247 [[items]]
242 248 section = "committemplate"
243 249 name = ".*"
244 250 generic = true
245 251
246 252 [[items]]
247 253 section = "convert"
248 254 name = "bzr.saverev"
249 255 default = true
250 256
251 257 [[items]]
252 258 section = "convert"
253 259 name = "cvsps.cache"
254 260 default = true
255 261
256 262 [[items]]
257 263 section = "convert"
258 264 name = "cvsps.fuzz"
259 265 default = 60
260 266
261 267 [[items]]
262 268 section = "convert"
263 269 name = "cvsps.logencoding"
264 270
265 271 [[items]]
266 272 section = "convert"
267 273 name = "cvsps.mergefrom"
268 274
269 275 [[items]]
270 276 section = "convert"
271 277 name = "cvsps.mergeto"
272 278
273 279 [[items]]
274 280 section = "convert"
275 281 name = "git.committeractions"
276 282 default-type = "lambda"
277 283 default = [ "messagedifferent",]
278 284
279 285 [[items]]
280 286 section = "convert"
281 287 name = "git.extrakeys"
282 288 default-type = "list_type"
283 289
284 290 [[items]]
285 291 section = "convert"
286 292 name = "git.findcopiesharder"
287 293 default = false
288 294
289 295 [[items]]
290 296 section = "convert"
291 297 name = "git.remoteprefix"
292 298 default = "remote"
293 299
294 300 [[items]]
295 301 section = "convert"
296 302 name = "git.renamelimit"
297 303 default = 400
298 304
299 305 [[items]]
300 306 section = "convert"
301 307 name = "git.saverev"
302 308 default = true
303 309
304 310 [[items]]
305 311 section = "convert"
306 312 name = "git.similarity"
307 313 default = 50
308 314
309 315 [[items]]
310 316 section = "convert"
311 317 name = "git.skipsubmodules"
312 318 default = false
313 319
314 320 [[items]]
315 321 section = "convert"
316 322 name = "hg.clonebranches"
317 323 default = false
318 324
319 325 [[items]]
320 326 section = "convert"
321 327 name = "hg.ignoreerrors"
322 328 default = false
323 329
324 330 [[items]]
325 331 section = "convert"
326 332 name = "hg.preserve-hash"
327 333 default = false
328 334
329 335 [[items]]
330 336 section = "convert"
331 337 name = "hg.revs"
332 338
333 339 [[items]]
334 340 section = "convert"
335 341 name = "hg.saverev"
336 342 default = false
337 343
338 344 [[items]]
339 345 section = "convert"
340 346 name = "hg.sourcename"
341 347
342 348 [[items]]
343 349 section = "convert"
344 350 name = "hg.startrev"
345 351
346 352 [[items]]
347 353 section = "convert"
348 354 name = "hg.tagsbranch"
349 355 default = "default"
350 356
351 357 [[items]]
352 358 section = "convert"
353 359 name = "hg.usebranchnames"
354 360 default = true
355 361
356 362 [[items]]
357 363 section = "convert"
358 364 name = "ignoreancestorcheck"
359 365 default = false
360 366 experimental = true
361 367
362 368 [[items]]
363 369 section = "convert"
364 370 name = "localtimezone"
365 371 default = false
366 372
367 373 [[items]]
368 374 section = "convert"
369 375 name = "p4.encoding"
370 376 default-type = "dynamic"
371 377
372 378 [[items]]
373 379 section = "convert"
374 380 name = "p4.startrev"
375 381 default = 0
376 382
377 383 [[items]]
378 384 section = "convert"
379 385 name = "skiptags"
380 386 default = false
381 387
382 388 [[items]]
383 389 section = "convert"
384 390 name = "svn.branches"
385 391
386 392 [[items]]
387 393 section = "convert"
388 394 name = "svn.dangerous-set-commit-dates"
389 395 default = false
390 396
391 397 [[items]]
392 398 section = "convert"
393 399 name = "svn.debugsvnlog"
394 400 default = true
395 401
396 402 [[items]]
397 403 section = "convert"
398 404 name = "svn.startrev"
399 405 default = 0
400 406
401 407 [[items]]
402 408 section = "convert"
403 409 name = "svn.tags"
404 410
405 411 [[items]]
406 412 section = "convert"
407 413 name = "svn.trunk"
408 414
409 415 [[items]]
410 416 section = "debug"
411 417 name = "bundling-stats"
412 418 default = false
413 419 documentation = "Display extra information about the bundling process."
414 420
415 421 [[items]]
416 422 section = "debug"
417 423 name = "dirstate.delaywrite"
418 424 default = 0
419 425
420 426 [[items]]
421 427 section = "debug"
422 428 name = "revlog.debug-delta"
423 429 default = false
424 430
425 431 [[items]]
426 432 section = "debug"
427 433 name = "revlog.verifyposition.changelog"
428 434 default = ""
429 435
430 436 [[items]]
431 437 section = "debug"
432 438 name = "unbundling-stats"
433 439 default = false
434 440 documentation = "Display extra information about the unbundling process."
435 441
436 442 [[items]]
437 443 section = "defaults"
438 444 name = ".*"
439 445 generic = true
440 446
441 447 [[items]]
442 448 section = "devel"
443 449 name = "all-warnings"
444 450 default = false
445 451
446 452 [[items]]
447 453 section = "devel"
448 454 name = "bundle.delta"
449 455 default = ""
450 456
451 457 [[items]]
452 458 section = "devel"
453 459 name = "bundle2.debug"
454 460 default = false
455 461
456 462 [[items]]
457 463 section = "devel"
458 464 name = "cache-vfs"
459 465
460 466 [[items]]
461 467 section = "devel"
462 468 name = "check-locks"
463 469 default = false
464 470
465 471 [[items]]
466 472 section = "devel"
467 473 name = "check-relroot"
468 474 default = false
469 475
470 476 [[items]]
471 477 section = "devel"
472 478 name = "copy-tracing.multi-thread"
473 479 default = true
474 480
475 481 # Track copy information for all files, not just "added" ones (very slow)
476 482 [[items]]
477 483 section = "devel"
478 484 name = "copy-tracing.trace-all-files"
479 485 default = false
480 486
481 487 [[items]]
482 488 section = "devel"
483 489 name = "debug.abort-update"
484 490 default = false
485 491 documentation = """If true, then any merge with the working copy, \
486 492 e.g. [hg update], will be aborted after figuring out what needs to be done, \
487 493 but before spawning the parallel worker."""
488 494
489 495 [[items]]
490 496 section = "devel"
491 497 name = "debug.copies"
492 498 default = false
493 499
494 500 [[items]]
495 501 section = "devel"
496 502 name = "debug.extensions"
497 503 default = false
498 504
499 505 [[items]]
500 506 section = "devel"
501 507 name = "debug.peer-request"
502 508 default = false
503 509
504 510 [[items]]
505 511 section = "devel"
506 512 name = "debug.repo-filters"
507 513 default = false
508 514
509 515 [[items]]
510 516 section = "devel"
511 517 name = "default-date"
512 518
513 519 [[items]]
514 520 section = "devel"
515 521 name = "deprec-warn"
516 522 default = false
517 523
518 524 # possible values:
519 525 # - auto (the default)
520 526 # - force-append
521 527 # - force-new
522 528 [[items]]
523 529 section = "devel"
524 530 name = "dirstate.v2.data_update_mode"
525 531 default = "auto"
526 532
527 533 [[items]]
528 534 section = "devel"
529 535 name = "disableloaddefaultcerts"
530 536 default = false
531 537
532 538 [[items]]
533 539 section = "devel"
534 540 name = "discovery.exchange-heads"
535 541 default = true
536 542 documentation = """If false, the discovery will not start with remote \
537 543 head fetching and local head querying."""
538 544
539 545 [[items]]
540 546 section = "devel"
541 547 name = "discovery.grow-sample"
542 548 default = true
543 549 documentation = """If false, the sample size used in set discovery \
544 550 will not be increased through the process."""
545 551
546 552 [[items]]
547 553 section = "devel"
548 554 name = "discovery.grow-sample.dynamic"
549 555 default = true
550 556 documentation = """If true, the default, the sample size is adapted to the shape \
551 557 of the undecided set. It is set to the max of:
552 558 `<target-size>, len(roots(undecided)), len(heads(undecided))`"""
553 559
554 560 [[items]]
555 561 section = "devel"
556 562 name = "discovery.grow-sample.rate"
557 563 default = 1.05
558 564 documentation = "Controls the rate at which the sample grows."
559 565
560 566 [[items]]
561 567 section = "devel"
562 568 name = "discovery.randomize"
563 569 default = true
564 570 documentation = """If false, random samplings during discovery are deterministic. \
565 571 It is meant for integration tests."""
566 572
567 573 [[items]]
568 574 section = "devel"
569 575 name = "discovery.sample-size"
570 576 default = 200
571 577 documentation = "Controls the initial size of the discovery sample."
572 578
573 579 [[items]]
574 580 section = "devel"
575 581 name = "discovery.sample-size.initial"
576 582 default = 100
577 583 documentation = "Controls the initial size of the discovery for initial change."
578 584
579 585 [[items]]
580 586 section = "devel"
581 587 name = "legacy.exchange"
582 588 default-type = "list_type"
583 589
584 590 [[items]]
585 591 section = "devel"
586 592 name = "lock-wait-sync-file"
587 593 default = ""
588 594
589 595 [[items]]
590 596 section = "devel"
591 597 name = "persistent-nodemap"
592 598 default = false
593 599 documentation = """When true, revlogs use a special reference version of the \
594 600 nodemap, that is not performant but is "known" to behave properly."""
595 601
596 602 [[items]]
597 603 section = "devel"
598 604 name = "server-insecure-exact-protocol"
599 605 default = ""
600 606
601 607 [[items]]
602 608 section = "devel"
603 609 name = "servercafile"
604 610 default = ""
605 611
606 612 [[items]]
607 613 section = "devel"
608 614 name = "serverexactprotocol"
609 615 default = ""
610 616
611 617 [[items]]
612 618 section = "devel"
613 619 name = "serverrequirecert"
614 620 default = false
615 621
616 622 [[items]]
617 623 section = "devel"
618 624 name = "strip-obsmarkers"
619 625 default = true
620 626
621 627 [[items]]
622 628 section = 'devel'
623 629 name = 'sync.status.pre-dirstate-write-file'
624 630 documentation = """
625 631 Makes the status algorithm wait for the existence of this file \
626 632 (or until a timeout of `devel.sync.status.pre-dirstate-write-file-timeout` \
627 633 seconds) before taking the lock and writing the dirstate. \
628 634 Status signals that it's ready to wait by creating a file \
629 635 with the same name + `.waiting`. \
630 636 Useful when testing race conditions."""
631 637
632 638 [[items]]
633 639 section = 'devel'
634 640 name = 'sync.status.pre-dirstate-write-file-timeout'
635 641 default=2
636 642
637 643 [[items]]
638 644 section = 'devel'
639 645 name = 'sync.dirstate.post-docket-read-file'
640 646
641 647 [[items]]
642 648 section = 'devel'
643 649 name = 'sync.dirstate.post-docket-read-file-timeout'
644 650 default=2
645 651
646 652 [[items]]
647 653 section = 'devel'
648 654 name = 'sync.dirstate.pre-read-file'
649 655
650 656 [[items]]
651 657 section = 'devel'
652 658 name = 'sync.dirstate.pre-read-file-timeout'
653 659 default=2
654 660
655 661 [[items]]
656 662 section = "devel"
657 663 name = "user.obsmarker"
658 664
659 665 [[items]]
660 666 section = "devel"
661 667 name = "warn-config"
662 668
663 669 [[items]]
664 670 section = "devel"
665 671 name = "warn-config-default"
666 672
667 673 [[items]]
668 674 section = "devel"
669 675 name = "warn-config-unknown"
670 676
671 677 [[items]]
672 678 section = "devel"
673 679 name = "warn-empty-changegroup"
674 680 default = false
675 681
676 682 [[items]]
677 683 section = "diff"
678 684 name = "merge"
679 685 default = false
680 686 experimental = true
681 687
682 688 [[items]]
683 689 section = "email"
684 690 name = "bcc"
685 691
686 692 [[items]]
687 693 section = "email"
688 694 name = "cc"
689 695
690 696 [[items]]
691 697 section = "email"
692 698 name = "charsets"
693 699 default-type = "list_type"
694 700
695 701 [[items]]
696 702 section = "email"
697 703 name = "from"
698 704
699 705 [[items]]
700 706 section = "email"
701 707 name = "method"
702 708 default = "smtp"
703 709
704 710 [[items]]
705 711 section = "email"
706 712 name = "reply-to"
707 713
708 714 [[items]]
709 715 section = "email"
710 716 name = "to"
711 717
712 718 [[items]]
713 719 section = "experimental"
714 720 name = "archivemetatemplate"
715 721 default-type = "dynamic"
716 722
717 723 [[items]]
718 724 section = "experimental"
719 725 name = "auto-publish"
720 726 default = "publish"
721 727
722 728
723 729 # The current implementation of the filtering/injecting of topological heads is
724 730 # naive and need proper benchmark and optimisation because we can envision
725 731 # moving the the v3 of the branch-cache format out of experimental
726 732 [[items]]
727 733 section = "experimental"
728 734 name = "branch-cache-v3"
729 735 default = false
730 736
731 737 [[items]]
732 738 section = "experimental"
733 739 name = "bundle-phases"
734 740 default = false
735 741
736 742 [[items]]
737 743 section = "experimental"
738 744 name = "bundle2-advertise"
739 745 default = true
740 746
741 747 [[items]]
742 748 section = "experimental"
743 749 name = "bundle2-output-capture"
744 750 default = false
745 751
746 752 [[items]]
747 753 section = "experimental"
748 754 name = "bundle2.pushback"
749 755 default = false
750 756
751 757 [[items]]
752 758 section = "experimental"
753 759 name = "bundle2lazylocking"
754 760 default = false
755 761
756 762 [[items]]
757 763 section = "experimental"
758 764 name = "bundlecomplevel"
759 765
760 766 [[items]]
761 767 section = "experimental"
762 768 name = "bundlecomplevel.bzip2"
763 769
764 770 [[items]]
765 771 section = "experimental"
766 772 name = "bundlecomplevel.gzip"
767 773
768 774 [[items]]
769 775 section = "experimental"
770 776 name = "bundlecomplevel.none"
771 777
772 778 [[items]]
773 779 section = "experimental"
774 780 name = "bundlecomplevel.zstd"
775 781
776 782 [[items]]
777 783 section = "experimental"
778 784 name = "bundlecompthreads"
779 785
780 786 [[items]]
781 787 section = "experimental"
782 788 name = "bundlecompthreads.bzip2"
783 789
784 790 [[items]]
785 791 section = "experimental"
786 792 name = "bundlecompthreads.gzip"
787 793
788 794 [[items]]
789 795 section = "experimental"
790 796 name = "bundlecompthreads.none"
791 797
792 798 [[items]]
793 799 section = "experimental"
794 800 name = "bundlecompthreads.zstd"
795 801
796 802 [[items]]
797 803 section = "experimental"
798 804 name = "changegroup3"
799 805 default = true
800 806
801 807 [[items]]
802 808 section = "experimental"
803 809 name = "changegroup4"
804 810 default = false
805 811
806 812 # might remove rank configuration once the computation has no impact
807 813 [[items]]
808 814 section = "experimental"
809 815 name = "changelog-v2.compute-rank"
810 816 default = true
811 817
812 818 [[items]]
813 819 section = "experimental"
814 820 name = "cleanup-as-archived"
815 821 default = false
816 822
817 823 [[items]]
818 824 section = "experimental"
819 825 name = "clientcompressionengines"
820 826 default-type = "list_type"
821 827
822 828 [[items]]
823 829 section = "experimental"
824 830 name = "copies.read-from"
825 831 default = "filelog-only"
826 832
827 833 [[items]]
828 834 section = "experimental"
829 835 name = "copies.write-to"
830 836 default = "filelog-only"
831 837
832 838 [[items]]
833 839 section = "experimental"
834 840 name = "copytrace"
835 841 default = "on"
836 842
837 843 [[items]]
838 844 section = "experimental"
839 845 name = "copytrace.movecandidateslimit"
840 846 default = 100
841 847
842 848 [[items]]
843 849 section = "experimental"
844 850 name = "copytrace.sourcecommitlimit"
845 851 default = 100
846 852
847 853 [[items]]
848 854 section = "experimental"
849 855 name = "crecordtest"
850 856
851 857 [[items]]
852 858 section = "experimental"
853 859 name = "directaccess"
854 860 default = false
855 861
856 862 [[items]]
857 863 section = "experimental"
858 864 name = "directaccess.revnums"
859 865 default = false
860 866
861 867 [[items]]
862 868 section = "experimental"
863 869 name = "editortmpinhg"
864 870 default = false
865 871
866 872 [[items]]
867 873 section = "experimental"
868 874 name = "evolution"
869 875 default-type = "list_type"
870 876
871 877 [[items]]
872 878 section = "experimental"
873 879 name = "evolution.allowdivergence"
874 880 default = false
875 881 alias = [["experimental", "allowdivergence"]]
876 882
877 883 [[items]]
878 884 section = "experimental"
879 885 name = "evolution.allowunstable"
880 886
881 887 [[items]]
882 888 section = "experimental"
883 889 name = "evolution.bundle-obsmarker"
884 890 default = false
885 891
886 892 [[items]]
887 893 section = "experimental"
888 894 name = "evolution.bundle-obsmarker:mandatory"
889 895 default = true
890 896
891 897 [[items]]
892 898 section = "experimental"
893 899 name = "evolution.createmarkers"
894 900
895 901 [[items]]
896 902 section = "experimental"
897 903 name = "evolution.effect-flags"
898 904 default = true
899 905 alias = [["experimental", "effect-flags"]]
900 906
901 907 [[items]]
902 908 section = "experimental"
903 909 name = "evolution.exchange"
904 910
905 911 [[items]]
906 912 section = "experimental"
907 913 name = "evolution.report-instabilities"
908 914 default = true
909 915
910 916 [[items]]
911 917 section = "experimental"
912 918 name = "evolution.track-operation"
913 919 default = true
914 920
915 921 [[items]]
916 922 section = "experimental"
917 923 name = "exportableenviron"
918 924 default-type = "list_type"
919 925
920 926 [[items]]
921 927 section = "experimental"
922 928 name = "extendedheader.index"
923 929
924 930 [[items]]
925 931 section = "experimental"
926 932 name = "extendedheader.similarity"
927 933 default = false
928 934
929 935 [[items]]
930 936 section = "experimental"
931 937 name = "extra-filter-revs"
932 938 documentation = """Repo-level config to prevent a revset from being visible.
933 939 The target use case is to use `share` to expose different subsets of the same \
934 940 repository, especially server side. See also `server.view`."""
935 941
936 942 [[items]]
937 943 section = "experimental"
938 944 name = "graphshorten"
939 945 default = false
940 946
941 947 [[items]]
942 948 section = "experimental"
943 949 name = "graphstyle.grandparent"
944 950 default-type = "dynamic"
945 951
946 952 [[items]]
947 953 section = "experimental"
948 954 name = "graphstyle.missing"
949 955 default-type = "dynamic"
950 956
951 957 [[items]]
952 958 section = "experimental"
953 959 name = "graphstyle.parent"
954 960 default-type = "dynamic"
955 961
956 962 [[items]]
957 963 section = "experimental"
958 964 name = "hook-track-tags"
959 965 default = false
960 966
961 967 [[items]]
962 968 section = "experimental"
963 969 name = "httppostargs"
964 970 default = false
965 971
966 972 [[items]]
967 973 section = "experimental"
968 974 name = "log.topo"
969 975 default = false
970 976
971 977 [[items]]
972 978 section = "experimental"
973 979 name = "maxdeltachainspan"
974 980 default = -1
975 981
976 982 [[items]]
977 983 section = "experimental"
978 984 name = "merge-track-salvaged"
979 985 default = false
980 986 documentation = """Tracks files which were undeleted (merge might delete them \
981 987 but we explicitly kept/undeleted them) and creates new filenodes for them."""
982 988
983 989 [[items]]
984 990 section = "experimental"
985 991 name = "merge.checkpathconflicts"
986 992 default = false
987 993
988 994 [[items]]
989 995 section = "experimental"
990 996 name = "narrow"
991 997 default = false
992 998
993 999 [[items]]
994 1000 section = "experimental"
995 1001 name = "nointerrupt"
996 1002 default = false
997 1003
998 1004 [[items]]
999 1005 section = "experimental"
1000 1006 name = "nointerrupt-interactiveonly"
1001 1007 default = true
1002 1008
1003 1009 [[items]]
1004 1010 section = "experimental"
1005 1011 name = "nonnormalparanoidcheck"
1006 1012 default = false
1007 1013
1008 1014 [[items]]
1009 1015 section = "experimental"
1010 1016 name = "obsmarkers-exchange-debug"
1011 1017 default = false
1012 1018
1013 1019 [[items]]
1014 1020 section = "experimental"
1015 1021 name = "rebaseskipobsolete"
1016 1022 default = true
1017 1023
1018 1024 [[items]]
1019 1025 section = "experimental"
1020 1026 name = "remotenames"
1021 1027 default = false
1022 1028
1023 1029 [[items]]
1024 1030 section = "experimental"
1025 1031 name = "removeemptydirs"
1026 1032 default = true
1027 1033
1028 1034 [[items]]
1029 1035 section = "experimental"
1030 1036 name = "revert.interactive.select-to-keep"
1031 1037 default = false
1032 1038
1033 1039 [[items]]
1034 1040 section = "experimental"
1035 1041 name = "revisions.disambiguatewithin"
1036 1042
1037 1043 [[items]]
1038 1044 section = "experimental"
1039 1045 name = "revisions.prefixhexnode"
1040 1046 default = false
1041 1047
1042 1048 # "out of experimental" todo list.
1043 1049 #
1044 1050 # * include management of a persistent nodemap in the main docket
1045 1051 # * enforce a "no-truncate" policy for mmap safety
1046 1052 # - for censoring operation
1047 1053 # - for stripping operation
1048 1054 # - for rollback operation
1049 1055 # * proper streaming (race free) of the docket file
1050 1056 # * track garbage data to evemtually allow rewriting -existing- sidedata.
1051 1057 # * Exchange-wise, we will also need to do something more efficient than
1052 1058 # keeping references to the affected revlogs, especially memory-wise when
1053 1059 # rewriting sidedata.
1054 1060 # * introduce a proper solution to reduce the number of filelog related files.
1055 1061 # * use caching for reading sidedata (similar to what we do for data).
1056 1062 # * no longer set offset=0 if sidedata_size=0 (simplify cutoff computation).
1057 1063 # * Improvement to consider
1058 1064 # - avoid compression header in chunk using the default compression?
1059 1065 # - forbid "inline" compression mode entirely?
1060 1066 # - split the data offset and flag field (the 2 bytes save are mostly trouble)
1061 1067 # - keep track of uncompressed -chunk- size (to preallocate memory better)
1062 1068 # - keep track of chain base or size (probably not that useful anymore)
1063 1069 [[items]]
1064 1070 section = "experimental"
1065 1071 name = "revlogv2"
1066 1072
1067 1073 [[items]]
1068 1074 section = "experimental"
1069 1075 name = "rust.index"
1070 1076 default = false
1071 1077
1072 1078 [[items]]
1073 1079 section = "experimental"
1074 1080 name = "server.allow-hidden-access"
1075 1081 default-type = "list_type"
1076 1082
1077 1083 [[items]]
1078 1084 section = "experimental"
1079 1085 name = "server.filesdata.recommended-batch-size"
1080 1086 default = 50000
1081 1087
1082 1088 [[items]]
1083 1089 section = "experimental"
1084 1090 name = "server.manifestdata.recommended-batch-size"
1085 1091 default = 100000
1086 1092
1087 1093 [[items]]
1088 1094 section = "experimental"
1089 1095 name = "server.stream-narrow-clones"
1090 1096 default = false
1091 1097
1092 1098 [[items]]
1093 1099 section = "experimental"
1094 1100 name = "single-head-per-branch"
1095 1101 default = false
1096 1102
1097 1103 [[items]]
1098 1104 section = "experimental"
1099 1105 name = "single-head-per-branch:account-closed-heads"
1100 1106 default = false
1101 1107
1102 1108 [[items]]
1103 1109 section = "experimental"
1104 1110 name = "single-head-per-branch:public-changes-only"
1105 1111 default = false
1106 1112
1107 1113 [[items]]
1108 1114 section = "experimental"
1109 1115 name = "sparse-read"
1110 1116 default = false
1111 1117
1112 1118 [[items]]
1113 1119 section = "experimental"
1114 1120 name = "sparse-read.density-threshold"
1115 1121 default = 0.5
1116 1122
1117 1123 [[items]]
1118 1124 section = "experimental"
1119 1125 name = "sparse-read.min-gap-size"
1120 1126 default = "65K"
1121 1127
1122 1128 [[items]]
1123 1129 section = "experimental"
1124 1130 name = "stream-v3"
1125 1131 default = false
1126 1132
1127 1133 [[items]]
1128 1134 section = "experimental"
1129 1135 name = "treemanifest"
1130 1136 default = false
1131 1137
1132 1138 [[items]]
1133 1139 section = "experimental"
1134 1140 name = "update.atomic-file"
1135 1141 default = false
1136 1142
1137 1143 [[items]]
1138 1144 section = "experimental"
1139 1145 name = "web.full-garbage-collection-rate"
1140 1146 default = 1 # still forcing a full collection on each request
1141 1147
1142 1148 [[items]]
1143 1149 section = "experimental"
1144 1150 name = "worker.repository-upgrade"
1145 1151 default = false
1146 1152
1147 1153 [[items]]
1148 1154 section = "experimental"
1149 1155 name = "worker.wdir-get-thread-safe"
1150 1156 default = false
1151 1157
1152 1158 [[items]]
1153 1159 section = "experimental"
1154 1160 name = "xdiff"
1155 1161 default = false
1156 1162
1157 1163 [[items]]
1158 1164 section = "extdata"
1159 1165 name = ".*"
1160 1166 generic = true
1161 1167
1162 1168 [[items]]
1163 1169 section = "extensions"
1164 1170 name = "[^:]*"
1165 1171 generic = true
1166 1172
1167 1173 [[items]]
1168 1174 section = "extensions"
1169 1175 name = "[^:]*:required"
1170 1176 default = false
1171 1177 generic = true
1172 1178
1173 1179
1174 1180 # The format section is dedicated to control of the repository on disk format
1175 1181 # and constraints.
1176 1182 #
1177 1183 # A format change affects which data is expected to be stored in the repository
1178 1184 # and how. It impacts other client whichever their version are, format change
1179 1185 # often comes with an associated entry in the requirements.
1180 1186 #
1181 1187 # The option are usually in the form `use-xxx-yyy` (with xxx-yy the feature name).
1182 1188 #
1183 1189 # To configure details of how the repository is accessed, without affect the
1184 1190 # repository formats, see the `storage section`.
1185 1191
1186 1192 [[items]]
1187 1193 section = "format"
1188 1194 name = "bookmarks-in-store"
1189 1195 default = false
1190 1196
1191 1197 [[items]]
1192 1198 section = "format"
1193 1199 name = "chunkcachesize"
1194 1200 experimental = true
1195 1201
1196 1202 [[items]]
1197 1203 section = "format"
1198 1204 name = "dotencode"
1199 1205 default = true
1200 1206
1201 1207 # The interaction between the archived phase and obsolescence markers needs to
1202 1208 # be sorted out before wider usage of this are to be considered.
1203 1209 #
1204 1210 # At the time this message is written, behavior when archiving obsolete
1205 1211 # changeset differ significantly from stripping. As part of stripping, we also
1206 1212 # remove the obsolescence marker associated to the stripped changesets,
1207 1213 # revealing the precedecessors changesets when applicable. When archiving, we
1208 1214 # don't touch the obsolescence markers, keeping everything hidden. This can
1209 1215 # result in quite confusing situation for people combining exchanging draft
1210 1216 # with the archived phases. As some markers needed by others may be skipped
1211 1217 # during exchange.
1212 1218 [[items]]
1213 1219 section = "format"
1214 1220 name = "exp-archived-phase"
1215 1221 default = false
1216 1222 experimental = true
1217 1223
1218 1224 # Experimental TODOs:
1219 1225 #
1220 1226 # * Same as for revlogv2 (but for the reduction of the number of files)
1221 1227 # * Actually computing the rank of changesets
1222 1228 # * Improvement to investigate
1223 1229 # - storing .hgtags fnode
1224 1230 # - storing branch related identifier
1225 1231 [[items]]
1226 1232 section = "format"
1227 1233 name = "exp-use-changelog-v2"
1228 1234 experimental = true
1229 1235
1230 1236 [[items]]
1231 1237 section = "format"
1232 1238 name = "exp-use-copies-side-data-changeset"
1233 1239 default = false
1234 1240 experimental = true
1235 1241
1236 1242 [[items]]
1237 1243 section = "format"
1238 1244 name = "generaldelta"
1239 1245 default = false
1240 1246 experimental = true
1241 1247
1242 1248 [[items]]
1243 1249 section = "format"
1244 1250 name = "manifestcachesize"
1245 1251 experimental = true
1246 1252
1247 1253 [[items]]
1248 1254 section = "format"
1249 1255 name = "maxchainlen"
1250 1256 default-type = "dynamic"
1251 1257 experimental = true
1252 1258
1253 1259 [[items]]
1254 1260 section = "format"
1255 1261 name = "obsstore-version"
1256 1262
1257 1263 [[items]]
1258 1264 section = "format"
1259 1265 name = "revlog-compression"
1260 1266 default-type = "lambda"
1261 1267 alias = [["experimental", "format.compression"]]
1262 1268 default = [ "zstd", "zlib",]
1263 1269
1264 1270 [[items]]
1265 1271 section = "format"
1266 1272 name = "sparse-revlog"
1267 1273 default = true
1268 1274
1269 1275 [[items]]
1270 1276 section = "format"
1271 1277 name = "use-dirstate-tracked-hint"
1272 1278 default = false
1273 1279 experimental = true
1274 1280
1275 1281 [[items]]
1276 1282 section = "format"
1277 1283 name = "use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories"
1278 1284 default = false
1279 1285 experimental = true
1280 1286
1281 1287 [[items]]
1282 1288 section = "format"
1283 1289 name = "use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories:quiet"
1284 1290 default = false
1285 1291 experimental = true
1286 1292
1287 1293 [[items]]
1288 1294 section = "format"
1289 1295 name = "use-dirstate-tracked-hint.version"
1290 1296 default = 1
1291 1297 experimental = true
1292 1298
1293 1299 [[items]]
1294 1300 section = "format"
1295 1301 name = "use-dirstate-v2"
1296 1302 default = false
1297 1303 alias = [["format", "exp-rc-dirstate-v2"]]
1298 1304 experimental = true
1299 1305 documentation = """Enables dirstate-v2 format *when creating a new repository*.
1300 1306 Which format to use for existing repos is controlled by `.hg/requires`."""
1301 1307
1302 1308 [[items]]
1303 1309 section = "format"
1304 1310 name = "use-dirstate-v2.automatic-upgrade-of-mismatching-repositories"
1305 1311 default = false
1306 1312 experimental = true
1307 1313
1308 1314 [[items]]
1309 1315 section = "format"
1310 1316 name = "use-dirstate-v2.automatic-upgrade-of-mismatching-repositories:quiet"
1311 1317 default = false
1312 1318 experimental = true
1313 1319
1314 1320 # Having this on by default means we are confident about the scaling of phases.
1315 1321 # This is not garanteed to be the case at the time this message is written.
1316 1322 [[items]]
1317 1323 section = "format"
1318 1324 name = "use-internal-phase"
1319 1325 default = false
1320 1326 experimental = true
1321 1327
1322 1328 [[items]]
1323 1329 section = "format"
1324 1330 name = "use-persistent-nodemap"
1325 1331 default-type = "dynamic"
1326 1332
1327 1333 [[items]]
1328 1334 section = "format"
1329 1335 name = "use-share-safe"
1330 1336 default = true
1331 1337
1332 1338 [[items]]
1333 1339 section = "format"
1334 1340 name = "use-share-safe.automatic-upgrade-of-mismatching-repositories"
1335 1341 default = false
1336 1342 experimental = true
1337 1343
1338 1344 [[items]]
1339 1345 section = "format"
1340 1346 name = "use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet"
1341 1347 default = false
1342 1348 experimental = true
1343 1349
1344 1350 [[items]]
1345 1351 section = "format"
1346 1352 name = "usefncache"
1347 1353 default = true
1348 1354
1349 1355 [[items]]
1350 1356 section = "format"
1351 1357 name = "usegeneraldelta"
1352 1358 default = true
1353 1359
1354 1360 [[items]]
1355 1361 section = "format"
1356 1362 name = "usestore"
1357 1363 default = true
1358 1364
1359 1365 [[items]]
1360 1366 section = "fsmonitor"
1361 1367 name = "warn_update_file_count"
1362 1368 default = 50000
1363 1369
1364 1370 [[items]]
1365 1371 section = "fsmonitor"
1366 1372 name = "warn_update_file_count_rust"
1367 1373 default = 400000
1368 1374
1369 1375 [[items]]
1370 1376 section = "fsmonitor"
1371 1377 name = "warn_when_unused"
1372 1378 default = true
1373 1379
1374 1380 [[items]]
1375 1381 section = "help"
1376 1382 name = 'hidden-command\..*'
1377 1383 default = false
1378 1384 generic = true
1379 1385
1380 1386 [[items]]
1381 1387 section = "help"
1382 1388 name = 'hidden-topic\..*'
1383 1389 default = false
1384 1390 generic = true
1385 1391
1386 1392 [[items]]
1387 1393 section = "hgweb-paths"
1388 1394 name = ".*"
1389 1395 default-type = "list_type"
1390 1396 generic = true
1391 1397
1392 1398 [[items]]
1393 1399 section = "hooks"
1394 1400 name = ".*:run-with-plain"
1395 1401 default = true
1396 1402 generic = true
1397 1403
1398 1404 [[items]]
1399 1405 section = "hooks"
1400 1406 name = "[^:]*"
1401 1407 default-type = "dynamic"
1402 1408 generic = true
1403 1409
1404 1410 [[items]]
1405 1411 section = "hostfingerprints"
1406 1412 name = ".*"
1407 1413 default-type = "list_type"
1408 1414 generic = true
1409 1415
1410 1416 [[items]]
1411 1417 section = "hostsecurity"
1412 1418 name = ".*:ciphers$"
1413 1419 default-type = "dynamic"
1414 1420 generic = true
1415 1421
1416 1422 [[items]]
1417 1423 section = "hostsecurity"
1418 1424 name = ".*:fingerprints$"
1419 1425 default-type = "list_type"
1420 1426 generic = true
1421 1427
1422 1428 [[items]]
1423 1429 section = "hostsecurity"
1424 1430 name = ".*:minimumprotocol$"
1425 1431 default-type = "dynamic"
1426 1432 generic = true
1427 1433
1428 1434 [[items]]
1429 1435 section = "hostsecurity"
1430 1436 name = ".*:verifycertsfile$"
1431 1437 generic = true
1432 1438
1433 1439 [[items]]
1434 1440 section = "hostsecurity"
1435 1441 name = "ciphers"
1436 1442
1437 1443 [[items]]
1438 1444 section = "hostsecurity"
1439 1445 name = "minimumprotocol"
1440 1446 default-type = "dynamic"
1441 1447
1442 1448 [[items]]
1443 1449 section = "http"
1444 1450 name = "timeout"
1445 1451
1446 1452 [[items]]
1447 1453 section = "http_proxy"
1448 1454 name = "always"
1449 1455 default = false
1450 1456
1451 1457 [[items]]
1452 1458 section = "http_proxy"
1453 1459 name = "host"
1454 1460
1455 1461 [[items]]
1456 1462 section = "http_proxy"
1457 1463 name = "no"
1458 1464 default-type = "list_type"
1459 1465
1460 1466 [[items]]
1461 1467 section = "http_proxy"
1462 1468 name = "passwd"
1463 1469
1464 1470 [[items]]
1465 1471 section = "http_proxy"
1466 1472 name = "user"
1467 1473
1468 1474 [[items]]
1469 1475 section = "logtoprocess"
1470 1476 name = "command"
1471 1477
1472 1478 [[items]]
1473 1479 section = "logtoprocess"
1474 1480 name = "commandexception"
1475 1481
1476 1482 [[items]]
1477 1483 section = "logtoprocess"
1478 1484 name = "commandfinish"
1479 1485
1480 1486 [[items]]
1481 1487 section = "logtoprocess"
1482 1488 name = "develwarn"
1483 1489
1484 1490 [[items]]
1485 1491 section = "logtoprocess"
1486 1492 name = "uiblocked"
1487 1493
1488 1494 [[items]]
1489 1495 section = "merge"
1490 1496 name = "checkignored"
1491 1497 default = "abort"
1492 1498
1493 1499 [[items]]
1494 1500 section = "merge"
1495 1501 name = "checkunknown"
1496 1502 default = "abort"
1497 1503
1498 1504 [[items]]
1499 1505 section = "merge"
1500 1506 name = "disable-partial-tools"
1501 1507 default = false
1502 1508 experimental = true
1503 1509
1504 1510 [[items]]
1505 1511 section = "merge"
1506 1512 name = "followcopies"
1507 1513 default = true
1508 1514
1509 1515 [[items]]
1510 1516 section = "merge"
1511 1517 name = "on-failure"
1512 1518 default = "continue"
1513 1519
1514 1520 [[items]]
1515 1521 section = "merge"
1516 1522 name = "preferancestor"
1517 1523 default-type = "lambda"
1518 1524 default = ["*"]
1519 1525 experimental = true
1520 1526
1521 1527 [[items]]
1522 1528 section = "merge"
1523 1529 name = "strict-capability-check"
1524 1530 default = false
1525 1531
1526 1532 [[items]]
1527 1533 section = "merge-tools"
1528 1534 name = ".*"
1529 1535 generic = true
1530 1536
1531 1537 [[items]]
1532 1538 section = "merge-tools"
1533 1539 name = '.*\.args$'
1534 1540 default = "$local $base $other"
1535 1541 generic = true
1536 1542 priority = -1
1537 1543
1538 1544 [[items]]
1539 1545 section = "merge-tools"
1540 1546 name = '.*\.binary$'
1541 1547 default = false
1542 1548 generic = true
1543 1549 priority = -1
1544 1550
1545 1551 [[items]]
1546 1552 section = "merge-tools"
1547 1553 name = '.*\.check$'
1548 1554 default-type = "list_type"
1549 1555 generic = true
1550 1556 priority = -1
1551 1557
1552 1558 [[items]]
1553 1559 section = "merge-tools"
1554 1560 name = '.*\.checkchanged$'
1555 1561 default = false
1556 1562 generic = true
1557 1563 priority = -1
1558 1564
1559 1565 [[items]]
1560 1566 section = "merge-tools"
1561 1567 name = '.*\.executable$'
1562 1568 default-type = "dynamic"
1563 1569 generic = true
1564 1570 priority = -1
1565 1571
1566 1572 [[items]]
1567 1573 section = "merge-tools"
1568 1574 name = '.*\.fixeol$'
1569 1575 default = false
1570 1576 generic = true
1571 1577 priority = -1
1572 1578
1573 1579 [[items]]
1574 1580 section = "merge-tools"
1575 1581 name = '.*\.gui$'
1576 1582 default = false
1577 1583 generic = true
1578 1584 priority = -1
1579 1585
1580 1586 [[items]]
1581 1587 section = "merge-tools"
1582 1588 name = '.*\.mergemarkers$'
1583 1589 default = "basic"
1584 1590 generic = true
1585 1591 priority = -1
1586 1592
1587 1593 [[items]]
1588 1594 section = "merge-tools"
1589 1595 name = '.*\.mergemarkertemplate$' # take from command-templates.mergemarker
1590 1596 default-type = "dynamic"
1591 1597 generic = true
1592 1598 priority = -1
1593 1599
1594 1600 [[items]]
1595 1601 section = "merge-tools"
1596 1602 name = '.*\.premerge$'
1597 1603 default-type = "dynamic"
1598 1604 generic = true
1599 1605 priority = -1
1600 1606
1601 1607 [[items]]
1602 1608 section = "merge-tools"
1603 1609 name = '.*\.priority$'
1604 1610 default = 0
1605 1611 generic = true
1606 1612 priority = -1
1607 1613
1608 1614 [[items]]
1609 1615 section = "merge-tools"
1610 1616 name = '.*\.regappend$'
1611 1617 default = ""
1612 1618 generic = true
1613 1619 priority = -1
1614 1620
1615 1621 [[items]]
1616 1622 section = "merge-tools"
1617 1623 name = '.*\.symlink$'
1618 1624 default = false
1619 1625 generic = true
1620 1626 priority = -1
1621 1627
1622 1628 [[items]]
1623 1629 section = "pager"
1624 1630 name = "attend-.*"
1625 1631 default-type = "dynamic"
1626 1632 generic = true
1627 1633
1628 1634 [[items]]
1629 1635 section = "pager"
1630 1636 name = "ignore"
1631 1637 default-type = "list_type"
1632 1638
1633 1639 [[items]]
1634 1640 section = "pager"
1635 1641 name = "pager"
1636 1642 default-type = "dynamic"
1637 1643
1638 1644 [[items]]
1639 1645 section = "partial-merge-tools"
1640 1646 name = ".*"
1641 1647 generic = true
1642 1648 experimental = true
1643 1649
1644 1650 [[items]]
1645 1651 section = "partial-merge-tools"
1646 1652 name = '.*\.args'
1647 1653 default = "$local $base $other"
1648 1654 generic = true
1649 1655 priority = -1
1650 1656 experimental = true
1651 1657
1652 1658 [[items]]
1653 1659 section = "partial-merge-tools"
1654 1660 name = '.*\.disable'
1655 1661 default = false
1656 1662 generic = true
1657 1663 priority = -1
1658 1664 experimental = true
1659 1665
1660 1666 [[items]]
1661 1667 section = "partial-merge-tools"
1662 1668 name = '.*\.executable$'
1663 1669 default-type = "dynamic"
1664 1670 generic = true
1665 1671 priority = -1
1666 1672 experimental = true
1667 1673
1668 1674 [[items]]
1669 1675 section = "partial-merge-tools"
1670 1676 name = '.*\.order'
1671 1677 default = 0
1672 1678 generic = true
1673 1679 priority = -1
1674 1680 experimental = true
1675 1681
1676 1682 [[items]]
1677 1683 section = "partial-merge-tools"
1678 1684 name = '.*\.patterns'
1679 1685 default-type = "dynamic"
1680 1686 generic = true
1681 1687 priority = -1
1682 1688 experimental = true
1683 1689
1684 1690 [[items]]
1685 1691 section = "patch"
1686 1692 name = "eol"
1687 1693 default = "strict"
1688 1694
1689 1695 [[items]]
1690 1696 section = "patch"
1691 1697 name = "fuzz"
1692 1698 default = 2
1693 1699
1694 1700 [[items]]
1695 1701 section = "paths"
1696 1702 name = "[^:]*"
1697 1703 generic = true
1698 1704
1699 1705 [[items]]
1700 1706 section = "paths"
1701 1707 name = ".*:bookmarks.mode"
1702 1708 default = "default"
1703 1709 generic = true
1704 1710
1705 1711 [[items]]
1706 1712 section = "paths"
1707 1713 name = ".*:multi-urls"
1708 1714 default = false
1709 1715 generic = true
1710 1716
1711 1717 [[items]]
1712 1718 section = "paths"
1713 1719 name = ".*:pulled-delta-reuse-policy"
1714 1720 generic = true
1715 1721
1716 1722 [[items]]
1717 1723 section = "paths"
1718 1724 name = ".*:pushrev"
1719 1725 generic = true
1720 1726
1721 1727 [[items]]
1722 1728 section = "paths"
1723 1729 name = ".*:pushurl"
1724 1730 generic = true
1725 1731
1726 1732 [[items]]
1727 1733 section = "paths"
1728 1734 name = "default"
1729 1735
1730 1736 [[items]]
1731 1737 section = "paths"
1732 1738 name = "default-push"
1733 1739
1734 1740 [[items]]
1735 1741 section = "phases"
1736 1742 name = "checksubrepos"
1737 1743 default = "follow"
1738 1744
1739 1745 [[items]]
1740 1746 section = "phases"
1741 1747 name = "new-commit"
1742 1748 default = "draft"
1743 1749
1744 1750 [[items]]
1745 1751 section = "phases"
1746 1752 name = "publish"
1747 1753 default = true
1748 1754
1749 1755 [[items]]
1750 1756 section = "profiling"
1751 1757 name = "enabled"
1752 1758 default = false
1753 1759
1754 1760 [[items]]
1755 1761 section = "profiling"
1756 1762 name = "format"
1757 1763 default = "text"
1758 1764
1759 1765 [[items]]
1760 1766 section = "profiling"
1761 1767 name = "freq"
1762 1768 default = 1000
1763 1769
1764 1770 [[items]]
1765 1771 section = "profiling"
1766 1772 name = "limit"
1767 1773 default = 30
1768 1774
1769 1775 [[items]]
1770 1776 section = "profiling"
1771 1777 name = "nested"
1772 1778 default = 0
1773 1779
1774 1780 [[items]]
1775 1781 section = "profiling"
1776 1782 name = "output"
1777 1783
1778 1784 [[items]]
1779 1785 section = "profiling"
1780 1786 name = "showmax"
1781 1787 default = 0.999
1782 1788
1783 1789 [[items]]
1784 1790 section = "profiling"
1785 1791 name = "showmin"
1786 1792 default-type = "dynamic"
1787 1793
1788 1794 [[items]]
1789 1795 section = "profiling"
1790 1796 name = "showtime"
1791 1797 default = true
1792 1798
1793 1799 [[items]]
1794 1800 section = "profiling"
1795 1801 name = "sort"
1796 1802 default = "inlinetime"
1797 1803
1798 1804 [[items]]
1799 1805 section = "profiling"
1800 1806 name = "statformat"
1801 1807 default = "hotpath"
1802 1808
1803 1809 [[items]]
1804 1810 section = "profiling"
1805 1811 name = "time-track"
1806 1812 default-type = "dynamic"
1807 1813
1808 1814 [[items]]
1809 1815 section = "profiling"
1810 1816 name = "type"
1811 1817 default = "stat"
1812 1818
1813 1819 [[items]]
1814 1820 section = "profiling"
1815 1821 name = "py-spy.exe"
1816 1822 default = "py-spy"
1817 1823
1818 1824 [[items]]
1819 1825 section = "profiling"
1820 1826 name = "py-spy.freq"
1821 1827 default = 100
1822 1828
1823 1829 [[items]]
1824 1830 section = "profiling"
1825 1831 name = "py-spy.format"
1826 1832
1827 1833 [[items]]
1828 1834 section = "progress"
1829 1835 name = "assume-tty"
1830 1836 default = false
1831 1837
1832 1838 [[items]]
1833 1839 section = "progress"
1834 1840 name = "changedelay"
1835 1841 default = 1
1836 1842
1837 1843 [[items]]
1838 1844 section = "progress"
1839 1845 name = "clear-complete"
1840 1846 default = true
1841 1847
1842 1848 [[items]]
1843 1849 section = "progress"
1844 1850 name = "debug"
1845 1851 default = false
1846 1852
1847 1853 [[items]]
1848 1854 section = "progress"
1849 1855 name = "delay"
1850 1856 default = 3
1851 1857
1852 1858 [[items]]
1853 1859 section = "progress"
1854 1860 name = "disable"
1855 1861 default = false
1856 1862
1857 1863 [[items]]
1858 1864 section = "progress"
1859 1865 name = "estimateinterval"
1860 1866 default = 60.0
1861 1867
1862 1868 [[items]]
1863 1869 section = "progress"
1864 1870 name = "format"
1865 1871 default-type = "lambda"
1866 1872 default = [ "topic", "bar", "number", "estimate",]
1867 1873
1868 1874 [[items]]
1869 1875 section = "progress"
1870 1876 name = "refresh"
1871 1877 default = 0.1
1872 1878
1873 1879 [[items]]
1874 1880 section = "progress"
1875 1881 name = "width"
1876 1882 default-type = "dynamic"
1877 1883
1878 1884 [[items]]
1879 1885 section = "pull"
1880 1886 name = "confirm"
1881 1887 default = false
1882 1888
1883 1889 [[items]]
1884 1890 section = "push"
1885 1891 name = "pushvars.server"
1886 1892 default = false
1887 1893
1888 1894 [[items]]
1889 1895 section = "rebase"
1890 1896 name = "experimental.inmemory"
1891 1897 default = false
1892 1898
1893 1899 [[items]]
1894 1900 section = "rebase"
1895 1901 name = "singletransaction"
1896 1902 default = false
1897 1903
1898 1904 [[items]]
1899 1905 section = "rebase"
1900 1906 name = "store-source"
1901 1907 default = true
1902 1908 experimental = true
1903 1909 documentation = """Controls creation of a `rebase_source` extra field during rebase.
1904 1910 When false, no such field is created. This is useful e.g. for incrementally \
1905 1911 converting changesets and then rebasing them onto an existing repo.
1906 1912 WARNING: this is an advanced setting reserved for people who know \
1907 1913 exactly what they are doing. Misuse of this setting can easily \
1908 1914 result in obsmarker cycles and a vivid headache."""
1909 1915
1910 1916 [[items]]
1911 1917 section = "rewrite"
1912 1918 name = "backup-bundle"
1913 1919 default = true
1914 1920 alias = [["ui", "history-editing-backup"]]
1915 1921
1916 1922 [[items]]
1917 1923 section = "rewrite"
1918 1924 name = "empty-successor"
1919 1925 default = "skip"
1920 1926 experimental = true
1921 1927
1922 1928 [[items]]
1923 1929 section = "rewrite"
1924 1930 name = "update-timestamp"
1925 1931 default = false
1926 1932
1927 1933 [[items]]
1928 1934 section = "rhg"
1929 1935 name = "cat"
1930 1936 default = true
1931 1937 experimental = true
1932 1938 documentation = """rhg cat has some quirks that need to be ironed out. \
1933 1939 In particular, the `-r` argument accepts a partial hash, but does not \
1934 1940 correctly resolve `abcdef` as a potential bookmark, tag or branch name."""
1935 1941
1936 1942 [[items]]
1937 1943 section = "rhg"
1938 1944 name = "fallback-exectutable"
1939 1945 experimental = true
1940 1946
1941 1947 [[items]]
1942 1948 section = "rhg"
1943 1949 name = "fallback-immediately"
1944 1950 default = false
1945 1951 experimental = true
1946 1952
1947 1953 [[items]]
1948 1954 section = "rhg"
1949 1955 name = "ignored-extensions"
1950 1956 default-type = "list_type"
1951 1957 experimental = true
1952 1958
1953 1959 [[items]]
1954 1960 section = "rhg"
1955 1961 name = "on-unsupported"
1956 1962 default = "abort"
1957 1963 experimental = true
1958 1964
1959 1965 [[items]]
1960 1966 section = "server"
1961 1967 name = "bookmarks-pushkey-compat"
1962 1968 default = true
1963 1969
1964 1970 [[items]]
1965 1971 section = "server"
1966 1972 name = "bundle1"
1967 1973 default = true
1968 1974
1969 1975 [[items]]
1970 1976 section = "server"
1971 1977 name = "bundle1.pull"
1972 1978
1973 1979 [[items]]
1974 1980 section = "server"
1975 1981 name = "bundle1.push"
1976 1982
1977 1983 [[items]]
1978 1984 section = "server"
1979 1985 name = "bundle1gd"
1980 1986
1981 1987 [[items]]
1982 1988 section = "server"
1983 1989 name = "bundle1gd.pull"
1984 1990
1985 1991 [[items]]
1986 1992 section = "server"
1987 1993 name = "bundle1gd.push"
1988 1994
1989 1995 [[items]]
1990 1996 section = "server"
1991 1997 name = "bundle2.stream"
1992 1998 default = true
1993 1999 alias = [["experimental", "bundle2.stream"]]
1994 2000
1995 2001 [[items]]
1996 2002 section = "server"
1997 2003 name = "compressionengines"
1998 2004 default-type = "list_type"
1999 2005
2000 2006 [[items]]
2001 2007 section = "server"
2002 2008 name = "concurrent-push-mode"
2003 2009 default = "check-related"
2004 2010
2005 2011 [[items]]
2006 2012 section = "server"
2007 2013 name = "disablefullbundle"
2008 2014 default = false
2009 2015
2010 2016 [[items]]
2011 2017 section = "server"
2012 2018 name = "maxhttpheaderlen"
2013 2019 default = 1024
2014 2020
2015 2021 [[items]]
2016 2022 section = "server"
2017 2023 name = "preferuncompressed"
2018 2024 default = false
2019 2025
2020 2026 [[items]]
2021 2027 section = "server"
2022 2028 name = "pullbundle"
2023 2029 default = true
2024 2030
2025 2031 [[items]]
2026 2032 section = "server"
2027 2033 name = "streamunbundle"
2028 2034 default = false
2029 2035
2030 2036 [[items]]
2031 2037 section = "server"
2032 2038 name = "uncompressed"
2033 2039 default = true
2034 2040
2035 2041 [[items]]
2036 2042 section = "server"
2037 2043 name = "uncompressedallowsecret"
2038 2044 default = false
2039 2045
2040 2046 [[items]]
2041 2047 section = "server"
2042 2048 name = "validate"
2043 2049 default = false
2044 2050
2045 2051 [[items]]
2046 2052 section = "server"
2047 2053 name = "view"
2048 2054 default = "served"
2049 2055
2050 2056 [[items]]
2051 2057 section = "server"
2052 2058 name = "zliblevel"
2053 2059 default = -1
2054 2060
2055 2061 [[items]]
2056 2062 section = "server"
2057 2063 name = "zstdlevel"
2058 2064 default = 3
2059 2065
2060 2066 [[items]]
2061 2067 section = "share"
2062 2068 name = "pool"
2063 2069
2064 2070 [[items]]
2065 2071 section = "share"
2066 2072 name = "poolnaming"
2067 2073 default = "identity"
2068 2074
2069 2075 [[items]]
2070 2076 section = "share"
2071 2077 name = "safe-mismatch.source-not-safe"
2072 2078 default = "abort"
2073 2079
2074 2080 [[items]]
2075 2081 section = "share"
2076 2082 name = "safe-mismatch.source-not-safe.warn"
2077 2083 default = true
2078 2084
2079 2085 [[items]]
2080 2086 section = "share"
2081 2087 name = "safe-mismatch.source-not-safe:verbose-upgrade"
2082 2088 default = true
2083 2089
2084 2090 [[items]]
2085 2091 section = "share"
2086 2092 name = "safe-mismatch.source-safe"
2087 2093 default = "abort"
2088 2094
2089 2095 [[items]]
2090 2096 section = "share"
2091 2097 name = "safe-mismatch.source-safe.warn"
2092 2098 default = true
2093 2099
2094 2100 [[items]]
2095 2101 section = "share"
2096 2102 name = "safe-mismatch.source-safe:verbose-upgrade"
2097 2103 default = true
2098 2104
2099 2105 [[items]]
2100 2106 section = "shelve"
2101 2107 name = "maxbackups"
2102 2108 default = 10
2103 2109
2104 2110 [[items]]
2105 2111 section = "shelve"
2106 2112 name = "store"
2107 2113 default = "internal"
2108 2114 experimental = true
2109 2115
2110 2116 [[items]]
2111 2117 section = "smtp"
2112 2118 name = "host"
2113 2119
2114 2120 [[items]]
2115 2121 section = "smtp"
2116 2122 name = "local_hostname"
2117 2123
2118 2124 [[items]]
2119 2125 section = "smtp"
2120 2126 name = "password"
2121 2127
2122 2128 [[items]]
2123 2129 section = "smtp"
2124 2130 name = "port"
2125 2131 default-type = "dynamic"
2126 2132
2127 2133 [[items]]
2128 2134 section = "smtp"
2129 2135 name = "tls"
2130 2136 default = "none"
2131 2137
2132 2138 [[items]]
2133 2139 section = "smtp"
2134 2140 name = "username"
2135 2141
2136 2142 [[items]]
2137 2143 section = "sparse"
2138 2144 name = "missingwarning"
2139 2145 default = true
2140 2146 experimental = true
2141 2147
2142 2148
2143 2149 # The "storage" section house config options that change how the repository
2144 2150 # data are accessed by the current process but does not affects the on disk
2145 2151 # format. They can also adjust how the storage is computed, but without affect
2146 2152 # compatibility wither other clients.
2147 2153 #
2148 2154 # For deeper format change, see the `format` section.
2149 2155
2150 2156
2151 2157 [[items]]
2152 2158 section = "storage"
2153 2159 name = "dirstate-v2.slow-path"
2154 2160 default = "abort"
2155 2161 experimental = true # experimental as long as format.use-dirstate-v2 is.
2156 2162
2157 2163 [[items]]
2158 2164 section = "storage"
2159 2165 name = "revbranchcache.mmap"
2160 2166 default = false
2161 2167
2162 2168 [[items]]
2163 2169 section = "storage"
2164 2170 name = "new-repo-backend"
2165 2171 default = "revlogv1"
2166 2172 experimental = true
2167 2173
2168 2174 [[items]]
2169 2175 section = "storage"
2170 2176 name = "revlog.delta-parent-search.candidate-group-chunk-size"
2171 2177 default = 20
2172 2178
2173 2179 [[items]]
2174 2180 section = "storage"
2175 2181 name = "revlog.issue6528.fix-incoming"
2176 2182 default = true
2177 2183
2178 2184 [[items]]
2179 2185 section = "storage"
2180 2186 name = "revlog.mmap.index"
2181 2187 default-type = "dynamic"
2182 2188
2183 2189 [[items]]
2184 2190 section = "storage"
2185 2191 name = "revlog.mmap.index:size-threshold"
2186 2192 default = "1 MB"
2187 2193
2188 2194 [[items]]
2189 2195 section = "storage"
2190 2196 name = "revlog.optimize-delta-parent-choice"
2191 2197 default = true
2192 2198 alias = [["format", "aggressivemergedeltas"]]
2193 2199
2194 2200 [[items]]
2195 2201 section = "storage"
2196 2202 name = "revlog.persistent-nodemap.mmap"
2197 2203 default = true
2198 2204
2199 2205 [[items]]
2200 2206 section = "storage"
2201 2207 name = "revlog.persistent-nodemap.slow-path"
2202 2208 default = "abort"
2203 2209
2204 2210 [[items]]
2205 2211 section = "storage"
2206 2212 name = "revlog.reuse-external-delta"
2207 2213 default = true
2208 2214
2209 2215 [[items]]
2210 2216 section = "storage"
2211 2217 name = "revlog.reuse-external-delta-parent"
2212 2218 documentation = """This option is true unless `format.generaldelta` is set."""
2213 2219
2214 2220 [[items]]
2215 2221 section = "storage"
2216 2222 name = "revlog.zlib.level"
2217 2223
2218 2224 [[items]]
2219 2225 section = "storage"
2220 2226 name = "revlog.zstd.level"
2221 2227
2222 2228 [[items]]
2223 2229 section = "subrepos"
2224 2230 name = "allowed"
2225 2231 default-type = "dynamic" # to make backporting simpler
2226 2232
2227 2233 [[items]]
2228 2234 section = "subrepos"
2229 2235 name = "git:allowed"
2230 2236 default-type = "dynamic"
2231 2237
2232 2238 [[items]]
2233 2239 section = "subrepos"
2234 2240 name = "hg:allowed"
2235 2241 default-type = "dynamic"
2236 2242
2237 2243 [[items]]
2238 2244 section = "subrepos"
2239 2245 name = "svn:allowed"
2240 2246 default-type = "dynamic"
2241 2247
2242 2248 [[items]]
2243 2249 section = "templateconfig"
2244 2250 name = ".*"
2245 2251 default-type = "dynamic"
2246 2252 generic = true
2247 2253
2248 2254 [[items]]
2249 2255 section = "templates"
2250 2256 name = ".*"
2251 2257 generic = true
2252 2258
2253 2259 [[items]]
2254 2260 section = "trusted"
2255 2261 name = "groups"
2256 2262 default-type = "list_type"
2257 2263
2258 2264 [[items]]
2259 2265 section = "trusted"
2260 2266 name = "users"
2261 2267 default-type = "list_type"
2262 2268
2263 2269 [[items]]
2264 2270 section = "ui"
2265 2271 name = "_usedassubrepo"
2266 2272 default = false
2267 2273
2268 2274 [[items]]
2269 2275 section = "ui"
2270 2276 name = "allowemptycommit"
2271 2277 default = false
2272 2278
2273 2279 [[items]]
2274 2280 section = "ui"
2275 2281 name = "archivemeta"
2276 2282 default = true
2277 2283
2278 2284 [[items]]
2279 2285 section = "ui"
2280 2286 name = "askusername"
2281 2287 default = false
2282 2288
2283 2289 [[items]]
2284 2290 section = "ui"
2285 2291 name = "available-memory"
2286 2292
2287 2293 [[items]]
2288 2294 section = "ui"
2289 2295 name = "clonebundlefallback"
2290 2296 default = false
2291 2297
2292 2298 [[items]]
2293 2299 section = "ui"
2294 2300 name = "clonebundleprefers"
2295 2301 default-type = "list_type"
2296 2302
2297 2303 [[items]]
2298 2304 section = "ui"
2299 2305 name = "clonebundles"
2300 2306 default = true
2301 2307
2302 2308 [[items]]
2303 2309 section = "ui"
2304 2310 name = "color"
2305 2311 default = "auto"
2306 2312
2307 2313 [[items]]
2308 2314 section = "ui"
2309 2315 name = "commitsubrepos"
2310 2316 default = false
2311 2317
2312 2318 [[items]]
2313 2319 section = "ui"
2314 2320 name = "debug"
2315 2321 default = false
2316 2322
2317 2323 [[items]]
2318 2324 section = "ui"
2319 2325 name = "debugger"
2320 2326
2321 2327 [[items]]
2322 2328 section = "ui"
2323 2329 name = "detailed-exit-code"
2324 2330 default = false
2325 2331 experimental = true
2326 2332
2327 2333 [[items]]
2328 2334 section = "ui"
2329 2335 name = "editor"
2330 2336 default-type = "dynamic"
2331 2337
2332 2338 [[items]]
2333 2339 section = "ui"
2334 2340 name = "fallbackencoding"
2335 2341
2336 2342 [[items]]
2337 2343 section = "ui"
2338 2344 name = "forcecwd"
2339 2345
2340 2346 [[items]]
2341 2347 section = "ui"
2342 2348 name = "forcemerge"
2343 2349
2344 2350 [[items]]
2345 2351 section = "ui"
2346 2352 name = "formatdebug"
2347 2353 default = false
2348 2354
2349 2355 [[items]]
2350 2356 section = "ui"
2351 2357 name = "formatjson"
2352 2358 default = false
2353 2359
2354 2360 [[items]]
2355 2361 section = "ui"
2356 2362 name = "formatted"
2357 2363
2358 2364 [[items]]
2359 2365 section = "ui"
2360 2366 name = "interactive"
2361 2367
2362 2368 [[items]]
2363 2369 section = "ui"
2364 2370 name = "interface"
2365 2371
2366 2372 [[items]]
2367 2373 section = "ui"
2368 2374 name = "interface.chunkselector"
2369 2375
2370 2376 [[items]]
2371 2377 section = "ui"
2372 2378 name = "large-file-limit"
2373 2379 default = 10485760
2374 2380
2375 2381 [[items]]
2376 2382 section = "ui"
2377 2383 name = "logblockedtimes"
2378 2384 default = false
2379 2385
2380 2386 [[items]]
2381 2387 section = "ui"
2382 2388 name = "merge"
2383 2389
2384 2390 [[items]]
2385 2391 section = "ui"
2386 2392 name = "mergemarkers"
2387 2393 default = "basic"
2388 2394
2389 2395 [[items]]
2390 2396 section = "ui"
2391 2397 name = "message-output"
2392 2398 default = "stdio"
2393 2399
2394 2400 [[items]]
2395 2401 section = "ui"
2396 2402 name = "nontty"
2397 2403 default = false
2398 2404
2399 2405 [[items]]
2400 2406 section = "ui"
2401 2407 name = "origbackuppath"
2402 2408
2403 2409 [[items]]
2404 2410 section = "ui"
2405 2411 name = "paginate"
2406 2412 default = true
2407 2413
2408 2414 [[items]]
2409 2415 section = "ui"
2410 2416 name = "patch"
2411 2417
2412 2418 [[items]]
2413 2419 section = "ui"
2414 2420 name = "portablefilenames"
2415 2421 default = "warn"
2416 2422
2417 2423 [[items]]
2418 2424 section = "ui"
2419 2425 name = "promptecho"
2420 2426 default = false
2421 2427
2422 2428 [[items]]
2423 2429 section = "ui"
2424 2430 name = "quiet"
2425 2431 default = false
2426 2432
2427 2433 [[items]]
2428 2434 section = "ui"
2429 2435 name = "quietbookmarkmove"
2430 2436 default = false
2431 2437
2432 2438 [[items]]
2433 2439 section = "ui"
2434 2440 name = "relative-paths"
2435 2441 default = "legacy"
2436 2442
2437 2443 [[items]]
2438 2444 section = "ui"
2439 2445 name = "remotecmd"
2440 2446 default = "hg"
2441 2447
2442 2448 [[items]]
2443 2449 section = "ui"
2444 2450 name = "report_untrusted"
2445 2451 default = true
2446 2452
2447 2453 [[items]]
2448 2454 section = "ui"
2449 2455 name = "rollback"
2450 2456 default = true
2451 2457
2452 2458 [[items]]
2453 2459 section = "ui"
2454 2460 name = "signal-safe-lock"
2455 2461 default = true
2456 2462
2457 2463 [[items]]
2458 2464 section = "ui"
2459 2465 name = "slash"
2460 2466 default = false
2461 2467
2462 2468 [[items]]
2463 2469 section = "ui"
2464 2470 name = "ssh"
2465 2471 default = "ssh"
2466 2472
2467 2473 [[items]]
2468 2474 section = "ui"
2469 2475 name = "ssherrorhint"
2470 2476
2471 2477 [[items]]
2472 2478 section = "ui"
2473 2479 name = "statuscopies"
2474 2480 default = false
2475 2481
2476 2482 [[items]]
2477 2483 section = "ui"
2478 2484 name = "strict"
2479 2485 default = false
2480 2486
2481 2487 [[items]]
2482 2488 section = "ui"
2483 2489 name = "style"
2484 2490 default = ""
2485 2491
2486 2492 [[items]]
2487 2493 section = "ui"
2488 2494 name = "supportcontact"
2489 2495
2490 2496 [[items]]
2491 2497 section = "ui"
2492 2498 name = "textwidth"
2493 2499 default = 78
2494 2500
2495 2501 [[items]]
2496 2502 section = "ui"
2497 2503 name = "timeout"
2498 2504 default = "600"
2499 2505
2500 2506 [[items]]
2501 2507 section = "ui"
2502 2508 name = "timeout.warn"
2503 2509 default = 0
2504 2510
2505 2511 [[items]]
2506 2512 section = "ui"
2507 2513 name = "timestamp-output"
2508 2514 default = false
2509 2515
2510 2516 [[items]]
2511 2517 section = "ui"
2512 2518 name = "traceback"
2513 2519 default = false
2514 2520
2515 2521 [[items]]
2516 2522 section = "ui"
2517 2523 name = "tweakdefaults"
2518 2524 default = false
2519 2525
2520 2526 [[items]]
2521 2527 section = "ui"
2522 2528 name = "username"
2523 2529 alias = [["ui", "user"]]
2524 2530
2525 2531 [[items]]
2526 2532 section = "ui"
2527 2533 name = "verbose"
2528 2534 default = false
2529 2535
2530 2536 [[items]]
2531 2537 section = "usage"
2532 2538 name = "repository-role"
2533 2539 default = "default"
2534 2540 documentation = """What this repository is used for.
2535 2541
2536 2542 This is used to adjust behavior and performance to best fit the repository purpose.
2537 2543
2538 2544 Currently recognised values are:
2539 2545 - default: an all purpose repository
2540 2546 """
2541 2547
2542 2548 [[items]]
2543 2549 section = "usage"
2544 2550 name = "resources"
2545 2551 default = "default"
2546 2552 documentation = """How aggressive Mercurial can be with resource usage:
2547 2553
2548 2554 Currently recognised values are:
2549 2555 - default: the default value currently is equivalent to medium,
2550 2556 - high: allows for higher cpu, memory and disk-space usage to improve the performance of some operations.
2551 2557 - medium: aims at a moderate resource usage,
2552 2558 - low: reduces resources usage when possible, decreasing overall performance.
2553 2559
2554 2560 For finer configuration, see also `usage.resources.cpu`,
2555 2561 `usage.resources.disk` and `usage.resources.memory`.
2556 2562 """
2557 2563
2558 2564 [[items]]
2559 2565 section = "usage"
2560 2566 name = "resources.cpu"
2561 2567 default = "default"
2562 2568 documentation = """How aggressive Mercurial can be in terms of cpu usage:
2563 2569
2564 2570 Currently recognised values are:
2565 2571 - default: the default value, inherits the value from `usage.resources`,
2566 2572 - high: allows for more aggressive cpu usage, improving storage quality and
2567 2573 the performance of some operations at the expense of machine load
2568 2574 - medium: aims at a moderate cpu usage,
2569 2575 - low: reduces cpu usage when possible, potentially at the expense of
2570 2576 slower operations, increased storage and exchange payload.
2571 2577
2572 2578 """
2573 2579
2574 2580 [[items]]
2575 2581 section = "usage"
2576 2582 name = "resources.disk"
2577 2583 default = "default"
2578 2584 documentation = """How aggressive Mercurial can be in terms of disk usage:
2579 2585
2580 2586 Currently recognised values are:
2581 2587 - default: the default value, inherits the value from `usage.resources`,
2582 2588 - high: allows for more disk space usage where it can improve the performance,
2583 2589 - medium: aims at a moderate disk usage,
2584 2590 - low: reduces disk usage when possible, decreasing performance in some occasion.
2585 2591 """
2586 2592
2587 2593 [[items]]
2588 2594 section = "usage"
2589 2595 name = "resources.memory"
2590 2596 default = "default"
2591 2597 documentation = """How aggressive Mercurial can be in terms of memory usage:
2592 2598
2593 2599 Currently recognised values are:
2594 2600 - default: the default value, inherits the value from `usage.resources`,
2595 2601 - high: allows for more aggressive memory usage to improve overall performance,
2596 2602 - medium: aims at a moderate memory usage,
2597 2603 - low: reduces memory usage when possible at the cost of overall performance.
2598 2604 """
2599 2605
2600 2606 [[items]]
2601 2607 section = "verify"
2602 2608 name = "skipflags"
2603 2609 default = 0
2604 2610
2605 2611 [[items]]
2606 2612 section = "web"
2607 2613 name = "accesslog"
2608 2614 default = "-"
2609 2615
2610 2616 [[items]]
2611 2617 section = "web"
2612 2618 name = "address"
2613 2619 default = ""
2614 2620
2615 2621 [[items]]
2616 2622 section = "web"
2617 2623 name = "allow-archive"
2618 2624 default-type = "list_type"
2619 2625 alias = [["web", "allow_archive"]]
2620 2626
2621 2627 [[items]]
2622 2628 section = "web"
2623 2629 name = "allow-pull"
2624 2630 default = true
2625 2631 alias = [["web", "allowpull"]]
2626 2632
2627 2633 [[items]]
2628 2634 section = "web"
2629 2635 name = "allow-push"
2630 2636 default-type = "list_type"
2631 2637 alias = [["web", "allow_push"]]
2632 2638
2633 2639 [[items]]
2634 2640 section = "web"
2635 2641 name = "allow_read"
2636 2642 default-type = "list_type"
2637 2643
2638 2644 [[items]]
2639 2645 section = "web"
2640 2646 name = "allowbz2"
2641 2647 default = false
2642 2648
2643 2649 [[items]]
2644 2650 section = "web"
2645 2651 name = "allowgz"
2646 2652 default = false
2647 2653
2648 2654 [[items]]
2649 2655 section = "web"
2650 2656 name = "allowzip"
2651 2657 default = false
2652 2658
2653 2659 [[items]]
2654 2660 section = "web"
2655 2661 name = "archivesubrepos"
2656 2662 default = false
2657 2663
2658 2664 [[items]]
2659 2665 section = "web"
2660 2666 name = "baseurl"
2661 2667
2662 2668 [[items]]
2663 2669 section = "web"
2664 2670 name = "cacerts"
2665 2671
2666 2672 [[items]]
2667 2673 section = "web"
2668 2674 name = "cache"
2669 2675 default = true
2670 2676
2671 2677 [[items]]
2672 2678 section = "web"
2673 2679 name = "certificate"
2674 2680
2675 2681 [[items]]
2676 2682 section = "web"
2677 2683 name = "collapse"
2678 2684 default = false
2679 2685
2680 2686 [[items]]
2681 2687 section = "web"
2682 2688 name = "comparisoncontext"
2683 2689 default = 5
2684 2690
2685 2691 [[items]]
2686 2692 section = "web"
2687 2693 name = "contact"
2688 2694
2689 2695 [[items]]
2690 2696 section = "web"
2691 2697 name = "csp"
2692 2698
2693 2699 [[items]]
2694 2700 section = "web"
2695 2701 name = "deny_push"
2696 2702 default-type = "list_type"
2697 2703
2698 2704 [[items]]
2699 2705 section = "web"
2700 2706 name = "deny_read"
2701 2707 default-type = "list_type"
2702 2708
2703 2709 [[items]]
2704 2710 section = "web"
2705 2711 name = "descend"
2706 2712 default = true
2707 2713
2708 2714 [[items]]
2709 2715 section = "web"
2710 2716 name = "description"
2711 2717 default = ""
2712 2718
2713 2719 [[items]]
2714 2720 section = "web"
2715 2721 name = "encoding"
2716 2722 default-type = "lazy_module"
2717 2723 default = "encoding.encoding"
2718 2724
2719 2725 [[items]]
2720 2726 section = "web"
2721 2727 name = "errorlog"
2722 2728 default = "-"
2723 2729
2724 2730 [[items]]
2725 2731 section = "web"
2726 2732 name = "guessmime"
2727 2733 default = false
2728 2734
2729 2735 [[items]]
2730 2736 section = "web"
2731 2737 name = "hidden"
2732 2738 default = false
2733 2739
2734 2740 [[items]]
2735 2741 section = "web"
2736 2742 name = "ipv6"
2737 2743 default = false
2738 2744
2739 2745 [[items]]
2740 2746 section = "web"
2741 2747 name = "labels"
2742 2748 default-type = "list_type"
2743 2749
2744 2750 [[items]]
2745 2751 section = "web"
2746 2752 name = "logoimg"
2747 2753 default = "hglogo.png"
2748 2754
2749 2755 [[items]]
2750 2756 section = "web"
2751 2757 name = "logourl"
2752 2758 default = "https://mercurial-scm.org/"
2753 2759
2754 2760 [[items]]
2755 2761 section = "web"
2756 2762 name = "maxchanges"
2757 2763 default = 10
2758 2764
2759 2765 [[items]]
2760 2766 section = "web"
2761 2767 name = "maxfiles"
2762 2768 default = 10
2763 2769
2764 2770 [[items]]
2765 2771 section = "web"
2766 2772 name = "maxshortchanges"
2767 2773 default = 60
2768 2774
2769 2775 [[items]]
2770 2776 section = "web"
2771 2777 name = "motd"
2772 2778 default = ""
2773 2779
2774 2780 [[items]]
2775 2781 section = "web"
2776 2782 name = "name"
2777 2783 default-type = "dynamic"
2778 2784
2779 2785 [[items]]
2780 2786 section = "web"
2781 2787 name = "port"
2782 2788 default = 8000
2783 2789
2784 2790 [[items]]
2785 2791 section = "web"
2786 2792 name = "prefix"
2787 2793 default = ""
2788 2794
2789 2795 [[items]]
2790 2796 section = "web"
2791 2797 name = "push_ssl"
2792 2798 default = true
2793 2799
2794 2800 [[items]]
2795 2801 section = "web"
2796 2802 name = "refreshinterval"
2797 2803 default = 20
2798 2804
2799 2805 [[items]]
2800 2806 section = "web"
2801 2807 name = "server-header"
2802 2808
2803 2809 [[items]]
2804 2810 section = "web"
2805 2811 name = "static"
2806 2812
2807 2813 [[items]]
2808 2814 section = "web"
2809 2815 name = "staticurl"
2810 2816
2811 2817 [[items]]
2812 2818 section = "web"
2813 2819 name = "stripes"
2814 2820 default = 1
2815 2821
2816 2822 [[items]]
2817 2823 section = "web"
2818 2824 name = "style"
2819 2825 default = "paper"
2820 2826
2821 2827 [[items]]
2822 2828 section = "web"
2823 2829 name = "templates"
2824 2830
2825 2831 [[items]]
2826 2832 section = "web"
2827 2833 name = "view"
2828 2834 default = "served"
2829 2835 experimental = true
2830 2836
2831 2837 [[items]]
2832 2838 section = "worker"
2833 2839 name = "backgroundclose"
2834 2840 default-type = "dynamic"
2835 2841
2836 2842 [[items]]
2837 2843 section = "worker"
2838 2844 name = "backgroundclosemaxqueue"
2839 2845 # Windows defaults to a limit of 512 open files. A buffer of 128
2840 2846 # should give us enough headway.
2841 2847 default = 384
2842 2848
2843 2849 [[items]]
2844 2850 section = "worker"
2845 2851 name = "backgroundcloseminfilecount"
2846 2852 default = 2048
2847 2853
2848 2854 [[items]]
2849 2855 section = "worker"
2850 2856 name = "backgroundclosethreadcount"
2851 2857 default = 4
2852 2858
2853 2859 [[items]]
2854 2860 section = "worker"
2855 2861 name = "enabled"
2856 2862 default = true
2857 2863
2858 2864 [[items]]
2859 2865 section = "worker"
2860 2866 name = "numcpus"
2861 2867
2862 2868 # Templates and template applications
2863 2869
2864 2870 [[template-applications]]
2865 2871 template = "diff-options"
2866 2872 section = "annotate"
2867 2873
2868 2874 [[template-applications]]
2869 2875 template = "diff-options"
2870 2876 section = "commands"
2871 2877 prefix = "commit.interactive"
2872 2878
2873 2879 [[template-applications]]
2874 2880 template = "diff-options"
2875 2881 section = "commands"
2876 2882 prefix = "revert.interactive"
2877 2883
2878 2884 [[template-applications]]
2879 2885 template = "diff-options"
2880 2886 section = "diff"
2881 2887
2882 2888 [templates]
2883 2889 [[templates.diff-options]]
2884 2890 suffix = "nodates"
2885 2891 default = false
2886 2892
2887 2893 [[templates.diff-options]]
2888 2894 suffix = "showfunc"
2889 2895 default = false
2890 2896
2891 2897 [[templates.diff-options]]
2892 2898 suffix = "unified"
2893 2899
2894 2900 [[templates.diff-options]]
2895 2901 suffix = "git"
2896 2902 default = false
2897 2903
2898 2904 [[templates.diff-options]]
2899 2905 suffix = "ignorews"
2900 2906 default = false
2901 2907
2902 2908 [[templates.diff-options]]
2903 2909 suffix = "ignorewsamount"
2904 2910 default = false
2905 2911
2906 2912 [[templates.diff-options]]
2907 2913 suffix = "ignoreblanklines"
2908 2914 default = false
2909 2915
2910 2916 [[templates.diff-options]]
2911 2917 suffix = "ignorewseol"
2912 2918 default = false
2913 2919
2914 2920 [[templates.diff-options]]
2915 2921 suffix = "nobinary"
2916 2922 default = false
2917 2923
2918 2924 [[templates.diff-options]]
2919 2925 suffix = "noprefix"
2920 2926 default = false
2921 2927
2922 2928 [[templates.diff-options]]
2923 2929 suffix = "word-diff"
2924 2930 default = false
2925 2931
2926 2932 # In-core extensions
2927 2933
2928 2934 [[items]]
2929 2935 section = "blackbox"
2930 2936 name = "debug.to-stderr"
2931 2937 default = false
2932 2938 in_core_extension = "blackbox"
2933 2939
2934 2940 [[items]]
2935 2941 section = "blackbox"
2936 2942 name = "dirty"
2937 2943 default = false
2938 2944 in_core_extension = "blackbox"
2939 2945
2940 2946 [[items]]
2941 2947 section = "blackbox"
2942 2948 name = "maxsize"
2943 2949 default = "1 MB"
2944 2950 in_core_extension = "blackbox"
2945 2951
2946 2952 [[items]]
2947 2953 section = "blackbox"
2948 2954 name = "logsource"
2949 2955 default = false
2950 2956 in_core_extension = "blackbox"
2951 2957
2952 2958 [[items]]
2953 2959 section = "blackbox"
2954 2960 name = "maxfiles"
2955 2961 default = 7
2956 2962 in_core_extension = "blackbox"
2957 2963
2958 2964 [[items]]
2959 2965 section = "blackbox"
2960 2966 name = "track"
2961 2967 default-type = "lambda"
2962 2968 default = ["*"]
2963 2969 in_core_extension = "blackbox"
2964 2970
2965 2971 [[items]]
2966 2972 section = "blackbox"
2967 2973 name = "ignore"
2968 2974 default-type = "lambda"
2969 2975 default = ["chgserver", "cmdserver", "extension"]
2970 2976 in_core_extension = "blackbox"
2971 2977
2972 2978 [[items]]
2973 2979 section = "blackbox"
2974 2980 name = "date-format"
2975 2981 default = ""
2976 2982 in_core_extension = "blackbox"
@@ -1,3480 +1,3486
1 1 The Mercurial system uses a set of configuration files to control
2 2 aspects of its behavior.
3 3
4 4 Troubleshooting
5 5 ===============
6 6
7 7 If you're having problems with your configuration,
8 8 :hg:`config --source` can help you understand what is introducing
9 9 a setting into your environment.
10 10
11 11 See :hg:`help config.syntax` and :hg:`help config.files`
12 12 for information about how and where to override things.
13 13
14 14 Structure
15 15 =========
16 16
17 17 The configuration files use a simple ini-file format. A configuration
18 18 file consists of sections, led by a ``[section]`` header and followed
19 19 by ``name = value`` entries::
20 20
21 21 [ui]
22 22 username = Firstname Lastname <firstname.lastname@example.net>
23 23 verbose = True
24 24
25 25 The above entries will be referred to as ``ui.username`` and
26 26 ``ui.verbose``, respectively. See :hg:`help config.syntax`.
27 27
28 28 Files
29 29 =====
30 30
31 31 Mercurial reads configuration data from several files, if they exist.
32 32 These files do not exist by default and you will have to create the
33 33 appropriate configuration files yourself:
34 34
35 35 Local configuration is put into the per-repository ``<repo>/.hg/hgrc`` file.
36 36
37 37 Global configuration like the username setting is typically put into:
38 38
39 39 .. container:: windows
40 40
41 41 - ``%USERPROFILE%\mercurial.ini`` (on Windows)
42 42
43 43 .. container:: unix.plan9
44 44
45 45 - ``$HOME/.hgrc`` (on Unix, Plan9)
46 46
47 47 The names of these files depend on the system on which Mercurial is
48 48 installed. ``*.rc`` files from a single directory are read in
49 49 alphabetical order, later ones overriding earlier ones. Where multiple
50 50 paths are given below, settings from earlier paths override later
51 51 ones.
52 52
53 53 .. container:: verbose.unix
54 54
55 55 On Unix, the following files are consulted:
56 56
57 57 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
58 58 - ``<repo>/.hg/hgrc`` (per-repository)
59 59 - ``$HOME/.hgrc`` (per-user)
60 60 - ``${XDG_CONFIG_HOME:-$HOME/.config}/hg/hgrc`` (per-user)
61 61 - ``<install-root>/etc/mercurial/hgrc`` (per-installation)
62 62 - ``<install-root>/etc/mercurial/hgrc.d/*.rc`` (per-installation)
63 63 - ``/etc/mercurial/hgrc`` (per-system)
64 64 - ``/etc/mercurial/hgrc.d/*.rc`` (per-system)
65 65 - ``<internal>/*.rc`` (defaults)
66 66
67 67 .. container:: verbose.windows
68 68
69 69 On Windows, the following files are consulted:
70 70
71 71 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
72 72 - ``<repo>/.hg/hgrc`` (per-repository)
73 73 - ``%USERPROFILE%\.hgrc`` (per-user)
74 74 - ``%USERPROFILE%\Mercurial.ini`` (per-user)
75 75 - ``%HOME%\.hgrc`` (per-user)
76 76 - ``%HOME%\Mercurial.ini`` (per-user)
77 77 - ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` (per-system)
78 78 - ``<install-dir>\hgrc.d\*.rc`` (per-installation)
79 79 - ``<install-dir>\Mercurial.ini`` (per-installation)
80 80 - ``%PROGRAMDATA%\Mercurial\hgrc`` (per-system)
81 81 - ``%PROGRAMDATA%\Mercurial\Mercurial.ini`` (per-system)
82 82 - ``%PROGRAMDATA%\Mercurial\hgrc.d\*.rc`` (per-system)
83 83 - ``<internal>/*.rc`` (defaults)
84 84
85 85 .. note::
86 86
87 87 The registry key ``HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mercurial``
88 88 is used when running 32-bit Python on 64-bit Windows.
89 89
90 90 .. container:: verbose.plan9
91 91
92 92 On Plan9, the following files are consulted:
93 93
94 94 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
95 95 - ``<repo>/.hg/hgrc`` (per-repository)
96 96 - ``$home/lib/hgrc`` (per-user)
97 97 - ``<install-root>/lib/mercurial/hgrc`` (per-installation)
98 98 - ``<install-root>/lib/mercurial/hgrc.d/*.rc`` (per-installation)
99 99 - ``/lib/mercurial/hgrc`` (per-system)
100 100 - ``/lib/mercurial/hgrc.d/*.rc`` (per-system)
101 101 - ``<internal>/*.rc`` (defaults)
102 102
103 103 Per-repository configuration options only apply in a
104 104 particular repository. This file is not version-controlled, and
105 105 will not get transferred during a "clone" operation. Options in
106 106 this file override options in all other configuration files.
107 107
108 108 .. container:: unix.plan9
109 109
110 110 On Plan 9 and Unix, most of this file will be ignored if it doesn't
111 111 belong to a trusted user or to a trusted group. See
112 112 :hg:`help config.trusted` for more details.
113 113
114 114 Per-user configuration file(s) are for the user running Mercurial. Options
115 115 in these files apply to all Mercurial commands executed by this user in any
116 116 directory. Options in these files override per-system and per-installation
117 117 options.
118 118
119 119 Per-installation configuration files are searched for in the
120 120 directory where Mercurial is installed. ``<install-root>`` is the
121 121 parent directory of the **hg** executable (or symlink) being run.
122 122
123 123 .. container:: unix.plan9
124 124
125 125 For example, if installed in ``/shared/tools/bin/hg``, Mercurial
126 126 will look in ``/shared/tools/etc/mercurial/hgrc``. Options in these
127 127 files apply to all Mercurial commands executed by any user in any
128 128 directory.
129 129
130 130 Per-installation configuration files are for the system on
131 131 which Mercurial is running. Options in these files apply to all
132 132 Mercurial commands executed by any user in any directory. Registry
133 133 keys contain PATH-like strings, every part of which must reference
134 134 a ``Mercurial.ini`` file or be a directory where ``*.rc`` files will
135 135 be read. Mercurial checks each of these locations in the specified
136 136 order until one or more configuration files are detected.
137 137
138 138 Per-system configuration files are for the system on which Mercurial
139 139 is running. Options in these files apply to all Mercurial commands
140 140 executed by any user in any directory. Options in these files
141 141 override per-installation options.
142 142
143 143 Mercurial comes with some default configuration. The default configuration
144 144 files are installed with Mercurial and will be overwritten on upgrades. Default
145 145 configuration files should never be edited by users or administrators but can
146 146 be overridden in other configuration files. So far the directory only contains
147 147 merge tool configuration but packagers can also put other default configuration
148 148 there.
149 149
150 150 On versions 5.7 and later, if share-safe functionality is enabled,
151 151 shares will read config file of share source too.
152 152 `<share-source/.hg/hgrc>` is read before reading `<repo/.hg/hgrc>`.
153 153
154 154 For configs which should not be shared, `<repo/.hg/hgrc-not-shared>`
155 155 should be used.
156 156
157 157 Syntax
158 158 ======
159 159
160 160 A configuration file consists of sections, led by a ``[section]`` header
161 161 and followed by ``name = value`` entries (sometimes called
162 162 ``configuration keys``)::
163 163
164 164 [spam]
165 165 eggs=ham
166 166 green=
167 167 eggs
168 168
169 169 Each line contains one entry. If the lines that follow are indented,
170 170 they are treated as continuations of that entry. Leading whitespace is
171 171 removed from values. Empty lines are skipped. Lines beginning with
172 172 ``#`` or ``;`` are ignored and may be used to provide comments.
173 173
174 174 Configuration keys can be set multiple times, in which case Mercurial
175 175 will use the value that was configured last. As an example::
176 176
177 177 [spam]
178 178 eggs=large
179 179 ham=serrano
180 180 eggs=small
181 181
182 182 This would set the configuration key named ``eggs`` to ``small``.
183 183
184 184 It is also possible to define a section multiple times. A section can
185 185 be redefined on the same and/or on different configuration files. For
186 186 example::
187 187
188 188 [foo]
189 189 eggs=large
190 190 ham=serrano
191 191 eggs=small
192 192
193 193 [bar]
194 194 eggs=ham
195 195 green=
196 196 eggs
197 197
198 198 [foo]
199 199 ham=prosciutto
200 200 eggs=medium
201 201 bread=toasted
202 202
203 203 This would set the ``eggs``, ``ham``, and ``bread`` configuration keys
204 204 of the ``foo`` section to ``medium``, ``prosciutto``, and ``toasted``,
205 205 respectively. As you can see there only thing that matters is the last
206 206 value that was set for each of the configuration keys.
207 207
208 208 If a configuration key is set multiple times in different
209 209 configuration files the final value will depend on the order in which
210 210 the different configuration files are read, with settings from earlier
211 211 paths overriding later ones as described on the ``Files`` section
212 212 above.
213 213
214 214 A line of the form ``%include file`` will include ``file`` into the
215 215 current configuration file. The inclusion is recursive, which means
216 216 that included files can include other files. Filenames are relative to
217 217 the configuration file in which the ``%include`` directive is found.
218 218 Environment variables and ``~user`` constructs are expanded in
219 219 ``file``. This lets you do something like::
220 220
221 221 %include ~/.hgrc.d/$HOST.rc
222 222
223 223 to include a different configuration file on each computer you use.
224 224
225 225 A line with ``%unset name`` will remove ``name`` from the current
226 226 section, if it has been set previously.
227 227
228 228 The values are either free-form text strings, lists of text strings,
229 229 or Boolean values. Boolean values can be set to true using any of "1",
230 230 "yes", "true", or "on" and to false using "0", "no", "false", or "off"
231 231 (all case insensitive).
232 232
233 233 List values are separated by whitespace or comma, except when values are
234 234 placed in double quotation marks::
235 235
236 236 allow_read = "John Doe, PhD", brian, betty
237 237
238 238 Quotation marks can be escaped by prefixing them with a backslash. Only
239 239 quotation marks at the beginning of a word is counted as a quotation
240 240 (e.g., ``foo"bar baz`` is the list of ``foo"bar`` and ``baz``).
241 241
242 242 Sections
243 243 ========
244 244
245 245 This section describes the different sections that may appear in a
246 246 Mercurial configuration file, the purpose of each section, its possible
247 247 keys, and their possible values.
248 248
249 249 ``alias``
250 250 ---------
251 251
252 252 Defines command aliases.
253 253
254 254 Aliases allow you to define your own commands in terms of other
255 255 commands (or aliases), optionally including arguments. Positional
256 256 arguments in the form of ``$1``, ``$2``, etc. in the alias definition
257 257 are expanded by Mercurial before execution. Positional arguments not
258 258 already used by ``$N`` in the definition are put at the end of the
259 259 command to be executed.
260 260
261 261 Alias definitions consist of lines of the form::
262 262
263 263 <alias> = <command> [<argument>]...
264 264
265 265 For example, this definition::
266 266
267 267 latest = log --limit 5
268 268
269 269 creates a new command ``latest`` that shows only the five most recent
270 270 changesets. You can define subsequent aliases using earlier ones::
271 271
272 272 stable5 = latest -b stable
273 273
274 274 .. note::
275 275
276 276 It is possible to create aliases with the same names as
277 277 existing commands, which will then override the original
278 278 definitions. This is almost always a bad idea!
279 279
280 280 An alias can start with an exclamation point (``!``) to make it a
281 281 shell alias. A shell alias is executed with the shell and will let you
282 282 run arbitrary commands. As an example, ::
283 283
284 284 echo = !echo $@
285 285
286 286 will let you do ``hg echo foo`` to have ``foo`` printed in your
287 287 terminal. A better example might be::
288 288
289 289 purge = !$HG status --no-status --unknown -0 re: | xargs -0 rm -f
290 290
291 291 which will make ``hg purge`` delete all unknown files in the
292 292 repository in the same manner as the purge extension.
293 293
294 294 Positional arguments like ``$1``, ``$2``, etc. in the alias definition
295 295 expand to the command arguments. Unmatched arguments are
296 296 removed. ``$0`` expands to the alias name and ``$@`` expands to all
297 297 arguments separated by a space. ``"$@"`` (with quotes) expands to all
298 298 arguments quoted individually and separated by a space. These expansions
299 299 happen before the command is passed to the shell.
300 300
301 301 Shell aliases are executed in an environment where ``$HG`` expands to
302 302 the path of the Mercurial that was used to execute the alias. This is
303 303 useful when you want to call further Mercurial commands in a shell
304 304 alias, as was done above for the purge alias. In addition,
305 305 ``$HG_ARGS`` expands to the arguments given to Mercurial. In the ``hg
306 306 echo foo`` call above, ``$HG_ARGS`` would expand to ``echo foo``.
307 307
308 308 .. note::
309 309
310 310 Some global configuration options such as ``-R`` are
311 311 processed before shell aliases and will thus not be passed to
312 312 aliases.
313 313
314 314
315 315 ``annotate``
316 316 ------------
317 317
318 318 Settings used when displaying file annotations. All values are
319 319 Booleans and default to False. See :hg:`help config.diff` for
320 320 related options for the diff command.
321 321
322 322 ``ignorews``
323 323 Ignore white space when comparing lines.
324 324
325 325 ``ignorewseol``
326 326 Ignore white space at the end of a line when comparing lines.
327 327
328 328 ``ignorewsamount``
329 329 Ignore changes in the amount of white space.
330 330
331 331 ``ignoreblanklines``
332 332 Ignore changes whose lines are all blank.
333 333
334 334
335 335 ``auth``
336 336 --------
337 337
338 338 Authentication credentials and other authentication-like configuration
339 339 for HTTP connections. This section allows you to store usernames and
340 340 passwords for use when logging *into* HTTP servers. See
341 341 :hg:`help config.web` if you want to configure *who* can login to
342 342 your HTTP server.
343 343
344 344 The following options apply to all hosts.
345 345
346 346 ``cookiefile``
347 347 Path to a file containing HTTP cookie lines. Cookies matching a
348 348 host will be sent automatically.
349 349
350 350 The file format uses the Mozilla cookies.txt format, which defines cookies
351 351 on their own lines. Each line contains 7 fields delimited by the tab
352 352 character (domain, is_domain_cookie, path, is_secure, expires, name,
353 353 value). For more info, do an Internet search for "Netscape cookies.txt
354 354 format."
355 355
356 356 Note: the cookies parser does not handle port numbers on domains. You
357 357 will need to remove ports from the domain for the cookie to be recognized.
358 358 This could result in a cookie being disclosed to an unwanted server.
359 359
360 360 The cookies file is read-only.
361 361
362 362 Other options in this section are grouped by name and have the following
363 363 format::
364 364
365 365 <name>.<argument> = <value>
366 366
367 367 where ``<name>`` is used to group arguments into authentication
368 368 entries. Example::
369 369
370 370 foo.prefix = hg.intevation.de/mercurial
371 371 foo.username = foo
372 372 foo.password = bar
373 373 foo.schemes = http https
374 374
375 375 bar.prefix = secure.example.org
376 376 bar.key = path/to/file.key
377 377 bar.cert = path/to/file.cert
378 378 bar.schemes = https
379 379
380 380 Supported arguments:
381 381
382 382 ``prefix``
383 383 Either ``*`` or a URI prefix with or without the scheme part.
384 384 The authentication entry with the longest matching prefix is used
385 385 (where ``*`` matches everything and counts as a match of length
386 386 1). If the prefix doesn't include a scheme, the match is performed
387 387 against the URI with its scheme stripped as well, and the schemes
388 388 argument, q.v., is then subsequently consulted.
389 389
390 390 ``username``
391 391 Optional. Username to authenticate with. If not given, and the
392 392 remote site requires basic or digest authentication, the user will
393 393 be prompted for it. Environment variables are expanded in the
394 394 username letting you do ``foo.username = $USER``. If the URI
395 395 includes a username, only ``[auth]`` entries with a matching
396 396 username or without a username will be considered.
397 397
398 398 ``password``
399 399 Optional. Password to authenticate with. If not given, and the
400 400 remote site requires basic or digest authentication, the user
401 401 will be prompted for it.
402 402
403 403 ``key``
404 404 Optional. PEM encoded client certificate key file. Environment
405 405 variables are expanded in the filename.
406 406
407 407 ``cert``
408 408 Optional. PEM encoded client certificate chain file. Environment
409 409 variables are expanded in the filename.
410 410
411 411 ``schemes``
412 412 Optional. Space separated list of URI schemes to use this
413 413 authentication entry with. Only used if the prefix doesn't include
414 414 a scheme. Supported schemes are http and https. They will match
415 415 static-http and static-https respectively, as well.
416 416 (default: https)
417 417
418 418 If no suitable authentication entry is found, the user is prompted
419 419 for credentials as usual if required by the remote.
420 420
421 ``censor``
422 ----------
423
424 ``policy``
425 :config-doc:`censor.policy`
426
421 427 ``cmdserver``
422 428 -------------
423 429
424 430 Controls command server settings. (ADVANCED)
425 431
426 432 ``message-encodings``
427 433 List of encodings for the ``m`` (message) channel. The first encoding
428 434 supported by the server will be selected and advertised in the hello
429 435 message. This is useful only when ``ui.message-output`` is set to
430 436 ``channel``. Supported encodings are ``cbor``.
431 437
432 438 ``shutdown-on-interrupt``
433 439 If set to false, the server's main loop will continue running after
434 440 SIGINT received. ``runcommand`` requests can still be interrupted by
435 441 SIGINT. Close the write end of the pipe to shut down the server
436 442 process gracefully.
437 443 (default: True)
438 444
439 445 ``color``
440 446 ---------
441 447
442 448 Configure the Mercurial color mode. For details about how to define your custom
443 449 effect and style see :hg:`help color`.
444 450
445 451 ``mode``
446 452 String: control the method used to output color. One of ``auto``, ``ansi``,
447 453 ``win32``, ``terminfo`` or ``debug``. In auto mode, Mercurial will
448 454 use ANSI mode by default (or win32 mode prior to Windows 10) if it detects a
449 455 terminal. Any invalid value will disable color.
450 456
451 457 ``pagermode``
452 458 String: optional override of ``color.mode`` used with pager.
453 459
454 460 On some systems, terminfo mode may cause problems when using
455 461 color with ``less -R`` as a pager program. less with the -R option
456 462 will only display ECMA-48 color codes, and terminfo mode may sometimes
457 463 emit codes that less doesn't understand. You can work around this by
458 464 either using ansi mode (or auto mode), or by using less -r (which will
459 465 pass through all terminal control codes, not just color control
460 466 codes).
461 467
462 468 On some systems (such as MSYS in Windows), the terminal may support
463 469 a different color mode than the pager program.
464 470
465 471 ``commands``
466 472 ------------
467 473
468 474 ``commit.post-status``
469 475 Show status of files in the working directory after successful commit.
470 476 (default: False)
471 477
472 478 ``merge.require-rev``
473 479 Require that the revision to merge the current commit with be specified on
474 480 the command line. If this is enabled and a revision is not specified, the
475 481 command aborts.
476 482 (default: False)
477 483
478 484 ``push.require-revs``
479 485 Require revisions to push be specified using one or more mechanisms such as
480 486 specifying them positionally on the command line, using ``-r``, ``-b``,
481 487 and/or ``-B`` on the command line, or using ``paths.<path>:pushrev`` in the
482 488 configuration. If this is enabled and revisions are not specified, the
483 489 command aborts.
484 490 (default: False)
485 491
486 492 ``resolve.confirm``
487 493 Confirm before performing action if no filename is passed.
488 494 (default: False)
489 495
490 496 ``resolve.explicit-re-merge``
491 497 Require uses of ``hg resolve`` to specify which action it should perform,
492 498 instead of re-merging files by default.
493 499 (default: False)
494 500
495 501 ``resolve.mark-check``
496 502 Determines what level of checking :hg:`resolve --mark` will perform before
497 503 marking files as resolved. Valid values are ``none`, ``warn``, and
498 504 ``abort``. ``warn`` will output a warning listing the file(s) that still
499 505 have conflict markers in them, but will still mark everything resolved.
500 506 ``abort`` will output the same warning but will not mark things as resolved.
501 507 If --all is passed and this is set to ``abort``, only a warning will be
502 508 shown (an error will not be raised).
503 509 (default: ``none``)
504 510
505 511 ``status.relative``
506 512 Make paths in :hg:`status` output relative to the current directory.
507 513 (default: False)
508 514
509 515 ``status.terse``
510 516 Default value for the --terse flag, which condenses status output.
511 517 (default: empty)
512 518
513 519 ``update.check``
514 520 Determines what level of checking :hg:`update` will perform before moving
515 521 to a destination revision. Valid values are ``abort``, ``none``,
516 522 ``linear``, and ``noconflict``.
517 523
518 524 - ``abort`` always fails if the working directory has uncommitted changes.
519 525
520 526 - ``none`` performs no checking, and may result in a merge with uncommitted changes.
521 527
522 528 - ``linear`` allows any update as long as it follows a straight line in the
523 529 revision history, and may trigger a merge with uncommitted changes.
524 530
525 531 - ``noconflict`` will allow any update which would not trigger a merge with
526 532 uncommitted changes, if any are present.
527 533
528 534 (default: ``linear``)
529 535
530 536 ``update.requiredest``
531 537 Require that the user pass a destination when running :hg:`update`.
532 538 For example, :hg:`update .::` will be allowed, but a plain :hg:`update`
533 539 will be disallowed.
534 540 (default: False)
535 541
536 542 ``committemplate``
537 543 ------------------
538 544
539 545 ``changeset``
540 546 String: configuration in this section is used as the template to
541 547 customize the text shown in the editor when committing.
542 548
543 549 In addition to pre-defined template keywords, commit log specific one
544 550 below can be used for customization:
545 551
546 552 ``extramsg``
547 553 String: Extra message (typically 'Leave message empty to abort
548 554 commit.'). This may be changed by some commands or extensions.
549 555
550 556 For example, the template configuration below shows as same text as
551 557 one shown by default::
552 558
553 559 [committemplate]
554 560 changeset = {desc}\n\n
555 561 HG: Enter commit message. Lines beginning with 'HG:' are removed.
556 562 HG: {extramsg}
557 563 HG: --
558 564 HG: user: {author}\n{ifeq(p2rev, "-1", "",
559 565 "HG: branch merge\n")
560 566 }HG: branch '{branch}'\n{if(activebookmark,
561 567 "HG: bookmark '{activebookmark}'\n") }{subrepos %
562 568 "HG: subrepo {subrepo}\n" }{file_adds %
563 569 "HG: added {file}\n" }{file_mods %
564 570 "HG: changed {file}\n" }{file_dels %
565 571 "HG: removed {file}\n" }{if(files, "",
566 572 "HG: no files changed\n")}
567 573
568 574 ``diff()``
569 575 String: show the diff (see :hg:`help templates` for detail)
570 576
571 577 Sometimes it is helpful to show the diff of the changeset in the editor without
572 578 having to prefix 'HG: ' to each line so that highlighting works correctly. For
573 579 this, Mercurial provides a special string which will ignore everything below
574 580 it::
575 581
576 582 HG: ------------------------ >8 ------------------------
577 583
578 584 For example, the template configuration below will show the diff below the
579 585 extra message::
580 586
581 587 [committemplate]
582 588 changeset = {desc}\n\n
583 589 HG: Enter commit message. Lines beginning with 'HG:' are removed.
584 590 HG: {extramsg}
585 591 HG: ------------------------ >8 ------------------------
586 592 HG: Do not touch the line above.
587 593 HG: Everything below will be removed.
588 594 {diff()}
589 595
590 596 .. note::
591 597
592 598 For some problematic encodings (see :hg:`help win32mbcs` for
593 599 detail), this customization should be configured carefully, to
594 600 avoid showing broken characters.
595 601
596 602 For example, if a multibyte character ending with backslash (0x5c) is
597 603 followed by the ASCII character 'n' in the customized template,
598 604 the sequence of backslash and 'n' is treated as line-feed unexpectedly
599 605 (and the multibyte character is broken, too).
600 606
601 607 Customized template is used for commands below (``--edit`` may be
602 608 required):
603 609
604 610 - :hg:`backout`
605 611 - :hg:`commit`
606 612 - :hg:`fetch` (for merge commit only)
607 613 - :hg:`graft`
608 614 - :hg:`histedit`
609 615 - :hg:`import`
610 616 - :hg:`qfold`, :hg:`qnew` and :hg:`qrefresh`
611 617 - :hg:`rebase`
612 618 - :hg:`shelve`
613 619 - :hg:`sign`
614 620 - :hg:`tag`
615 621 - :hg:`transplant`
616 622
617 623 Configuring items below instead of ``changeset`` allows showing
618 624 customized message only for specific actions, or showing different
619 625 messages for each action.
620 626
621 627 - ``changeset.backout`` for :hg:`backout`
622 628 - ``changeset.commit.amend.merge`` for :hg:`commit --amend` on merges
623 629 - ``changeset.commit.amend.normal`` for :hg:`commit --amend` on other
624 630 - ``changeset.commit.normal.merge`` for :hg:`commit` on merges
625 631 - ``changeset.commit.normal.normal`` for :hg:`commit` on other
626 632 - ``changeset.fetch`` for :hg:`fetch` (impling merge commit)
627 633 - ``changeset.gpg.sign`` for :hg:`sign`
628 634 - ``changeset.graft`` for :hg:`graft`
629 635 - ``changeset.histedit.edit`` for ``edit`` of :hg:`histedit`
630 636 - ``changeset.histedit.fold`` for ``fold`` of :hg:`histedit`
631 637 - ``changeset.histedit.mess`` for ``mess`` of :hg:`histedit`
632 638 - ``changeset.histedit.pick`` for ``pick`` of :hg:`histedit`
633 639 - ``changeset.import.bypass`` for :hg:`import --bypass`
634 640 - ``changeset.import.normal.merge`` for :hg:`import` on merges
635 641 - ``changeset.import.normal.normal`` for :hg:`import` on other
636 642 - ``changeset.mq.qnew`` for :hg:`qnew`
637 643 - ``changeset.mq.qfold`` for :hg:`qfold`
638 644 - ``changeset.mq.qrefresh`` for :hg:`qrefresh`
639 645 - ``changeset.rebase.collapse`` for :hg:`rebase --collapse`
640 646 - ``changeset.rebase.merge`` for :hg:`rebase` on merges
641 647 - ``changeset.rebase.normal`` for :hg:`rebase` on other
642 648 - ``changeset.shelve.shelve`` for :hg:`shelve`
643 649 - ``changeset.tag.add`` for :hg:`tag` without ``--remove``
644 650 - ``changeset.tag.remove`` for :hg:`tag --remove`
645 651 - ``changeset.transplant.merge`` for :hg:`transplant` on merges
646 652 - ``changeset.transplant.normal`` for :hg:`transplant` on other
647 653
648 654 These dot-separated lists of names are treated as hierarchical ones.
649 655 For example, ``changeset.tag.remove`` customizes the commit message
650 656 only for :hg:`tag --remove`, but ``changeset.tag`` customizes the
651 657 commit message for :hg:`tag` regardless of ``--remove`` option.
652 658
653 659 When the external editor is invoked for a commit, the corresponding
654 660 dot-separated list of names without the ``changeset.`` prefix
655 661 (e.g. ``commit.normal.normal``) is in the ``HGEDITFORM`` environment
656 662 variable.
657 663
658 664 In this section, items other than ``changeset`` can be referred from
659 665 others. For example, the configuration to list committed files up
660 666 below can be referred as ``{listupfiles}``::
661 667
662 668 [committemplate]
663 669 listupfiles = {file_adds %
664 670 "HG: added {file}\n" }{file_mods %
665 671 "HG: changed {file}\n" }{file_dels %
666 672 "HG: removed {file}\n" }{if(files, "",
667 673 "HG: no files changed\n")}
668 674
669 675 ``decode/encode``
670 676 -----------------
671 677
672 678 Filters for transforming files on checkout/checkin. This would
673 679 typically be used for newline processing or other
674 680 localization/canonicalization of files.
675 681
676 682 Filters consist of a filter pattern followed by a filter command.
677 683 Filter patterns are globs by default, rooted at the repository root.
678 684 For example, to match any file ending in ``.txt`` in the root
679 685 directory only, use the pattern ``*.txt``. To match any file ending
680 686 in ``.c`` anywhere in the repository, use the pattern ``**.c``.
681 687 For each file only the first matching filter applies.
682 688
683 689 The filter command can start with a specifier, either ``pipe:`` or
684 690 ``tempfile:``. If no specifier is given, ``pipe:`` is used by default.
685 691
686 692 A ``pipe:`` command must accept data on stdin and return the transformed
687 693 data on stdout.
688 694
689 695 Pipe example::
690 696
691 697 [encode]
692 698 # uncompress gzip files on checkin to improve delta compression
693 699 # note: not necessarily a good idea, just an example
694 700 *.gz = pipe: gunzip
695 701
696 702 [decode]
697 703 # recompress gzip files when writing them to the working dir (we
698 704 # can safely omit "pipe:", because it's the default)
699 705 *.gz = gzip
700 706
701 707 A ``tempfile:`` command is a template. The string ``INFILE`` is replaced
702 708 with the name of a temporary file that contains the data to be
703 709 filtered by the command. The string ``OUTFILE`` is replaced with the name
704 710 of an empty temporary file, where the filtered data must be written by
705 711 the command.
706 712
707 713 .. container:: windows
708 714
709 715 .. note::
710 716
711 717 The tempfile mechanism is recommended for Windows systems,
712 718 where the standard shell I/O redirection operators often have
713 719 strange effects and may corrupt the contents of your files.
714 720
715 721 This filter mechanism is used internally by the ``eol`` extension to
716 722 translate line ending characters between Windows (CRLF) and Unix (LF)
717 723 format. We suggest you use the ``eol`` extension for convenience.
718 724
719 725
720 726 ``defaults``
721 727 ------------
722 728
723 729 (defaults are deprecated. Don't use them. Use aliases instead.)
724 730
725 731 Use the ``[defaults]`` section to define command defaults, i.e. the
726 732 default options/arguments to pass to the specified commands.
727 733
728 734 The following example makes :hg:`log` run in verbose mode, and
729 735 :hg:`status` show only the modified files, by default::
730 736
731 737 [defaults]
732 738 log = -v
733 739 status = -m
734 740
735 741 The actual commands, instead of their aliases, must be used when
736 742 defining command defaults. The command defaults will also be applied
737 743 to the aliases of the commands defined.
738 744
739 745
740 746 ``diff``
741 747 --------
742 748
743 749 Settings used when displaying diffs. Everything except for ``unified``
744 750 is a Boolean and defaults to False. See :hg:`help config.annotate`
745 751 for related options for the annotate command.
746 752
747 753 ``git``
748 754 Use git extended diff format.
749 755
750 756 ``nobinary``
751 757 Omit git binary patches.
752 758
753 759 ``nodates``
754 760 Don't include dates in diff headers.
755 761
756 762 ``noprefix``
757 763 Omit 'a/' and 'b/' prefixes from filenames. Ignored in plain mode.
758 764
759 765 ``showfunc``
760 766 Show which function each change is in.
761 767
762 768 ``ignorews``
763 769 Ignore white space when comparing lines.
764 770
765 771 ``ignorewsamount``
766 772 Ignore changes in the amount of white space.
767 773
768 774 ``ignoreblanklines``
769 775 Ignore changes whose lines are all blank.
770 776
771 777 ``unified``
772 778 Number of lines of context to show.
773 779
774 780 ``word-diff``
775 781 Highlight changed words.
776 782
777 783 ``email``
778 784 ---------
779 785
780 786 Settings for extensions that send email messages.
781 787
782 788 ``from``
783 789 Optional. Email address to use in "From" header and SMTP envelope
784 790 of outgoing messages.
785 791
786 792 ``to``
787 793 Optional. Comma-separated list of recipients' email addresses.
788 794
789 795 ``cc``
790 796 Optional. Comma-separated list of carbon copy recipients'
791 797 email addresses.
792 798
793 799 ``bcc``
794 800 Optional. Comma-separated list of blind carbon copy recipients'
795 801 email addresses.
796 802
797 803 ``method``
798 804 Optional. Method to use to send email messages. If value is ``smtp``
799 805 (default), use SMTP (see the ``[smtp]`` section for configuration).
800 806 Otherwise, use as name of program to run that acts like sendmail
801 807 (takes ``-f`` option for sender, list of recipients on command line,
802 808 message on stdin). Normally, setting this to ``sendmail`` or
803 809 ``/usr/sbin/sendmail`` is enough to use sendmail to send messages.
804 810
805 811 ``charsets``
806 812 Optional. Comma-separated list of character sets considered
807 813 convenient for recipients. Addresses, headers, and parts not
808 814 containing patches of outgoing messages will be encoded in the
809 815 first character set to which conversion from local encoding
810 816 (``$HGENCODING``, ``ui.fallbackencoding``) succeeds. If correct
811 817 conversion fails, the text in question is sent as is.
812 818 (default: '')
813 819
814 820 Order of outgoing email character sets:
815 821
816 822 1. ``us-ascii``: always first, regardless of settings
817 823 2. ``email.charsets``: in order given by user
818 824 3. ``ui.fallbackencoding``: if not in email.charsets
819 825 4. ``$HGENCODING``: if not in email.charsets
820 826 5. ``utf-8``: always last, regardless of settings
821 827
822 828 Email example::
823 829
824 830 [email]
825 831 from = Joseph User <joe.user@example.com>
826 832 method = /usr/sbin/sendmail
827 833 # charsets for western Europeans
828 834 # us-ascii, utf-8 omitted, as they are tried first and last
829 835 charsets = iso-8859-1, iso-8859-15, windows-1252
830 836
831 837
832 838 ``extensions``
833 839 --------------
834 840
835 841 Mercurial has an extension mechanism for adding new features. To
836 842 enable an extension, create an entry for it in this section.
837 843
838 844 If you know that the extension is already in Python's search path,
839 845 you can give the name of the module, followed by ``=``, with nothing
840 846 after the ``=``.
841 847
842 848 Otherwise, give a name that you choose, followed by ``=``, followed by
843 849 the path to the ``.py`` file (including the file name extension) that
844 850 defines the extension.
845 851
846 852 To explicitly disable an extension that is enabled in an hgrc of
847 853 broader scope, prepend its path with ``!``, as in ``foo = !/ext/path``
848 854 or ``foo = !`` when path is not supplied.
849 855
850 856 Example for ``~/.hgrc``::
851 857
852 858 [extensions]
853 859 # (the churn extension will get loaded from Mercurial's path)
854 860 churn =
855 861 # (this extension will get loaded from the file specified)
856 862 myfeature = ~/.hgext/myfeature.py
857 863
858 864 If an extension fails to load, a warning will be issued, and Mercurial will
859 865 proceed. To enforce that an extension must be loaded, one can set the `required`
860 866 suboption in the config::
861 867
862 868 [extensions]
863 869 myfeature = ~/.hgext/myfeature.py
864 870 myfeature:required = yes
865 871
866 872 To debug extension loading issue, one can add `--traceback` to their mercurial
867 873 invocation.
868 874
869 875 A default setting can we set using the special `*` extension key::
870 876
871 877 [extensions]
872 878 *:required = yes
873 879 myfeature = ~/.hgext/myfeature.py
874 880 rebase=
875 881
876 882
877 883 ``format``
878 884 ----------
879 885
880 886 Configuration that controls the repository format. Newer format options are more
881 887 powerful, but incompatible with some older versions of Mercurial. Format options
882 888 are considered at repository initialization only. You need to make a new clone
883 889 for config changes to be taken into account.
884 890
885 891 For more details about repository format and version compatibility, see
886 892 https://www.mercurial-scm.org/wiki/MissingRequirement
887 893
888 894 ``usegeneraldelta``
889 895 Enable or disable the "generaldelta" repository format which improves
890 896 repository compression by allowing "revlog" to store deltas against
891 897 arbitrary revisions instead of the previously stored one. This provides
892 898 significant improvement for repositories with branches.
893 899
894 900 Repositories with this on-disk format require Mercurial version 1.9.
895 901
896 902 Enabled by default.
897 903
898 904 ``dotencode``
899 905 Enable or disable the "dotencode" repository format which enhances
900 906 the "fncache" repository format (which has to be enabled to use
901 907 dotencode) to avoid issues with filenames starting with "._" on
902 908 Mac OS X and spaces on Windows.
903 909
904 910 Repositories with this on-disk format require Mercurial version 1.7.
905 911
906 912 Enabled by default.
907 913
908 914 ``usefncache``
909 915 Enable or disable the "fncache" repository format which enhances
910 916 the "store" repository format (which has to be enabled to use
911 917 fncache) to allow longer filenames and avoids using Windows
912 918 reserved names, e.g. "nul".
913 919
914 920 Repositories with this on-disk format require Mercurial version 1.1.
915 921
916 922 Enabled by default.
917 923
918 924 ``use-dirstate-v2``
919 925 Enable or disable the experimental "dirstate-v2" feature. The dirstate
920 926 functionality is shared by all commands interacting with the working copy.
921 927 The new version is more robust, faster and stores more information.
922 928
923 929 The performance-improving version of this feature is currently only
924 930 implemented in Rust (see :hg:`help rust`), so people not using a version of
925 931 Mercurial compiled with the Rust parts might actually suffer some slowdown.
926 932 For this reason, such versions will by default refuse to access repositories
927 933 with "dirstate-v2" enabled.
928 934
929 935 This behavior can be adjusted via configuration: check
930 936 :hg:`help config.storage.dirstate-v2.slow-path` for details.
931 937
932 938 Repositories with this on-disk format require Mercurial 6.0 or above.
933 939
934 940 By default this format variant is disabled if the fast implementation is not
935 941 available, and enabled by default if the fast implementation is available.
936 942
937 943 To accomodate installations of Mercurial without the fast implementation,
938 944 you can downgrade your repository. To do so run the following command:
939 945
940 946 $ hg debugupgraderepo \
941 947 --run \
942 948 --config format.use-dirstate-v2=False \
943 949 --config storage.dirstate-v2.slow-path=allow
944 950
945 951 For a more comprehensive guide, see :hg:`help internals.dirstate-v2`.
946 952
947 953 ``use-dirstate-v2.automatic-upgrade-of-mismatching-repositories``
948 954 When enabled, an automatic upgrade will be triggered when a repository format
949 955 does not match its `use-dirstate-v2` config.
950 956
951 957 This is an advanced behavior that most users will not need. We recommend you
952 958 don't use this unless you are a seasoned administrator of a Mercurial install
953 959 base.
954 960
955 961 Automatic upgrade means that any process accessing the repository will
956 962 upgrade the repository format to use `dirstate-v2`. This only triggers if a
957 963 change is needed. This also applies to operations that would have been
958 964 read-only (like hg status).
959 965
960 966 If the repository cannot be locked, the automatic-upgrade operation will be
961 967 skipped. The next operation will attempt it again.
962 968
963 969 This configuration will apply for moves in any direction, either adding the
964 970 `dirstate-v2` format if `format.use-dirstate-v2=yes` or removing the
965 971 `dirstate-v2` requirement if `format.use-dirstate-v2=no`. So we recommend
966 972 setting both this value and `format.use-dirstate-v2` at the same time.
967 973
968 974 ``use-dirstate-v2.automatic-upgrade-of-mismatching-repositories:quiet``
969 975 Hide message when performing such automatic upgrade.
970 976
971 977 ``use-dirstate-tracked-hint``
972 978 Enable or disable the writing of "tracked key" file alongside the dirstate.
973 979 (default to disabled)
974 980
975 981 That "tracked-hint" can help external automations to detect changes to the
976 982 set of tracked files. (i.e the result of `hg files` or `hg status -macd`)
977 983
978 984 The tracked-hint is written in a new `.hg/dirstate-tracked-hint`. That file
979 985 contains two lines:
980 986 - the first line is the file version (currently: 1),
981 987 - the second line contains the "tracked-hint".
982 988 That file is written right after the dirstate is written.
983 989
984 990 The tracked-hint changes whenever the set of file tracked in the dirstate
985 991 changes. The general idea is:
986 992 - if the hint is identical, the set of tracked file SHOULD be identical,
987 993 - if the hint is different, the set of tracked file MIGHT be different.
988 994
989 995 The "hint is identical" case uses `SHOULD` as the dirstate and the hint file
990 996 are two distinct files and therefore that cannot be read or written to in an
991 997 atomic way. If the key is identical, nothing garantees that the dirstate is
992 998 not updated right after the hint file. This is considered a negligible
993 999 limitation for the intended usecase. It is actually possible to prevent this
994 1000 race by taking the repository lock during read operations.
995 1001
996 1002 They are two "ways" to use this feature:
997 1003
998 1004 1) monitoring changes to the `.hg/dirstate-tracked-hint`, if the file
999 1005 changes, the tracked set might have changed.
1000 1006
1001 1007 2) storing the value and comparing it to a later value.
1002 1008
1003 1009
1004 1010 ``use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories``
1005 1011 When enabled, an automatic upgrade will be triggered when a repository format
1006 1012 does not match its `use-dirstate-tracked-hint` config.
1007 1013
1008 1014 This is an advanced behavior that most users will not need. We recommend you
1009 1015 don't use this unless you are a seasoned administrator of a Mercurial install
1010 1016 base.
1011 1017
1012 1018 Automatic upgrade means that any process accessing the repository will
1013 1019 upgrade the repository format to use `dirstate-tracked-hint`. This only
1014 1020 triggers if a change is needed. This also applies to operations that would
1015 1021 have been read-only (like hg status).
1016 1022
1017 1023 If the repository cannot be locked, the automatic-upgrade operation will be
1018 1024 skipped. The next operation will attempt it again.
1019 1025
1020 1026 This configuration will apply for moves in any direction, either adding the
1021 1027 `dirstate-tracked-hint` format if `format.use-dirstate-tracked-hint=yes` or
1022 1028 removing the `dirstate-tracked-hint` requirement if
1023 1029 `format.use-dirstate-tracked-hint=no`. So we recommend setting both this
1024 1030 value and `format.use-dirstate-tracked-hint` at the same time.
1025 1031
1026 1032
1027 1033 ``use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories:quiet``
1028 1034 Hide message when performing such automatic upgrade.
1029 1035
1030 1036
1031 1037 ``use-persistent-nodemap``
1032 1038 Enable or disable the "persistent-nodemap" feature which improves
1033 1039 performance if the Rust extensions are available.
1034 1040
1035 1041 The "persistent-nodemap" persist the "node -> rev" on disk removing the
1036 1042 need to dynamically build that mapping for each Mercurial invocation. This
1037 1043 significantly reduces the startup cost of various local and server-side
1038 1044 operation for larger repositories.
1039 1045
1040 1046 The performance-improving version of this feature is currently only
1041 1047 implemented in Rust (see :hg:`help rust`), so people not using a version of
1042 1048 Mercurial compiled with the Rust parts might actually suffer some slowdown.
1043 1049 For this reason, such versions will by default refuse to access repositories
1044 1050 with "persistent-nodemap".
1045 1051
1046 1052 This behavior can be adjusted via configuration: check
1047 1053 :hg:`help config.storage.revlog.persistent-nodemap.slow-path` for details.
1048 1054
1049 1055 Repositories with this on-disk format require Mercurial 5.4 or above.
1050 1056
1051 1057 By default this format variant is disabled if the fast implementation is not
1052 1058 available, and enabled by default if the fast implementation is available.
1053 1059
1054 1060 To accomodate installations of Mercurial without the fast implementation,
1055 1061 you can downgrade your repository. To do so run the following command:
1056 1062
1057 1063 $ hg debugupgraderepo \
1058 1064 --run \
1059 1065 --config format.use-persistent-nodemap=False \
1060 1066 --config storage.revlog.persistent-nodemap.slow-path=allow
1061 1067
1062 1068 ``use-share-safe``
1063 1069 Enforce "safe" behaviors for all "shares" that access this repository.
1064 1070
1065 1071 With this feature, "shares" using this repository as a source will:
1066 1072
1067 1073 * read the source repository's configuration (`<source>/.hg/hgrc`).
1068 1074 * read and use the source repository's "requirements"
1069 1075 (except the working copy specific one).
1070 1076
1071 1077 Without this feature, "shares" using this repository as a source will:
1072 1078
1073 1079 * keep tracking the repository "requirements" in the share only, ignoring
1074 1080 the source "requirements", possibly diverging from them.
1075 1081 * ignore source repository config. This can create problems, like silently
1076 1082 ignoring important hooks.
1077 1083
1078 1084 Beware that existing shares will not be upgraded/downgraded, and by
1079 1085 default, Mercurial will refuse to interact with them until the mismatch
1080 1086 is resolved. See :hg:`help config.share.safe-mismatch.source-safe` and
1081 1087 :hg:`help config.share.safe-mismatch.source-not-safe` for details.
1082 1088
1083 1089 Introduced in Mercurial 5.7.
1084 1090
1085 1091 Enabled by default in Mercurial 6.1.
1086 1092
1087 1093 ``use-share-safe.automatic-upgrade-of-mismatching-repositories``
1088 1094 When enabled, an automatic upgrade will be triggered when a repository format
1089 1095 does not match its `use-share-safe` config.
1090 1096
1091 1097 This is an advanced behavior that most users will not need. We recommend you
1092 1098 don't use this unless you are a seasoned administrator of a Mercurial install
1093 1099 base.
1094 1100
1095 1101 Automatic upgrade means that any process accessing the repository will
1096 1102 upgrade the repository format to use `share-safe`. This only triggers if a
1097 1103 change is needed. This also applies to operation that would have been
1098 1104 read-only (like hg status).
1099 1105
1100 1106 If the repository cannot be locked, the automatic-upgrade operation will be
1101 1107 skipped. The next operation will attempt it again.
1102 1108
1103 1109 This configuration will apply for moves in any direction, either adding the
1104 1110 `share-safe` format if `format.use-share-safe=yes` or removing the
1105 1111 `share-safe` requirement if `format.use-share-safe=no`. So we recommend
1106 1112 setting both this value and `format.use-share-safe` at the same time.
1107 1113
1108 1114 ``use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet``
1109 1115 Hide message when performing such automatic upgrade.
1110 1116
1111 1117 ``usestore``
1112 1118 Enable or disable the "store" repository format which improves
1113 1119 compatibility with systems that fold case or otherwise mangle
1114 1120 filenames. Disabling this option will allow you to store longer filenames
1115 1121 in some situations at the expense of compatibility.
1116 1122
1117 1123 Repositories with this on-disk format require Mercurial version 0.9.4.
1118 1124
1119 1125 Enabled by default.
1120 1126
1121 1127 ``sparse-revlog``
1122 1128 Enable or disable the ``sparse-revlog`` delta strategy. This format improves
1123 1129 delta re-use inside revlog. For very branchy repositories, it results in a
1124 1130 smaller store. For repositories with many revisions, it also helps
1125 1131 performance (by using shortened delta chains.)
1126 1132
1127 1133 Repositories with this on-disk format require Mercurial version 4.7
1128 1134
1129 1135 Enabled by default.
1130 1136
1131 1137 ``revlog-compression``
1132 1138 Compression algorithm used by revlog. Supported values are `zlib` and
1133 1139 `zstd`. The `zlib` engine is the historical default of Mercurial. `zstd` is
1134 1140 a newer format that is usually a net win over `zlib`, operating faster at
1135 1141 better compression rates. Use `zstd` to reduce CPU usage. Multiple values
1136 1142 can be specified, the first available one will be used.
1137 1143
1138 1144 On some systems, the Mercurial installation may lack `zstd` support.
1139 1145
1140 1146 Default is `zstd` if available, `zlib` otherwise.
1141 1147
1142 1148 ``bookmarks-in-store``
1143 1149 Store bookmarks in .hg/store/. This means that bookmarks are shared when
1144 1150 using `hg share` regardless of the `-B` option.
1145 1151
1146 1152 Repositories with this on-disk format require Mercurial version 5.1.
1147 1153
1148 1154 Disabled by default.
1149 1155
1150 1156
1151 1157 ``graph``
1152 1158 ---------
1153 1159
1154 1160 Web graph view configuration. This section let you change graph
1155 1161 elements display properties by branches, for instance to make the
1156 1162 ``default`` branch stand out.
1157 1163
1158 1164 Each line has the following format::
1159 1165
1160 1166 <branch>.<argument> = <value>
1161 1167
1162 1168 where ``<branch>`` is the name of the branch being
1163 1169 customized. Example::
1164 1170
1165 1171 [graph]
1166 1172 # 2px width
1167 1173 default.width = 2
1168 1174 # red color
1169 1175 default.color = FF0000
1170 1176
1171 1177 Supported arguments:
1172 1178
1173 1179 ``width``
1174 1180 Set branch edges width in pixels.
1175 1181
1176 1182 ``color``
1177 1183 Set branch edges color in hexadecimal RGB notation.
1178 1184
1179 1185 ``hooks``
1180 1186 ---------
1181 1187
1182 1188 Commands or Python functions that get automatically executed by
1183 1189 various actions such as starting or finishing a commit. Multiple
1184 1190 hooks can be run for the same action by appending a suffix to the
1185 1191 action. Overriding a site-wide hook can be done by changing its
1186 1192 value or setting it to an empty string. Hooks can be prioritized
1187 1193 by adding a prefix of ``priority.`` to the hook name on a new line
1188 1194 and setting the priority. The default priority is 0.
1189 1195
1190 1196 Example ``.hg/hgrc``::
1191 1197
1192 1198 [hooks]
1193 1199 # update working directory after adding changesets
1194 1200 changegroup.update = hg update
1195 1201 # do not use the site-wide hook
1196 1202 incoming =
1197 1203 incoming.email = /my/email/hook
1198 1204 incoming.autobuild = /my/build/hook
1199 1205 # force autobuild hook to run before other incoming hooks
1200 1206 priority.incoming.autobuild = 1
1201 1207 ### control HGPLAIN setting when running autobuild hook
1202 1208 # HGPLAIN always set (default from Mercurial 5.7)
1203 1209 incoming.autobuild:run-with-plain = yes
1204 1210 # HGPLAIN never set
1205 1211 incoming.autobuild:run-with-plain = no
1206 1212 # HGPLAIN inherited from environment (default before Mercurial 5.7)
1207 1213 incoming.autobuild:run-with-plain = auto
1208 1214
1209 1215 Most hooks are run with environment variables set that give useful
1210 1216 additional information. For each hook below, the environment variables
1211 1217 it is passed are listed with names in the form ``$HG_foo``. The
1212 1218 ``$HG_HOOKTYPE`` and ``$HG_HOOKNAME`` variables are set for all hooks.
1213 1219 They contain the type of hook which triggered the run and the full name
1214 1220 of the hook in the config, respectively. In the example above, this will
1215 1221 be ``$HG_HOOKTYPE=incoming`` and ``$HG_HOOKNAME=incoming.email``.
1216 1222
1217 1223 .. container:: windows
1218 1224
1219 1225 Some basic Unix syntax can be enabled for portability, including ``$VAR``
1220 1226 and ``${VAR}`` style variables. A ``~`` followed by ``\`` or ``/`` will
1221 1227 be expanded to ``%USERPROFILE%`` to simulate a subset of tilde expansion
1222 1228 on Unix. To use a literal ``$`` or ``~``, it must be escaped with a back
1223 1229 slash or inside of a strong quote. Strong quotes will be replaced by
1224 1230 double quotes after processing.
1225 1231
1226 1232 This feature is enabled by adding a prefix of ``tonative.`` to the hook
1227 1233 name on a new line, and setting it to ``True``. For example::
1228 1234
1229 1235 [hooks]
1230 1236 incoming.autobuild = /my/build/hook
1231 1237 # enable translation to cmd.exe syntax for autobuild hook
1232 1238 tonative.incoming.autobuild = True
1233 1239
1234 1240 ``changegroup``
1235 1241 Run after a changegroup has been added via push, pull or unbundle. The ID of
1236 1242 the first new changeset is in ``$HG_NODE`` and last is in ``$HG_NODE_LAST``.
1237 1243 The URL from which changes came is in ``$HG_URL``.
1238 1244
1239 1245 ``commit``
1240 1246 Run after a changeset has been created in the local repository. The ID
1241 1247 of the newly created changeset is in ``$HG_NODE``. Parent changeset
1242 1248 IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1243 1249
1244 1250 ``incoming``
1245 1251 Run after a changeset has been pulled, pushed, or unbundled into
1246 1252 the local repository. The ID of the newly arrived changeset is in
1247 1253 ``$HG_NODE``. The URL that was source of the changes is in ``$HG_URL``.
1248 1254
1249 1255 ``outgoing``
1250 1256 Run after sending changes from the local repository to another. The ID of
1251 1257 first changeset sent is in ``$HG_NODE``. The source of operation is in
1252 1258 ``$HG_SOURCE``. Also see :hg:`help config.hooks.preoutgoing`.
1253 1259
1254 1260 ``post-<command>``
1255 1261 Run after successful invocations of the associated command. The
1256 1262 contents of the command line are passed as ``$HG_ARGS`` and the result
1257 1263 code in ``$HG_RESULT``. Parsed command line arguments are passed as
1258 1264 ``$HG_PATS`` and ``$HG_OPTS``. These contain string representations of
1259 1265 the python data internally passed to <command>. ``$HG_OPTS`` is a
1260 1266 dictionary of options (with unspecified options set to their defaults).
1261 1267 ``$HG_PATS`` is a list of arguments. Hook failure is ignored.
1262 1268
1263 1269 ``fail-<command>``
1264 1270 Run after a failed invocation of an associated command. The contents
1265 1271 of the command line are passed as ``$HG_ARGS``. Parsed command line
1266 1272 arguments are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain
1267 1273 string representations of the python data internally passed to
1268 1274 <command>. ``$HG_OPTS`` is a dictionary of options (with unspecified
1269 1275 options set to their defaults). ``$HG_PATS`` is a list of arguments.
1270 1276 Hook failure is ignored.
1271 1277
1272 1278 ``pre-<command>``
1273 1279 Run before executing the associated command. The contents of the
1274 1280 command line are passed as ``$HG_ARGS``. Parsed command line arguments
1275 1281 are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain string
1276 1282 representations of the data internally passed to <command>. ``$HG_OPTS``
1277 1283 is a dictionary of options (with unspecified options set to their
1278 1284 defaults). ``$HG_PATS`` is a list of arguments. If the hook returns
1279 1285 failure, the command doesn't execute and Mercurial returns the failure
1280 1286 code.
1281 1287
1282 1288 ``prechangegroup``
1283 1289 Run before a changegroup is added via push, pull or unbundle. Exit
1284 1290 status 0 allows the changegroup to proceed. A non-zero status will
1285 1291 cause the push, pull or unbundle to fail. The URL from which changes
1286 1292 will come is in ``$HG_URL``.
1287 1293
1288 1294 ``precommit``
1289 1295 Run before starting a local commit. Exit status 0 allows the
1290 1296 commit to proceed. A non-zero status will cause the commit to fail.
1291 1297 Parent changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1292 1298
1293 1299 ``prelistkeys``
1294 1300 Run before listing pushkeys (like bookmarks) in the
1295 1301 repository. A non-zero status will cause failure. The key namespace is
1296 1302 in ``$HG_NAMESPACE``.
1297 1303
1298 1304 ``preoutgoing``
1299 1305 Run before collecting changes to send from the local repository to
1300 1306 another. A non-zero status will cause failure. This lets you prevent
1301 1307 pull over HTTP or SSH. It can also prevent propagating commits (via
1302 1308 local pull, push (outbound) or bundle commands), but not completely,
1303 1309 since you can just copy files instead. The source of operation is in
1304 1310 ``$HG_SOURCE``. If "serve", the operation is happening on behalf of a remote
1305 1311 SSH or HTTP repository. If "push", "pull" or "bundle", the operation
1306 1312 is happening on behalf of a repository on same system.
1307 1313
1308 1314 ``prepushkey``
1309 1315 Run before a pushkey (like a bookmark) is added to the
1310 1316 repository. A non-zero status will cause the key to be rejected. The
1311 1317 key namespace is in ``$HG_NAMESPACE``, the key is in ``$HG_KEY``,
1312 1318 the old value (if any) is in ``$HG_OLD``, and the new value is in
1313 1319 ``$HG_NEW``.
1314 1320
1315 1321 ``pretag``
1316 1322 Run before creating a tag. Exit status 0 allows the tag to be
1317 1323 created. A non-zero status will cause the tag to fail. The ID of the
1318 1324 changeset to tag is in ``$HG_NODE``. The name of tag is in ``$HG_TAG``. The
1319 1325 tag is local if ``$HG_LOCAL=1``, or in the repository if ``$HG_LOCAL=0``.
1320 1326
1321 1327 ``pretransmit-inline-clone-bundle``
1322 1328 Run before transferring an inline clonebundle to the peer.
1323 1329 If the exit status is 0, the inline clonebundle will be allowed to be
1324 1330 transferred. A non-zero status will cause the transfer to fail.
1325 1331 The path of the inline clonebundle is in ``$HG_CLONEBUNDLEPATH``.
1326 1332
1327 1333 ``pretxnopen``
1328 1334 Run before any new repository transaction is open. The reason for the
1329 1335 transaction will be in ``$HG_TXNNAME``, and a unique identifier for the
1330 1336 transaction will be in ``$HG_TXNID``. A non-zero status will prevent the
1331 1337 transaction from being opened.
1332 1338
1333 1339 ``pretxnclose``
1334 1340 Run right before the transaction is actually finalized. Any repository change
1335 1341 will be visible to the hook program. This lets you validate the transaction
1336 1342 content or change it. Exit status 0 allows the commit to proceed. A non-zero
1337 1343 status will cause the transaction to be rolled back. The reason for the
1338 1344 transaction opening will be in ``$HG_TXNNAME``, and a unique identifier for
1339 1345 the transaction will be in ``$HG_TXNID``. The rest of the available data will
1340 1346 vary according the transaction type. Changes unbundled to the repository will
1341 1347 add ``$HG_URL`` and ``$HG_SOURCE``. New changesets will add ``$HG_NODE`` (the
1342 1348 ID of the first added changeset), ``$HG_NODE_LAST`` (the ID of the last added
1343 1349 changeset). Bookmark and phase changes will set ``$HG_BOOKMARK_MOVED`` and
1344 1350 ``$HG_PHASES_MOVED`` to ``1`` respectively. The number of new obsmarkers, if
1345 1351 any, will be in ``$HG_NEW_OBSMARKERS``, etc.
1346 1352
1347 1353 ``pretxnclose-bookmark``
1348 1354 Run right before a bookmark change is actually finalized. Any repository
1349 1355 change will be visible to the hook program. This lets you validate the
1350 1356 transaction content or change it. Exit status 0 allows the commit to
1351 1357 proceed. A non-zero status will cause the transaction to be rolled back.
1352 1358 The name of the bookmark will be available in ``$HG_BOOKMARK``, the new
1353 1359 bookmark location will be available in ``$HG_NODE`` while the previous
1354 1360 location will be available in ``$HG_OLDNODE``. In case of a bookmark
1355 1361 creation ``$HG_OLDNODE`` will be empty. In case of deletion ``$HG_NODE``
1356 1362 will be empty.
1357 1363 In addition, the reason for the transaction opening will be in
1358 1364 ``$HG_TXNNAME``, and a unique identifier for the transaction will be in
1359 1365 ``$HG_TXNID``.
1360 1366
1361 1367 ``pretxnclose-phase``
1362 1368 Run right before a phase change is actually finalized. Any repository change
1363 1369 will be visible to the hook program. This lets you validate the transaction
1364 1370 content or change it. Exit status 0 allows the commit to proceed. A non-zero
1365 1371 status will cause the transaction to be rolled back. The hook is called
1366 1372 multiple times, once for each revision affected by a phase change.
1367 1373 The affected node is available in ``$HG_NODE``, the phase in ``$HG_PHASE``
1368 1374 while the previous ``$HG_OLDPHASE``. In case of new node, ``$HG_OLDPHASE``
1369 1375 will be empty. In addition, the reason for the transaction opening will be in
1370 1376 ``$HG_TXNNAME``, and a unique identifier for the transaction will be in
1371 1377 ``$HG_TXNID``. The hook is also run for newly added revisions. In this case
1372 1378 the ``$HG_OLDPHASE`` entry will be empty.
1373 1379
1374 1380 ``txnclose``
1375 1381 Run after any repository transaction has been committed. At this
1376 1382 point, the transaction can no longer be rolled back. The hook will run
1377 1383 after the lock is released. See :hg:`help config.hooks.pretxnclose` for
1378 1384 details about available variables.
1379 1385
1380 1386 ``txnclose-bookmark``
1381 1387 Run after any bookmark change has been committed. At this point, the
1382 1388 transaction can no longer be rolled back. The hook will run after the lock
1383 1389 is released. See :hg:`help config.hooks.pretxnclose-bookmark` for details
1384 1390 about available variables.
1385 1391
1386 1392 ``txnclose-phase``
1387 1393 Run after any phase change has been committed. At this point, the
1388 1394 transaction can no longer be rolled back. The hook will run after the lock
1389 1395 is released. See :hg:`help config.hooks.pretxnclose-phase` for details about
1390 1396 available variables.
1391 1397
1392 1398 ``txnabort``
1393 1399 Run when a transaction is aborted. See :hg:`help config.hooks.pretxnclose`
1394 1400 for details about available variables.
1395 1401
1396 1402 ``pretxnchangegroup``
1397 1403 Run after a changegroup has been added via push, pull or unbundle, but before
1398 1404 the transaction has been committed. The changegroup is visible to the hook
1399 1405 program. This allows validation of incoming changes before accepting them.
1400 1406 The ID of the first new changeset is in ``$HG_NODE`` and last is in
1401 1407 ``$HG_NODE_LAST``. Exit status 0 allows the transaction to commit. A non-zero
1402 1408 status will cause the transaction to be rolled back, and the push, pull or
1403 1409 unbundle will fail. The URL that was the source of changes is in ``$HG_URL``.
1404 1410
1405 1411 ``pretxncommit``
1406 1412 Run after a changeset has been created, but before the transaction is
1407 1413 committed. The changeset is visible to the hook program. This allows
1408 1414 validation of the commit message and changes. Exit status 0 allows the
1409 1415 commit to proceed. A non-zero status will cause the transaction to
1410 1416 be rolled back. The ID of the new changeset is in ``$HG_NODE``. The parent
1411 1417 changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1412 1418
1413 1419 ``preupdate``
1414 1420 Run before updating the working directory. Exit status 0 allows
1415 1421 the update to proceed. A non-zero status will prevent the update.
1416 1422 The changeset ID of first new parent is in ``$HG_PARENT1``. If updating to a
1417 1423 merge, the ID of second new parent is in ``$HG_PARENT2``.
1418 1424
1419 1425 ``listkeys``
1420 1426 Run after listing pushkeys (like bookmarks) in the repository. The
1421 1427 key namespace is in ``$HG_NAMESPACE``. ``$HG_VALUES`` is a
1422 1428 dictionary containing the keys and values.
1423 1429
1424 1430 ``pushkey``
1425 1431 Run after a pushkey (like a bookmark) is added to the
1426 1432 repository. The key namespace is in ``$HG_NAMESPACE``, the key is in
1427 1433 ``$HG_KEY``, the old value (if any) is in ``$HG_OLD``, and the new
1428 1434 value is in ``$HG_NEW``.
1429 1435
1430 1436 ``tag``
1431 1437 Run after a tag is created. The ID of the tagged changeset is in ``$HG_NODE``.
1432 1438 The name of tag is in ``$HG_TAG``. The tag is local if ``$HG_LOCAL=1``, or in
1433 1439 the repository if ``$HG_LOCAL=0``.
1434 1440
1435 1441 ``update``
1436 1442 Run after updating the working directory. The changeset ID of first
1437 1443 new parent is in ``$HG_PARENT1``. If updating to a merge, the ID of second new
1438 1444 parent is in ``$HG_PARENT2``. If the update succeeded, ``$HG_ERROR=0``. If the
1439 1445 update failed (e.g. because conflicts were not resolved), ``$HG_ERROR=1``.
1440 1446
1441 1447 ``prelock``
1442 1448 run before the store lock is taken, mostly used for test and debug.
1443 1449
1444 1450 ``prewlock``
1445 1451 run before the working copy lock is taken, mostly used for test and debug.
1446 1452
1447 1453 .. note::
1448 1454
1449 1455 It is generally better to use standard hooks rather than the
1450 1456 generic pre- and post- command hooks, as they are guaranteed to be
1451 1457 called in the appropriate contexts for influencing transactions.
1452 1458 Also, hooks like "commit" will be called in all contexts that
1453 1459 generate a commit (e.g. tag) and not just the commit command.
1454 1460
1455 1461 .. note::
1456 1462
1457 1463 Environment variables with empty values may not be passed to
1458 1464 hooks on platforms such as Windows. As an example, ``$HG_PARENT2``
1459 1465 will have an empty value under Unix-like platforms for non-merge
1460 1466 changesets, while it will not be available at all under Windows.
1461 1467
1462 1468 The syntax for Python hooks is as follows::
1463 1469
1464 1470 hookname = python:modulename.submodule.callable
1465 1471 hookname = python:/path/to/python/module.py:callable
1466 1472
1467 1473 Python hooks are run within the Mercurial process. Each hook is
1468 1474 called with at least three keyword arguments: a ui object (keyword
1469 1475 ``ui``), a repository object (keyword ``repo``), and a ``hooktype``
1470 1476 keyword that tells what kind of hook is used. Arguments listed as
1471 1477 environment variables above are passed as keyword arguments, with no
1472 1478 ``HG_`` prefix, and names in lower case.
1473 1479
1474 1480 If a Python hook returns a "true" value or raises an exception, this
1475 1481 is treated as a failure.
1476 1482
1477 1483
1478 1484 ``hostfingerprints``
1479 1485 --------------------
1480 1486
1481 1487 (Deprecated. Use ``[hostsecurity]``'s ``fingerprints`` options instead.)
1482 1488
1483 1489 Fingerprints of the certificates of known HTTPS servers.
1484 1490
1485 1491 A HTTPS connection to a server with a fingerprint configured here will
1486 1492 only succeed if the servers certificate matches the fingerprint.
1487 1493 This is very similar to how ssh known hosts works.
1488 1494
1489 1495 The fingerprint is the SHA-1 hash value of the DER encoded certificate.
1490 1496 Multiple values can be specified (separated by spaces or commas). This can
1491 1497 be used to define both old and new fingerprints while a host transitions
1492 1498 to a new certificate.
1493 1499
1494 1500 The CA chain and web.cacerts is not used for servers with a fingerprint.
1495 1501
1496 1502 For example::
1497 1503
1498 1504 [hostfingerprints]
1499 1505 hg.intevation.de = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1500 1506 hg.intevation.org = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1501 1507
1502 1508 ``hostsecurity``
1503 1509 ----------------
1504 1510
1505 1511 Used to specify global and per-host security settings for connecting to
1506 1512 other machines.
1507 1513
1508 1514 The following options control default behavior for all hosts.
1509 1515
1510 1516 ``ciphers``
1511 1517 Defines the cryptographic ciphers to use for connections.
1512 1518
1513 1519 Value must be a valid OpenSSL Cipher List Format as documented at
1514 1520 https://www.openssl.org/docs/manmaster/apps/ciphers.html#CIPHER-LIST-FORMAT.
1515 1521
1516 1522 This setting is for advanced users only. Setting to incorrect values
1517 1523 can significantly lower connection security or decrease performance.
1518 1524 You have been warned.
1519 1525
1520 1526 This option requires Python 2.7.
1521 1527
1522 1528 ``minimumprotocol``
1523 1529 Defines the minimum channel encryption protocol to use.
1524 1530
1525 1531 By default, the highest version of TLS supported by both client and server
1526 1532 is used.
1527 1533
1528 1534 Allowed values are: ``tls1.0``, ``tls1.1``, ``tls1.2``.
1529 1535
1530 1536 When running on an old Python version, only ``tls1.0`` is allowed since
1531 1537 old versions of Python only support up to TLS 1.0.
1532 1538
1533 1539 When running a Python that supports modern TLS versions, the default is
1534 1540 ``tls1.1``. ``tls1.0`` can still be used to allow TLS 1.0. However, this
1535 1541 weakens security and should only be used as a feature of last resort if
1536 1542 a server does not support TLS 1.1+.
1537 1543
1538 1544 Options in the ``[hostsecurity]`` section can have the form
1539 1545 ``hostname``:``setting``. This allows multiple settings to be defined on a
1540 1546 per-host basis.
1541 1547
1542 1548 The following per-host settings can be defined.
1543 1549
1544 1550 ``ciphers``
1545 1551 This behaves like ``ciphers`` as described above except it only applies
1546 1552 to the host on which it is defined.
1547 1553
1548 1554 ``fingerprints``
1549 1555 A list of hashes of the DER encoded peer/remote certificate. Values have
1550 1556 the form ``algorithm``:``fingerprint``. e.g.
1551 1557 ``sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2``.
1552 1558 In addition, colons (``:``) can appear in the fingerprint part.
1553 1559
1554 1560 The following algorithms/prefixes are supported: ``sha1``, ``sha256``,
1555 1561 ``sha512``.
1556 1562
1557 1563 Use of ``sha256`` or ``sha512`` is preferred.
1558 1564
1559 1565 If a fingerprint is specified, the CA chain is not validated for this
1560 1566 host and Mercurial will require the remote certificate to match one
1561 1567 of the fingerprints specified. This means if the server updates its
1562 1568 certificate, Mercurial will abort until a new fingerprint is defined.
1563 1569 This can provide stronger security than traditional CA-based validation
1564 1570 at the expense of convenience.
1565 1571
1566 1572 This option takes precedence over ``verifycertsfile``.
1567 1573
1568 1574 ``minimumprotocol``
1569 1575 This behaves like ``minimumprotocol`` as described above except it
1570 1576 only applies to the host on which it is defined.
1571 1577
1572 1578 ``verifycertsfile``
1573 1579 Path to file a containing a list of PEM encoded certificates used to
1574 1580 verify the server certificate. Environment variables and ``~user``
1575 1581 constructs are expanded in the filename.
1576 1582
1577 1583 The server certificate or the certificate's certificate authority (CA)
1578 1584 must match a certificate from this file or certificate verification
1579 1585 will fail and connections to the server will be refused.
1580 1586
1581 1587 If defined, only certificates provided by this file will be used:
1582 1588 ``web.cacerts`` and any system/default certificates will not be
1583 1589 used.
1584 1590
1585 1591 This option has no effect if the per-host ``fingerprints`` option
1586 1592 is set.
1587 1593
1588 1594 The format of the file is as follows::
1589 1595
1590 1596 -----BEGIN CERTIFICATE-----
1591 1597 ... (certificate in base64 PEM encoding) ...
1592 1598 -----END CERTIFICATE-----
1593 1599 -----BEGIN CERTIFICATE-----
1594 1600 ... (certificate in base64 PEM encoding) ...
1595 1601 -----END CERTIFICATE-----
1596 1602
1597 1603 For example::
1598 1604
1599 1605 [hostsecurity]
1600 1606 hg.example.com:fingerprints = sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
1601 1607 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
1602 1608 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
1603 1609 foo.example.com:verifycertsfile = /etc/ssl/trusted-ca-certs.pem
1604 1610
1605 1611 To change the default minimum protocol version to TLS 1.2 but to allow TLS 1.1
1606 1612 when connecting to ``hg.example.com``::
1607 1613
1608 1614 [hostsecurity]
1609 1615 minimumprotocol = tls1.2
1610 1616 hg.example.com:minimumprotocol = tls1.1
1611 1617
1612 1618 ``http_proxy``
1613 1619 --------------
1614 1620
1615 1621 Used to access web-based Mercurial repositories through a HTTP
1616 1622 proxy.
1617 1623
1618 1624 ``host``
1619 1625 Host name and (optional) port of the proxy server, for example
1620 1626 "myproxy:8000".
1621 1627
1622 1628 ``no``
1623 1629 Optional. Comma-separated list of host names that should bypass
1624 1630 the proxy.
1625 1631
1626 1632 ``passwd``
1627 1633 Optional. Password to authenticate with at the proxy server.
1628 1634
1629 1635 ``user``
1630 1636 Optional. User name to authenticate with at the proxy server.
1631 1637
1632 1638 ``always``
1633 1639 Optional. Always use the proxy, even for localhost and any entries
1634 1640 in ``http_proxy.no``. (default: False)
1635 1641
1636 1642 ``http``
1637 1643 --------
1638 1644
1639 1645 Used to configure access to Mercurial repositories via HTTP.
1640 1646
1641 1647 ``timeout``
1642 1648 If set, blocking operations will timeout after that many seconds.
1643 1649 (default: None)
1644 1650
1645 1651 ``merge``
1646 1652 ---------
1647 1653
1648 1654 This section specifies behavior during merges and updates.
1649 1655
1650 1656 ``checkignored``
1651 1657 Controls behavior when an ignored file on disk has the same name as a tracked
1652 1658 file in the changeset being merged or updated to, and has different
1653 1659 contents. Options are ``abort``, ``warn`` and ``ignore``. With ``abort``,
1654 1660 abort on such files. With ``warn``, warn on such files and back them up as
1655 1661 ``.orig``. With ``ignore``, don't print a warning and back them up as
1656 1662 ``.orig``. (default: ``abort``)
1657 1663
1658 1664 ``checkunknown``
1659 1665 Controls behavior when an unknown file that isn't ignored has the same name
1660 1666 as a tracked file in the changeset being merged or updated to, and has
1661 1667 different contents. Similar to ``merge.checkignored``, except for files that
1662 1668 are not ignored. (default: ``abort``)
1663 1669
1664 1670 ``on-failure``
1665 1671 When set to ``continue`` (the default), the merge process attempts to
1666 1672 merge all unresolved files using the merge chosen tool, regardless of
1667 1673 whether previous file merge attempts during the process succeeded or not.
1668 1674 Setting this to ``prompt`` will prompt after any merge failure continue
1669 1675 or halt the merge process. Setting this to ``halt`` will automatically
1670 1676 halt the merge process on any merge tool failure. The merge process
1671 1677 can be restarted by using the ``resolve`` command. When a merge is
1672 1678 halted, the repository is left in a normal ``unresolved`` merge state.
1673 1679 (default: ``continue``)
1674 1680
1675 1681 ``strict-capability-check``
1676 1682 Whether capabilities of internal merge tools are checked strictly
1677 1683 or not, while examining rules to decide merge tool to be used.
1678 1684 (default: False)
1679 1685
1680 1686 ``merge-patterns``
1681 1687 ------------------
1682 1688
1683 1689 This section specifies merge tools to associate with particular file
1684 1690 patterns. Tools matched here will take precedence over the default
1685 1691 merge tool. Patterns are globs by default, rooted at the repository
1686 1692 root.
1687 1693
1688 1694 Example::
1689 1695
1690 1696 [merge-patterns]
1691 1697 **.c = kdiff3
1692 1698 **.jpg = myimgmerge
1693 1699
1694 1700 ``merge-tools``
1695 1701 ---------------
1696 1702
1697 1703 This section configures external merge tools to use for file-level
1698 1704 merges. This section has likely been preconfigured at install time.
1699 1705 Use :hg:`config merge-tools` to check the existing configuration.
1700 1706 Also see :hg:`help merge-tools` for more details.
1701 1707
1702 1708 Example ``~/.hgrc``::
1703 1709
1704 1710 [merge-tools]
1705 1711 # Override stock tool location
1706 1712 kdiff3.executable = ~/bin/kdiff3
1707 1713 # Specify command line
1708 1714 kdiff3.args = $base $local $other -o $output
1709 1715 # Give higher priority
1710 1716 kdiff3.priority = 1
1711 1717
1712 1718 # Changing the priority of preconfigured tool
1713 1719 meld.priority = 0
1714 1720
1715 1721 # Disable a preconfigured tool
1716 1722 vimdiff.disabled = yes
1717 1723
1718 1724 # Define new tool
1719 1725 myHtmlTool.args = -m $local $other $base $output
1720 1726 myHtmlTool.regkey = Software\FooSoftware\HtmlMerge
1721 1727 myHtmlTool.priority = 1
1722 1728
1723 1729 Supported arguments:
1724 1730
1725 1731 ``priority``
1726 1732 The priority in which to evaluate this tool.
1727 1733 (default: 0)
1728 1734
1729 1735 ``executable``
1730 1736 Either just the name of the executable or its pathname.
1731 1737
1732 1738 .. container:: windows
1733 1739
1734 1740 On Windows, the path can use environment variables with ${ProgramFiles}
1735 1741 syntax.
1736 1742
1737 1743 (default: the tool name)
1738 1744
1739 1745 ``args``
1740 1746 The arguments to pass to the tool executable. You can refer to the
1741 1747 files being merged as well as the output file through these
1742 1748 variables: ``$base``, ``$local``, ``$other``, ``$output``.
1743 1749
1744 1750 The meaning of ``$local`` and ``$other`` can vary depending on which action is
1745 1751 being performed. During an update or merge, ``$local`` represents the original
1746 1752 state of the file, while ``$other`` represents the commit you are updating to or
1747 1753 the commit you are merging with. During a rebase, ``$local`` represents the
1748 1754 destination of the rebase, and ``$other`` represents the commit being rebased.
1749 1755
1750 1756 Some operations define custom labels to assist with identifying the revisions,
1751 1757 accessible via ``$labellocal``, ``$labelother``, and ``$labelbase``. If custom
1752 1758 labels are not available, these will be ``local``, ``other``, and ``base``,
1753 1759 respectively.
1754 1760 (default: ``$local $base $other``)
1755 1761
1756 1762 ``premerge``
1757 1763 Attempt to run internal non-interactive 3-way merge tool before
1758 1764 launching external tool. Options are ``true``, ``false``, ``keep``,
1759 1765 ``keep-merge3``, or ``keep-mergediff`` (experimental). The ``keep`` option
1760 1766 will leave markers in the file if the premerge fails. The ``keep-merge3``
1761 1767 will do the same but include information about the base of the merge in the
1762 1768 marker (see internal :merge3 in :hg:`help merge-tools`). The
1763 1769 ``keep-mergediff`` option is similar but uses a different marker style
1764 1770 (see internal :merge3 in :hg:`help merge-tools`). (default: True)
1765 1771
1766 1772 ``binary``
1767 1773 This tool can merge binary files. (default: False, unless tool
1768 1774 was selected by file pattern match)
1769 1775
1770 1776 ``symlink``
1771 1777 This tool can merge symlinks. (default: False)
1772 1778
1773 1779 ``check``
1774 1780 A list of merge success-checking options:
1775 1781
1776 1782 ``changed``
1777 1783 Ask whether merge was successful when the merged file shows no changes.
1778 1784 ``conflicts``
1779 1785 Check whether there are conflicts even though the tool reported success.
1780 1786 ``prompt``
1781 1787 Always prompt for merge success, regardless of success reported by tool.
1782 1788
1783 1789 ``fixeol``
1784 1790 Attempt to fix up EOL changes caused by the merge tool.
1785 1791 (default: False)
1786 1792
1787 1793 ``gui``
1788 1794 This tool requires a graphical interface to run. (default: False)
1789 1795
1790 1796 ``mergemarkers``
1791 1797 Controls whether the labels passed via ``$labellocal``, ``$labelother``, and
1792 1798 ``$labelbase`` are ``detailed`` (respecting ``mergemarkertemplate``) or
1793 1799 ``basic``. If ``premerge`` is ``keep`` or ``keep-merge3``, the conflict
1794 1800 markers generated during premerge will be ``detailed`` if either this option or
1795 1801 the corresponding option in the ``[ui]`` section is ``detailed``.
1796 1802 (default: ``basic``)
1797 1803
1798 1804 ``mergemarkertemplate``
1799 1805 This setting can be used to override ``mergemarker`` from the
1800 1806 ``[command-templates]`` section on a per-tool basis; this applies to the
1801 1807 ``$label``-prefixed variables and to the conflict markers that are generated
1802 1808 if ``premerge`` is ``keep` or ``keep-merge3``. See the corresponding variable
1803 1809 in ``[ui]`` for more information.
1804 1810
1805 1811 .. container:: windows
1806 1812
1807 1813 ``regkey``
1808 1814 Windows registry key which describes install location of this
1809 1815 tool. Mercurial will search for this key first under
1810 1816 ``HKEY_CURRENT_USER`` and then under ``HKEY_LOCAL_MACHINE``.
1811 1817 (default: None)
1812 1818
1813 1819 ``regkeyalt``
1814 1820 An alternate Windows registry key to try if the first key is not
1815 1821 found. The alternate key uses the same ``regname`` and ``regappend``
1816 1822 semantics of the primary key. The most common use for this key
1817 1823 is to search for 32bit applications on 64bit operating systems.
1818 1824 (default: None)
1819 1825
1820 1826 ``regname``
1821 1827 Name of value to read from specified registry key.
1822 1828 (default: the unnamed (default) value)
1823 1829
1824 1830 ``regappend``
1825 1831 String to append to the value read from the registry, typically
1826 1832 the executable name of the tool.
1827 1833 (default: None)
1828 1834
1829 1835 ``pager``
1830 1836 ---------
1831 1837
1832 1838 Setting used to control when to paginate and with what external tool. See
1833 1839 :hg:`help pager` for details.
1834 1840
1835 1841 ``pager``
1836 1842 Define the external tool used as pager.
1837 1843
1838 1844 If no pager is set, Mercurial uses the environment variable $PAGER.
1839 1845 If neither pager.pager, nor $PAGER is set, a default pager will be
1840 1846 used, typically `less` on Unix and `more` on Windows. Example::
1841 1847
1842 1848 [pager]
1843 1849 pager = less -FRX
1844 1850
1845 1851 ``ignore``
1846 1852 List of commands to disable the pager for. Example::
1847 1853
1848 1854 [pager]
1849 1855 ignore = version, help, update
1850 1856
1851 1857 ``patch``
1852 1858 ---------
1853 1859
1854 1860 Settings used when applying patches, for instance through the 'import'
1855 1861 command or with Mercurial Queues extension.
1856 1862
1857 1863 ``eol``
1858 1864 When set to 'strict' patch content and patched files end of lines
1859 1865 are preserved. When set to ``lf`` or ``crlf``, both files end of
1860 1866 lines are ignored when patching and the result line endings are
1861 1867 normalized to either LF (Unix) or CRLF (Windows). When set to
1862 1868 ``auto``, end of lines are again ignored while patching but line
1863 1869 endings in patched files are normalized to their original setting
1864 1870 on a per-file basis. If target file does not exist or has no end
1865 1871 of line, patch line endings are preserved.
1866 1872 (default: strict)
1867 1873
1868 1874 ``fuzz``
1869 1875 The number of lines of 'fuzz' to allow when applying patches. This
1870 1876 controls how much context the patcher is allowed to ignore when
1871 1877 trying to apply a patch.
1872 1878 (default: 2)
1873 1879
1874 1880 ``paths``
1875 1881 ---------
1876 1882
1877 1883 Assigns symbolic names and behavior to repositories.
1878 1884
1879 1885 Options are symbolic names defining the URL or directory that is the
1880 1886 location of the repository. Example::
1881 1887
1882 1888 [paths]
1883 1889 my_server = https://example.com/my_repo
1884 1890 local_path = /home/me/repo
1885 1891
1886 1892 These symbolic names can be used from the command line. To pull
1887 1893 from ``my_server``: :hg:`pull my_server`. To push to ``local_path``:
1888 1894 :hg:`push local_path`. You can check :hg:`help urls` for details about
1889 1895 valid URLs.
1890 1896
1891 1897 Options containing colons (``:``) denote sub-options that can influence
1892 1898 behavior for that specific path. Example::
1893 1899
1894 1900 [paths]
1895 1901 my_server = https://example.com/my_path
1896 1902 my_server:pushurl = ssh://example.com/my_path
1897 1903
1898 1904 Paths using the `path://otherpath` scheme will inherit the sub-options value from
1899 1905 the path they point to.
1900 1906
1901 1907 The following sub-options can be defined:
1902 1908
1903 1909 ``multi-urls``
1904 1910 A boolean option. When enabled the value of the `[paths]` entry will be
1905 1911 parsed as a list and the alias will resolve to multiple destination. If some
1906 1912 of the list entry use the `path://` syntax, the suboption will be inherited
1907 1913 individually.
1908 1914
1909 1915 ``pushurl``
1910 1916 The URL to use for push operations. If not defined, the location
1911 1917 defined by the path's main entry is used.
1912 1918
1913 1919 ``pushrev``
1914 1920 A revset defining which revisions to push by default.
1915 1921
1916 1922 When :hg:`push` is executed without a ``-r`` argument, the revset
1917 1923 defined by this sub-option is evaluated to determine what to push.
1918 1924
1919 1925 For example, a value of ``.`` will push the working directory's
1920 1926 revision by default.
1921 1927
1922 1928 Revsets specifying bookmarks will not result in the bookmark being
1923 1929 pushed.
1924 1930
1925 1931 ``bookmarks.mode``
1926 1932 How bookmark will be dealt during the exchange. It support the following value
1927 1933
1928 1934 - ``default``: the default behavior, local and remote bookmarks are "merged"
1929 1935 on push/pull.
1930 1936
1931 1937 - ``mirror``: when pulling, replace local bookmarks by remote bookmarks. This
1932 1938 is useful to replicate a repository, or as an optimization.
1933 1939
1934 1940 - ``ignore``: ignore bookmarks during exchange.
1935 1941 (This currently only affect pulling)
1936 1942
1937 1943 .. container:: verbose
1938 1944
1939 1945 ``pulled-delta-reuse-policy``
1940 1946 Control the policy regarding deltas sent by the remote during pulls.
1941 1947
1942 1948 This is an advanced option that non-admin users should not need to understand
1943 1949 or set. This option can be used to speed up pulls from trusted central
1944 1950 servers, or to fix-up deltas from older servers.
1945 1951
1946 1952 It supports the following values:
1947 1953
1948 1954 - ``default``: use the policy defined by
1949 1955 `storage.revlog.reuse-external-delta-parent`,
1950 1956
1951 1957 - ``no-reuse``: start a new optimal delta search for each new revision we add
1952 1958 to the repository. The deltas from the server will be reused when the base
1953 1959 it applies to is tested (this can be frequent if that base is the one and
1954 1960 unique parent of that revision). This can significantly slowdown pulls but
1955 1961 will result in an optimized storage space if the remote peer is sending poor
1956 1962 quality deltas.
1957 1963
1958 1964 - ``try-base``: try to reuse the deltas from the remote peer as long as they
1959 1965 create a valid delta-chain in the local repository. This speeds up the
1960 1966 unbundling process, but can result in sub-optimal storage space if the
1961 1967 remote peer is sending poor quality deltas.
1962 1968
1963 1969 - ``forced``: the deltas from the peer will be reused in all cases, even if
1964 1970 the resulting delta-chain is "invalid". This setting will ensure the bundle
1965 1971 is applied at minimal CPU cost, but it can result in longer delta chains
1966 1972 being created on the client, making revisions potentially slower to access
1967 1973 in the future. If you think you need this option, you should make sure you
1968 1974 are also talking to the Mercurial developer community to get confirmation.
1969 1975
1970 1976 See `hg help config.storage.revlog.reuse-external-delta-parent` for a similar
1971 1977 global option. That option defines the behavior of `default`.
1972 1978
1973 1979 The following special named paths exist:
1974 1980
1975 1981 ``default``
1976 1982 The URL or directory to use when no source or remote is specified.
1977 1983
1978 1984 :hg:`clone` will automatically define this path to the location the
1979 1985 repository was cloned from.
1980 1986
1981 1987 ``default-push``
1982 1988 (deprecated) The URL or directory for the default :hg:`push` location.
1983 1989 ``default:pushurl`` should be used instead.
1984 1990
1985 1991 ``phases``
1986 1992 ----------
1987 1993
1988 1994 Specifies default handling of phases. See :hg:`help phases` for more
1989 1995 information about working with phases.
1990 1996
1991 1997 ``publish``
1992 1998 Controls draft phase behavior when working as a server. When true,
1993 1999 pushed changesets are set to public in both client and server and
1994 2000 pulled or cloned changesets are set to public in the client.
1995 2001 (default: True)
1996 2002
1997 2003 ``new-commit``
1998 2004 Phase of newly-created commits.
1999 2005 (default: draft)
2000 2006
2001 2007 ``checksubrepos``
2002 2008 Check the phase of the current revision of each subrepository. Allowed
2003 2009 values are "ignore", "follow" and "abort". For settings other than
2004 2010 "ignore", the phase of the current revision of each subrepository is
2005 2011 checked before committing the parent repository. If any of those phases is
2006 2012 greater than the phase of the parent repository (e.g. if a subrepo is in a
2007 2013 "secret" phase while the parent repo is in "draft" phase), the commit is
2008 2014 either aborted (if checksubrepos is set to "abort") or the higher phase is
2009 2015 used for the parent repository commit (if set to "follow").
2010 2016 (default: follow)
2011 2017
2012 2018
2013 2019 ``profiling``
2014 2020 -------------
2015 2021
2016 2022 Specifies profiling type, format, and file output. Two profilers are
2017 2023 supported: an instrumenting profiler (named ``ls``), and a sampling
2018 2024 profiler (named ``stat``).
2019 2025
2020 2026 In this section description, 'profiling data' stands for the raw data
2021 2027 collected during profiling, while 'profiling report' stands for a
2022 2028 statistical text report generated from the profiling data.
2023 2029
2024 2030 ``enabled``
2025 2031 Enable the profiler.
2026 2032 (default: false)
2027 2033
2028 2034 This is equivalent to passing ``--profile`` on the command line.
2029 2035
2030 2036 ``type``
2031 2037 The type of profiler to use.
2032 2038 (default: stat)
2033 2039
2034 2040 ``ls``
2035 2041 Use Python's built-in instrumenting profiler. This profiler
2036 2042 works on all platforms, but each line number it reports is the
2037 2043 first line of a function. This restriction makes it difficult to
2038 2044 identify the expensive parts of a non-trivial function.
2039 2045 ``stat``
2040 2046 Use a statistical profiler, statprof. This profiler is most
2041 2047 useful for profiling commands that run for longer than about 0.1
2042 2048 seconds.
2043 2049
2044 2050 ``format``
2045 2051 Profiling format. Specific to the ``ls`` instrumenting profiler.
2046 2052 (default: text)
2047 2053
2048 2054 ``text``
2049 2055 Generate a profiling report. When saving to a file, it should be
2050 2056 noted that only the report is saved, and the profiling data is
2051 2057 not kept.
2052 2058 ``kcachegrind``
2053 2059 Format profiling data for kcachegrind use: when saving to a
2054 2060 file, the generated file can directly be loaded into
2055 2061 kcachegrind.
2056 2062
2057 2063 ``statformat``
2058 2064 Profiling format for the ``stat`` profiler.
2059 2065 (default: hotpath)
2060 2066
2061 2067 ``hotpath``
2062 2068 Show a tree-based display containing the hot path of execution (where
2063 2069 most time was spent).
2064 2070 ``bymethod``
2065 2071 Show a table of methods ordered by how frequently they are active.
2066 2072 ``byline``
2067 2073 Show a table of lines in files ordered by how frequently they are active.
2068 2074 ``json``
2069 2075 Render profiling data as JSON.
2070 2076
2071 2077 ``freq``
2072 2078 Sampling frequency. Specific to the ``stat`` sampling profiler.
2073 2079 (default: 1000)
2074 2080
2075 2081 ``output``
2076 2082 File path where profiling data or report should be saved. If the
2077 2083 file exists, it is replaced. (default: None, data is printed on
2078 2084 stderr)
2079 2085
2080 2086 ``sort``
2081 2087 Sort field. Specific to the ``ls`` instrumenting profiler.
2082 2088 One of ``callcount``, ``reccallcount``, ``totaltime`` and
2083 2089 ``inlinetime``.
2084 2090 (default: inlinetime)
2085 2091
2086 2092 ``time-track``
2087 2093 Control if the stat profiler track ``cpu`` or ``real`` time.
2088 2094 (default: ``cpu`` on Windows, otherwise ``real``)
2089 2095
2090 2096 ``limit``
2091 2097 Number of lines to show. Specific to the ``ls`` instrumenting profiler.
2092 2098 (default: 30)
2093 2099
2094 2100 ``nested``
2095 2101 Show at most this number of lines of drill-down info after each main entry.
2096 2102 This can help explain the difference between Total and Inline.
2097 2103 Specific to the ``ls`` instrumenting profiler.
2098 2104 (default: 0)
2099 2105
2100 2106 ``showmin``
2101 2107 Minimum fraction of samples an entry must have for it to be displayed.
2102 2108 Can be specified as a float between ``0.0`` and ``1.0`` or can have a
2103 2109 ``%`` afterwards to allow values up to ``100``. e.g. ``5%``.
2104 2110
2105 2111 Only used by the ``stat`` profiler.
2106 2112
2107 2113 For the ``hotpath`` format, default is ``0.05``.
2108 2114 For the ``chrome`` format, default is ``0.005``.
2109 2115
2110 2116 The option is unused on other formats.
2111 2117
2112 2118 ``showmax``
2113 2119 Maximum fraction of samples an entry can have before it is ignored in
2114 2120 display. Values format is the same as ``showmin``.
2115 2121
2116 2122 Only used by the ``stat`` profiler.
2117 2123
2118 2124 For the ``chrome`` format, default is ``0.999``.
2119 2125
2120 2126 The option is unused on other formats.
2121 2127
2122 2128 ``showtime``
2123 2129 Show time taken as absolute durations, in addition to percentages.
2124 2130 Only used by the ``hotpath`` format.
2125 2131 (default: true)
2126 2132
2127 2133 ``progress``
2128 2134 ------------
2129 2135
2130 2136 Mercurial commands can draw progress bars that are as informative as
2131 2137 possible. Some progress bars only offer indeterminate information, while others
2132 2138 have a definite end point.
2133 2139
2134 2140 ``debug``
2135 2141 Whether to print debug info when updating the progress bar. (default: False)
2136 2142
2137 2143 ``delay``
2138 2144 Number of seconds (float) before showing the progress bar. (default: 3)
2139 2145
2140 2146 ``changedelay``
2141 2147 Minimum delay before showing a new topic. When set to less than 3 * refresh,
2142 2148 that value will be used instead. (default: 1)
2143 2149
2144 2150 ``estimateinterval``
2145 2151 Maximum sampling interval in seconds for speed and estimated time
2146 2152 calculation. (default: 60)
2147 2153
2148 2154 ``refresh``
2149 2155 Time in seconds between refreshes of the progress bar. (default: 0.1)
2150 2156
2151 2157 ``format``
2152 2158 Format of the progress bar.
2153 2159
2154 2160 Valid entries for the format field are ``topic``, ``bar``, ``number``,
2155 2161 ``unit``, ``estimate``, ``speed``, and ``item``. ``item`` defaults to the
2156 2162 last 20 characters of the item, but this can be changed by adding either
2157 2163 ``-<num>`` which would take the last num characters, or ``+<num>`` for the
2158 2164 first num characters.
2159 2165
2160 2166 (default: topic bar number estimate)
2161 2167
2162 2168 ``width``
2163 2169 If set, the maximum width of the progress information (that is, min(width,
2164 2170 term width) will be used).
2165 2171
2166 2172 ``clear-complete``
2167 2173 Clear the progress bar after it's done. (default: True)
2168 2174
2169 2175 ``disable``
2170 2176 If true, don't show a progress bar.
2171 2177
2172 2178 ``assume-tty``
2173 2179 If true, ALWAYS show a progress bar, unless disable is given.
2174 2180
2175 2181 ``rebase``
2176 2182 ----------
2177 2183
2178 2184 ``evolution.allowdivergence``
2179 2185 Default to False, when True allow creating divergence when performing
2180 2186 rebase of obsolete changesets.
2181 2187
2182 2188 ``revsetalias``
2183 2189 ---------------
2184 2190
2185 2191 Alias definitions for revsets. See :hg:`help revsets` for details.
2186 2192
2187 2193 ``rewrite``
2188 2194 -----------
2189 2195
2190 2196 ``backup-bundle``
2191 2197 Whether to save stripped changesets to a bundle file. (default: True)
2192 2198
2193 2199 ``update-timestamp``
2194 2200 If true, updates the date and time of the changeset to current. It is only
2195 2201 applicable for `hg amend`, `hg commit --amend` and `hg uncommit` in the
2196 2202 current version.
2197 2203
2198 2204 ``empty-successor``
2199 2205
2200 2206 Control what happens with empty successors that are the result of rewrite
2201 2207 operations. If set to ``skip``, the successor is not created. If set to
2202 2208 ``keep``, the empty successor is created and kept.
2203 2209
2204 2210 Currently, only the rebase and absorb commands consider this configuration.
2205 2211 (EXPERIMENTAL)
2206 2212
2207 2213 ``rhg``
2208 2214 -------
2209 2215
2210 2216 The pure Rust fast-path for Mercurial. See `rust/README.rst` in the Mercurial repository.
2211 2217
2212 2218 ``fallback-executable``
2213 2219 Path to the executable to run in a sub-process when falling back to
2214 2220 another implementation of Mercurial.
2215 2221
2216 2222 ``fallback-immediately``
2217 2223 Fall back to ``fallback-executable`` as soon as possible, regardless of
2218 2224 the `rhg.on-unsupported` configuration. Useful for debugging, for example to
2219 2225 bypass `rhg` if the deault `hg` points to `rhg`.
2220 2226
2221 2227 Note that because this requires loading the configuration, it is possible
2222 2228 that `rhg` error out before being able to fall back.
2223 2229
2224 2230 ``ignored-extensions``
2225 2231 Controls which extensions should be ignored by `rhg`. By default, `rhg`
2226 2232 triggers the `rhg.on-unsupported` behavior any unsupported extensions.
2227 2233 Users can disable that behavior when they know that a given extension
2228 2234 does not need support from `rhg`.
2229 2235
2230 2236 Expects a list of extension names, or ``*`` to ignore all extensions.
2231 2237
2232 2238 Note: ``*:<suboption>`` is also a valid extension name for this
2233 2239 configuration option.
2234 2240 As of this writing, the only valid "global" suboption is ``required``.
2235 2241
2236 2242 ``on-unsupported``
2237 2243 Controls the behavior of `rhg` when detecting unsupported features.
2238 2244
2239 2245 Possible values are `abort` (default), `abort-silent` and `fallback`.
2240 2246
2241 2247 ``abort``
2242 2248 Print an error message describing what feature is not supported,
2243 2249 and exit with code 252
2244 2250
2245 2251 ``abort-silent``
2246 2252 Silently exit with code 252
2247 2253
2248 2254 ``fallback``
2249 2255 Try running the fallback executable with the same parameters
2250 2256 (and trace the fallback reason, use `RUST_LOG=trace` to see).
2251 2257
2252 2258 ``share``
2253 2259 ---------
2254 2260
2255 2261 ``safe-mismatch.source-safe``
2256 2262 Controls what happens when the shared repository does not use the
2257 2263 share-safe mechanism but its source repository does.
2258 2264
2259 2265 Possible values are `abort` (default), `allow`, `upgrade-abort` and
2260 2266 `upgrade-allow`.
2261 2267
2262 2268 ``abort``
2263 2269 Disallows running any command and aborts
2264 2270 ``allow``
2265 2271 Respects the feature presence in the share source
2266 2272 ``upgrade-abort``
2267 2273 Tries to upgrade the share to use share-safe; if it fails, aborts
2268 2274 ``upgrade-allow``
2269 2275 Tries to upgrade the share; if it fails, continue by
2270 2276 respecting the share source setting
2271 2277
2272 2278 Check :hg:`help config.format.use-share-safe` for details about the
2273 2279 share-safe feature.
2274 2280
2275 2281 ``safe-mismatch.source-safe:verbose-upgrade``
2276 2282 Display a message when upgrading, (default: True)
2277 2283
2278 2284 ``safe-mismatch.source-safe.warn``
2279 2285 Shows a warning on operations if the shared repository does not use
2280 2286 share-safe, but the source repository does.
2281 2287 (default: True)
2282 2288
2283 2289 ``safe-mismatch.source-not-safe``
2284 2290 Controls what happens when the shared repository uses the share-safe
2285 2291 mechanism but its source does not.
2286 2292
2287 2293 Possible values are `abort` (default), `allow`, `downgrade-abort` and
2288 2294 `downgrade-allow`.
2289 2295
2290 2296 ``abort``
2291 2297 Disallows running any command and aborts
2292 2298 ``allow``
2293 2299 Respects the feature presence in the share source
2294 2300 ``downgrade-abort``
2295 2301 Tries to downgrade the share to not use share-safe; if it fails, aborts
2296 2302 ``downgrade-allow``
2297 2303 Tries to downgrade the share to not use share-safe;
2298 2304 if it fails, continue by respecting the shared source setting
2299 2305
2300 2306 Check :hg:`help config.format.use-share-safe` for details about the
2301 2307 share-safe feature.
2302 2308
2303 2309 ``safe-mismatch.source-not-safe:verbose-upgrade``
2304 2310 Display a message when upgrading, (default: True)
2305 2311
2306 2312 ``safe-mismatch.source-not-safe.warn``
2307 2313 Shows a warning on operations if the shared repository uses share-safe,
2308 2314 but the source repository does not.
2309 2315 (default: True)
2310 2316
2311 2317 ``storage``
2312 2318 -----------
2313 2319
2314 2320 Control the strategy Mercurial uses internally to store history. Options in this
2315 2321 category impact performance and repository size.
2316 2322
2317 2323 ``revlog.issue6528.fix-incoming``
2318 2324 Version 5.8 of Mercurial had a bug leading to altering the parent of file
2319 2325 revision with copy information (or any other metadata) on exchange. This
2320 2326 leads to the copy metadata to be overlooked by various internal logic. The
2321 2327 issue was fixed in Mercurial 5.8.1.
2322 2328 (See https://bz.mercurial-scm.org/show_bug.cgi?id=6528 for details)
2323 2329
2324 2330 As a result Mercurial is now checking and fixing incoming file revisions to
2325 2331 make sure there parents are in the right order. This behavior can be
2326 2332 disabled by setting this option to `no`. This apply to revisions added
2327 2333 through push, pull, clone and unbundle.
2328 2334
2329 2335 To fix affected revisions that already exist within the repository, one can
2330 2336 use :hg:`debug-repair-issue-6528`.
2331 2337
2332 2338 .. container:: verbose
2333 2339
2334 2340 ``revlog.delta-parent-search.candidate-group-chunk-size``
2335 2341 Tune the number of delta bases the storage will consider in the
2336 2342 same "round" of search. In some very rare cases, using a smaller value
2337 2343 might result in faster processing at the possible expense of storage
2338 2344 space, while using larger values might result in slower processing at the
2339 2345 possible benefit of storage space. A value of "0" means no limitation.
2340 2346
2341 2347 default: no limitation
2342 2348
2343 2349 This is unlikely that you'll have to tune this configuration. If you think
2344 2350 you do, consider talking with the mercurial developer community about your
2345 2351 repositories.
2346 2352
2347 2353 ``revlog.mmap.index``
2348 2354 Whether to use the Operating System "memory mapping" feature (when
2349 2355 possible) to access the revlog index. This improves performance
2350 2356 and reduces memory pressure.
2351 2357
2352 2358 .. container:: verbose
2353 2359
2354 2360 ``revlog.mmap.index:size-threshold``
2355 2361
2356 2362 The size of index above which to use the "memory mapping" feature.
2357 2363
2358 2364 ``revlog.optimize-delta-parent-choice``
2359 2365 When storing a merge revision, both parents will be equally considered as
2360 2366 a possible delta base. This results in better delta selection and improved
2361 2367 revlog compression. This option is enabled by default.
2362 2368
2363 2369 Turning this option off can result in large increase of repository size for
2364 2370 repository with many merges.
2365 2371
2366 2372 ``revlog.persistent-nodemap.mmap``
2367 2373 Whether to use the Operating System "memory mapping" feature (when
2368 2374 possible) to access the persistent nodemap data. This improve performance
2369 2375 and reduce memory pressure.
2370 2376
2371 2377 Default to True.
2372 2378
2373 2379 For details on the "persistent-nodemap" feature, see:
2374 2380 :hg:`help config.format.use-persistent-nodemap`.
2375 2381
2376 2382 ``revlog.persistent-nodemap.slow-path``
2377 2383 Control the behavior of Merucrial when using a repository with "persistent"
2378 2384 nodemap with an installation of Mercurial without a fast implementation for
2379 2385 the feature:
2380 2386
2381 2387 ``allow``: Silently use the slower implementation to access the repository.
2382 2388 ``warn``: Warn, but use the slower implementation to access the repository.
2383 2389 ``abort``: Prevent access to such repositories. (This is the default)
2384 2390
2385 2391 For details on the "persistent-nodemap" feature, see:
2386 2392 :hg:`help config.format.use-persistent-nodemap`.
2387 2393
2388 2394 ``revlog.reuse-external-delta-parent``
2389 2395 Control the order in which delta parents are considered when adding new
2390 2396 revisions from an external source.
2391 2397 (typically: apply bundle from `hg pull` or `hg push`).
2392 2398
2393 2399 New revisions are usually provided as a delta against other revisions. By
2394 2400 default, Mercurial will try to reuse this delta first, therefore using the
2395 2401 same "delta parent" as the source. Directly using delta's from the source
2396 2402 reduces CPU usage and usually speeds up operation. However, in some case,
2397 2403 the source might have sub-optimal delta bases and forcing their reevaluation
2398 2404 is useful. For example, pushes from an old client could have sub-optimal
2399 2405 delta's parent that the server want to optimize. (lack of general delta, bad
2400 2406 parents, choice, lack of sparse-revlog, etc).
2401 2407
2402 2408 This option is enabled by default. Turning it off will ensure bad delta
2403 2409 parent choices from older client do not propagate to this repository, at
2404 2410 the cost of a small increase in CPU consumption.
2405 2411
2406 2412 Note: this option only control the order in which delta parents are
2407 2413 considered. Even when disabled, the existing delta from the source will be
2408 2414 reused if the same delta parent is selected.
2409 2415
2410 2416 ``revlog.reuse-external-delta``
2411 2417 Control the reuse of delta from external source.
2412 2418 (typically: apply bundle from `hg pull` or `hg push`).
2413 2419
2414 2420 New revisions are usually provided as a delta against another revision. By
2415 2421 default, Mercurial will not recompute the same delta again, trusting
2416 2422 externally provided deltas. There have been rare cases of small adjustment
2417 2423 to the diffing algorithm in the past. So in some rare case, recomputing
2418 2424 delta provided by ancient clients can provides better results. Disabling
2419 2425 this option means going through a full delta recomputation for all incoming
2420 2426 revisions. It means a large increase in CPU usage and will slow operations
2421 2427 down.
2422 2428
2423 2429 This option is enabled by default. When disabled, it also disables the
2424 2430 related ``storage.revlog.reuse-external-delta-parent`` option.
2425 2431
2426 2432 ``revlog.zlib.level``
2427 2433 Zlib compression level used when storing data into the repository. Accepted
2428 2434 Value range from 1 (lowest compression) to 9 (highest compression). Zlib
2429 2435 default value is 6.
2430 2436
2431 2437
2432 2438 ``revlog.zstd.level``
2433 2439 zstd compression level used when storing data into the repository. Accepted
2434 2440 Value range from 1 (lowest compression) to 22 (highest compression).
2435 2441 (default 3)
2436 2442
2437 2443 ``server``
2438 2444 ----------
2439 2445
2440 2446 Controls generic server settings.
2441 2447
2442 2448 ``bookmarks-pushkey-compat``
2443 2449 Trigger pushkey hook when being pushed bookmark updates. This config exist
2444 2450 for compatibility purpose (default to True)
2445 2451
2446 2452 If you use ``pushkey`` and ``pre-pushkey`` hooks to control bookmark
2447 2453 movement we recommend you migrate them to ``txnclose-bookmark`` and
2448 2454 ``pretxnclose-bookmark``.
2449 2455
2450 2456 ``compressionengines``
2451 2457 List of compression engines and their relative priority to advertise
2452 2458 to clients.
2453 2459
2454 2460 The order of compression engines determines their priority, the first
2455 2461 having the highest priority. If a compression engine is not listed
2456 2462 here, it won't be advertised to clients.
2457 2463
2458 2464 If not set (the default), built-in defaults are used. Run
2459 2465 :hg:`debuginstall` to list available compression engines and their
2460 2466 default wire protocol priority.
2461 2467
2462 2468 Older Mercurial clients only support zlib compression and this setting
2463 2469 has no effect for legacy clients.
2464 2470
2465 2471 ``uncompressed``
2466 2472 Whether to allow clients to clone a repository using the
2467 2473 uncompressed streaming protocol. This transfers about 40% more
2468 2474 data than a regular clone, but uses less memory and CPU on both
2469 2475 server and client. Over a LAN (100 Mbps or better) or a very fast
2470 2476 WAN, an uncompressed streaming clone is a lot faster (~10x) than a
2471 2477 regular clone. Over most WAN connections (anything slower than
2472 2478 about 6 Mbps), uncompressed streaming is slower, because of the
2473 2479 extra data transfer overhead. This mode will also temporarily hold
2474 2480 the write lock while determining what data to transfer.
2475 2481 (default: True)
2476 2482
2477 2483 ``uncompressedallowsecret``
2478 2484 Whether to allow stream clones when the repository contains secret
2479 2485 changesets. (default: False)
2480 2486
2481 2487 ``preferuncompressed``
2482 2488 When set, clients will try to use the uncompressed streaming
2483 2489 protocol. (default: False)
2484 2490
2485 2491 ``disablefullbundle``
2486 2492 When set, servers will refuse attempts to do pull-based clones.
2487 2493 If this option is set, ``preferuncompressed`` and/or clone bundles
2488 2494 are highly recommended. Partial clones will still be allowed.
2489 2495 (default: False)
2490 2496
2491 2497 ``streamunbundle``
2492 2498 When set, servers will apply data sent from the client directly,
2493 2499 otherwise it will be written to a temporary file first. This option
2494 2500 effectively prevents concurrent pushes.
2495 2501
2496 2502 ``pullbundle``
2497 2503 When set, the server will check pullbundles.manifest for bundles
2498 2504 covering the requested heads and common nodes. The first matching
2499 2505 entry will be streamed to the client.
2500 2506
2501 2507 For HTTP transport, the stream will still use zlib compression
2502 2508 for older clients.
2503 2509
2504 2510 ``concurrent-push-mode``
2505 2511 Level of allowed race condition between two pushing clients.
2506 2512
2507 2513 - 'strict': push is abort if another client touched the repository
2508 2514 while the push was preparing.
2509 2515 - 'check-related': push is only aborted if it affects head that got also
2510 2516 affected while the push was preparing. (default since 5.4)
2511 2517
2512 2518 'check-related' only takes effect for compatible clients (version
2513 2519 4.3 and later). Older clients will use 'strict'.
2514 2520
2515 2521 ``validate``
2516 2522 Whether to validate the completeness of pushed changesets by
2517 2523 checking that all new file revisions specified in manifests are
2518 2524 present. (default: False)
2519 2525
2520 2526 ``maxhttpheaderlen``
2521 2527 Instruct HTTP clients not to send request headers longer than this
2522 2528 many bytes. (default: 1024)
2523 2529
2524 2530 ``bundle1``
2525 2531 Whether to allow clients to push and pull using the legacy bundle1
2526 2532 exchange format. (default: True)
2527 2533
2528 2534 ``bundle1gd``
2529 2535 Like ``bundle1`` but only used if the repository is using the
2530 2536 *generaldelta* storage format. (default: True)
2531 2537
2532 2538 ``bundle1.push``
2533 2539 Whether to allow clients to push using the legacy bundle1 exchange
2534 2540 format. (default: True)
2535 2541
2536 2542 ``bundle1gd.push``
2537 2543 Like ``bundle1.push`` but only used if the repository is using the
2538 2544 *generaldelta* storage format. (default: True)
2539 2545
2540 2546 ``bundle1.pull``
2541 2547 Whether to allow clients to pull using the legacy bundle1 exchange
2542 2548 format. (default: True)
2543 2549
2544 2550 ``bundle1gd.pull``
2545 2551 Like ``bundle1.pull`` but only used if the repository is using the
2546 2552 *generaldelta* storage format. (default: True)
2547 2553
2548 2554 Large repositories using the *generaldelta* storage format should
2549 2555 consider setting this option because converting *generaldelta*
2550 2556 repositories to the exchange format required by the bundle1 data
2551 2557 format can consume a lot of CPU.
2552 2558
2553 2559 ``bundle2.stream``
2554 2560 Whether to allow clients to pull using the bundle2 streaming protocol.
2555 2561 (default: True)
2556 2562
2557 2563 ``zliblevel``
2558 2564 Integer between ``-1`` and ``9`` that controls the zlib compression level
2559 2565 for wire protocol commands that send zlib compressed output (notably the
2560 2566 commands that send repository history data).
2561 2567
2562 2568 The default (``-1``) uses the default zlib compression level, which is
2563 2569 likely equivalent to ``6``. ``0`` means no compression. ``9`` means
2564 2570 maximum compression.
2565 2571
2566 2572 Setting this option allows server operators to make trade-offs between
2567 2573 bandwidth and CPU used. Lowering the compression lowers CPU utilization
2568 2574 but sends more bytes to clients.
2569 2575
2570 2576 This option only impacts the HTTP server.
2571 2577
2572 2578 ``zstdlevel``
2573 2579 Integer between ``1`` and ``22`` that controls the zstd compression level
2574 2580 for wire protocol commands. ``1`` is the minimal amount of compression and
2575 2581 ``22`` is the highest amount of compression.
2576 2582
2577 2583 The default (``3``) should be significantly faster than zlib while likely
2578 2584 delivering better compression ratios.
2579 2585
2580 2586 This option only impacts the HTTP server.
2581 2587
2582 2588 See also ``server.zliblevel``.
2583 2589
2584 2590 ``view``
2585 2591 Repository filter used when exchanging revisions with the peer.
2586 2592
2587 2593 The default view (``served``) excludes secret and hidden changesets.
2588 2594 Another useful value is ``immutable`` (no draft, secret or hidden
2589 2595 changesets). (EXPERIMENTAL)
2590 2596
2591 2597 ``smtp``
2592 2598 --------
2593 2599
2594 2600 Configuration for extensions that need to send email messages.
2595 2601
2596 2602 ``host``
2597 2603 Host name of mail server, e.g. "mail.example.com".
2598 2604
2599 2605 ``port``
2600 2606 Optional. Port to connect to on mail server. (default: 465 if
2601 2607 ``tls`` is smtps; 25 otherwise)
2602 2608
2603 2609 ``tls``
2604 2610 Optional. Method to enable TLS when connecting to mail server: starttls,
2605 2611 smtps or none. (default: none)
2606 2612
2607 2613 ``username``
2608 2614 Optional. User name for authenticating with the SMTP server.
2609 2615 (default: None)
2610 2616
2611 2617 ``password``
2612 2618 Optional. Password for authenticating with the SMTP server. If not
2613 2619 specified, interactive sessions will prompt the user for a
2614 2620 password; non-interactive sessions will fail. (default: None)
2615 2621
2616 2622 ``local_hostname``
2617 2623 Optional. The hostname that the sender can use to identify
2618 2624 itself to the MTA.
2619 2625
2620 2626
2621 2627 ``subpaths``
2622 2628 ------------
2623 2629
2624 2630 Subrepository source URLs can go stale if a remote server changes name
2625 2631 or becomes temporarily unavailable. This section lets you define
2626 2632 rewrite rules of the form::
2627 2633
2628 2634 <pattern> = <replacement>
2629 2635
2630 2636 where ``pattern`` is a regular expression matching a subrepository
2631 2637 source URL and ``replacement`` is the replacement string used to
2632 2638 rewrite it. Groups can be matched in ``pattern`` and referenced in
2633 2639 ``replacements``. For instance::
2634 2640
2635 2641 http://server/(.*)-hg/ = http://hg.server/\1/
2636 2642
2637 2643 rewrites ``http://server/foo-hg/`` into ``http://hg.server/foo/``.
2638 2644
2639 2645 Relative subrepository paths are first made absolute, and the
2640 2646 rewrite rules are then applied on the full (absolute) path. If ``pattern``
2641 2647 doesn't match the full path, an attempt is made to apply it on the
2642 2648 relative path alone. The rules are applied in definition order.
2643 2649
2644 2650 ``subrepos``
2645 2651 ------------
2646 2652
2647 2653 This section contains options that control the behavior of the
2648 2654 subrepositories feature. See also :hg:`help subrepos`.
2649 2655
2650 2656 Security note: auditing in Mercurial is known to be insufficient to
2651 2657 prevent clone-time code execution with carefully constructed Git
2652 2658 subrepos. It is unknown if a similar detect is present in Subversion
2653 2659 subrepos. Both Git and Subversion subrepos are disabled by default
2654 2660 out of security concerns. These subrepo types can be enabled using
2655 2661 the respective options below.
2656 2662
2657 2663 ``allowed``
2658 2664 Whether subrepositories are allowed in the working directory.
2659 2665
2660 2666 When false, commands involving subrepositories (like :hg:`update`)
2661 2667 will fail for all subrepository types.
2662 2668 (default: true)
2663 2669
2664 2670 ``hg:allowed``
2665 2671 Whether Mercurial subrepositories are allowed in the working
2666 2672 directory. This option only has an effect if ``subrepos.allowed``
2667 2673 is true.
2668 2674 (default: true)
2669 2675
2670 2676 ``git:allowed``
2671 2677 Whether Git subrepositories are allowed in the working directory.
2672 2678 This option only has an effect if ``subrepos.allowed`` is true.
2673 2679
2674 2680 See the security note above before enabling Git subrepos.
2675 2681 (default: false)
2676 2682
2677 2683 ``svn:allowed``
2678 2684 Whether Subversion subrepositories are allowed in the working
2679 2685 directory. This option only has an effect if ``subrepos.allowed``
2680 2686 is true.
2681 2687
2682 2688 See the security note above before enabling Subversion subrepos.
2683 2689 (default: false)
2684 2690
2685 2691 ``templatealias``
2686 2692 -----------------
2687 2693
2688 2694 Alias definitions for templates. See :hg:`help templates` for details.
2689 2695
2690 2696 ``templates``
2691 2697 -------------
2692 2698
2693 2699 Use the ``[templates]`` section to define template strings.
2694 2700 See :hg:`help templates` for details.
2695 2701
2696 2702 ``trusted``
2697 2703 -----------
2698 2704
2699 2705 Mercurial will not use the settings in the
2700 2706 ``.hg/hgrc`` file from a repository if it doesn't belong to a trusted
2701 2707 user or to a trusted group, as various hgrc features allow arbitrary
2702 2708 commands to be run. This issue is often encountered when configuring
2703 2709 hooks or extensions for shared repositories or servers. However,
2704 2710 the web interface will use some safe settings from the ``[web]``
2705 2711 section.
2706 2712
2707 2713 This section specifies what users and groups are trusted. The
2708 2714 current user is always trusted. To trust everybody, list a user or a
2709 2715 group with name ``*``. These settings must be placed in an
2710 2716 *already-trusted file* to take effect, such as ``$HOME/.hgrc`` of the
2711 2717 user or service running Mercurial.
2712 2718
2713 2719 ``users``
2714 2720 Comma-separated list of trusted users.
2715 2721
2716 2722 ``groups``
2717 2723 Comma-separated list of trusted groups.
2718 2724
2719 2725
2720 2726 ``ui``
2721 2727 ------
2722 2728
2723 2729 User interface controls.
2724 2730
2725 2731 ``archivemeta``
2726 2732 Whether to include the .hg_archival.txt file containing meta data
2727 2733 (hashes for the repository base and for tip) in archives created
2728 2734 by the :hg:`archive` command or downloaded via hgweb.
2729 2735 (default: True)
2730 2736
2731 2737 ``askusername``
2732 2738 Whether to prompt for a username when committing. If True, and
2733 2739 neither ``$HGUSER`` nor ``$EMAIL`` has been specified, then the user will
2734 2740 be prompted to enter a username. If no username is entered, the
2735 2741 default ``USER@HOST`` is used instead.
2736 2742 (default: False)
2737 2743
2738 2744 ``clonebundles``
2739 2745 Whether the "clone bundles" feature is enabled.
2740 2746
2741 2747 When enabled, :hg:`clone` may download and apply a server-advertised
2742 2748 bundle file from a URL instead of using the normal exchange mechanism.
2743 2749
2744 2750 This can likely result in faster and more reliable clones.
2745 2751
2746 2752 (default: True)
2747 2753
2748 2754 ``clonebundlefallback``
2749 2755 Whether failure to apply an advertised "clone bundle" from a server
2750 2756 should result in fallback to a regular clone.
2751 2757
2752 2758 This is disabled by default because servers advertising "clone
2753 2759 bundles" often do so to reduce server load. If advertised bundles
2754 2760 start mass failing and clients automatically fall back to a regular
2755 2761 clone, this would add significant and unexpected load to the server
2756 2762 since the server is expecting clone operations to be offloaded to
2757 2763 pre-generated bundles. Failing fast (the default behavior) ensures
2758 2764 clients don't overwhelm the server when "clone bundle" application
2759 2765 fails.
2760 2766
2761 2767 (default: False)
2762 2768
2763 2769 ``clonebundleprefers``
2764 2770 Defines preferences for which "clone bundles" to use.
2765 2771
2766 2772 Servers advertising "clone bundles" may advertise multiple available
2767 2773 bundles. Each bundle may have different attributes, such as the bundle
2768 2774 type and compression format. This option is used to prefer a particular
2769 2775 bundle over another.
2770 2776
2771 2777 The following keys are defined by Mercurial:
2772 2778
2773 2779 BUNDLESPEC
2774 2780 A bundle type specifier. These are strings passed to :hg:`bundle -t`.
2775 2781 e.g. ``gzip-v2`` or ``bzip2-v1``.
2776 2782
2777 2783 COMPRESSION
2778 2784 The compression format of the bundle. e.g. ``gzip`` and ``bzip2``.
2779 2785
2780 2786 Server operators may define custom keys.
2781 2787
2782 2788 Example values: ``COMPRESSION=bzip2``,
2783 2789 ``BUNDLESPEC=gzip-v2, COMPRESSION=gzip``.
2784 2790
2785 2791 By default, the first bundle advertised by the server is used.
2786 2792
2787 2793 ``color``
2788 2794 When to colorize output. Possible value are Boolean ("yes" or "no"), or
2789 2795 "debug", or "always". (default: "yes"). "yes" will use color whenever it
2790 2796 seems possible. See :hg:`help color` for details.
2791 2797
2792 2798 ``commitsubrepos``
2793 2799 Whether to commit modified subrepositories when committing the
2794 2800 parent repository. If False and one subrepository has uncommitted
2795 2801 changes, abort the commit.
2796 2802 (default: False)
2797 2803
2798 2804 ``debug``
2799 2805 Print debugging information. (default: False)
2800 2806
2801 2807 ``editor``
2802 2808 The editor to use during a commit. (default: ``$EDITOR`` or ``vi``)
2803 2809
2804 2810 ``fallbackencoding``
2805 2811 Encoding to try if it's not possible to decode the changelog using
2806 2812 UTF-8. (default: ISO-8859-1)
2807 2813
2808 2814 ``graphnodetemplate``
2809 2815 (DEPRECATED) Use ``command-templates.graphnode`` instead.
2810 2816
2811 2817 ``ignore``
2812 2818 A file to read per-user ignore patterns from. This file should be
2813 2819 in the same format as a repository-wide .hgignore file. Filenames
2814 2820 are relative to the repository root. This option supports hook syntax,
2815 2821 so if you want to specify multiple ignore files, you can do so by
2816 2822 setting something like ``ignore.other = ~/.hgignore2``. For details
2817 2823 of the ignore file format, see the ``hgignore(5)`` man page.
2818 2824
2819 2825 ``interactive``
2820 2826 Allow to prompt the user. (default: True)
2821 2827
2822 2828 ``interface``
2823 2829 Select the default interface for interactive features (default: text).
2824 2830 Possible values are 'text' and 'curses'.
2825 2831
2826 2832 ``interface.chunkselector``
2827 2833 Select the interface for change recording (e.g. :hg:`commit -i`).
2828 2834 Possible values are 'text' and 'curses'.
2829 2835 This config overrides the interface specified by ui.interface.
2830 2836
2831 2837 ``large-file-limit``
2832 2838 Largest file size that gives no memory use warning.
2833 2839 Possible values are integers or 0 to disable the check.
2834 2840 Value is expressed in bytes by default, one can use standard units for
2835 2841 convenience (e.g. 10MB, 0.1GB, etc) (default: 10MB)
2836 2842
2837 2843 ``logtemplate``
2838 2844 (DEPRECATED) Use ``command-templates.log`` instead.
2839 2845
2840 2846 ``merge``
2841 2847 The conflict resolution program to use during a manual merge.
2842 2848 For more information on merge tools see :hg:`help merge-tools`.
2843 2849 For configuring merge tools see the ``[merge-tools]`` section.
2844 2850
2845 2851 ``mergemarkers``
2846 2852 Sets the merge conflict marker label styling. The ``detailed`` style
2847 2853 uses the ``command-templates.mergemarker`` setting to style the labels.
2848 2854 The ``basic`` style just uses 'local' and 'other' as the marker label.
2849 2855 One of ``basic`` or ``detailed``.
2850 2856 (default: ``basic``)
2851 2857
2852 2858 ``mergemarkertemplate``
2853 2859 (DEPRECATED) Use ``command-templates.mergemarker`` instead.
2854 2860
2855 2861 ``message-output``
2856 2862 Where to write status and error messages. (default: ``stdio``)
2857 2863
2858 2864 ``channel``
2859 2865 Use separate channel for structured output. (Command-server only)
2860 2866 ``stderr``
2861 2867 Everything to stderr.
2862 2868 ``stdio``
2863 2869 Status to stdout, and error to stderr.
2864 2870
2865 2871 ``origbackuppath``
2866 2872 The path to a directory used to store generated .orig files. If the path is
2867 2873 not a directory, one will be created. If set, files stored in this
2868 2874 directory have the same name as the original file and do not have a .orig
2869 2875 suffix.
2870 2876
2871 2877 ``paginate``
2872 2878 Control the pagination of command output (default: True). See :hg:`help pager`
2873 2879 for details.
2874 2880
2875 2881 ``patch``
2876 2882 An optional external tool that ``hg import`` and some extensions
2877 2883 will use for applying patches. By default Mercurial uses an
2878 2884 internal patch utility. The external tool must work as the common
2879 2885 Unix ``patch`` program. In particular, it must accept a ``-p``
2880 2886 argument to strip patch headers, a ``-d`` argument to specify the
2881 2887 current directory, a file name to patch, and a patch file to take
2882 2888 from stdin.
2883 2889
2884 2890 It is possible to specify a patch tool together with extra
2885 2891 arguments. For example, setting this option to ``patch --merge``
2886 2892 will use the ``patch`` program with its 2-way merge option.
2887 2893
2888 2894 ``portablefilenames``
2889 2895 Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``.
2890 2896 (default: ``warn``)
2891 2897
2892 2898 ``warn``
2893 2899 Print a warning message on POSIX platforms, if a file with a non-portable
2894 2900 filename is added (e.g. a file with a name that can't be created on
2895 2901 Windows because it contains reserved parts like ``AUX``, reserved
2896 2902 characters like ``:``, or would cause a case collision with an existing
2897 2903 file).
2898 2904
2899 2905 ``ignore``
2900 2906 Don't print a warning.
2901 2907
2902 2908 ``abort``
2903 2909 The command is aborted.
2904 2910
2905 2911 ``true``
2906 2912 Alias for ``warn``.
2907 2913
2908 2914 ``false``
2909 2915 Alias for ``ignore``.
2910 2916
2911 2917 .. container:: windows
2912 2918
2913 2919 On Windows, this configuration option is ignored and the command aborted.
2914 2920
2915 2921 ``pre-merge-tool-output-template``
2916 2922 (DEPRECATED) Use ``command-template.pre-merge-tool-output`` instead.
2917 2923
2918 2924 ``quiet``
2919 2925 Reduce the amount of output printed.
2920 2926 (default: False)
2921 2927
2922 2928 ``relative-paths``
2923 2929 Prefer relative paths in the UI.
2924 2930
2925 2931 ``remotecmd``
2926 2932 Remote command to use for clone/push/pull operations.
2927 2933 (default: ``hg``)
2928 2934
2929 2935 ``report_untrusted``
2930 2936 Warn if a ``.hg/hgrc`` file is ignored due to not being owned by a
2931 2937 trusted user or group.
2932 2938 (default: True)
2933 2939
2934 2940 ``slash``
2935 2941 (Deprecated. Use ``slashpath`` template filter instead.)
2936 2942
2937 2943 Display paths using a slash (``/``) as the path separator. This
2938 2944 only makes a difference on systems where the default path
2939 2945 separator is not the slash character (e.g. Windows uses the
2940 2946 backslash character (``\``)).
2941 2947 (default: False)
2942 2948
2943 2949 ``statuscopies``
2944 2950 Display copies in the status command.
2945 2951
2946 2952 ``ssh``
2947 2953 Command to use for SSH connections. (default: ``ssh``)
2948 2954
2949 2955 ``ssherrorhint``
2950 2956 A hint shown to the user in the case of SSH error (e.g.
2951 2957 ``Please see http://company/internalwiki/ssh.html``)
2952 2958
2953 2959 ``strict``
2954 2960 Require exact command names, instead of allowing unambiguous
2955 2961 abbreviations. (default: False)
2956 2962
2957 2963 ``style``
2958 2964 Name of style to use for command output.
2959 2965
2960 2966 ``supportcontact``
2961 2967 A URL where users should report a Mercurial traceback. Use this if you are a
2962 2968 large organisation with its own Mercurial deployment process and crash
2963 2969 reports should be addressed to your internal support.
2964 2970
2965 2971 ``textwidth``
2966 2972 Maximum width of help text. A longer line generated by ``hg help`` or
2967 2973 ``hg subcommand --help`` will be broken after white space to get this
2968 2974 width or the terminal width, whichever comes first.
2969 2975 A non-positive value will disable this and the terminal width will be
2970 2976 used. (default: 78)
2971 2977
2972 2978 ``timeout``
2973 2979 The timeout used when a lock is held (in seconds), a negative value
2974 2980 means no timeout. (default: 600)
2975 2981
2976 2982 ``timeout.warn``
2977 2983 Time (in seconds) before a warning is printed about held lock. A negative
2978 2984 value means no warning. (default: 0)
2979 2985
2980 2986 ``traceback``
2981 2987 Mercurial always prints a traceback when an unknown exception
2982 2988 occurs. Setting this to True will make Mercurial print a traceback
2983 2989 on all exceptions, even those recognized by Mercurial (such as
2984 2990 IOError or MemoryError). (default: False)
2985 2991
2986 2992 ``tweakdefaults``
2987 2993
2988 2994 By default Mercurial's behavior changes very little from release
2989 2995 to release, but over time the recommended config settings
2990 2996 shift. Enable this config to opt in to get automatic tweaks to
2991 2997 Mercurial's behavior over time. This config setting will have no
2992 2998 effect if ``HGPLAIN`` is set or ``HGPLAINEXCEPT`` is set and does
2993 2999 not include ``tweakdefaults``. (default: False)
2994 3000
2995 3001 It currently means::
2996 3002
2997 3003 .. tweakdefaultsmarker
2998 3004
2999 3005 ``username``
3000 3006 The committer of a changeset created when running "commit".
3001 3007 Typically a person's name and email address, e.g. ``Fred Widget
3002 3008 <fred@example.com>``. Environment variables in the
3003 3009 username are expanded.
3004 3010
3005 3011 (default: ``$EMAIL`` or ``username@hostname``. If the username in
3006 3012 hgrc is empty, e.g. if the system admin set ``username =`` in the
3007 3013 system hgrc, it has to be specified manually or in a different
3008 3014 hgrc file)
3009 3015
3010 3016 ``verbose``
3011 3017 Increase the amount of output printed. (default: False)
3012 3018
3013 3019
3014 3020 ``usage``
3015 3021 ---------
3016 3022
3017 3023 ``repository-role``
3018 3024 What this repository is used for.
3019 3025
3020 3026 This is used to adjust behavior and performance to best fit the repository purpose.
3021 3027
3022 3028 Currently recognised values are:
3023 3029
3024 3030 - ``default``: an all purpose repository
3025 3031
3026 3032 ``resources``
3027 3033 How aggressive Mercurial can be with resource usage:
3028 3034
3029 3035 Currently recognised values are:
3030 3036
3031 3037 - ``default``: the default value currently is equivalent to medium,
3032 3038
3033 3039 - ``high``: allows for higher cpu, memory and disk-space usage to improve
3034 3040 performance of some operations.
3035 3041
3036 3042 - ``medium``: aims at a moderate resource usage,
3037 3043
3038 3044 - ``low``: reduces resources usage when possible, decreasing overall
3039 3045 performance.
3040 3046
3041 3047 For finer configuration, see also `usage.resources.cpu`,
3042 3048 `usage.resources.disk` and `usage.resources.memory`.
3043 3049
3044 3050 ``resources.cpu``
3045 3051 How aggressive Mercurial can be in terms of cpu usage:
3046 3052
3047 3053 Currently recognised values are:
3048 3054
3049 3055 - ``default``: the default value, inherits the value from `usage.resources`,
3050 3056
3051 3057 - ``high``: allows for more aggressive cpu usage, improving storage quality
3052 3058 and the performance of some operations at the expense of machine load
3053 3059
3054 3060 - `medium`: aims at a moderate cpu usage,
3055 3061
3056 3062 - `low`: reduces cpu usage when possible, potentially at the expense of
3057 3063 slower operations, increased storage and exchange payload.
3058 3064
3059 3065 ``resources.disk``
3060 3066 How aggressive Mercurial can be in terms of disk usage:
3061 3067
3062 3068 Currently recognised values are::
3063 3069 - ``default``: the default value, inherits the value from `usage.resources`,
3064 3070
3065 3071 - ``high``: allows for more disk space usage where it can improve performance,
3066 3072
3067 3073 - ``medium``: aims at a moderate disk usage,
3068 3074
3069 3075 - ``low``: reduces disk usage when possible, decreasing performance in some
3070 3076 occasion.
3071 3077
3072 3078 ``resources.memory``
3073 3079 How aggressive Mercurial can be in terms of memory usage:
3074 3080
3075 3081 Currently recognised values are::
3076 3082
3077 3083 - ``default``: the default value, inherits the value from `usage.resources`,
3078 3084
3079 3085 - ``high``: allows for more aggressive memory usage to improve overall
3080 3086 performance,
3081 3087
3082 3088 - ``medium``: aims at a moderate memory usage,
3083 3089
3084 3090 - ``low``: reduces memory usage when possible at the cost of overall
3085 3091 performance.
3086 3092
3087 3093
3088 3094 ``command-templates``
3089 3095 ---------------------
3090 3096
3091 3097 Templates used for customizing the output of commands.
3092 3098
3093 3099 ``graphnode``
3094 3100 The template used to print changeset nodes in an ASCII revision graph.
3095 3101 (default: ``{graphnode}``)
3096 3102
3097 3103 ``log``
3098 3104 Template string for commands that print changesets.
3099 3105
3100 3106 ``mergemarker``
3101 3107 The template used to print the commit description next to each conflict
3102 3108 marker during merge conflicts. See :hg:`help templates` for the template
3103 3109 format.
3104 3110
3105 3111 Defaults to showing the hash, tags, branches, bookmarks, author, and
3106 3112 the first line of the commit description.
3107 3113
3108 3114 If you use non-ASCII characters in names for tags, branches, bookmarks,
3109 3115 authors, and/or commit descriptions, you must pay attention to encodings of
3110 3116 managed files. At template expansion, non-ASCII characters use the encoding
3111 3117 specified by the ``--encoding`` global option, ``HGENCODING`` or other
3112 3118 environment variables that govern your locale. If the encoding of the merge
3113 3119 markers is different from the encoding of the merged files,
3114 3120 serious problems may occur.
3115 3121
3116 3122 Can be overridden per-merge-tool, see the ``[merge-tools]`` section.
3117 3123
3118 3124 ``oneline-summary``
3119 3125 A template used by `hg rebase` and other commands for showing a one-line
3120 3126 summary of a commit. If the template configured here is longer than one
3121 3127 line, then only the first line is used.
3122 3128
3123 3129 The template can be overridden per command by defining a template in
3124 3130 `oneline-summary.<command>`, where `<command>` can be e.g. "rebase".
3125 3131
3126 3132 ``pre-merge-tool-output``
3127 3133 A template that is printed before executing an external merge tool. This can
3128 3134 be used to print out additional context that might be useful to have during
3129 3135 the conflict resolution, such as the description of the various commits
3130 3136 involved or bookmarks/tags.
3131 3137
3132 3138 Additional information is available in the ``local`, ``base``, and ``other``
3133 3139 dicts. For example: ``{local.label}``, ``{base.name}``, or
3134 3140 ``{other.islink}``.
3135 3141
3136 3142
3137 3143 ``web``
3138 3144 -------
3139 3145
3140 3146 Web interface configuration. The settings in this section apply to
3141 3147 both the builtin webserver (started by :hg:`serve`) and the script you
3142 3148 run through a webserver (``hgweb.cgi`` and the derivatives for FastCGI
3143 3149 and WSGI).
3144 3150
3145 3151 The Mercurial webserver does no authentication (it does not prompt for
3146 3152 usernames and passwords to validate *who* users are), but it does do
3147 3153 authorization (it grants or denies access for *authenticated users*
3148 3154 based on settings in this section). You must either configure your
3149 3155 webserver to do authentication for you, or disable the authorization
3150 3156 checks.
3151 3157
3152 3158 For a quick setup in a trusted environment, e.g., a private LAN, where
3153 3159 you want it to accept pushes from anybody, you can use the following
3154 3160 command line::
3155 3161
3156 3162 $ hg --config web.allow-push=* --config web.push_ssl=False serve
3157 3163
3158 3164 Note that this will allow anybody to push anything to the server and
3159 3165 that this should not be used for public servers.
3160 3166
3161 3167 The full set of options is:
3162 3168
3163 3169 ``accesslog``
3164 3170 Where to output the access log. (default: stdout)
3165 3171
3166 3172 ``address``
3167 3173 Interface address to bind to. (default: all)
3168 3174
3169 3175 ``allow-archive``
3170 3176 List of archive format (bz2, gz, zip) allowed for downloading.
3171 3177 (default: empty)
3172 3178
3173 3179 ``allowbz2``
3174 3180 (DEPRECATED) Whether to allow .tar.bz2 downloading of repository
3175 3181 revisions.
3176 3182 (default: False)
3177 3183
3178 3184 ``allowgz``
3179 3185 (DEPRECATED) Whether to allow .tar.gz downloading of repository
3180 3186 revisions.
3181 3187 (default: False)
3182 3188
3183 3189 ``allow-pull``
3184 3190 Whether to allow pulling from the repository. (default: True)
3185 3191
3186 3192 ``allow-push``
3187 3193 Whether to allow pushing to the repository. If empty or not set,
3188 3194 pushing is not allowed. If the special value ``*``, any remote
3189 3195 user can push, including unauthenticated users. Otherwise, the
3190 3196 remote user must have been authenticated, and the authenticated
3191 3197 user name must be present in this list. The contents of the
3192 3198 allow-push list are examined after the deny_push list.
3193 3199
3194 3200 ``allow_read``
3195 3201 If the user has not already been denied repository access due to
3196 3202 the contents of deny_read, this list determines whether to grant
3197 3203 repository access to the user. If this list is not empty, and the
3198 3204 user is unauthenticated or not present in the list, then access is
3199 3205 denied for the user. If the list is empty or not set, then access
3200 3206 is permitted to all users by default. Setting allow_read to the
3201 3207 special value ``*`` is equivalent to it not being set (i.e. access
3202 3208 is permitted to all users). The contents of the allow_read list are
3203 3209 examined after the deny_read list.
3204 3210
3205 3211 ``allowzip``
3206 3212 (DEPRECATED) Whether to allow .zip downloading of repository
3207 3213 revisions. This feature creates temporary files.
3208 3214 (default: False)
3209 3215
3210 3216 ``archivesubrepos``
3211 3217 Whether to recurse into subrepositories when archiving.
3212 3218 (default: False)
3213 3219
3214 3220 ``baseurl``
3215 3221 Base URL to use when publishing URLs in other locations, so
3216 3222 third-party tools like email notification hooks can construct
3217 3223 URLs. Example: ``http://hgserver/repos/``.
3218 3224
3219 3225 ``cacerts``
3220 3226 Path to file containing a list of PEM encoded certificate
3221 3227 authority certificates. Environment variables and ``~user``
3222 3228 constructs are expanded in the filename. If specified on the
3223 3229 client, then it will verify the identity of remote HTTPS servers
3224 3230 with these certificates.
3225 3231
3226 3232 To disable SSL verification temporarily, specify ``--insecure`` from
3227 3233 command line.
3228 3234
3229 3235 You can use OpenSSL's CA certificate file if your platform has
3230 3236 one. On most Linux systems this will be
3231 3237 ``/etc/ssl/certs/ca-certificates.crt``. Otherwise you will have to
3232 3238 generate this file manually. The form must be as follows::
3233 3239
3234 3240 -----BEGIN CERTIFICATE-----
3235 3241 ... (certificate in base64 PEM encoding) ...
3236 3242 -----END CERTIFICATE-----
3237 3243 -----BEGIN CERTIFICATE-----
3238 3244 ... (certificate in base64 PEM encoding) ...
3239 3245 -----END CERTIFICATE-----
3240 3246
3241 3247 ``cache``
3242 3248 Whether to support caching in hgweb. (default: True)
3243 3249
3244 3250 ``certificate``
3245 3251 Certificate to use when running :hg:`serve`.
3246 3252
3247 3253 ``collapse``
3248 3254 With ``descend`` enabled, repositories in subdirectories are shown at
3249 3255 a single level alongside repositories in the current path. With
3250 3256 ``collapse`` also enabled, repositories residing at a deeper level than
3251 3257 the current path are grouped behind navigable directory entries that
3252 3258 lead to the locations of these repositories. In effect, this setting
3253 3259 collapses each collection of repositories found within a subdirectory
3254 3260 into a single entry for that subdirectory. (default: False)
3255 3261
3256 3262 ``comparisoncontext``
3257 3263 Number of lines of context to show in side-by-side file comparison. If
3258 3264 negative or the value ``full``, whole files are shown. (default: 5)
3259 3265
3260 3266 This setting can be overridden by a ``context`` request parameter to the
3261 3267 ``comparison`` command, taking the same values.
3262 3268
3263 3269 ``contact``
3264 3270 Name or email address of the person in charge of the repository.
3265 3271 (default: ui.username or ``$EMAIL`` or "unknown" if unset or empty)
3266 3272
3267 3273 ``csp``
3268 3274 Send a ``Content-Security-Policy`` HTTP header with this value.
3269 3275
3270 3276 The value may contain a special string ``%nonce%``, which will be replaced
3271 3277 by a randomly-generated one-time use value. If the value contains
3272 3278 ``%nonce%``, ``web.cache`` will be disabled, as caching undermines the
3273 3279 one-time property of the nonce. This nonce will also be inserted into
3274 3280 ``<script>`` elements containing inline JavaScript.
3275 3281
3276 3282 Note: lots of HTML content sent by the server is derived from repository
3277 3283 data. Please consider the potential for malicious repository data to
3278 3284 "inject" itself into generated HTML content as part of your security
3279 3285 threat model.
3280 3286
3281 3287 ``deny_push``
3282 3288 Whether to deny pushing to the repository. If empty or not set,
3283 3289 push is not denied. If the special value ``*``, all remote users are
3284 3290 denied push. Otherwise, unauthenticated users are all denied, and
3285 3291 any authenticated user name present in this list is also denied. The
3286 3292 contents of the deny_push list are examined before the allow-push list.
3287 3293
3288 3294 ``deny_read``
3289 3295 Whether to deny reading/viewing of the repository. If this list is
3290 3296 not empty, unauthenticated users are all denied, and any
3291 3297 authenticated user name present in this list is also denied access to
3292 3298 the repository. If set to the special value ``*``, all remote users
3293 3299 are denied access (rarely needed ;). If deny_read is empty or not set,
3294 3300 the determination of repository access depends on the presence and
3295 3301 content of the allow_read list (see description). If both
3296 3302 deny_read and allow_read are empty or not set, then access is
3297 3303 permitted to all users by default. If the repository is being
3298 3304 served via hgwebdir, denied users will not be able to see it in
3299 3305 the list of repositories. The contents of the deny_read list have
3300 3306 priority over (are examined before) the contents of the allow_read
3301 3307 list.
3302 3308
3303 3309 ``descend``
3304 3310 hgwebdir indexes will not descend into subdirectories. Only repositories
3305 3311 directly in the current path will be shown (other repositories are still
3306 3312 available from the index corresponding to their containing path).
3307 3313
3308 3314 ``description``
3309 3315 Textual description of the repository's purpose or contents.
3310 3316 (default: "unknown")
3311 3317
3312 3318 ``encoding``
3313 3319 Character encoding name. (default: the current locale charset)
3314 3320 Example: "UTF-8".
3315 3321
3316 3322 ``errorlog``
3317 3323 Where to output the error log. (default: stderr)
3318 3324
3319 3325 ``guessmime``
3320 3326 Control MIME types for raw download of file content.
3321 3327 Set to True to let hgweb guess the content type from the file
3322 3328 extension. This will serve HTML files as ``text/html`` and might
3323 3329 allow cross-site scripting attacks when serving untrusted
3324 3330 repositories. (default: False)
3325 3331
3326 3332 ``hidden``
3327 3333 Whether to hide the repository in the hgwebdir index.
3328 3334 (default: False)
3329 3335
3330 3336 ``ipv6``
3331 3337 Whether to use IPv6. (default: False)
3332 3338
3333 3339 ``labels``
3334 3340 List of string *labels* associated with the repository.
3335 3341
3336 3342 Labels are exposed as a template keyword and can be used to customize
3337 3343 output. e.g. the ``index`` template can group or filter repositories
3338 3344 by labels and the ``summary`` template can display additional content
3339 3345 if a specific label is present.
3340 3346
3341 3347 ``logoimg``
3342 3348 File name of the logo image that some templates display on each page.
3343 3349 The file name is relative to ``staticurl``. That is, the full path to
3344 3350 the logo image is "staticurl/logoimg".
3345 3351 If unset, ``hglogo.png`` will be used.
3346 3352
3347 3353 ``logourl``
3348 3354 Base URL to use for logos. If unset, ``https://mercurial-scm.org/``
3349 3355 will be used.
3350 3356
3351 3357 ``maxchanges``
3352 3358 Maximum number of changes to list on the changelog. (default: 10)
3353 3359
3354 3360 ``maxfiles``
3355 3361 Maximum number of files to list per changeset. (default: 10)
3356 3362
3357 3363 ``maxshortchanges``
3358 3364 Maximum number of changes to list on the shortlog, graph or filelog
3359 3365 pages. (default: 60)
3360 3366
3361 3367 ``name``
3362 3368 Repository name to use in the web interface.
3363 3369 (default: current working directory)
3364 3370
3365 3371 ``port``
3366 3372 Port to listen on. (default: 8000)
3367 3373
3368 3374 ``prefix``
3369 3375 Prefix path to serve from. (default: '' (server root))
3370 3376
3371 3377 ``push_ssl``
3372 3378 Whether to require that inbound pushes be transported over SSL to
3373 3379 prevent password sniffing. (default: True)
3374 3380
3375 3381 ``refreshinterval``
3376 3382 How frequently directory listings re-scan the filesystem for new
3377 3383 repositories, in seconds. This is relevant when wildcards are used
3378 3384 to define paths. Depending on how much filesystem traversal is
3379 3385 required, refreshing may negatively impact performance.
3380 3386
3381 3387 Values less than or equal to 0 always refresh.
3382 3388 (default: 20)
3383 3389
3384 3390 ``server-header``
3385 3391 Value for HTTP ``Server`` response header.
3386 3392
3387 3393 ``static``
3388 3394 Directory where static files are served from.
3389 3395
3390 3396 ``staticurl``
3391 3397 Base URL to use for static files. If unset, static files (e.g. the
3392 3398 hgicon.png favicon) will be served by the CGI script itself. Use
3393 3399 this setting to serve them directly with the HTTP server.
3394 3400 Example: ``http://hgserver/static/``.
3395 3401
3396 3402 ``stripes``
3397 3403 How many lines a "zebra stripe" should span in multi-line output.
3398 3404 Set to 0 to disable. (default: 1)
3399 3405
3400 3406 ``style``
3401 3407 Which template map style to use. The available options are the names of
3402 3408 subdirectories in the HTML templates path. (default: ``paper``)
3403 3409 Example: ``monoblue``.
3404 3410
3405 3411 ``templates``
3406 3412 Where to find the HTML templates. The default path to the HTML templates
3407 3413 can be obtained from ``hg debuginstall``.
3408 3414
3409 3415 ``websub``
3410 3416 ----------
3411 3417
3412 3418 Web substitution filter definition. You can use this section to
3413 3419 define a set of regular expression substitution patterns which
3414 3420 let you automatically modify the hgweb server output.
3415 3421
3416 3422 The default hgweb templates only apply these substitution patterns
3417 3423 on the revision description fields. You can apply them anywhere
3418 3424 you want when you create your own templates by adding calls to the
3419 3425 "websub" filter (usually after calling the "escape" filter).
3420 3426
3421 3427 This can be used, for example, to convert issue references to links
3422 3428 to your issue tracker, or to convert "markdown-like" syntax into
3423 3429 HTML (see the examples below).
3424 3430
3425 3431 Each entry in this section names a substitution filter.
3426 3432 The value of each entry defines the substitution expression itself.
3427 3433 The websub expressions follow the old interhg extension syntax,
3428 3434 which in turn imitates the Unix sed replacement syntax::
3429 3435
3430 3436 patternname = s/SEARCH_REGEX/REPLACE_EXPRESSION/[i]
3431 3437
3432 3438 You can use any separator other than "/". The final "i" is optional
3433 3439 and indicates that the search must be case insensitive.
3434 3440
3435 3441 Examples::
3436 3442
3437 3443 [websub]
3438 3444 issues = s|issue(\d+)|<a href="http://bts.example.org/issue\1">issue\1</a>|i
3439 3445 italic = s/\b_(\S+)_\b/<i>\1<\/i>/
3440 3446 bold = s/\*\b(\S+)\b\*/<b>\1<\/b>/
3441 3447
3442 3448 ``worker``
3443 3449 ----------
3444 3450
3445 3451 Parallel master/worker configuration. We currently perform working
3446 3452 directory updates in parallel on Unix-like systems, which greatly
3447 3453 helps performance.
3448 3454
3449 3455 ``enabled``
3450 3456 Whether to enable workers code to be used.
3451 3457 (default: true)
3452 3458
3453 3459 ``numcpus``
3454 3460 Number of CPUs to use for parallel operations. A zero or
3455 3461 negative value is treated as ``use the default``.
3456 3462 (default: 4 or the number of CPUs on the system, whichever is larger)
3457 3463
3458 3464 ``backgroundclose``
3459 3465 Whether to enable closing file handles on background threads during certain
3460 3466 operations. Some platforms aren't very efficient at closing file
3461 3467 handles that have been written or appended to. By performing file closing
3462 3468 on background threads, file write rate can increase substantially.
3463 3469 (default: true on Windows, false elsewhere)
3464 3470
3465 3471 ``backgroundcloseminfilecount``
3466 3472 Minimum number of files required to trigger background file closing.
3467 3473 Operations not writing this many files won't start background close
3468 3474 threads.
3469 3475 (default: 2048)
3470 3476
3471 3477 ``backgroundclosemaxqueue``
3472 3478 The maximum number of opened file handles waiting to be closed in the
3473 3479 background. This option only has an effect if ``backgroundclose`` is
3474 3480 enabled.
3475 3481 (default: 384)
3476 3482
3477 3483 ``backgroundclosethreadcount``
3478 3484 Number of threads to process background file closes. Only relevant if
3479 3485 ``backgroundclose`` is enabled.
3480 3486 (default: 4)
General Comments 0
You need to be logged in to leave comments. Login now