##// END OF EJS Templates
add [diff] section to hgrc documentation
Benoit Boissinot -
r4011:15955d84 default
parent child Browse files
Show More
@@ -1,515 +1,531 b''
1 1 HGRC(5)
2 2 =======
3 3 Bryan O'Sullivan <bos@serpentine.com>
4 4
5 5 NAME
6 6 ----
7 7 hgrc - configuration files for Mercurial
8 8
9 9 SYNOPSIS
10 10 --------
11 11
12 12 The Mercurial system uses a set of configuration files to control
13 13 aspects of its behaviour.
14 14
15 15 FILES
16 16 -----
17 17
18 18 Mercurial reads configuration data from several files, if they exist.
19 19 The names of these files depend on the system on which Mercurial is
20 20 installed.
21 21
22 22 (Unix) <install-root>/etc/mercurial/hgrc.d/*.rc::
23 23 (Unix) <install-root>/etc/mercurial/hgrc::
24 24 Per-installation configuration files, searched for in the
25 25 directory where Mercurial is installed. For example, if installed
26 26 in /shared/tools, Mercurial will look in
27 27 /shared/tools/etc/mercurial/hgrc. Options in these files apply to
28 28 all Mercurial commands executed by any user in any directory.
29 29
30 30 (Unix) /etc/mercurial/hgrc.d/*.rc::
31 31 (Unix) /etc/mercurial/hgrc::
32 32 (Windows) C:\Mercurial\Mercurial.ini::
33 33 Per-system configuration files, for the system on which Mercurial
34 34 is running. Options in these files apply to all Mercurial
35 35 commands executed by any user in any directory. Options in these
36 36 files override per-installation options.
37 37
38 38 (Unix) $HOME/.hgrc::
39 39 (Windows) C:\Documents and Settings\USERNAME\Mercurial.ini::
40 40 (Windows) $HOME\Mercurial.ini::
41 41 Per-user configuration file, for the user running Mercurial.
42 42 Options in this file apply to all Mercurial commands executed by
43 43 any user in any directory. Options in this file override
44 44 per-installation and per-system options.
45 45 On Windows system, one of these is chosen exclusively according
46 46 to definition of HOME environment variable.
47 47
48 48 (Unix, Windows) <repo>/.hg/hgrc::
49 49 Per-repository configuration options that only apply in a
50 50 particular repository. This file is not version-controlled, and
51 51 will not get transferred during a "clone" operation. Options in
52 52 this file override options in all other configuration files.
53 53 On Unix, most of this file will be ignored if it doesn't belong
54 54 to a trusted user or to a trusted group. See the documentation
55 55 for the trusted section below for more details.
56 56
57 57 SYNTAX
58 58 ------
59 59
60 60 A configuration file consists of sections, led by a "[section]" header
61 61 and followed by "name: value" entries; "name=value" is also accepted.
62 62
63 63 [spam]
64 64 eggs=ham
65 65 green=
66 66 eggs
67 67
68 68 Each line contains one entry. If the lines that follow are indented,
69 69 they are treated as continuations of that entry.
70 70
71 71 Leading whitespace is removed from values. Empty lines are skipped.
72 72
73 73 The optional values can contain format strings which refer to other
74 74 values in the same section, or values in a special DEFAULT section.
75 75
76 76 Lines beginning with "#" or ";" are ignored and may be used to provide
77 77 comments.
78 78
79 79 SECTIONS
80 80 --------
81 81
82 82 This section describes the different sections that may appear in a
83 83 Mercurial "hgrc" file, the purpose of each section, its possible
84 84 keys, and their possible values.
85 85
86 86 decode/encode::
87 87 Filters for transforming files on checkout/checkin. This would
88 88 typically be used for newline processing or other
89 89 localization/canonicalization of files.
90 90
91 91 Filters consist of a filter pattern followed by a filter command.
92 92 Filter patterns are globs by default, rooted at the repository
93 93 root. For example, to match any file ending in ".txt" in the root
94 94 directory only, use the pattern "*.txt". To match any file ending
95 95 in ".c" anywhere in the repository, use the pattern "**.c".
96 96
97 97 The filter command can start with a specifier, either "pipe:" or
98 98 "tempfile:". If no specifier is given, "pipe:" is used by default.
99 99
100 100 A "pipe:" command must accept data on stdin and return the
101 101 transformed data on stdout.
102 102
103 103 Pipe example:
104 104
105 105 [encode]
106 106 # uncompress gzip files on checkin to improve delta compression
107 107 # note: not necessarily a good idea, just an example
108 108 *.gz = pipe: gunzip
109 109
110 110 [decode]
111 111 # recompress gzip files when writing them to the working dir (we
112 112 # can safely omit "pipe:", because it's the default)
113 113 *.gz = gzip
114 114
115 115 A "tempfile:" command is a template. The string INFILE is replaced
116 116 with the name of a temporary file that contains the data to be
117 117 filtered by the command. The string OUTFILE is replaced with the
118 118 name of an empty temporary file, where the filtered data must be
119 119 written by the command.
120 120
121 121 NOTE: the tempfile mechanism is recommended for Windows systems,
122 122 where the standard shell I/O redirection operators often have
123 123 strange effects. In particular, if you are doing line ending
124 124 conversion on Windows using the popular dos2unix and unix2dos
125 125 programs, you *must* use the tempfile mechanism, as using pipes will
126 126 corrupt the contents of your files.
127 127
128 128 Tempfile example:
129 129
130 130 [encode]
131 131 # convert files to unix line ending conventions on checkin
132 132 **.txt = tempfile: dos2unix -n INFILE OUTFILE
133 133
134 134 [decode]
135 135 # convert files to windows line ending conventions when writing
136 136 # them to the working dir
137 137 **.txt = tempfile: unix2dos -n INFILE OUTFILE
138 138
139 139 defaults::
140 140 Use the [defaults] section to define command defaults, i.e. the
141 141 default options/arguments to pass to the specified commands.
142 142
143 143 The following example makes 'hg log' run in verbose mode, and
144 144 'hg status' show only the modified files, by default.
145 145
146 146 [defaults]
147 147 log = -v
148 148 status = -m
149 149
150 150 The actual commands, instead of their aliases, must be used when
151 151 defining command defaults. The command defaults will also be
152 152 applied to the aliases of the commands defined.
153 153
154 diff::
155 Settings used when displaying diffs. They are all boolean and
156 defaults to False.
157 git;;
158 Use git extended diff format.
159 nodates;;
160 Don't include dates in diff headers.
161 showfunc;;
162 Show which function each change is in.
163 ignorews;;
164 Ignore white space when comparing lines.
165 ignorewsamount;;
166 Ignore changes in the amount of white space.
167 ignoreblanklines;;
168 Ignore changes whose lines are all blank.
169
154 170 email::
155 171 Settings for extensions that send email messages.
156 172 from;;
157 173 Optional. Email address to use in "From" header and SMTP envelope
158 174 of outgoing messages.
159 175 to;;
160 176 Optional. Comma-separated list of recipients' email addresses.
161 177 cc;;
162 178 Optional. Comma-separated list of carbon copy recipients'
163 179 email addresses.
164 180 bcc;;
165 181 Optional. Comma-separated list of blind carbon copy
166 182 recipients' email addresses. Cannot be set interactively.
167 183 method;;
168 184 Optional. Method to use to send email messages. If value is
169 185 "smtp" (default), use SMTP (see section "[smtp]" for
170 186 configuration). Otherwise, use as name of program to run that
171 187 acts like sendmail (takes "-f" option for sender, list of
172 188 recipients on command line, message on stdin). Normally, setting
173 189 this to "sendmail" or "/usr/sbin/sendmail" is enough to use
174 190 sendmail to send messages.
175 191
176 192 Email example:
177 193
178 194 [email]
179 195 from = Joseph User <joe.user@example.com>
180 196 method = /usr/sbin/sendmail
181 197
182 198 extensions::
183 199 Mercurial has an extension mechanism for adding new features. To
184 200 enable an extension, create an entry for it in this section.
185 201
186 202 If you know that the extension is already in Python's search path,
187 203 you can give the name of the module, followed by "=", with nothing
188 204 after the "=".
189 205
190 206 Otherwise, give a name that you choose, followed by "=", followed by
191 207 the path to the ".py" file (including the file name extension) that
192 208 defines the extension.
193 209
194 210 Example for ~/.hgrc:
195 211
196 212 [extensions]
197 213 # (the mq extension will get loaded from mercurial's path)
198 214 hgext.mq =
199 215 # (this extension will get loaded from the file specified)
200 216 myfeature = ~/.hgext/myfeature.py
201 217
202 218 hooks::
203 219 Commands or Python functions that get automatically executed by
204 220 various actions such as starting or finishing a commit. Multiple
205 221 hooks can be run for the same action by appending a suffix to the
206 222 action. Overriding a site-wide hook can be done by changing its
207 223 value or setting it to an empty string.
208 224
209 225 Example .hg/hgrc:
210 226
211 227 [hooks]
212 228 # do not use the site-wide hook
213 229 incoming =
214 230 incoming.email = /my/email/hook
215 231 incoming.autobuild = /my/build/hook
216 232
217 233 Most hooks are run with environment variables set that give added
218 234 useful information. For each hook below, the environment variables
219 235 it is passed are listed with names of the form "$HG_foo".
220 236
221 237 changegroup;;
222 238 Run after a changegroup has been added via push, pull or
223 239 unbundle. ID of the first new changeset is in $HG_NODE. URL from
224 240 which changes came is in $HG_URL.
225 241 commit;;
226 242 Run after a changeset has been created in the local repository.
227 243 ID of the newly created changeset is in $HG_NODE. Parent
228 244 changeset IDs are in $HG_PARENT1 and $HG_PARENT2.
229 245 incoming;;
230 246 Run after a changeset has been pulled, pushed, or unbundled into
231 247 the local repository. The ID of the newly arrived changeset is in
232 248 $HG_NODE. URL that was source of changes came is in $HG_URL.
233 249 outgoing;;
234 250 Run after sending changes from local repository to another. ID of
235 251 first changeset sent is in $HG_NODE. Source of operation is in
236 252 $HG_SOURCE; see "preoutgoing" hook for description.
237 253 prechangegroup;;
238 254 Run before a changegroup is added via push, pull or unbundle.
239 255 Exit status 0 allows the changegroup to proceed. Non-zero status
240 256 will cause the push, pull or unbundle to fail. URL from which
241 257 changes will come is in $HG_URL.
242 258 precommit;;
243 259 Run before starting a local commit. Exit status 0 allows the
244 260 commit to proceed. Non-zero status will cause the commit to fail.
245 261 Parent changeset IDs are in $HG_PARENT1 and $HG_PARENT2.
246 262 preoutgoing;;
247 263 Run before computing changes to send from the local repository to
248 264 another. Non-zero status will cause failure. This lets you
249 265 prevent pull over http or ssh. Also prevents against local pull,
250 266 push (outbound) or bundle commands, but not effective, since you
251 267 can just copy files instead then. Source of operation is in
252 268 $HG_SOURCE. If "serve", operation is happening on behalf of
253 269 remote ssh or http repository. If "push", "pull" or "bundle",
254 270 operation is happening on behalf of repository on same system.
255 271 pretag;;
256 272 Run before creating a tag. Exit status 0 allows the tag to be
257 273 created. Non-zero status will cause the tag to fail. ID of
258 274 changeset to tag is in $HG_NODE. Name of tag is in $HG_TAG. Tag
259 275 is local if $HG_LOCAL=1, in repo if $HG_LOCAL=0.
260 276 pretxnchangegroup;;
261 277 Run after a changegroup has been added via push, pull or unbundle,
262 278 but before the transaction has been committed. Changegroup is
263 279 visible to hook program. This lets you validate incoming changes
264 280 before accepting them. Passed the ID of the first new changeset
265 281 in $HG_NODE. Exit status 0 allows the transaction to commit.
266 282 Non-zero status will cause the transaction to be rolled back and
267 283 the push, pull or unbundle will fail. URL that was source of
268 284 changes is in $HG_URL.
269 285 pretxncommit;;
270 286 Run after a changeset has been created but the transaction not yet
271 287 committed. Changeset is visible to hook program. This lets you
272 288 validate commit message and changes. Exit status 0 allows the
273 289 commit to proceed. Non-zero status will cause the transaction to
274 290 be rolled back. ID of changeset is in $HG_NODE. Parent changeset
275 291 IDs are in $HG_PARENT1 and $HG_PARENT2.
276 292 preupdate;;
277 293 Run before updating the working directory. Exit status 0 allows
278 294 the update to proceed. Non-zero status will prevent the update.
279 295 Changeset ID of first new parent is in $HG_PARENT1. If merge, ID
280 296 of second new parent is in $HG_PARENT2.
281 297 tag;;
282 298 Run after a tag is created. ID of tagged changeset is in
283 299 $HG_NODE. Name of tag is in $HG_TAG. Tag is local if
284 300 $HG_LOCAL=1, in repo if $HG_LOCAL=0.
285 301 update;;
286 302 Run after updating the working directory. Changeset ID of first
287 303 new parent is in $HG_PARENT1. If merge, ID of second new parent
288 304 is in $HG_PARENT2. If update succeeded, $HG_ERROR=0. If update
289 305 failed (e.g. because conflicts not resolved), $HG_ERROR=1.
290 306
291 307 Note: In earlier releases, the names of hook environment variables
292 308 did not have a "HG_" prefix. The old unprefixed names are no longer
293 309 provided in the environment.
294 310
295 311 The syntax for Python hooks is as follows:
296 312
297 313 hookname = python:modulename.submodule.callable
298 314
299 315 Python hooks are run within the Mercurial process. Each hook is
300 316 called with at least three keyword arguments: a ui object (keyword
301 317 "ui"), a repository object (keyword "repo"), and a "hooktype"
302 318 keyword that tells what kind of hook is used. Arguments listed as
303 319 environment variables above are passed as keyword arguments, with no
304 320 "HG_" prefix, and names in lower case.
305 321
306 322 If a Python hook returns a "true" value or raises an exception, this
307 323 is treated as failure of the hook.
308 324
309 325 http_proxy::
310 326 Used to access web-based Mercurial repositories through a HTTP
311 327 proxy.
312 328 host;;
313 329 Host name and (optional) port of the proxy server, for example
314 330 "myproxy:8000".
315 331 no;;
316 332 Optional. Comma-separated list of host names that should bypass
317 333 the proxy.
318 334 passwd;;
319 335 Optional. Password to authenticate with at the proxy server.
320 336 user;;
321 337 Optional. User name to authenticate with at the proxy server.
322 338
323 339 smtp::
324 340 Configuration for extensions that need to send email messages.
325 341 host;;
326 342 Host name of mail server, e.g. "mail.example.com".
327 343 port;;
328 344 Optional. Port to connect to on mail server. Default: 25.
329 345 tls;;
330 346 Optional. Whether to connect to mail server using TLS. True or
331 347 False. Default: False.
332 348 username;;
333 349 Optional. User name to authenticate to SMTP server with.
334 350 If username is specified, password must also be specified.
335 351 Default: none.
336 352 password;;
337 353 Optional. Password to authenticate to SMTP server with.
338 354 If username is specified, password must also be specified.
339 355 Default: none.
340 356 local_hostname;;
341 357 Optional. It's the hostname that the sender can use to identify itself
342 358 to the MTA.
343 359
344 360 paths::
345 361 Assigns symbolic names to repositories. The left side is the
346 362 symbolic name, and the right gives the directory or URL that is the
347 363 location of the repository. Default paths can be declared by
348 364 setting the following entries.
349 365 default;;
350 366 Directory or URL to use when pulling if no source is specified.
351 367 Default is set to repository from which the current repository
352 368 was cloned.
353 369 default-push;;
354 370 Optional. Directory or URL to use when pushing if no destination
355 371 is specified.
356 372
357 373 server::
358 374 Controls generic server settings.
359 375 uncompressed;;
360 376 Whether to allow clients to clone a repo using the uncompressed
361 377 streaming protocol. This transfers about 40% more data than a
362 378 regular clone, but uses less memory and CPU on both server and
363 379 client. Over a LAN (100Mbps or better) or a very fast WAN, an
364 380 uncompressed streaming clone is a lot faster (~10x) than a regular
365 381 clone. Over most WAN connections (anything slower than about
366 382 6Mbps), uncompressed streaming is slower, because of the extra
367 383 data transfer overhead. Default is False.
368 384
369 385 trusted::
370 386 For security reasons, Mercurial will not use the settings in
371 387 the .hg/hgrc file from a repository if it doesn't belong to a
372 388 trusted user or to a trusted group. The main exception is the
373 389 web interface, which automatically uses some safe settings, since
374 390 it's common to serve repositories from different users.
375 391
376 392 This section specifies what users and groups are trusted. The
377 393 current user is always trusted. To trust everybody, list a user
378 394 or a group with name "*".
379 395
380 396 users;;
381 397 Comma-separated list of trusted users.
382 398 groups;;
383 399 Comma-separated list of trusted groups.
384 400
385 401 ui::
386 402 User interface controls.
387 403 debug;;
388 404 Print debugging information. True or False. Default is False.
389 405 editor;;
390 406 The editor to use during a commit. Default is $EDITOR or "vi".
391 407 fallbackencoding;;
392 408 Encoding to try if it's not possible to decode the changelog using
393 409 UTF-8. Default is ISO-8859-1.
394 410 ignore;;
395 411 A file to read per-user ignore patterns from. This file should be in
396 412 the same format as a repository-wide .hgignore file. This option
397 413 supports hook syntax, so if you want to specify multiple ignore
398 414 files, you can do so by setting something like
399 415 "ignore.other = ~/.hgignore2". For details of the ignore file
400 416 format, see the hgignore(5) man page.
401 417 interactive;;
402 418 Allow to prompt the user. True or False. Default is True.
403 419 logtemplate;;
404 420 Template string for commands that print changesets.
405 421 style;;
406 422 Name of style to use for command output.
407 423 merge;;
408 424 The conflict resolution program to use during a manual merge.
409 425 Default is "hgmerge".
410 426 quiet;;
411 427 Reduce the amount of output printed. True or False. Default is False.
412 428 remotecmd;;
413 429 remote command to use for clone/push/pull operations. Default is 'hg'.
414 430 ssh;;
415 431 command to use for SSH connections. Default is 'ssh'.
416 432 strict;;
417 433 Require exact command names, instead of allowing unambiguous
418 434 abbreviations. True or False. Default is False.
419 435 timeout;;
420 436 The timeout used when a lock is held (in seconds), a negative value
421 437 means no timeout. Default is 600.
422 438 username;;
423 439 The committer of a changeset created when running "commit".
424 440 Typically a person's name and email address, e.g. "Fred Widget
425 441 <fred@example.com>". Default is $EMAIL or username@hostname.
426 442 verbose;;
427 443 Increase the amount of output printed. True or False. Default is False.
428 444
429 445
430 446 web::
431 447 Web interface configuration.
432 448 accesslog;;
433 449 Where to output the access log. Default is stdout.
434 450 address;;
435 451 Interface address to bind to. Default is all.
436 452 allow_archive;;
437 453 List of archive format (bz2, gz, zip) allowed for downloading.
438 454 Default is empty.
439 455 allowbz2;;
440 456 (DEPRECATED) Whether to allow .tar.bz2 downloading of repo revisions.
441 457 Default is false.
442 458 allowgz;;
443 459 (DEPRECATED) Whether to allow .tar.gz downloading of repo revisions.
444 460 Default is false.
445 461 allowpull;;
446 462 Whether to allow pulling from the repository. Default is true.
447 463 allow_push;;
448 464 Whether to allow pushing to the repository. If empty or not set,
449 465 push is not allowed. If the special value "*", any remote user
450 466 can push, including unauthenticated users. Otherwise, the remote
451 467 user must have been authenticated, and the authenticated user name
452 468 must be present in this list (separated by whitespace or ",").
453 469 The contents of the allow_push list are examined after the
454 470 deny_push list.
455 471 allowzip;;
456 472 (DEPRECATED) Whether to allow .zip downloading of repo revisions.
457 473 Default is false. This feature creates temporary files.
458 474 baseurl;;
459 475 Base URL to use when publishing URLs in other locations, so
460 476 third-party tools like email notification hooks can construct URLs.
461 477 Example: "http://hgserver/repos/"
462 478 contact;;
463 479 Name or email address of the person in charge of the repository.
464 480 Default is "unknown".
465 481 deny_push;;
466 482 Whether to deny pushing to the repository. If empty or not set,
467 483 push is not denied. If the special value "*", all remote users
468 484 are denied push. Otherwise, unauthenticated users are all denied,
469 485 and any authenticated user name present in this list (separated by
470 486 whitespace or ",") is also denied. The contents of the deny_push
471 487 list are examined before the allow_push list.
472 488 description;;
473 489 Textual description of the repository's purpose or contents.
474 490 Default is "unknown".
475 491 errorlog;;
476 492 Where to output the error log. Default is stderr.
477 493 ipv6;;
478 494 Whether to use IPv6. Default is false.
479 495 name;;
480 496 Repository name to use in the web interface. Default is current
481 497 working directory.
482 498 maxchanges;;
483 499 Maximum number of changes to list on the changelog. Default is 10.
484 500 maxfiles;;
485 501 Maximum number of files to list per changeset. Default is 10.
486 502 port;;
487 503 Port to listen on. Default is 8000.
488 504 push_ssl;;
489 505 Whether to require that inbound pushes be transported over SSL to
490 506 prevent password sniffing. Default is true.
491 507 stripes;;
492 508 How many lines a "zebra stripe" should span in multiline output.
493 509 Default is 1; set to 0 to disable.
494 510 style;;
495 511 Which template map style to use.
496 512 templates;;
497 513 Where to find the HTML templates. Default is install path.
498 514
499 515
500 516 AUTHOR
501 517 ------
502 518 Bryan O'Sullivan <bos@serpentine.com>.
503 519
504 520 Mercurial was written by Matt Mackall <mpm@selenic.com>.
505 521
506 522 SEE ALSO
507 523 --------
508 524 hg(1), hgignore(5)
509 525
510 526 COPYING
511 527 -------
512 528 This manual page is copyright 2005 Bryan O'Sullivan.
513 529 Mercurial is copyright 2005, 2006 Matt Mackall.
514 530 Free use of this software is granted under the terms of the GNU General
515 531 Public License (GPL).
General Comments 0
You need to be logged in to leave comments. Login now