##// END OF EJS Templates
multi-urls: document the feature...
marmoute -
r48048:0470a44b default
parent child Browse files
Show More
@@ -1,3079 +1,3085 b''
1 The Mercurial system uses a set of configuration files to control
1 The Mercurial system uses a set of configuration files to control
2 aspects of its behavior.
2 aspects of its behavior.
3
3
4 Troubleshooting
4 Troubleshooting
5 ===============
5 ===============
6
6
7 If you're having problems with your configuration,
7 If you're having problems with your configuration,
8 :hg:`config --source` can help you understand what is introducing
8 :hg:`config --source` can help you understand what is introducing
9 a setting into your environment.
9 a setting into your environment.
10
10
11 See :hg:`help config.syntax` and :hg:`help config.files`
11 See :hg:`help config.syntax` and :hg:`help config.files`
12 for information about how and where to override things.
12 for information about how and where to override things.
13
13
14 Structure
14 Structure
15 =========
15 =========
16
16
17 The configuration files use a simple ini-file format. A configuration
17 The configuration files use a simple ini-file format. A configuration
18 file consists of sections, led by a ``[section]`` header and followed
18 file consists of sections, led by a ``[section]`` header and followed
19 by ``name = value`` entries::
19 by ``name = value`` entries::
20
20
21 [ui]
21 [ui]
22 username = Firstname Lastname <firstname.lastname@example.net>
22 username = Firstname Lastname <firstname.lastname@example.net>
23 verbose = True
23 verbose = True
24
24
25 The above entries will be referred to as ``ui.username`` and
25 The above entries will be referred to as ``ui.username`` and
26 ``ui.verbose``, respectively. See :hg:`help config.syntax`.
26 ``ui.verbose``, respectively. See :hg:`help config.syntax`.
27
27
28 Files
28 Files
29 =====
29 =====
30
30
31 Mercurial reads configuration data from several files, if they exist.
31 Mercurial reads configuration data from several files, if they exist.
32 These files do not exist by default and you will have to create the
32 These files do not exist by default and you will have to create the
33 appropriate configuration files yourself:
33 appropriate configuration files yourself:
34
34
35 Local configuration is put into the per-repository ``<repo>/.hg/hgrc`` file.
35 Local configuration is put into the per-repository ``<repo>/.hg/hgrc`` file.
36
36
37 Global configuration like the username setting is typically put into:
37 Global configuration like the username setting is typically put into:
38
38
39 .. container:: windows
39 .. container:: windows
40
40
41 - ``%USERPROFILE%\mercurial.ini`` (on Windows)
41 - ``%USERPROFILE%\mercurial.ini`` (on Windows)
42
42
43 .. container:: unix.plan9
43 .. container:: unix.plan9
44
44
45 - ``$HOME/.hgrc`` (on Unix, Plan9)
45 - ``$HOME/.hgrc`` (on Unix, Plan9)
46
46
47 The names of these files depend on the system on which Mercurial is
47 The names of these files depend on the system on which Mercurial is
48 installed. ``*.rc`` files from a single directory are read in
48 installed. ``*.rc`` files from a single directory are read in
49 alphabetical order, later ones overriding earlier ones. Where multiple
49 alphabetical order, later ones overriding earlier ones. Where multiple
50 paths are given below, settings from earlier paths override later
50 paths are given below, settings from earlier paths override later
51 ones.
51 ones.
52
52
53 .. container:: verbose.unix
53 .. container:: verbose.unix
54
54
55 On Unix, the following files are consulted:
55 On Unix, the following files are consulted:
56
56
57 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
57 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
58 - ``<repo>/.hg/hgrc`` (per-repository)
58 - ``<repo>/.hg/hgrc`` (per-repository)
59 - ``$HOME/.hgrc`` (per-user)
59 - ``$HOME/.hgrc`` (per-user)
60 - ``${XDG_CONFIG_HOME:-$HOME/.config}/hg/hgrc`` (per-user)
60 - ``${XDG_CONFIG_HOME:-$HOME/.config}/hg/hgrc`` (per-user)
61 - ``<install-root>/etc/mercurial/hgrc`` (per-installation)
61 - ``<install-root>/etc/mercurial/hgrc`` (per-installation)
62 - ``<install-root>/etc/mercurial/hgrc.d/*.rc`` (per-installation)
62 - ``<install-root>/etc/mercurial/hgrc.d/*.rc`` (per-installation)
63 - ``/etc/mercurial/hgrc`` (per-system)
63 - ``/etc/mercurial/hgrc`` (per-system)
64 - ``/etc/mercurial/hgrc.d/*.rc`` (per-system)
64 - ``/etc/mercurial/hgrc.d/*.rc`` (per-system)
65 - ``<internal>/*.rc`` (defaults)
65 - ``<internal>/*.rc`` (defaults)
66
66
67 .. container:: verbose.windows
67 .. container:: verbose.windows
68
68
69 On Windows, the following files are consulted:
69 On Windows, the following files are consulted:
70
70
71 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
71 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
72 - ``<repo>/.hg/hgrc`` (per-repository)
72 - ``<repo>/.hg/hgrc`` (per-repository)
73 - ``%USERPROFILE%\.hgrc`` (per-user)
73 - ``%USERPROFILE%\.hgrc`` (per-user)
74 - ``%USERPROFILE%\Mercurial.ini`` (per-user)
74 - ``%USERPROFILE%\Mercurial.ini`` (per-user)
75 - ``%HOME%\.hgrc`` (per-user)
75 - ``%HOME%\.hgrc`` (per-user)
76 - ``%HOME%\Mercurial.ini`` (per-user)
76 - ``%HOME%\Mercurial.ini`` (per-user)
77 - ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` (per-system)
77 - ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` (per-system)
78 - ``<install-dir>\hgrc.d\*.rc`` (per-installation)
78 - ``<install-dir>\hgrc.d\*.rc`` (per-installation)
79 - ``<install-dir>\Mercurial.ini`` (per-installation)
79 - ``<install-dir>\Mercurial.ini`` (per-installation)
80 - ``%PROGRAMDATA%\Mercurial\hgrc`` (per-system)
80 - ``%PROGRAMDATA%\Mercurial\hgrc`` (per-system)
81 - ``%PROGRAMDATA%\Mercurial\Mercurial.ini`` (per-system)
81 - ``%PROGRAMDATA%\Mercurial\Mercurial.ini`` (per-system)
82 - ``%PROGRAMDATA%\Mercurial\hgrc.d\*.rc`` (per-system)
82 - ``%PROGRAMDATA%\Mercurial\hgrc.d\*.rc`` (per-system)
83 - ``<internal>/*.rc`` (defaults)
83 - ``<internal>/*.rc`` (defaults)
84
84
85 .. note::
85 .. note::
86
86
87 The registry key ``HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mercurial``
87 The registry key ``HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mercurial``
88 is used when running 32-bit Python on 64-bit Windows.
88 is used when running 32-bit Python on 64-bit Windows.
89
89
90 .. container:: verbose.plan9
90 .. container:: verbose.plan9
91
91
92 On Plan9, the following files are consulted:
92 On Plan9, the following files are consulted:
93
93
94 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
94 - ``<repo>/.hg/hgrc-not-shared`` (per-repository)
95 - ``<repo>/.hg/hgrc`` (per-repository)
95 - ``<repo>/.hg/hgrc`` (per-repository)
96 - ``$home/lib/hgrc`` (per-user)
96 - ``$home/lib/hgrc`` (per-user)
97 - ``<install-root>/lib/mercurial/hgrc`` (per-installation)
97 - ``<install-root>/lib/mercurial/hgrc`` (per-installation)
98 - ``<install-root>/lib/mercurial/hgrc.d/*.rc`` (per-installation)
98 - ``<install-root>/lib/mercurial/hgrc.d/*.rc`` (per-installation)
99 - ``/lib/mercurial/hgrc`` (per-system)
99 - ``/lib/mercurial/hgrc`` (per-system)
100 - ``/lib/mercurial/hgrc.d/*.rc`` (per-system)
100 - ``/lib/mercurial/hgrc.d/*.rc`` (per-system)
101 - ``<internal>/*.rc`` (defaults)
101 - ``<internal>/*.rc`` (defaults)
102
102
103 Per-repository configuration options only apply in a
103 Per-repository configuration options only apply in a
104 particular repository. This file is not version-controlled, and
104 particular repository. This file is not version-controlled, and
105 will not get transferred during a "clone" operation. Options in
105 will not get transferred during a "clone" operation. Options in
106 this file override options in all other configuration files.
106 this file override options in all other configuration files.
107
107
108 .. container:: unix.plan9
108 .. container:: unix.plan9
109
109
110 On Plan 9 and Unix, most of this file will be ignored if it doesn't
110 On Plan 9 and Unix, most of this file will be ignored if it doesn't
111 belong to a trusted user or to a trusted group. See
111 belong to a trusted user or to a trusted group. See
112 :hg:`help config.trusted` for more details.
112 :hg:`help config.trusted` for more details.
113
113
114 Per-user configuration file(s) are for the user running Mercurial. Options
114 Per-user configuration file(s) are for the user running Mercurial. Options
115 in these files apply to all Mercurial commands executed by this user in any
115 in these files apply to all Mercurial commands executed by this user in any
116 directory. Options in these files override per-system and per-installation
116 directory. Options in these files override per-system and per-installation
117 options.
117 options.
118
118
119 Per-installation configuration files are searched for in the
119 Per-installation configuration files are searched for in the
120 directory where Mercurial is installed. ``<install-root>`` is the
120 directory where Mercurial is installed. ``<install-root>`` is the
121 parent directory of the **hg** executable (or symlink) being run.
121 parent directory of the **hg** executable (or symlink) being run.
122
122
123 .. container:: unix.plan9
123 .. container:: unix.plan9
124
124
125 For example, if installed in ``/shared/tools/bin/hg``, Mercurial
125 For example, if installed in ``/shared/tools/bin/hg``, Mercurial
126 will look in ``/shared/tools/etc/mercurial/hgrc``. Options in these
126 will look in ``/shared/tools/etc/mercurial/hgrc``. Options in these
127 files apply to all Mercurial commands executed by any user in any
127 files apply to all Mercurial commands executed by any user in any
128 directory.
128 directory.
129
129
130 Per-installation configuration files are for the system on
130 Per-installation configuration files are for the system on
131 which Mercurial is running. Options in these files apply to all
131 which Mercurial is running. Options in these files apply to all
132 Mercurial commands executed by any user in any directory. Registry
132 Mercurial commands executed by any user in any directory. Registry
133 keys contain PATH-like strings, every part of which must reference
133 keys contain PATH-like strings, every part of which must reference
134 a ``Mercurial.ini`` file or be a directory where ``*.rc`` files will
134 a ``Mercurial.ini`` file or be a directory where ``*.rc`` files will
135 be read. Mercurial checks each of these locations in the specified
135 be read. Mercurial checks each of these locations in the specified
136 order until one or more configuration files are detected.
136 order until one or more configuration files are detected.
137
137
138 Per-system configuration files are for the system on which Mercurial
138 Per-system configuration files are for the system on which Mercurial
139 is running. Options in these files apply to all Mercurial commands
139 is running. Options in these files apply to all Mercurial commands
140 executed by any user in any directory. Options in these files
140 executed by any user in any directory. Options in these files
141 override per-installation options.
141 override per-installation options.
142
142
143 Mercurial comes with some default configuration. The default configuration
143 Mercurial comes with some default configuration. The default configuration
144 files are installed with Mercurial and will be overwritten on upgrades. Default
144 files are installed with Mercurial and will be overwritten on upgrades. Default
145 configuration files should never be edited by users or administrators but can
145 configuration files should never be edited by users or administrators but can
146 be overridden in other configuration files. So far the directory only contains
146 be overridden in other configuration files. So far the directory only contains
147 merge tool configuration but packagers can also put other default configuration
147 merge tool configuration but packagers can also put other default configuration
148 there.
148 there.
149
149
150 On versions 5.7 and later, if share-safe functionality is enabled,
150 On versions 5.7 and later, if share-safe functionality is enabled,
151 shares will read config file of share source too.
151 shares will read config file of share source too.
152 `<share-source/.hg/hgrc>` is read before reading `<repo/.hg/hgrc>`.
152 `<share-source/.hg/hgrc>` is read before reading `<repo/.hg/hgrc>`.
153
153
154 For configs which should not be shared, `<repo/.hg/hgrc-not-shared>`
154 For configs which should not be shared, `<repo/.hg/hgrc-not-shared>`
155 should be used.
155 should be used.
156
156
157 Syntax
157 Syntax
158 ======
158 ======
159
159
160 A configuration file consists of sections, led by a ``[section]`` header
160 A configuration file consists of sections, led by a ``[section]`` header
161 and followed by ``name = value`` entries (sometimes called
161 and followed by ``name = value`` entries (sometimes called
162 ``configuration keys``)::
162 ``configuration keys``)::
163
163
164 [spam]
164 [spam]
165 eggs=ham
165 eggs=ham
166 green=
166 green=
167 eggs
167 eggs
168
168
169 Each line contains one entry. If the lines that follow are indented,
169 Each line contains one entry. If the lines that follow are indented,
170 they are treated as continuations of that entry. Leading whitespace is
170 they are treated as continuations of that entry. Leading whitespace is
171 removed from values. Empty lines are skipped. Lines beginning with
171 removed from values. Empty lines are skipped. Lines beginning with
172 ``#`` or ``;`` are ignored and may be used to provide comments.
172 ``#`` or ``;`` are ignored and may be used to provide comments.
173
173
174 Configuration keys can be set multiple times, in which case Mercurial
174 Configuration keys can be set multiple times, in which case Mercurial
175 will use the value that was configured last. As an example::
175 will use the value that was configured last. As an example::
176
176
177 [spam]
177 [spam]
178 eggs=large
178 eggs=large
179 ham=serrano
179 ham=serrano
180 eggs=small
180 eggs=small
181
181
182 This would set the configuration key named ``eggs`` to ``small``.
182 This would set the configuration key named ``eggs`` to ``small``.
183
183
184 It is also possible to define a section multiple times. A section can
184 It is also possible to define a section multiple times. A section can
185 be redefined on the same and/or on different configuration files. For
185 be redefined on the same and/or on different configuration files. For
186 example::
186 example::
187
187
188 [foo]
188 [foo]
189 eggs=large
189 eggs=large
190 ham=serrano
190 ham=serrano
191 eggs=small
191 eggs=small
192
192
193 [bar]
193 [bar]
194 eggs=ham
194 eggs=ham
195 green=
195 green=
196 eggs
196 eggs
197
197
198 [foo]
198 [foo]
199 ham=prosciutto
199 ham=prosciutto
200 eggs=medium
200 eggs=medium
201 bread=toasted
201 bread=toasted
202
202
203 This would set the ``eggs``, ``ham``, and ``bread`` configuration keys
203 This would set the ``eggs``, ``ham``, and ``bread`` configuration keys
204 of the ``foo`` section to ``medium``, ``prosciutto``, and ``toasted``,
204 of the ``foo`` section to ``medium``, ``prosciutto``, and ``toasted``,
205 respectively. As you can see there only thing that matters is the last
205 respectively. As you can see there only thing that matters is the last
206 value that was set for each of the configuration keys.
206 value that was set for each of the configuration keys.
207
207
208 If a configuration key is set multiple times in different
208 If a configuration key is set multiple times in different
209 configuration files the final value will depend on the order in which
209 configuration files the final value will depend on the order in which
210 the different configuration files are read, with settings from earlier
210 the different configuration files are read, with settings from earlier
211 paths overriding later ones as described on the ``Files`` section
211 paths overriding later ones as described on the ``Files`` section
212 above.
212 above.
213
213
214 A line of the form ``%include file`` will include ``file`` into the
214 A line of the form ``%include file`` will include ``file`` into the
215 current configuration file. The inclusion is recursive, which means
215 current configuration file. The inclusion is recursive, which means
216 that included files can include other files. Filenames are relative to
216 that included files can include other files. Filenames are relative to
217 the configuration file in which the ``%include`` directive is found.
217 the configuration file in which the ``%include`` directive is found.
218 Environment variables and ``~user`` constructs are expanded in
218 Environment variables and ``~user`` constructs are expanded in
219 ``file``. This lets you do something like::
219 ``file``. This lets you do something like::
220
220
221 %include ~/.hgrc.d/$HOST.rc
221 %include ~/.hgrc.d/$HOST.rc
222
222
223 to include a different configuration file on each computer you use.
223 to include a different configuration file on each computer you use.
224
224
225 A line with ``%unset name`` will remove ``name`` from the current
225 A line with ``%unset name`` will remove ``name`` from the current
226 section, if it has been set previously.
226 section, if it has been set previously.
227
227
228 The values are either free-form text strings, lists of text strings,
228 The values are either free-form text strings, lists of text strings,
229 or Boolean values. Boolean values can be set to true using any of "1",
229 or Boolean values. Boolean values can be set to true using any of "1",
230 "yes", "true", or "on" and to false using "0", "no", "false", or "off"
230 "yes", "true", or "on" and to false using "0", "no", "false", or "off"
231 (all case insensitive).
231 (all case insensitive).
232
232
233 List values are separated by whitespace or comma, except when values are
233 List values are separated by whitespace or comma, except when values are
234 placed in double quotation marks::
234 placed in double quotation marks::
235
235
236 allow_read = "John Doe, PhD", brian, betty
236 allow_read = "John Doe, PhD", brian, betty
237
237
238 Quotation marks can be escaped by prefixing them with a backslash. Only
238 Quotation marks can be escaped by prefixing them with a backslash. Only
239 quotation marks at the beginning of a word is counted as a quotation
239 quotation marks at the beginning of a word is counted as a quotation
240 (e.g., ``foo"bar baz`` is the list of ``foo"bar`` and ``baz``).
240 (e.g., ``foo"bar baz`` is the list of ``foo"bar`` and ``baz``).
241
241
242 Sections
242 Sections
243 ========
243 ========
244
244
245 This section describes the different sections that may appear in a
245 This section describes the different sections that may appear in a
246 Mercurial configuration file, the purpose of each section, its possible
246 Mercurial configuration file, the purpose of each section, its possible
247 keys, and their possible values.
247 keys, and their possible values.
248
248
249 ``alias``
249 ``alias``
250 ---------
250 ---------
251
251
252 Defines command aliases.
252 Defines command aliases.
253
253
254 Aliases allow you to define your own commands in terms of other
254 Aliases allow you to define your own commands in terms of other
255 commands (or aliases), optionally including arguments. Positional
255 commands (or aliases), optionally including arguments. Positional
256 arguments in the form of ``$1``, ``$2``, etc. in the alias definition
256 arguments in the form of ``$1``, ``$2``, etc. in the alias definition
257 are expanded by Mercurial before execution. Positional arguments not
257 are expanded by Mercurial before execution. Positional arguments not
258 already used by ``$N`` in the definition are put at the end of the
258 already used by ``$N`` in the definition are put at the end of the
259 command to be executed.
259 command to be executed.
260
260
261 Alias definitions consist of lines of the form::
261 Alias definitions consist of lines of the form::
262
262
263 <alias> = <command> [<argument>]...
263 <alias> = <command> [<argument>]...
264
264
265 For example, this definition::
265 For example, this definition::
266
266
267 latest = log --limit 5
267 latest = log --limit 5
268
268
269 creates a new command ``latest`` that shows only the five most recent
269 creates a new command ``latest`` that shows only the five most recent
270 changesets. You can define subsequent aliases using earlier ones::
270 changesets. You can define subsequent aliases using earlier ones::
271
271
272 stable5 = latest -b stable
272 stable5 = latest -b stable
273
273
274 .. note::
274 .. note::
275
275
276 It is possible to create aliases with the same names as
276 It is possible to create aliases with the same names as
277 existing commands, which will then override the original
277 existing commands, which will then override the original
278 definitions. This is almost always a bad idea!
278 definitions. This is almost always a bad idea!
279
279
280 An alias can start with an exclamation point (``!``) to make it a
280 An alias can start with an exclamation point (``!``) to make it a
281 shell alias. A shell alias is executed with the shell and will let you
281 shell alias. A shell alias is executed with the shell and will let you
282 run arbitrary commands. As an example, ::
282 run arbitrary commands. As an example, ::
283
283
284 echo = !echo $@
284 echo = !echo $@
285
285
286 will let you do ``hg echo foo`` to have ``foo`` printed in your
286 will let you do ``hg echo foo`` to have ``foo`` printed in your
287 terminal. A better example might be::
287 terminal. A better example might be::
288
288
289 purge = !$HG status --no-status --unknown -0 re: | xargs -0 rm -f
289 purge = !$HG status --no-status --unknown -0 re: | xargs -0 rm -f
290
290
291 which will make ``hg purge`` delete all unknown files in the
291 which will make ``hg purge`` delete all unknown files in the
292 repository in the same manner as the purge extension.
292 repository in the same manner as the purge extension.
293
293
294 Positional arguments like ``$1``, ``$2``, etc. in the alias definition
294 Positional arguments like ``$1``, ``$2``, etc. in the alias definition
295 expand to the command arguments. Unmatched arguments are
295 expand to the command arguments. Unmatched arguments are
296 removed. ``$0`` expands to the alias name and ``$@`` expands to all
296 removed. ``$0`` expands to the alias name and ``$@`` expands to all
297 arguments separated by a space. ``"$@"`` (with quotes) expands to all
297 arguments separated by a space. ``"$@"`` (with quotes) expands to all
298 arguments quoted individually and separated by a space. These expansions
298 arguments quoted individually and separated by a space. These expansions
299 happen before the command is passed to the shell.
299 happen before the command is passed to the shell.
300
300
301 Shell aliases are executed in an environment where ``$HG`` expands to
301 Shell aliases are executed in an environment where ``$HG`` expands to
302 the path of the Mercurial that was used to execute the alias. This is
302 the path of the Mercurial that was used to execute the alias. This is
303 useful when you want to call further Mercurial commands in a shell
303 useful when you want to call further Mercurial commands in a shell
304 alias, as was done above for the purge alias. In addition,
304 alias, as was done above for the purge alias. In addition,
305 ``$HG_ARGS`` expands to the arguments given to Mercurial. In the ``hg
305 ``$HG_ARGS`` expands to the arguments given to Mercurial. In the ``hg
306 echo foo`` call above, ``$HG_ARGS`` would expand to ``echo foo``.
306 echo foo`` call above, ``$HG_ARGS`` would expand to ``echo foo``.
307
307
308 .. note::
308 .. note::
309
309
310 Some global configuration options such as ``-R`` are
310 Some global configuration options such as ``-R`` are
311 processed before shell aliases and will thus not be passed to
311 processed before shell aliases and will thus not be passed to
312 aliases.
312 aliases.
313
313
314
314
315 ``annotate``
315 ``annotate``
316 ------------
316 ------------
317
317
318 Settings used when displaying file annotations. All values are
318 Settings used when displaying file annotations. All values are
319 Booleans and default to False. See :hg:`help config.diff` for
319 Booleans and default to False. See :hg:`help config.diff` for
320 related options for the diff command.
320 related options for the diff command.
321
321
322 ``ignorews``
322 ``ignorews``
323 Ignore white space when comparing lines.
323 Ignore white space when comparing lines.
324
324
325 ``ignorewseol``
325 ``ignorewseol``
326 Ignore white space at the end of a line when comparing lines.
326 Ignore white space at the end of a line when comparing lines.
327
327
328 ``ignorewsamount``
328 ``ignorewsamount``
329 Ignore changes in the amount of white space.
329 Ignore changes in the amount of white space.
330
330
331 ``ignoreblanklines``
331 ``ignoreblanklines``
332 Ignore changes whose lines are all blank.
332 Ignore changes whose lines are all blank.
333
333
334
334
335 ``auth``
335 ``auth``
336 --------
336 --------
337
337
338 Authentication credentials and other authentication-like configuration
338 Authentication credentials and other authentication-like configuration
339 for HTTP connections. This section allows you to store usernames and
339 for HTTP connections. This section allows you to store usernames and
340 passwords for use when logging *into* HTTP servers. See
340 passwords for use when logging *into* HTTP servers. See
341 :hg:`help config.web` if you want to configure *who* can login to
341 :hg:`help config.web` if you want to configure *who* can login to
342 your HTTP server.
342 your HTTP server.
343
343
344 The following options apply to all hosts.
344 The following options apply to all hosts.
345
345
346 ``cookiefile``
346 ``cookiefile``
347 Path to a file containing HTTP cookie lines. Cookies matching a
347 Path to a file containing HTTP cookie lines. Cookies matching a
348 host will be sent automatically.
348 host will be sent automatically.
349
349
350 The file format uses the Mozilla cookies.txt format, which defines cookies
350 The file format uses the Mozilla cookies.txt format, which defines cookies
351 on their own lines. Each line contains 7 fields delimited by the tab
351 on their own lines. Each line contains 7 fields delimited by the tab
352 character (domain, is_domain_cookie, path, is_secure, expires, name,
352 character (domain, is_domain_cookie, path, is_secure, expires, name,
353 value). For more info, do an Internet search for "Netscape cookies.txt
353 value). For more info, do an Internet search for "Netscape cookies.txt
354 format."
354 format."
355
355
356 Note: the cookies parser does not handle port numbers on domains. You
356 Note: the cookies parser does not handle port numbers on domains. You
357 will need to remove ports from the domain for the cookie to be recognized.
357 will need to remove ports from the domain for the cookie to be recognized.
358 This could result in a cookie being disclosed to an unwanted server.
358 This could result in a cookie being disclosed to an unwanted server.
359
359
360 The cookies file is read-only.
360 The cookies file is read-only.
361
361
362 Other options in this section are grouped by name and have the following
362 Other options in this section are grouped by name and have the following
363 format::
363 format::
364
364
365 <name>.<argument> = <value>
365 <name>.<argument> = <value>
366
366
367 where ``<name>`` is used to group arguments into authentication
367 where ``<name>`` is used to group arguments into authentication
368 entries. Example::
368 entries. Example::
369
369
370 foo.prefix = hg.intevation.de/mercurial
370 foo.prefix = hg.intevation.de/mercurial
371 foo.username = foo
371 foo.username = foo
372 foo.password = bar
372 foo.password = bar
373 foo.schemes = http https
373 foo.schemes = http https
374
374
375 bar.prefix = secure.example.org
375 bar.prefix = secure.example.org
376 bar.key = path/to/file.key
376 bar.key = path/to/file.key
377 bar.cert = path/to/file.cert
377 bar.cert = path/to/file.cert
378 bar.schemes = https
378 bar.schemes = https
379
379
380 Supported arguments:
380 Supported arguments:
381
381
382 ``prefix``
382 ``prefix``
383 Either ``*`` or a URI prefix with or without the scheme part.
383 Either ``*`` or a URI prefix with or without the scheme part.
384 The authentication entry with the longest matching prefix is used
384 The authentication entry with the longest matching prefix is used
385 (where ``*`` matches everything and counts as a match of length
385 (where ``*`` matches everything and counts as a match of length
386 1). If the prefix doesn't include a scheme, the match is performed
386 1). If the prefix doesn't include a scheme, the match is performed
387 against the URI with its scheme stripped as well, and the schemes
387 against the URI with its scheme stripped as well, and the schemes
388 argument, q.v., is then subsequently consulted.
388 argument, q.v., is then subsequently consulted.
389
389
390 ``username``
390 ``username``
391 Optional. Username to authenticate with. If not given, and the
391 Optional. Username to authenticate with. If not given, and the
392 remote site requires basic or digest authentication, the user will
392 remote site requires basic or digest authentication, the user will
393 be prompted for it. Environment variables are expanded in the
393 be prompted for it. Environment variables are expanded in the
394 username letting you do ``foo.username = $USER``. If the URI
394 username letting you do ``foo.username = $USER``. If the URI
395 includes a username, only ``[auth]`` entries with a matching
395 includes a username, only ``[auth]`` entries with a matching
396 username or without a username will be considered.
396 username or without a username will be considered.
397
397
398 ``password``
398 ``password``
399 Optional. Password to authenticate with. If not given, and the
399 Optional. Password to authenticate with. If not given, and the
400 remote site requires basic or digest authentication, the user
400 remote site requires basic or digest authentication, the user
401 will be prompted for it.
401 will be prompted for it.
402
402
403 ``key``
403 ``key``
404 Optional. PEM encoded client certificate key file. Environment
404 Optional. PEM encoded client certificate key file. Environment
405 variables are expanded in the filename.
405 variables are expanded in the filename.
406
406
407 ``cert``
407 ``cert``
408 Optional. PEM encoded client certificate chain file. Environment
408 Optional. PEM encoded client certificate chain file. Environment
409 variables are expanded in the filename.
409 variables are expanded in the filename.
410
410
411 ``schemes``
411 ``schemes``
412 Optional. Space separated list of URI schemes to use this
412 Optional. Space separated list of URI schemes to use this
413 authentication entry with. Only used if the prefix doesn't include
413 authentication entry with. Only used if the prefix doesn't include
414 a scheme. Supported schemes are http and https. They will match
414 a scheme. Supported schemes are http and https. They will match
415 static-http and static-https respectively, as well.
415 static-http and static-https respectively, as well.
416 (default: https)
416 (default: https)
417
417
418 If no suitable authentication entry is found, the user is prompted
418 If no suitable authentication entry is found, the user is prompted
419 for credentials as usual if required by the remote.
419 for credentials as usual if required by the remote.
420
420
421 ``cmdserver``
421 ``cmdserver``
422 -------------
422 -------------
423
423
424 Controls command server settings. (ADVANCED)
424 Controls command server settings. (ADVANCED)
425
425
426 ``message-encodings``
426 ``message-encodings``
427 List of encodings for the ``m`` (message) channel. The first encoding
427 List of encodings for the ``m`` (message) channel. The first encoding
428 supported by the server will be selected and advertised in the hello
428 supported by the server will be selected and advertised in the hello
429 message. This is useful only when ``ui.message-output`` is set to
429 message. This is useful only when ``ui.message-output`` is set to
430 ``channel``. Supported encodings are ``cbor``.
430 ``channel``. Supported encodings are ``cbor``.
431
431
432 ``shutdown-on-interrupt``
432 ``shutdown-on-interrupt``
433 If set to false, the server's main loop will continue running after
433 If set to false, the server's main loop will continue running after
434 SIGINT received. ``runcommand`` requests can still be interrupted by
434 SIGINT received. ``runcommand`` requests can still be interrupted by
435 SIGINT. Close the write end of the pipe to shut down the server
435 SIGINT. Close the write end of the pipe to shut down the server
436 process gracefully.
436 process gracefully.
437 (default: True)
437 (default: True)
438
438
439 ``color``
439 ``color``
440 ---------
440 ---------
441
441
442 Configure the Mercurial color mode. For details about how to define your custom
442 Configure the Mercurial color mode. For details about how to define your custom
443 effect and style see :hg:`help color`.
443 effect and style see :hg:`help color`.
444
444
445 ``mode``
445 ``mode``
446 String: control the method used to output color. One of ``auto``, ``ansi``,
446 String: control the method used to output color. One of ``auto``, ``ansi``,
447 ``win32``, ``terminfo`` or ``debug``. In auto mode, Mercurial will
447 ``win32``, ``terminfo`` or ``debug``. In auto mode, Mercurial will
448 use ANSI mode by default (or win32 mode prior to Windows 10) if it detects a
448 use ANSI mode by default (or win32 mode prior to Windows 10) if it detects a
449 terminal. Any invalid value will disable color.
449 terminal. Any invalid value will disable color.
450
450
451 ``pagermode``
451 ``pagermode``
452 String: optional override of ``color.mode`` used with pager.
452 String: optional override of ``color.mode`` used with pager.
453
453
454 On some systems, terminfo mode may cause problems when using
454 On some systems, terminfo mode may cause problems when using
455 color with ``less -R`` as a pager program. less with the -R option
455 color with ``less -R`` as a pager program. less with the -R option
456 will only display ECMA-48 color codes, and terminfo mode may sometimes
456 will only display ECMA-48 color codes, and terminfo mode may sometimes
457 emit codes that less doesn't understand. You can work around this by
457 emit codes that less doesn't understand. You can work around this by
458 either using ansi mode (or auto mode), or by using less -r (which will
458 either using ansi mode (or auto mode), or by using less -r (which will
459 pass through all terminal control codes, not just color control
459 pass through all terminal control codes, not just color control
460 codes).
460 codes).
461
461
462 On some systems (such as MSYS in Windows), the terminal may support
462 On some systems (such as MSYS in Windows), the terminal may support
463 a different color mode than the pager program.
463 a different color mode than the pager program.
464
464
465 ``commands``
465 ``commands``
466 ------------
466 ------------
467
467
468 ``commit.post-status``
468 ``commit.post-status``
469 Show status of files in the working directory after successful commit.
469 Show status of files in the working directory after successful commit.
470 (default: False)
470 (default: False)
471
471
472 ``merge.require-rev``
472 ``merge.require-rev``
473 Require that the revision to merge the current commit with be specified on
473 Require that the revision to merge the current commit with be specified on
474 the command line. If this is enabled and a revision is not specified, the
474 the command line. If this is enabled and a revision is not specified, the
475 command aborts.
475 command aborts.
476 (default: False)
476 (default: False)
477
477
478 ``push.require-revs``
478 ``push.require-revs``
479 Require revisions to push be specified using one or more mechanisms such as
479 Require revisions to push be specified using one or more mechanisms such as
480 specifying them positionally on the command line, using ``-r``, ``-b``,
480 specifying them positionally on the command line, using ``-r``, ``-b``,
481 and/or ``-B`` on the command line, or using ``paths.<path>:pushrev`` in the
481 and/or ``-B`` on the command line, or using ``paths.<path>:pushrev`` in the
482 configuration. If this is enabled and revisions are not specified, the
482 configuration. If this is enabled and revisions are not specified, the
483 command aborts.
483 command aborts.
484 (default: False)
484 (default: False)
485
485
486 ``resolve.confirm``
486 ``resolve.confirm``
487 Confirm before performing action if no filename is passed.
487 Confirm before performing action if no filename is passed.
488 (default: False)
488 (default: False)
489
489
490 ``resolve.explicit-re-merge``
490 ``resolve.explicit-re-merge``
491 Require uses of ``hg resolve`` to specify which action it should perform,
491 Require uses of ``hg resolve`` to specify which action it should perform,
492 instead of re-merging files by default.
492 instead of re-merging files by default.
493 (default: False)
493 (default: False)
494
494
495 ``resolve.mark-check``
495 ``resolve.mark-check``
496 Determines what level of checking :hg:`resolve --mark` will perform before
496 Determines what level of checking :hg:`resolve --mark` will perform before
497 marking files as resolved. Valid values are ``none`, ``warn``, and
497 marking files as resolved. Valid values are ``none`, ``warn``, and
498 ``abort``. ``warn`` will output a warning listing the file(s) that still
498 ``abort``. ``warn`` will output a warning listing the file(s) that still
499 have conflict markers in them, but will still mark everything resolved.
499 have conflict markers in them, but will still mark everything resolved.
500 ``abort`` will output the same warning but will not mark things as resolved.
500 ``abort`` will output the same warning but will not mark things as resolved.
501 If --all is passed and this is set to ``abort``, only a warning will be
501 If --all is passed and this is set to ``abort``, only a warning will be
502 shown (an error will not be raised).
502 shown (an error will not be raised).
503 (default: ``none``)
503 (default: ``none``)
504
504
505 ``status.relative``
505 ``status.relative``
506 Make paths in :hg:`status` output relative to the current directory.
506 Make paths in :hg:`status` output relative to the current directory.
507 (default: False)
507 (default: False)
508
508
509 ``status.terse``
509 ``status.terse``
510 Default value for the --terse flag, which condenses status output.
510 Default value for the --terse flag, which condenses status output.
511 (default: empty)
511 (default: empty)
512
512
513 ``update.check``
513 ``update.check``
514 Determines what level of checking :hg:`update` will perform before moving
514 Determines what level of checking :hg:`update` will perform before moving
515 to a destination revision. Valid values are ``abort``, ``none``,
515 to a destination revision. Valid values are ``abort``, ``none``,
516 ``linear``, and ``noconflict``. ``abort`` always fails if the working
516 ``linear``, and ``noconflict``. ``abort`` always fails if the working
517 directory has uncommitted changes. ``none`` performs no checking, and may
517 directory has uncommitted changes. ``none`` performs no checking, and may
518 result in a merge with uncommitted changes. ``linear`` allows any update
518 result in a merge with uncommitted changes. ``linear`` allows any update
519 as long as it follows a straight line in the revision history, and may
519 as long as it follows a straight line in the revision history, and may
520 trigger a merge with uncommitted changes. ``noconflict`` will allow any
520 trigger a merge with uncommitted changes. ``noconflict`` will allow any
521 update which would not trigger a merge with uncommitted changes, if any
521 update which would not trigger a merge with uncommitted changes, if any
522 are present.
522 are present.
523 (default: ``linear``)
523 (default: ``linear``)
524
524
525 ``update.requiredest``
525 ``update.requiredest``
526 Require that the user pass a destination when running :hg:`update`.
526 Require that the user pass a destination when running :hg:`update`.
527 For example, :hg:`update .::` will be allowed, but a plain :hg:`update`
527 For example, :hg:`update .::` will be allowed, but a plain :hg:`update`
528 will be disallowed.
528 will be disallowed.
529 (default: False)
529 (default: False)
530
530
531 ``committemplate``
531 ``committemplate``
532 ------------------
532 ------------------
533
533
534 ``changeset``
534 ``changeset``
535 String: configuration in this section is used as the template to
535 String: configuration in this section is used as the template to
536 customize the text shown in the editor when committing.
536 customize the text shown in the editor when committing.
537
537
538 In addition to pre-defined template keywords, commit log specific one
538 In addition to pre-defined template keywords, commit log specific one
539 below can be used for customization:
539 below can be used for customization:
540
540
541 ``extramsg``
541 ``extramsg``
542 String: Extra message (typically 'Leave message empty to abort
542 String: Extra message (typically 'Leave message empty to abort
543 commit.'). This may be changed by some commands or extensions.
543 commit.'). This may be changed by some commands or extensions.
544
544
545 For example, the template configuration below shows as same text as
545 For example, the template configuration below shows as same text as
546 one shown by default::
546 one shown by default::
547
547
548 [committemplate]
548 [committemplate]
549 changeset = {desc}\n\n
549 changeset = {desc}\n\n
550 HG: Enter commit message. Lines beginning with 'HG:' are removed.
550 HG: Enter commit message. Lines beginning with 'HG:' are removed.
551 HG: {extramsg}
551 HG: {extramsg}
552 HG: --
552 HG: --
553 HG: user: {author}\n{ifeq(p2rev, "-1", "",
553 HG: user: {author}\n{ifeq(p2rev, "-1", "",
554 "HG: branch merge\n")
554 "HG: branch merge\n")
555 }HG: branch '{branch}'\n{if(activebookmark,
555 }HG: branch '{branch}'\n{if(activebookmark,
556 "HG: bookmark '{activebookmark}'\n") }{subrepos %
556 "HG: bookmark '{activebookmark}'\n") }{subrepos %
557 "HG: subrepo {subrepo}\n" }{file_adds %
557 "HG: subrepo {subrepo}\n" }{file_adds %
558 "HG: added {file}\n" }{file_mods %
558 "HG: added {file}\n" }{file_mods %
559 "HG: changed {file}\n" }{file_dels %
559 "HG: changed {file}\n" }{file_dels %
560 "HG: removed {file}\n" }{if(files, "",
560 "HG: removed {file}\n" }{if(files, "",
561 "HG: no files changed\n")}
561 "HG: no files changed\n")}
562
562
563 ``diff()``
563 ``diff()``
564 String: show the diff (see :hg:`help templates` for detail)
564 String: show the diff (see :hg:`help templates` for detail)
565
565
566 Sometimes it is helpful to show the diff of the changeset in the editor without
566 Sometimes it is helpful to show the diff of the changeset in the editor without
567 having to prefix 'HG: ' to each line so that highlighting works correctly. For
567 having to prefix 'HG: ' to each line so that highlighting works correctly. For
568 this, Mercurial provides a special string which will ignore everything below
568 this, Mercurial provides a special string which will ignore everything below
569 it::
569 it::
570
570
571 HG: ------------------------ >8 ------------------------
571 HG: ------------------------ >8 ------------------------
572
572
573 For example, the template configuration below will show the diff below the
573 For example, the template configuration below will show the diff below the
574 extra message::
574 extra message::
575
575
576 [committemplate]
576 [committemplate]
577 changeset = {desc}\n\n
577 changeset = {desc}\n\n
578 HG: Enter commit message. Lines beginning with 'HG:' are removed.
578 HG: Enter commit message. Lines beginning with 'HG:' are removed.
579 HG: {extramsg}
579 HG: {extramsg}
580 HG: ------------------------ >8 ------------------------
580 HG: ------------------------ >8 ------------------------
581 HG: Do not touch the line above.
581 HG: Do not touch the line above.
582 HG: Everything below will be removed.
582 HG: Everything below will be removed.
583 {diff()}
583 {diff()}
584
584
585 .. note::
585 .. note::
586
586
587 For some problematic encodings (see :hg:`help win32mbcs` for
587 For some problematic encodings (see :hg:`help win32mbcs` for
588 detail), this customization should be configured carefully, to
588 detail), this customization should be configured carefully, to
589 avoid showing broken characters.
589 avoid showing broken characters.
590
590
591 For example, if a multibyte character ending with backslash (0x5c) is
591 For example, if a multibyte character ending with backslash (0x5c) is
592 followed by the ASCII character 'n' in the customized template,
592 followed by the ASCII character 'n' in the customized template,
593 the sequence of backslash and 'n' is treated as line-feed unexpectedly
593 the sequence of backslash and 'n' is treated as line-feed unexpectedly
594 (and the multibyte character is broken, too).
594 (and the multibyte character is broken, too).
595
595
596 Customized template is used for commands below (``--edit`` may be
596 Customized template is used for commands below (``--edit`` may be
597 required):
597 required):
598
598
599 - :hg:`backout`
599 - :hg:`backout`
600 - :hg:`commit`
600 - :hg:`commit`
601 - :hg:`fetch` (for merge commit only)
601 - :hg:`fetch` (for merge commit only)
602 - :hg:`graft`
602 - :hg:`graft`
603 - :hg:`histedit`
603 - :hg:`histedit`
604 - :hg:`import`
604 - :hg:`import`
605 - :hg:`qfold`, :hg:`qnew` and :hg:`qrefresh`
605 - :hg:`qfold`, :hg:`qnew` and :hg:`qrefresh`
606 - :hg:`rebase`
606 - :hg:`rebase`
607 - :hg:`shelve`
607 - :hg:`shelve`
608 - :hg:`sign`
608 - :hg:`sign`
609 - :hg:`tag`
609 - :hg:`tag`
610 - :hg:`transplant`
610 - :hg:`transplant`
611
611
612 Configuring items below instead of ``changeset`` allows showing
612 Configuring items below instead of ``changeset`` allows showing
613 customized message only for specific actions, or showing different
613 customized message only for specific actions, or showing different
614 messages for each action.
614 messages for each action.
615
615
616 - ``changeset.backout`` for :hg:`backout`
616 - ``changeset.backout`` for :hg:`backout`
617 - ``changeset.commit.amend.merge`` for :hg:`commit --amend` on merges
617 - ``changeset.commit.amend.merge`` for :hg:`commit --amend` on merges
618 - ``changeset.commit.amend.normal`` for :hg:`commit --amend` on other
618 - ``changeset.commit.amend.normal`` for :hg:`commit --amend` on other
619 - ``changeset.commit.normal.merge`` for :hg:`commit` on merges
619 - ``changeset.commit.normal.merge`` for :hg:`commit` on merges
620 - ``changeset.commit.normal.normal`` for :hg:`commit` on other
620 - ``changeset.commit.normal.normal`` for :hg:`commit` on other
621 - ``changeset.fetch`` for :hg:`fetch` (impling merge commit)
621 - ``changeset.fetch`` for :hg:`fetch` (impling merge commit)
622 - ``changeset.gpg.sign`` for :hg:`sign`
622 - ``changeset.gpg.sign`` for :hg:`sign`
623 - ``changeset.graft`` for :hg:`graft`
623 - ``changeset.graft`` for :hg:`graft`
624 - ``changeset.histedit.edit`` for ``edit`` of :hg:`histedit`
624 - ``changeset.histedit.edit`` for ``edit`` of :hg:`histedit`
625 - ``changeset.histedit.fold`` for ``fold`` of :hg:`histedit`
625 - ``changeset.histedit.fold`` for ``fold`` of :hg:`histedit`
626 - ``changeset.histedit.mess`` for ``mess`` of :hg:`histedit`
626 - ``changeset.histedit.mess`` for ``mess`` of :hg:`histedit`
627 - ``changeset.histedit.pick`` for ``pick`` of :hg:`histedit`
627 - ``changeset.histedit.pick`` for ``pick`` of :hg:`histedit`
628 - ``changeset.import.bypass`` for :hg:`import --bypass`
628 - ``changeset.import.bypass`` for :hg:`import --bypass`
629 - ``changeset.import.normal.merge`` for :hg:`import` on merges
629 - ``changeset.import.normal.merge`` for :hg:`import` on merges
630 - ``changeset.import.normal.normal`` for :hg:`import` on other
630 - ``changeset.import.normal.normal`` for :hg:`import` on other
631 - ``changeset.mq.qnew`` for :hg:`qnew`
631 - ``changeset.mq.qnew`` for :hg:`qnew`
632 - ``changeset.mq.qfold`` for :hg:`qfold`
632 - ``changeset.mq.qfold`` for :hg:`qfold`
633 - ``changeset.mq.qrefresh`` for :hg:`qrefresh`
633 - ``changeset.mq.qrefresh`` for :hg:`qrefresh`
634 - ``changeset.rebase.collapse`` for :hg:`rebase --collapse`
634 - ``changeset.rebase.collapse`` for :hg:`rebase --collapse`
635 - ``changeset.rebase.merge`` for :hg:`rebase` on merges
635 - ``changeset.rebase.merge`` for :hg:`rebase` on merges
636 - ``changeset.rebase.normal`` for :hg:`rebase` on other
636 - ``changeset.rebase.normal`` for :hg:`rebase` on other
637 - ``changeset.shelve.shelve`` for :hg:`shelve`
637 - ``changeset.shelve.shelve`` for :hg:`shelve`
638 - ``changeset.tag.add`` for :hg:`tag` without ``--remove``
638 - ``changeset.tag.add`` for :hg:`tag` without ``--remove``
639 - ``changeset.tag.remove`` for :hg:`tag --remove`
639 - ``changeset.tag.remove`` for :hg:`tag --remove`
640 - ``changeset.transplant.merge`` for :hg:`transplant` on merges
640 - ``changeset.transplant.merge`` for :hg:`transplant` on merges
641 - ``changeset.transplant.normal`` for :hg:`transplant` on other
641 - ``changeset.transplant.normal`` for :hg:`transplant` on other
642
642
643 These dot-separated lists of names are treated as hierarchical ones.
643 These dot-separated lists of names are treated as hierarchical ones.
644 For example, ``changeset.tag.remove`` customizes the commit message
644 For example, ``changeset.tag.remove`` customizes the commit message
645 only for :hg:`tag --remove`, but ``changeset.tag`` customizes the
645 only for :hg:`tag --remove`, but ``changeset.tag`` customizes the
646 commit message for :hg:`tag` regardless of ``--remove`` option.
646 commit message for :hg:`tag` regardless of ``--remove`` option.
647
647
648 When the external editor is invoked for a commit, the corresponding
648 When the external editor is invoked for a commit, the corresponding
649 dot-separated list of names without the ``changeset.`` prefix
649 dot-separated list of names without the ``changeset.`` prefix
650 (e.g. ``commit.normal.normal``) is in the ``HGEDITFORM`` environment
650 (e.g. ``commit.normal.normal``) is in the ``HGEDITFORM`` environment
651 variable.
651 variable.
652
652
653 In this section, items other than ``changeset`` can be referred from
653 In this section, items other than ``changeset`` can be referred from
654 others. For example, the configuration to list committed files up
654 others. For example, the configuration to list committed files up
655 below can be referred as ``{listupfiles}``::
655 below can be referred as ``{listupfiles}``::
656
656
657 [committemplate]
657 [committemplate]
658 listupfiles = {file_adds %
658 listupfiles = {file_adds %
659 "HG: added {file}\n" }{file_mods %
659 "HG: added {file}\n" }{file_mods %
660 "HG: changed {file}\n" }{file_dels %
660 "HG: changed {file}\n" }{file_dels %
661 "HG: removed {file}\n" }{if(files, "",
661 "HG: removed {file}\n" }{if(files, "",
662 "HG: no files changed\n")}
662 "HG: no files changed\n")}
663
663
664 ``decode/encode``
664 ``decode/encode``
665 -----------------
665 -----------------
666
666
667 Filters for transforming files on checkout/checkin. This would
667 Filters for transforming files on checkout/checkin. This would
668 typically be used for newline processing or other
668 typically be used for newline processing or other
669 localization/canonicalization of files.
669 localization/canonicalization of files.
670
670
671 Filters consist of a filter pattern followed by a filter command.
671 Filters consist of a filter pattern followed by a filter command.
672 Filter patterns are globs by default, rooted at the repository root.
672 Filter patterns are globs by default, rooted at the repository root.
673 For example, to match any file ending in ``.txt`` in the root
673 For example, to match any file ending in ``.txt`` in the root
674 directory only, use the pattern ``*.txt``. To match any file ending
674 directory only, use the pattern ``*.txt``. To match any file ending
675 in ``.c`` anywhere in the repository, use the pattern ``**.c``.
675 in ``.c`` anywhere in the repository, use the pattern ``**.c``.
676 For each file only the first matching filter applies.
676 For each file only the first matching filter applies.
677
677
678 The filter command can start with a specifier, either ``pipe:`` or
678 The filter command can start with a specifier, either ``pipe:`` or
679 ``tempfile:``. If no specifier is given, ``pipe:`` is used by default.
679 ``tempfile:``. If no specifier is given, ``pipe:`` is used by default.
680
680
681 A ``pipe:`` command must accept data on stdin and return the transformed
681 A ``pipe:`` command must accept data on stdin and return the transformed
682 data on stdout.
682 data on stdout.
683
683
684 Pipe example::
684 Pipe example::
685
685
686 [encode]
686 [encode]
687 # uncompress gzip files on checkin to improve delta compression
687 # uncompress gzip files on checkin to improve delta compression
688 # note: not necessarily a good idea, just an example
688 # note: not necessarily a good idea, just an example
689 *.gz = pipe: gunzip
689 *.gz = pipe: gunzip
690
690
691 [decode]
691 [decode]
692 # recompress gzip files when writing them to the working dir (we
692 # recompress gzip files when writing them to the working dir (we
693 # can safely omit "pipe:", because it's the default)
693 # can safely omit "pipe:", because it's the default)
694 *.gz = gzip
694 *.gz = gzip
695
695
696 A ``tempfile:`` command is a template. The string ``INFILE`` is replaced
696 A ``tempfile:`` command is a template. The string ``INFILE`` is replaced
697 with the name of a temporary file that contains the data to be
697 with the name of a temporary file that contains the data to be
698 filtered by the command. The string ``OUTFILE`` is replaced with the name
698 filtered by the command. The string ``OUTFILE`` is replaced with the name
699 of an empty temporary file, where the filtered data must be written by
699 of an empty temporary file, where the filtered data must be written by
700 the command.
700 the command.
701
701
702 .. container:: windows
702 .. container:: windows
703
703
704 .. note::
704 .. note::
705
705
706 The tempfile mechanism is recommended for Windows systems,
706 The tempfile mechanism is recommended for Windows systems,
707 where the standard shell I/O redirection operators often have
707 where the standard shell I/O redirection operators often have
708 strange effects and may corrupt the contents of your files.
708 strange effects and may corrupt the contents of your files.
709
709
710 This filter mechanism is used internally by the ``eol`` extension to
710 This filter mechanism is used internally by the ``eol`` extension to
711 translate line ending characters between Windows (CRLF) and Unix (LF)
711 translate line ending characters between Windows (CRLF) and Unix (LF)
712 format. We suggest you use the ``eol`` extension for convenience.
712 format. We suggest you use the ``eol`` extension for convenience.
713
713
714
714
715 ``defaults``
715 ``defaults``
716 ------------
716 ------------
717
717
718 (defaults are deprecated. Don't use them. Use aliases instead.)
718 (defaults are deprecated. Don't use them. Use aliases instead.)
719
719
720 Use the ``[defaults]`` section to define command defaults, i.e. the
720 Use the ``[defaults]`` section to define command defaults, i.e. the
721 default options/arguments to pass to the specified commands.
721 default options/arguments to pass to the specified commands.
722
722
723 The following example makes :hg:`log` run in verbose mode, and
723 The following example makes :hg:`log` run in verbose mode, and
724 :hg:`status` show only the modified files, by default::
724 :hg:`status` show only the modified files, by default::
725
725
726 [defaults]
726 [defaults]
727 log = -v
727 log = -v
728 status = -m
728 status = -m
729
729
730 The actual commands, instead of their aliases, must be used when
730 The actual commands, instead of their aliases, must be used when
731 defining command defaults. The command defaults will also be applied
731 defining command defaults. The command defaults will also be applied
732 to the aliases of the commands defined.
732 to the aliases of the commands defined.
733
733
734
734
735 ``diff``
735 ``diff``
736 --------
736 --------
737
737
738 Settings used when displaying diffs. Everything except for ``unified``
738 Settings used when displaying diffs. Everything except for ``unified``
739 is a Boolean and defaults to False. See :hg:`help config.annotate`
739 is a Boolean and defaults to False. See :hg:`help config.annotate`
740 for related options for the annotate command.
740 for related options for the annotate command.
741
741
742 ``git``
742 ``git``
743 Use git extended diff format.
743 Use git extended diff format.
744
744
745 ``nobinary``
745 ``nobinary``
746 Omit git binary patches.
746 Omit git binary patches.
747
747
748 ``nodates``
748 ``nodates``
749 Don't include dates in diff headers.
749 Don't include dates in diff headers.
750
750
751 ``noprefix``
751 ``noprefix``
752 Omit 'a/' and 'b/' prefixes from filenames. Ignored in plain mode.
752 Omit 'a/' and 'b/' prefixes from filenames. Ignored in plain mode.
753
753
754 ``showfunc``
754 ``showfunc``
755 Show which function each change is in.
755 Show which function each change is in.
756
756
757 ``ignorews``
757 ``ignorews``
758 Ignore white space when comparing lines.
758 Ignore white space when comparing lines.
759
759
760 ``ignorewsamount``
760 ``ignorewsamount``
761 Ignore changes in the amount of white space.
761 Ignore changes in the amount of white space.
762
762
763 ``ignoreblanklines``
763 ``ignoreblanklines``
764 Ignore changes whose lines are all blank.
764 Ignore changes whose lines are all blank.
765
765
766 ``unified``
766 ``unified``
767 Number of lines of context to show.
767 Number of lines of context to show.
768
768
769 ``word-diff``
769 ``word-diff``
770 Highlight changed words.
770 Highlight changed words.
771
771
772 ``email``
772 ``email``
773 ---------
773 ---------
774
774
775 Settings for extensions that send email messages.
775 Settings for extensions that send email messages.
776
776
777 ``from``
777 ``from``
778 Optional. Email address to use in "From" header and SMTP envelope
778 Optional. Email address to use in "From" header and SMTP envelope
779 of outgoing messages.
779 of outgoing messages.
780
780
781 ``to``
781 ``to``
782 Optional. Comma-separated list of recipients' email addresses.
782 Optional. Comma-separated list of recipients' email addresses.
783
783
784 ``cc``
784 ``cc``
785 Optional. Comma-separated list of carbon copy recipients'
785 Optional. Comma-separated list of carbon copy recipients'
786 email addresses.
786 email addresses.
787
787
788 ``bcc``
788 ``bcc``
789 Optional. Comma-separated list of blind carbon copy recipients'
789 Optional. Comma-separated list of blind carbon copy recipients'
790 email addresses.
790 email addresses.
791
791
792 ``method``
792 ``method``
793 Optional. Method to use to send email messages. If value is ``smtp``
793 Optional. Method to use to send email messages. If value is ``smtp``
794 (default), use SMTP (see the ``[smtp]`` section for configuration).
794 (default), use SMTP (see the ``[smtp]`` section for configuration).
795 Otherwise, use as name of program to run that acts like sendmail
795 Otherwise, use as name of program to run that acts like sendmail
796 (takes ``-f`` option for sender, list of recipients on command line,
796 (takes ``-f`` option for sender, list of recipients on command line,
797 message on stdin). Normally, setting this to ``sendmail`` or
797 message on stdin). Normally, setting this to ``sendmail`` or
798 ``/usr/sbin/sendmail`` is enough to use sendmail to send messages.
798 ``/usr/sbin/sendmail`` is enough to use sendmail to send messages.
799
799
800 ``charsets``
800 ``charsets``
801 Optional. Comma-separated list of character sets considered
801 Optional. Comma-separated list of character sets considered
802 convenient for recipients. Addresses, headers, and parts not
802 convenient for recipients. Addresses, headers, and parts not
803 containing patches of outgoing messages will be encoded in the
803 containing patches of outgoing messages will be encoded in the
804 first character set to which conversion from local encoding
804 first character set to which conversion from local encoding
805 (``$HGENCODING``, ``ui.fallbackencoding``) succeeds. If correct
805 (``$HGENCODING``, ``ui.fallbackencoding``) succeeds. If correct
806 conversion fails, the text in question is sent as is.
806 conversion fails, the text in question is sent as is.
807 (default: '')
807 (default: '')
808
808
809 Order of outgoing email character sets:
809 Order of outgoing email character sets:
810
810
811 1. ``us-ascii``: always first, regardless of settings
811 1. ``us-ascii``: always first, regardless of settings
812 2. ``email.charsets``: in order given by user
812 2. ``email.charsets``: in order given by user
813 3. ``ui.fallbackencoding``: if not in email.charsets
813 3. ``ui.fallbackencoding``: if not in email.charsets
814 4. ``$HGENCODING``: if not in email.charsets
814 4. ``$HGENCODING``: if not in email.charsets
815 5. ``utf-8``: always last, regardless of settings
815 5. ``utf-8``: always last, regardless of settings
816
816
817 Email example::
817 Email example::
818
818
819 [email]
819 [email]
820 from = Joseph User <joe.user@example.com>
820 from = Joseph User <joe.user@example.com>
821 method = /usr/sbin/sendmail
821 method = /usr/sbin/sendmail
822 # charsets for western Europeans
822 # charsets for western Europeans
823 # us-ascii, utf-8 omitted, as they are tried first and last
823 # us-ascii, utf-8 omitted, as they are tried first and last
824 charsets = iso-8859-1, iso-8859-15, windows-1252
824 charsets = iso-8859-1, iso-8859-15, windows-1252
825
825
826
826
827 ``extensions``
827 ``extensions``
828 --------------
828 --------------
829
829
830 Mercurial has an extension mechanism for adding new features. To
830 Mercurial has an extension mechanism for adding new features. To
831 enable an extension, create an entry for it in this section.
831 enable an extension, create an entry for it in this section.
832
832
833 If you know that the extension is already in Python's search path,
833 If you know that the extension is already in Python's search path,
834 you can give the name of the module, followed by ``=``, with nothing
834 you can give the name of the module, followed by ``=``, with nothing
835 after the ``=``.
835 after the ``=``.
836
836
837 Otherwise, give a name that you choose, followed by ``=``, followed by
837 Otherwise, give a name that you choose, followed by ``=``, followed by
838 the path to the ``.py`` file (including the file name extension) that
838 the path to the ``.py`` file (including the file name extension) that
839 defines the extension.
839 defines the extension.
840
840
841 To explicitly disable an extension that is enabled in an hgrc of
841 To explicitly disable an extension that is enabled in an hgrc of
842 broader scope, prepend its path with ``!``, as in ``foo = !/ext/path``
842 broader scope, prepend its path with ``!``, as in ``foo = !/ext/path``
843 or ``foo = !`` when path is not supplied.
843 or ``foo = !`` when path is not supplied.
844
844
845 Example for ``~/.hgrc``::
845 Example for ``~/.hgrc``::
846
846
847 [extensions]
847 [extensions]
848 # (the churn extension will get loaded from Mercurial's path)
848 # (the churn extension will get loaded from Mercurial's path)
849 churn =
849 churn =
850 # (this extension will get loaded from the file specified)
850 # (this extension will get loaded from the file specified)
851 myfeature = ~/.hgext/myfeature.py
851 myfeature = ~/.hgext/myfeature.py
852
852
853
853
854 ``format``
854 ``format``
855 ----------
855 ----------
856
856
857 Configuration that controls the repository format. Newer format options are more
857 Configuration that controls the repository format. Newer format options are more
858 powerful, but incompatible with some older versions of Mercurial. Format options
858 powerful, but incompatible with some older versions of Mercurial. Format options
859 are considered at repository initialization only. You need to make a new clone
859 are considered at repository initialization only. You need to make a new clone
860 for config changes to be taken into account.
860 for config changes to be taken into account.
861
861
862 For more details about repository format and version compatibility, see
862 For more details about repository format and version compatibility, see
863 https://www.mercurial-scm.org/wiki/MissingRequirement
863 https://www.mercurial-scm.org/wiki/MissingRequirement
864
864
865 ``usegeneraldelta``
865 ``usegeneraldelta``
866 Enable or disable the "generaldelta" repository format which improves
866 Enable or disable the "generaldelta" repository format which improves
867 repository compression by allowing "revlog" to store deltas against
867 repository compression by allowing "revlog" to store deltas against
868 arbitrary revisions instead of the previously stored one. This provides
868 arbitrary revisions instead of the previously stored one. This provides
869 significant improvement for repositories with branches.
869 significant improvement for repositories with branches.
870
870
871 Repositories with this on-disk format require Mercurial version 1.9.
871 Repositories with this on-disk format require Mercurial version 1.9.
872
872
873 Enabled by default.
873 Enabled by default.
874
874
875 ``dotencode``
875 ``dotencode``
876 Enable or disable the "dotencode" repository format which enhances
876 Enable or disable the "dotencode" repository format which enhances
877 the "fncache" repository format (which has to be enabled to use
877 the "fncache" repository format (which has to be enabled to use
878 dotencode) to avoid issues with filenames starting with "._" on
878 dotencode) to avoid issues with filenames starting with "._" on
879 Mac OS X and spaces on Windows.
879 Mac OS X and spaces on Windows.
880
880
881 Repositories with this on-disk format require Mercurial version 1.7.
881 Repositories with this on-disk format require Mercurial version 1.7.
882
882
883 Enabled by default.
883 Enabled by default.
884
884
885 ``usefncache``
885 ``usefncache``
886 Enable or disable the "fncache" repository format which enhances
886 Enable or disable the "fncache" repository format which enhances
887 the "store" repository format (which has to be enabled to use
887 the "store" repository format (which has to be enabled to use
888 fncache) to allow longer filenames and avoids using Windows
888 fncache) to allow longer filenames and avoids using Windows
889 reserved names, e.g. "nul".
889 reserved names, e.g. "nul".
890
890
891 Repositories with this on-disk format require Mercurial version 1.1.
891 Repositories with this on-disk format require Mercurial version 1.1.
892
892
893 Enabled by default.
893 Enabled by default.
894
894
895 ``use-persistent-nodemap``
895 ``use-persistent-nodemap``
896 Enable or disable the "persistent-nodemap" feature which improves
896 Enable or disable the "persistent-nodemap" feature which improves
897 performance if the rust extensions are available.
897 performance if the rust extensions are available.
898
898
899 The "persistence-nodemap" persist the "node -> rev" on disk removing the
899 The "persistence-nodemap" persist the "node -> rev" on disk removing the
900 need to dynamically build that mapping for each Mercurial invocation. This
900 need to dynamically build that mapping for each Mercurial invocation. This
901 significantly reduce the startup cost of various local and server-side
901 significantly reduce the startup cost of various local and server-side
902 operation for larger repository.
902 operation for larger repository.
903
903
904 The performance improving version of this feature is currently only
904 The performance improving version of this feature is currently only
905 implemented in Rust, so people not using a version of Mercurial compiled
905 implemented in Rust, so people not using a version of Mercurial compiled
906 with the Rust part might actually suffer some slowdown. For this reason,
906 with the Rust part might actually suffer some slowdown. For this reason,
907 Such version will by default refuse to access such repositories. That
907 Such version will by default refuse to access such repositories. That
908 behavior can be controlled by configuration. Check
908 behavior can be controlled by configuration. Check
909 :hg:`help config.storage.revlog.persistent-nodemap.slowpath` for details.
909 :hg:`help config.storage.revlog.persistent-nodemap.slowpath` for details.
910
910
911 Repository with this on-disk format require Mercurial version 5.4 or above.
911 Repository with this on-disk format require Mercurial version 5.4 or above.
912
912
913 By default this format variant is disabled if fast implementation is not
913 By default this format variant is disabled if fast implementation is not
914 available and enabled by default if the fast implementation is available.
914 available and enabled by default if the fast implementation is available.
915
915
916 ``use-share-safe``
916 ``use-share-safe``
917 Enforce "safe" behaviors for all "shares" that access this repository.
917 Enforce "safe" behaviors for all "shares" that access this repository.
918
918
919 With this feature, "shares" using this repository as a source will:
919 With this feature, "shares" using this repository as a source will:
920
920
921 * read the source repository's configuration (`<source>/.hg/hgrc`).
921 * read the source repository's configuration (`<source>/.hg/hgrc`).
922 * read and use the source repository's "requirements"
922 * read and use the source repository's "requirements"
923 (except the working copy specific one).
923 (except the working copy specific one).
924
924
925 Without this feature, "shares" using this repository as a source will:
925 Without this feature, "shares" using this repository as a source will:
926
926
927 * keep tracking the repository "requirements" in the share only, ignoring
927 * keep tracking the repository "requirements" in the share only, ignoring
928 the source "requirements", possibly diverging from them.
928 the source "requirements", possibly diverging from them.
929 * ignore source repository config. This can create problems, like silently
929 * ignore source repository config. This can create problems, like silently
930 ignoring important hooks.
930 ignoring important hooks.
931
931
932 Beware that existing shares will not be upgraded/downgraded, and by
932 Beware that existing shares will not be upgraded/downgraded, and by
933 default, Mercurial will refuse to interact with them until the mismatch
933 default, Mercurial will refuse to interact with them until the mismatch
934 is resolved. See :hg:`help config share.safe-mismatch.source-safe` and
934 is resolved. See :hg:`help config share.safe-mismatch.source-safe` and
935 :hg:`help config share.safe-mismatch.source-not-safe` for details.
935 :hg:`help config share.safe-mismatch.source-not-safe` for details.
936
936
937 Introduced in Mercurial 5.7.
937 Introduced in Mercurial 5.7.
938
938
939 Disabled by default.
939 Disabled by default.
940
940
941 ``usestore``
941 ``usestore``
942 Enable or disable the "store" repository format which improves
942 Enable or disable the "store" repository format which improves
943 compatibility with systems that fold case or otherwise mangle
943 compatibility with systems that fold case or otherwise mangle
944 filenames. Disabling this option will allow you to store longer filenames
944 filenames. Disabling this option will allow you to store longer filenames
945 in some situations at the expense of compatibility.
945 in some situations at the expense of compatibility.
946
946
947 Repositories with this on-disk format require Mercurial version 0.9.4.
947 Repositories with this on-disk format require Mercurial version 0.9.4.
948
948
949 Enabled by default.
949 Enabled by default.
950
950
951 ``sparse-revlog``
951 ``sparse-revlog``
952 Enable or disable the ``sparse-revlog`` delta strategy. This format improves
952 Enable or disable the ``sparse-revlog`` delta strategy. This format improves
953 delta re-use inside revlog. For very branchy repositories, it results in a
953 delta re-use inside revlog. For very branchy repositories, it results in a
954 smaller store. For repositories with many revisions, it also helps
954 smaller store. For repositories with many revisions, it also helps
955 performance (by using shortened delta chains.)
955 performance (by using shortened delta chains.)
956
956
957 Repositories with this on-disk format require Mercurial version 4.7
957 Repositories with this on-disk format require Mercurial version 4.7
958
958
959 Enabled by default.
959 Enabled by default.
960
960
961 ``revlog-compression``
961 ``revlog-compression``
962 Compression algorithm used by revlog. Supported values are `zlib` and
962 Compression algorithm used by revlog. Supported values are `zlib` and
963 `zstd`. The `zlib` engine is the historical default of Mercurial. `zstd` is
963 `zstd`. The `zlib` engine is the historical default of Mercurial. `zstd` is
964 a newer format that is usually a net win over `zlib`, operating faster at
964 a newer format that is usually a net win over `zlib`, operating faster at
965 better compression rates. Use `zstd` to reduce CPU usage. Multiple values
965 better compression rates. Use `zstd` to reduce CPU usage. Multiple values
966 can be specified, the first available one will be used.
966 can be specified, the first available one will be used.
967
967
968 On some systems, the Mercurial installation may lack `zstd` support.
968 On some systems, the Mercurial installation may lack `zstd` support.
969
969
970 Default is `zstd` if available, `zlib` otherwise.
970 Default is `zstd` if available, `zlib` otherwise.
971
971
972 ``bookmarks-in-store``
972 ``bookmarks-in-store``
973 Store bookmarks in .hg/store/. This means that bookmarks are shared when
973 Store bookmarks in .hg/store/. This means that bookmarks are shared when
974 using `hg share` regardless of the `-B` option.
974 using `hg share` regardless of the `-B` option.
975
975
976 Repositories with this on-disk format require Mercurial version 5.1.
976 Repositories with this on-disk format require Mercurial version 5.1.
977
977
978 Disabled by default.
978 Disabled by default.
979
979
980
980
981 ``graph``
981 ``graph``
982 ---------
982 ---------
983
983
984 Web graph view configuration. This section let you change graph
984 Web graph view configuration. This section let you change graph
985 elements display properties by branches, for instance to make the
985 elements display properties by branches, for instance to make the
986 ``default`` branch stand out.
986 ``default`` branch stand out.
987
987
988 Each line has the following format::
988 Each line has the following format::
989
989
990 <branch>.<argument> = <value>
990 <branch>.<argument> = <value>
991
991
992 where ``<branch>`` is the name of the branch being
992 where ``<branch>`` is the name of the branch being
993 customized. Example::
993 customized. Example::
994
994
995 [graph]
995 [graph]
996 # 2px width
996 # 2px width
997 default.width = 2
997 default.width = 2
998 # red color
998 # red color
999 default.color = FF0000
999 default.color = FF0000
1000
1000
1001 Supported arguments:
1001 Supported arguments:
1002
1002
1003 ``width``
1003 ``width``
1004 Set branch edges width in pixels.
1004 Set branch edges width in pixels.
1005
1005
1006 ``color``
1006 ``color``
1007 Set branch edges color in hexadecimal RGB notation.
1007 Set branch edges color in hexadecimal RGB notation.
1008
1008
1009 ``hooks``
1009 ``hooks``
1010 ---------
1010 ---------
1011
1011
1012 Commands or Python functions that get automatically executed by
1012 Commands or Python functions that get automatically executed by
1013 various actions such as starting or finishing a commit. Multiple
1013 various actions such as starting or finishing a commit. Multiple
1014 hooks can be run for the same action by appending a suffix to the
1014 hooks can be run for the same action by appending a suffix to the
1015 action. Overriding a site-wide hook can be done by changing its
1015 action. Overriding a site-wide hook can be done by changing its
1016 value or setting it to an empty string. Hooks can be prioritized
1016 value or setting it to an empty string. Hooks can be prioritized
1017 by adding a prefix of ``priority.`` to the hook name on a new line
1017 by adding a prefix of ``priority.`` to the hook name on a new line
1018 and setting the priority. The default priority is 0.
1018 and setting the priority. The default priority is 0.
1019
1019
1020 Example ``.hg/hgrc``::
1020 Example ``.hg/hgrc``::
1021
1021
1022 [hooks]
1022 [hooks]
1023 # update working directory after adding changesets
1023 # update working directory after adding changesets
1024 changegroup.update = hg update
1024 changegroup.update = hg update
1025 # do not use the site-wide hook
1025 # do not use the site-wide hook
1026 incoming =
1026 incoming =
1027 incoming.email = /my/email/hook
1027 incoming.email = /my/email/hook
1028 incoming.autobuild = /my/build/hook
1028 incoming.autobuild = /my/build/hook
1029 # force autobuild hook to run before other incoming hooks
1029 # force autobuild hook to run before other incoming hooks
1030 priority.incoming.autobuild = 1
1030 priority.incoming.autobuild = 1
1031 ### control HGPLAIN setting when running autobuild hook
1031 ### control HGPLAIN setting when running autobuild hook
1032 # HGPLAIN always set (default from Mercurial 5.7)
1032 # HGPLAIN always set (default from Mercurial 5.7)
1033 incoming.autobuild:run-with-plain = yes
1033 incoming.autobuild:run-with-plain = yes
1034 # HGPLAIN never set
1034 # HGPLAIN never set
1035 incoming.autobuild:run-with-plain = no
1035 incoming.autobuild:run-with-plain = no
1036 # HGPLAIN inherited from environment (default before Mercurial 5.7)
1036 # HGPLAIN inherited from environment (default before Mercurial 5.7)
1037 incoming.autobuild:run-with-plain = auto
1037 incoming.autobuild:run-with-plain = auto
1038
1038
1039 Most hooks are run with environment variables set that give useful
1039 Most hooks are run with environment variables set that give useful
1040 additional information. For each hook below, the environment variables
1040 additional information. For each hook below, the environment variables
1041 it is passed are listed with names in the form ``$HG_foo``. The
1041 it is passed are listed with names in the form ``$HG_foo``. The
1042 ``$HG_HOOKTYPE`` and ``$HG_HOOKNAME`` variables are set for all hooks.
1042 ``$HG_HOOKTYPE`` and ``$HG_HOOKNAME`` variables are set for all hooks.
1043 They contain the type of hook which triggered the run and the full name
1043 They contain the type of hook which triggered the run and the full name
1044 of the hook in the config, respectively. In the example above, this will
1044 of the hook in the config, respectively. In the example above, this will
1045 be ``$HG_HOOKTYPE=incoming`` and ``$HG_HOOKNAME=incoming.email``.
1045 be ``$HG_HOOKTYPE=incoming`` and ``$HG_HOOKNAME=incoming.email``.
1046
1046
1047 .. container:: windows
1047 .. container:: windows
1048
1048
1049 Some basic Unix syntax can be enabled for portability, including ``$VAR``
1049 Some basic Unix syntax can be enabled for portability, including ``$VAR``
1050 and ``${VAR}`` style variables. A ``~`` followed by ``\`` or ``/`` will
1050 and ``${VAR}`` style variables. A ``~`` followed by ``\`` or ``/`` will
1051 be expanded to ``%USERPROFILE%`` to simulate a subset of tilde expansion
1051 be expanded to ``%USERPROFILE%`` to simulate a subset of tilde expansion
1052 on Unix. To use a literal ``$`` or ``~``, it must be escaped with a back
1052 on Unix. To use a literal ``$`` or ``~``, it must be escaped with a back
1053 slash or inside of a strong quote. Strong quotes will be replaced by
1053 slash or inside of a strong quote. Strong quotes will be replaced by
1054 double quotes after processing.
1054 double quotes after processing.
1055
1055
1056 This feature is enabled by adding a prefix of ``tonative.`` to the hook
1056 This feature is enabled by adding a prefix of ``tonative.`` to the hook
1057 name on a new line, and setting it to ``True``. For example::
1057 name on a new line, and setting it to ``True``. For example::
1058
1058
1059 [hooks]
1059 [hooks]
1060 incoming.autobuild = /my/build/hook
1060 incoming.autobuild = /my/build/hook
1061 # enable translation to cmd.exe syntax for autobuild hook
1061 # enable translation to cmd.exe syntax for autobuild hook
1062 tonative.incoming.autobuild = True
1062 tonative.incoming.autobuild = True
1063
1063
1064 ``changegroup``
1064 ``changegroup``
1065 Run after a changegroup has been added via push, pull or unbundle. The ID of
1065 Run after a changegroup has been added via push, pull or unbundle. The ID of
1066 the first new changeset is in ``$HG_NODE`` and last is in ``$HG_NODE_LAST``.
1066 the first new changeset is in ``$HG_NODE`` and last is in ``$HG_NODE_LAST``.
1067 The URL from which changes came is in ``$HG_URL``.
1067 The URL from which changes came is in ``$HG_URL``.
1068
1068
1069 ``commit``
1069 ``commit``
1070 Run after a changeset has been created in the local repository. The ID
1070 Run after a changeset has been created in the local repository. The ID
1071 of the newly created changeset is in ``$HG_NODE``. Parent changeset
1071 of the newly created changeset is in ``$HG_NODE``. Parent changeset
1072 IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1072 IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1073
1073
1074 ``incoming``
1074 ``incoming``
1075 Run after a changeset has been pulled, pushed, or unbundled into
1075 Run after a changeset has been pulled, pushed, or unbundled into
1076 the local repository. The ID of the newly arrived changeset is in
1076 the local repository. The ID of the newly arrived changeset is in
1077 ``$HG_NODE``. The URL that was source of the changes is in ``$HG_URL``.
1077 ``$HG_NODE``. The URL that was source of the changes is in ``$HG_URL``.
1078
1078
1079 ``outgoing``
1079 ``outgoing``
1080 Run after sending changes from the local repository to another. The ID of
1080 Run after sending changes from the local repository to another. The ID of
1081 first changeset sent is in ``$HG_NODE``. The source of operation is in
1081 first changeset sent is in ``$HG_NODE``. The source of operation is in
1082 ``$HG_SOURCE``. Also see :hg:`help config.hooks.preoutgoing`.
1082 ``$HG_SOURCE``. Also see :hg:`help config.hooks.preoutgoing`.
1083
1083
1084 ``post-<command>``
1084 ``post-<command>``
1085 Run after successful invocations of the associated command. The
1085 Run after successful invocations of the associated command. The
1086 contents of the command line are passed as ``$HG_ARGS`` and the result
1086 contents of the command line are passed as ``$HG_ARGS`` and the result
1087 code in ``$HG_RESULT``. Parsed command line arguments are passed as
1087 code in ``$HG_RESULT``. Parsed command line arguments are passed as
1088 ``$HG_PATS`` and ``$HG_OPTS``. These contain string representations of
1088 ``$HG_PATS`` and ``$HG_OPTS``. These contain string representations of
1089 the python data internally passed to <command>. ``$HG_OPTS`` is a
1089 the python data internally passed to <command>. ``$HG_OPTS`` is a
1090 dictionary of options (with unspecified options set to their defaults).
1090 dictionary of options (with unspecified options set to their defaults).
1091 ``$HG_PATS`` is a list of arguments. Hook failure is ignored.
1091 ``$HG_PATS`` is a list of arguments. Hook failure is ignored.
1092
1092
1093 ``fail-<command>``
1093 ``fail-<command>``
1094 Run after a failed invocation of an associated command. The contents
1094 Run after a failed invocation of an associated command. The contents
1095 of the command line are passed as ``$HG_ARGS``. Parsed command line
1095 of the command line are passed as ``$HG_ARGS``. Parsed command line
1096 arguments are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain
1096 arguments are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain
1097 string representations of the python data internally passed to
1097 string representations of the python data internally passed to
1098 <command>. ``$HG_OPTS`` is a dictionary of options (with unspecified
1098 <command>. ``$HG_OPTS`` is a dictionary of options (with unspecified
1099 options set to their defaults). ``$HG_PATS`` is a list of arguments.
1099 options set to their defaults). ``$HG_PATS`` is a list of arguments.
1100 Hook failure is ignored.
1100 Hook failure is ignored.
1101
1101
1102 ``pre-<command>``
1102 ``pre-<command>``
1103 Run before executing the associated command. The contents of the
1103 Run before executing the associated command. The contents of the
1104 command line are passed as ``$HG_ARGS``. Parsed command line arguments
1104 command line are passed as ``$HG_ARGS``. Parsed command line arguments
1105 are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain string
1105 are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain string
1106 representations of the data internally passed to <command>. ``$HG_OPTS``
1106 representations of the data internally passed to <command>. ``$HG_OPTS``
1107 is a dictionary of options (with unspecified options set to their
1107 is a dictionary of options (with unspecified options set to their
1108 defaults). ``$HG_PATS`` is a list of arguments. If the hook returns
1108 defaults). ``$HG_PATS`` is a list of arguments. If the hook returns
1109 failure, the command doesn't execute and Mercurial returns the failure
1109 failure, the command doesn't execute and Mercurial returns the failure
1110 code.
1110 code.
1111
1111
1112 ``prechangegroup``
1112 ``prechangegroup``
1113 Run before a changegroup is added via push, pull or unbundle. Exit
1113 Run before a changegroup is added via push, pull or unbundle. Exit
1114 status 0 allows the changegroup to proceed. A non-zero status will
1114 status 0 allows the changegroup to proceed. A non-zero status will
1115 cause the push, pull or unbundle to fail. The URL from which changes
1115 cause the push, pull or unbundle to fail. The URL from which changes
1116 will come is in ``$HG_URL``.
1116 will come is in ``$HG_URL``.
1117
1117
1118 ``precommit``
1118 ``precommit``
1119 Run before starting a local commit. Exit status 0 allows the
1119 Run before starting a local commit. Exit status 0 allows the
1120 commit to proceed. A non-zero status will cause the commit to fail.
1120 commit to proceed. A non-zero status will cause the commit to fail.
1121 Parent changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1121 Parent changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1122
1122
1123 ``prelistkeys``
1123 ``prelistkeys``
1124 Run before listing pushkeys (like bookmarks) in the
1124 Run before listing pushkeys (like bookmarks) in the
1125 repository. A non-zero status will cause failure. The key namespace is
1125 repository. A non-zero status will cause failure. The key namespace is
1126 in ``$HG_NAMESPACE``.
1126 in ``$HG_NAMESPACE``.
1127
1127
1128 ``preoutgoing``
1128 ``preoutgoing``
1129 Run before collecting changes to send from the local repository to
1129 Run before collecting changes to send from the local repository to
1130 another. A non-zero status will cause failure. This lets you prevent
1130 another. A non-zero status will cause failure. This lets you prevent
1131 pull over HTTP or SSH. It can also prevent propagating commits (via
1131 pull over HTTP or SSH. It can also prevent propagating commits (via
1132 local pull, push (outbound) or bundle commands), but not completely,
1132 local pull, push (outbound) or bundle commands), but not completely,
1133 since you can just copy files instead. The source of operation is in
1133 since you can just copy files instead. The source of operation is in
1134 ``$HG_SOURCE``. If "serve", the operation is happening on behalf of a remote
1134 ``$HG_SOURCE``. If "serve", the operation is happening on behalf of a remote
1135 SSH or HTTP repository. If "push", "pull" or "bundle", the operation
1135 SSH or HTTP repository. If "push", "pull" or "bundle", the operation
1136 is happening on behalf of a repository on same system.
1136 is happening on behalf of a repository on same system.
1137
1137
1138 ``prepushkey``
1138 ``prepushkey``
1139 Run before a pushkey (like a bookmark) is added to the
1139 Run before a pushkey (like a bookmark) is added to the
1140 repository. A non-zero status will cause the key to be rejected. The
1140 repository. A non-zero status will cause the key to be rejected. The
1141 key namespace is in ``$HG_NAMESPACE``, the key is in ``$HG_KEY``,
1141 key namespace is in ``$HG_NAMESPACE``, the key is in ``$HG_KEY``,
1142 the old value (if any) is in ``$HG_OLD``, and the new value is in
1142 the old value (if any) is in ``$HG_OLD``, and the new value is in
1143 ``$HG_NEW``.
1143 ``$HG_NEW``.
1144
1144
1145 ``pretag``
1145 ``pretag``
1146 Run before creating a tag. Exit status 0 allows the tag to be
1146 Run before creating a tag. Exit status 0 allows the tag to be
1147 created. A non-zero status will cause the tag to fail. The ID of the
1147 created. A non-zero status will cause the tag to fail. The ID of the
1148 changeset to tag is in ``$HG_NODE``. The name of tag is in ``$HG_TAG``. The
1148 changeset to tag is in ``$HG_NODE``. The name of tag is in ``$HG_TAG``. The
1149 tag is local if ``$HG_LOCAL=1``, or in the repository if ``$HG_LOCAL=0``.
1149 tag is local if ``$HG_LOCAL=1``, or in the repository if ``$HG_LOCAL=0``.
1150
1150
1151 ``pretxnopen``
1151 ``pretxnopen``
1152 Run before any new repository transaction is open. The reason for the
1152 Run before any new repository transaction is open. The reason for the
1153 transaction will be in ``$HG_TXNNAME``, and a unique identifier for the
1153 transaction will be in ``$HG_TXNNAME``, and a unique identifier for the
1154 transaction will be in ``$HG_TXNID``. A non-zero status will prevent the
1154 transaction will be in ``$HG_TXNID``. A non-zero status will prevent the
1155 transaction from being opened.
1155 transaction from being opened.
1156
1156
1157 ``pretxnclose``
1157 ``pretxnclose``
1158 Run right before the transaction is actually finalized. Any repository change
1158 Run right before the transaction is actually finalized. Any repository change
1159 will be visible to the hook program. This lets you validate the transaction
1159 will be visible to the hook program. This lets you validate the transaction
1160 content or change it. Exit status 0 allows the commit to proceed. A non-zero
1160 content or change it. Exit status 0 allows the commit to proceed. A non-zero
1161 status will cause the transaction to be rolled back. The reason for the
1161 status will cause the transaction to be rolled back. The reason for the
1162 transaction opening will be in ``$HG_TXNNAME``, and a unique identifier for
1162 transaction opening will be in ``$HG_TXNNAME``, and a unique identifier for
1163 the transaction will be in ``$HG_TXNID``. The rest of the available data will
1163 the transaction will be in ``$HG_TXNID``. The rest of the available data will
1164 vary according the transaction type. Changes unbundled to the repository will
1164 vary according the transaction type. Changes unbundled to the repository will
1165 add ``$HG_URL`` and ``$HG_SOURCE``. New changesets will add ``$HG_NODE`` (the
1165 add ``$HG_URL`` and ``$HG_SOURCE``. New changesets will add ``$HG_NODE`` (the
1166 ID of the first added changeset), ``$HG_NODE_LAST`` (the ID of the last added
1166 ID of the first added changeset), ``$HG_NODE_LAST`` (the ID of the last added
1167 changeset). Bookmark and phase changes will set ``$HG_BOOKMARK_MOVED`` and
1167 changeset). Bookmark and phase changes will set ``$HG_BOOKMARK_MOVED`` and
1168 ``$HG_PHASES_MOVED`` to ``1`` respectively. The number of new obsmarkers, if
1168 ``$HG_PHASES_MOVED`` to ``1`` respectively. The number of new obsmarkers, if
1169 any, will be in ``$HG_NEW_OBSMARKERS``, etc.
1169 any, will be in ``$HG_NEW_OBSMARKERS``, etc.
1170
1170
1171 ``pretxnclose-bookmark``
1171 ``pretxnclose-bookmark``
1172 Run right before a bookmark change is actually finalized. Any repository
1172 Run right before a bookmark change is actually finalized. Any repository
1173 change will be visible to the hook program. This lets you validate the
1173 change will be visible to the hook program. This lets you validate the
1174 transaction content or change it. Exit status 0 allows the commit to
1174 transaction content or change it. Exit status 0 allows the commit to
1175 proceed. A non-zero status will cause the transaction to be rolled back.
1175 proceed. A non-zero status will cause the transaction to be rolled back.
1176 The name of the bookmark will be available in ``$HG_BOOKMARK``, the new
1176 The name of the bookmark will be available in ``$HG_BOOKMARK``, the new
1177 bookmark location will be available in ``$HG_NODE`` while the previous
1177 bookmark location will be available in ``$HG_NODE`` while the previous
1178 location will be available in ``$HG_OLDNODE``. In case of a bookmark
1178 location will be available in ``$HG_OLDNODE``. In case of a bookmark
1179 creation ``$HG_OLDNODE`` will be empty. In case of deletion ``$HG_NODE``
1179 creation ``$HG_OLDNODE`` will be empty. In case of deletion ``$HG_NODE``
1180 will be empty.
1180 will be empty.
1181 In addition, the reason for the transaction opening will be in
1181 In addition, the reason for the transaction opening will be in
1182 ``$HG_TXNNAME``, and a unique identifier for the transaction will be in
1182 ``$HG_TXNNAME``, and a unique identifier for the transaction will be in
1183 ``$HG_TXNID``.
1183 ``$HG_TXNID``.
1184
1184
1185 ``pretxnclose-phase``
1185 ``pretxnclose-phase``
1186 Run right before a phase change is actually finalized. Any repository change
1186 Run right before a phase change is actually finalized. Any repository change
1187 will be visible to the hook program. This lets you validate the transaction
1187 will be visible to the hook program. This lets you validate the transaction
1188 content or change it. Exit status 0 allows the commit to proceed. A non-zero
1188 content or change it. Exit status 0 allows the commit to proceed. A non-zero
1189 status will cause the transaction to be rolled back. The hook is called
1189 status will cause the transaction to be rolled back. The hook is called
1190 multiple times, once for each revision affected by a phase change.
1190 multiple times, once for each revision affected by a phase change.
1191 The affected node is available in ``$HG_NODE``, the phase in ``$HG_PHASE``
1191 The affected node is available in ``$HG_NODE``, the phase in ``$HG_PHASE``
1192 while the previous ``$HG_OLDPHASE``. In case of new node, ``$HG_OLDPHASE``
1192 while the previous ``$HG_OLDPHASE``. In case of new node, ``$HG_OLDPHASE``
1193 will be empty. In addition, the reason for the transaction opening will be in
1193 will be empty. In addition, the reason for the transaction opening will be in
1194 ``$HG_TXNNAME``, and a unique identifier for the transaction will be in
1194 ``$HG_TXNNAME``, and a unique identifier for the transaction will be in
1195 ``$HG_TXNID``. The hook is also run for newly added revisions. In this case
1195 ``$HG_TXNID``. The hook is also run for newly added revisions. In this case
1196 the ``$HG_OLDPHASE`` entry will be empty.
1196 the ``$HG_OLDPHASE`` entry will be empty.
1197
1197
1198 ``txnclose``
1198 ``txnclose``
1199 Run after any repository transaction has been committed. At this
1199 Run after any repository transaction has been committed. At this
1200 point, the transaction can no longer be rolled back. The hook will run
1200 point, the transaction can no longer be rolled back. The hook will run
1201 after the lock is released. See :hg:`help config.hooks.pretxnclose` for
1201 after the lock is released. See :hg:`help config.hooks.pretxnclose` for
1202 details about available variables.
1202 details about available variables.
1203
1203
1204 ``txnclose-bookmark``
1204 ``txnclose-bookmark``
1205 Run after any bookmark change has been committed. At this point, the
1205 Run after any bookmark change has been committed. At this point, the
1206 transaction can no longer be rolled back. The hook will run after the lock
1206 transaction can no longer be rolled back. The hook will run after the lock
1207 is released. See :hg:`help config.hooks.pretxnclose-bookmark` for details
1207 is released. See :hg:`help config.hooks.pretxnclose-bookmark` for details
1208 about available variables.
1208 about available variables.
1209
1209
1210 ``txnclose-phase``
1210 ``txnclose-phase``
1211 Run after any phase change has been committed. At this point, the
1211 Run after any phase change has been committed. At this point, the
1212 transaction can no longer be rolled back. The hook will run after the lock
1212 transaction can no longer be rolled back. The hook will run after the lock
1213 is released. See :hg:`help config.hooks.pretxnclose-phase` for details about
1213 is released. See :hg:`help config.hooks.pretxnclose-phase` for details about
1214 available variables.
1214 available variables.
1215
1215
1216 ``txnabort``
1216 ``txnabort``
1217 Run when a transaction is aborted. See :hg:`help config.hooks.pretxnclose`
1217 Run when a transaction is aborted. See :hg:`help config.hooks.pretxnclose`
1218 for details about available variables.
1218 for details about available variables.
1219
1219
1220 ``pretxnchangegroup``
1220 ``pretxnchangegroup``
1221 Run after a changegroup has been added via push, pull or unbundle, but before
1221 Run after a changegroup has been added via push, pull or unbundle, but before
1222 the transaction has been committed. The changegroup is visible to the hook
1222 the transaction has been committed. The changegroup is visible to the hook
1223 program. This allows validation of incoming changes before accepting them.
1223 program. This allows validation of incoming changes before accepting them.
1224 The ID of the first new changeset is in ``$HG_NODE`` and last is in
1224 The ID of the first new changeset is in ``$HG_NODE`` and last is in
1225 ``$HG_NODE_LAST``. Exit status 0 allows the transaction to commit. A non-zero
1225 ``$HG_NODE_LAST``. Exit status 0 allows the transaction to commit. A non-zero
1226 status will cause the transaction to be rolled back, and the push, pull or
1226 status will cause the transaction to be rolled back, and the push, pull or
1227 unbundle will fail. The URL that was the source of changes is in ``$HG_URL``.
1227 unbundle will fail. The URL that was the source of changes is in ``$HG_URL``.
1228
1228
1229 ``pretxncommit``
1229 ``pretxncommit``
1230 Run after a changeset has been created, but before the transaction is
1230 Run after a changeset has been created, but before the transaction is
1231 committed. The changeset is visible to the hook program. This allows
1231 committed. The changeset is visible to the hook program. This allows
1232 validation of the commit message and changes. Exit status 0 allows the
1232 validation of the commit message and changes. Exit status 0 allows the
1233 commit to proceed. A non-zero status will cause the transaction to
1233 commit to proceed. A non-zero status will cause the transaction to
1234 be rolled back. The ID of the new changeset is in ``$HG_NODE``. The parent
1234 be rolled back. The ID of the new changeset is in ``$HG_NODE``. The parent
1235 changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1235 changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``.
1236
1236
1237 ``preupdate``
1237 ``preupdate``
1238 Run before updating the working directory. Exit status 0 allows
1238 Run before updating the working directory. Exit status 0 allows
1239 the update to proceed. A non-zero status will prevent the update.
1239 the update to proceed. A non-zero status will prevent the update.
1240 The changeset ID of first new parent is in ``$HG_PARENT1``. If updating to a
1240 The changeset ID of first new parent is in ``$HG_PARENT1``. If updating to a
1241 merge, the ID of second new parent is in ``$HG_PARENT2``.
1241 merge, the ID of second new parent is in ``$HG_PARENT2``.
1242
1242
1243 ``listkeys``
1243 ``listkeys``
1244 Run after listing pushkeys (like bookmarks) in the repository. The
1244 Run after listing pushkeys (like bookmarks) in the repository. The
1245 key namespace is in ``$HG_NAMESPACE``. ``$HG_VALUES`` is a
1245 key namespace is in ``$HG_NAMESPACE``. ``$HG_VALUES`` is a
1246 dictionary containing the keys and values.
1246 dictionary containing the keys and values.
1247
1247
1248 ``pushkey``
1248 ``pushkey``
1249 Run after a pushkey (like a bookmark) is added to the
1249 Run after a pushkey (like a bookmark) is added to the
1250 repository. The key namespace is in ``$HG_NAMESPACE``, the key is in
1250 repository. The key namespace is in ``$HG_NAMESPACE``, the key is in
1251 ``$HG_KEY``, the old value (if any) is in ``$HG_OLD``, and the new
1251 ``$HG_KEY``, the old value (if any) is in ``$HG_OLD``, and the new
1252 value is in ``$HG_NEW``.
1252 value is in ``$HG_NEW``.
1253
1253
1254 ``tag``
1254 ``tag``
1255 Run after a tag is created. The ID of the tagged changeset is in ``$HG_NODE``.
1255 Run after a tag is created. The ID of the tagged changeset is in ``$HG_NODE``.
1256 The name of tag is in ``$HG_TAG``. The tag is local if ``$HG_LOCAL=1``, or in
1256 The name of tag is in ``$HG_TAG``. The tag is local if ``$HG_LOCAL=1``, or in
1257 the repository if ``$HG_LOCAL=0``.
1257 the repository if ``$HG_LOCAL=0``.
1258
1258
1259 ``update``
1259 ``update``
1260 Run after updating the working directory. The changeset ID of first
1260 Run after updating the working directory. The changeset ID of first
1261 new parent is in ``$HG_PARENT1``. If updating to a merge, the ID of second new
1261 new parent is in ``$HG_PARENT1``. If updating to a merge, the ID of second new
1262 parent is in ``$HG_PARENT2``. If the update succeeded, ``$HG_ERROR=0``. If the
1262 parent is in ``$HG_PARENT2``. If the update succeeded, ``$HG_ERROR=0``. If the
1263 update failed (e.g. because conflicts were not resolved), ``$HG_ERROR=1``.
1263 update failed (e.g. because conflicts were not resolved), ``$HG_ERROR=1``.
1264
1264
1265 .. note::
1265 .. note::
1266
1266
1267 It is generally better to use standard hooks rather than the
1267 It is generally better to use standard hooks rather than the
1268 generic pre- and post- command hooks, as they are guaranteed to be
1268 generic pre- and post- command hooks, as they are guaranteed to be
1269 called in the appropriate contexts for influencing transactions.
1269 called in the appropriate contexts for influencing transactions.
1270 Also, hooks like "commit" will be called in all contexts that
1270 Also, hooks like "commit" will be called in all contexts that
1271 generate a commit (e.g. tag) and not just the commit command.
1271 generate a commit (e.g. tag) and not just the commit command.
1272
1272
1273 .. note::
1273 .. note::
1274
1274
1275 Environment variables with empty values may not be passed to
1275 Environment variables with empty values may not be passed to
1276 hooks on platforms such as Windows. As an example, ``$HG_PARENT2``
1276 hooks on platforms such as Windows. As an example, ``$HG_PARENT2``
1277 will have an empty value under Unix-like platforms for non-merge
1277 will have an empty value under Unix-like platforms for non-merge
1278 changesets, while it will not be available at all under Windows.
1278 changesets, while it will not be available at all under Windows.
1279
1279
1280 The syntax for Python hooks is as follows::
1280 The syntax for Python hooks is as follows::
1281
1281
1282 hookname = python:modulename.submodule.callable
1282 hookname = python:modulename.submodule.callable
1283 hookname = python:/path/to/python/module.py:callable
1283 hookname = python:/path/to/python/module.py:callable
1284
1284
1285 Python hooks are run within the Mercurial process. Each hook is
1285 Python hooks are run within the Mercurial process. Each hook is
1286 called with at least three keyword arguments: a ui object (keyword
1286 called with at least three keyword arguments: a ui object (keyword
1287 ``ui``), a repository object (keyword ``repo``), and a ``hooktype``
1287 ``ui``), a repository object (keyword ``repo``), and a ``hooktype``
1288 keyword that tells what kind of hook is used. Arguments listed as
1288 keyword that tells what kind of hook is used. Arguments listed as
1289 environment variables above are passed as keyword arguments, with no
1289 environment variables above are passed as keyword arguments, with no
1290 ``HG_`` prefix, and names in lower case.
1290 ``HG_`` prefix, and names in lower case.
1291
1291
1292 If a Python hook returns a "true" value or raises an exception, this
1292 If a Python hook returns a "true" value or raises an exception, this
1293 is treated as a failure.
1293 is treated as a failure.
1294
1294
1295
1295
1296 ``hostfingerprints``
1296 ``hostfingerprints``
1297 --------------------
1297 --------------------
1298
1298
1299 (Deprecated. Use ``[hostsecurity]``'s ``fingerprints`` options instead.)
1299 (Deprecated. Use ``[hostsecurity]``'s ``fingerprints`` options instead.)
1300
1300
1301 Fingerprints of the certificates of known HTTPS servers.
1301 Fingerprints of the certificates of known HTTPS servers.
1302
1302
1303 A HTTPS connection to a server with a fingerprint configured here will
1303 A HTTPS connection to a server with a fingerprint configured here will
1304 only succeed if the servers certificate matches the fingerprint.
1304 only succeed if the servers certificate matches the fingerprint.
1305 This is very similar to how ssh known hosts works.
1305 This is very similar to how ssh known hosts works.
1306
1306
1307 The fingerprint is the SHA-1 hash value of the DER encoded certificate.
1307 The fingerprint is the SHA-1 hash value of the DER encoded certificate.
1308 Multiple values can be specified (separated by spaces or commas). This can
1308 Multiple values can be specified (separated by spaces or commas). This can
1309 be used to define both old and new fingerprints while a host transitions
1309 be used to define both old and new fingerprints while a host transitions
1310 to a new certificate.
1310 to a new certificate.
1311
1311
1312 The CA chain and web.cacerts is not used for servers with a fingerprint.
1312 The CA chain and web.cacerts is not used for servers with a fingerprint.
1313
1313
1314 For example::
1314 For example::
1315
1315
1316 [hostfingerprints]
1316 [hostfingerprints]
1317 hg.intevation.de = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1317 hg.intevation.de = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1318 hg.intevation.org = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1318 hg.intevation.org = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
1319
1319
1320 ``hostsecurity``
1320 ``hostsecurity``
1321 ----------------
1321 ----------------
1322
1322
1323 Used to specify global and per-host security settings for connecting to
1323 Used to specify global and per-host security settings for connecting to
1324 other machines.
1324 other machines.
1325
1325
1326 The following options control default behavior for all hosts.
1326 The following options control default behavior for all hosts.
1327
1327
1328 ``ciphers``
1328 ``ciphers``
1329 Defines the cryptographic ciphers to use for connections.
1329 Defines the cryptographic ciphers to use for connections.
1330
1330
1331 Value must be a valid OpenSSL Cipher List Format as documented at
1331 Value must be a valid OpenSSL Cipher List Format as documented at
1332 https://www.openssl.org/docs/manmaster/apps/ciphers.html#CIPHER-LIST-FORMAT.
1332 https://www.openssl.org/docs/manmaster/apps/ciphers.html#CIPHER-LIST-FORMAT.
1333
1333
1334 This setting is for advanced users only. Setting to incorrect values
1334 This setting is for advanced users only. Setting to incorrect values
1335 can significantly lower connection security or decrease performance.
1335 can significantly lower connection security or decrease performance.
1336 You have been warned.
1336 You have been warned.
1337
1337
1338 This option requires Python 2.7.
1338 This option requires Python 2.7.
1339
1339
1340 ``minimumprotocol``
1340 ``minimumprotocol``
1341 Defines the minimum channel encryption protocol to use.
1341 Defines the minimum channel encryption protocol to use.
1342
1342
1343 By default, the highest version of TLS supported by both client and server
1343 By default, the highest version of TLS supported by both client and server
1344 is used.
1344 is used.
1345
1345
1346 Allowed values are: ``tls1.0``, ``tls1.1``, ``tls1.2``.
1346 Allowed values are: ``tls1.0``, ``tls1.1``, ``tls1.2``.
1347
1347
1348 When running on an old Python version, only ``tls1.0`` is allowed since
1348 When running on an old Python version, only ``tls1.0`` is allowed since
1349 old versions of Python only support up to TLS 1.0.
1349 old versions of Python only support up to TLS 1.0.
1350
1350
1351 When running a Python that supports modern TLS versions, the default is
1351 When running a Python that supports modern TLS versions, the default is
1352 ``tls1.1``. ``tls1.0`` can still be used to allow TLS 1.0. However, this
1352 ``tls1.1``. ``tls1.0`` can still be used to allow TLS 1.0. However, this
1353 weakens security and should only be used as a feature of last resort if
1353 weakens security and should only be used as a feature of last resort if
1354 a server does not support TLS 1.1+.
1354 a server does not support TLS 1.1+.
1355
1355
1356 Options in the ``[hostsecurity]`` section can have the form
1356 Options in the ``[hostsecurity]`` section can have the form
1357 ``hostname``:``setting``. This allows multiple settings to be defined on a
1357 ``hostname``:``setting``. This allows multiple settings to be defined on a
1358 per-host basis.
1358 per-host basis.
1359
1359
1360 The following per-host settings can be defined.
1360 The following per-host settings can be defined.
1361
1361
1362 ``ciphers``
1362 ``ciphers``
1363 This behaves like ``ciphers`` as described above except it only applies
1363 This behaves like ``ciphers`` as described above except it only applies
1364 to the host on which it is defined.
1364 to the host on which it is defined.
1365
1365
1366 ``fingerprints``
1366 ``fingerprints``
1367 A list of hashes of the DER encoded peer/remote certificate. Values have
1367 A list of hashes of the DER encoded peer/remote certificate. Values have
1368 the form ``algorithm``:``fingerprint``. e.g.
1368 the form ``algorithm``:``fingerprint``. e.g.
1369 ``sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2``.
1369 ``sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2``.
1370 In addition, colons (``:``) can appear in the fingerprint part.
1370 In addition, colons (``:``) can appear in the fingerprint part.
1371
1371
1372 The following algorithms/prefixes are supported: ``sha1``, ``sha256``,
1372 The following algorithms/prefixes are supported: ``sha1``, ``sha256``,
1373 ``sha512``.
1373 ``sha512``.
1374
1374
1375 Use of ``sha256`` or ``sha512`` is preferred.
1375 Use of ``sha256`` or ``sha512`` is preferred.
1376
1376
1377 If a fingerprint is specified, the CA chain is not validated for this
1377 If a fingerprint is specified, the CA chain is not validated for this
1378 host and Mercurial will require the remote certificate to match one
1378 host and Mercurial will require the remote certificate to match one
1379 of the fingerprints specified. This means if the server updates its
1379 of the fingerprints specified. This means if the server updates its
1380 certificate, Mercurial will abort until a new fingerprint is defined.
1380 certificate, Mercurial will abort until a new fingerprint is defined.
1381 This can provide stronger security than traditional CA-based validation
1381 This can provide stronger security than traditional CA-based validation
1382 at the expense of convenience.
1382 at the expense of convenience.
1383
1383
1384 This option takes precedence over ``verifycertsfile``.
1384 This option takes precedence over ``verifycertsfile``.
1385
1385
1386 ``minimumprotocol``
1386 ``minimumprotocol``
1387 This behaves like ``minimumprotocol`` as described above except it
1387 This behaves like ``minimumprotocol`` as described above except it
1388 only applies to the host on which it is defined.
1388 only applies to the host on which it is defined.
1389
1389
1390 ``verifycertsfile``
1390 ``verifycertsfile``
1391 Path to file a containing a list of PEM encoded certificates used to
1391 Path to file a containing a list of PEM encoded certificates used to
1392 verify the server certificate. Environment variables and ``~user``
1392 verify the server certificate. Environment variables and ``~user``
1393 constructs are expanded in the filename.
1393 constructs are expanded in the filename.
1394
1394
1395 The server certificate or the certificate's certificate authority (CA)
1395 The server certificate or the certificate's certificate authority (CA)
1396 must match a certificate from this file or certificate verification
1396 must match a certificate from this file or certificate verification
1397 will fail and connections to the server will be refused.
1397 will fail and connections to the server will be refused.
1398
1398
1399 If defined, only certificates provided by this file will be used:
1399 If defined, only certificates provided by this file will be used:
1400 ``web.cacerts`` and any system/default certificates will not be
1400 ``web.cacerts`` and any system/default certificates will not be
1401 used.
1401 used.
1402
1402
1403 This option has no effect if the per-host ``fingerprints`` option
1403 This option has no effect if the per-host ``fingerprints`` option
1404 is set.
1404 is set.
1405
1405
1406 The format of the file is as follows::
1406 The format of the file is as follows::
1407
1407
1408 -----BEGIN CERTIFICATE-----
1408 -----BEGIN CERTIFICATE-----
1409 ... (certificate in base64 PEM encoding) ...
1409 ... (certificate in base64 PEM encoding) ...
1410 -----END CERTIFICATE-----
1410 -----END CERTIFICATE-----
1411 -----BEGIN CERTIFICATE-----
1411 -----BEGIN CERTIFICATE-----
1412 ... (certificate in base64 PEM encoding) ...
1412 ... (certificate in base64 PEM encoding) ...
1413 -----END CERTIFICATE-----
1413 -----END CERTIFICATE-----
1414
1414
1415 For example::
1415 For example::
1416
1416
1417 [hostsecurity]
1417 [hostsecurity]
1418 hg.example.com:fingerprints = sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
1418 hg.example.com:fingerprints = sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2
1419 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
1419 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
1420 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
1420 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
1421 foo.example.com:verifycertsfile = /etc/ssl/trusted-ca-certs.pem
1421 foo.example.com:verifycertsfile = /etc/ssl/trusted-ca-certs.pem
1422
1422
1423 To change the default minimum protocol version to TLS 1.2 but to allow TLS 1.1
1423 To change the default minimum protocol version to TLS 1.2 but to allow TLS 1.1
1424 when connecting to ``hg.example.com``::
1424 when connecting to ``hg.example.com``::
1425
1425
1426 [hostsecurity]
1426 [hostsecurity]
1427 minimumprotocol = tls1.2
1427 minimumprotocol = tls1.2
1428 hg.example.com:minimumprotocol = tls1.1
1428 hg.example.com:minimumprotocol = tls1.1
1429
1429
1430 ``http_proxy``
1430 ``http_proxy``
1431 --------------
1431 --------------
1432
1432
1433 Used to access web-based Mercurial repositories through a HTTP
1433 Used to access web-based Mercurial repositories through a HTTP
1434 proxy.
1434 proxy.
1435
1435
1436 ``host``
1436 ``host``
1437 Host name and (optional) port of the proxy server, for example
1437 Host name and (optional) port of the proxy server, for example
1438 "myproxy:8000".
1438 "myproxy:8000".
1439
1439
1440 ``no``
1440 ``no``
1441 Optional. Comma-separated list of host names that should bypass
1441 Optional. Comma-separated list of host names that should bypass
1442 the proxy.
1442 the proxy.
1443
1443
1444 ``passwd``
1444 ``passwd``
1445 Optional. Password to authenticate with at the proxy server.
1445 Optional. Password to authenticate with at the proxy server.
1446
1446
1447 ``user``
1447 ``user``
1448 Optional. User name to authenticate with at the proxy server.
1448 Optional. User name to authenticate with at the proxy server.
1449
1449
1450 ``always``
1450 ``always``
1451 Optional. Always use the proxy, even for localhost and any entries
1451 Optional. Always use the proxy, even for localhost and any entries
1452 in ``http_proxy.no``. (default: False)
1452 in ``http_proxy.no``. (default: False)
1453
1453
1454 ``http``
1454 ``http``
1455 ----------
1455 ----------
1456
1456
1457 Used to configure access to Mercurial repositories via HTTP.
1457 Used to configure access to Mercurial repositories via HTTP.
1458
1458
1459 ``timeout``
1459 ``timeout``
1460 If set, blocking operations will timeout after that many seconds.
1460 If set, blocking operations will timeout after that many seconds.
1461 (default: None)
1461 (default: None)
1462
1462
1463 ``merge``
1463 ``merge``
1464 ---------
1464 ---------
1465
1465
1466 This section specifies behavior during merges and updates.
1466 This section specifies behavior during merges and updates.
1467
1467
1468 ``checkignored``
1468 ``checkignored``
1469 Controls behavior when an ignored file on disk has the same name as a tracked
1469 Controls behavior when an ignored file on disk has the same name as a tracked
1470 file in the changeset being merged or updated to, and has different
1470 file in the changeset being merged or updated to, and has different
1471 contents. Options are ``abort``, ``warn`` and ``ignore``. With ``abort``,
1471 contents. Options are ``abort``, ``warn`` and ``ignore``. With ``abort``,
1472 abort on such files. With ``warn``, warn on such files and back them up as
1472 abort on such files. With ``warn``, warn on such files and back them up as
1473 ``.orig``. With ``ignore``, don't print a warning and back them up as
1473 ``.orig``. With ``ignore``, don't print a warning and back them up as
1474 ``.orig``. (default: ``abort``)
1474 ``.orig``. (default: ``abort``)
1475
1475
1476 ``checkunknown``
1476 ``checkunknown``
1477 Controls behavior when an unknown file that isn't ignored has the same name
1477 Controls behavior when an unknown file that isn't ignored has the same name
1478 as a tracked file in the changeset being merged or updated to, and has
1478 as a tracked file in the changeset being merged or updated to, and has
1479 different contents. Similar to ``merge.checkignored``, except for files that
1479 different contents. Similar to ``merge.checkignored``, except for files that
1480 are not ignored. (default: ``abort``)
1480 are not ignored. (default: ``abort``)
1481
1481
1482 ``on-failure``
1482 ``on-failure``
1483 When set to ``continue`` (the default), the merge process attempts to
1483 When set to ``continue`` (the default), the merge process attempts to
1484 merge all unresolved files using the merge chosen tool, regardless of
1484 merge all unresolved files using the merge chosen tool, regardless of
1485 whether previous file merge attempts during the process succeeded or not.
1485 whether previous file merge attempts during the process succeeded or not.
1486 Setting this to ``prompt`` will prompt after any merge failure continue
1486 Setting this to ``prompt`` will prompt after any merge failure continue
1487 or halt the merge process. Setting this to ``halt`` will automatically
1487 or halt the merge process. Setting this to ``halt`` will automatically
1488 halt the merge process on any merge tool failure. The merge process
1488 halt the merge process on any merge tool failure. The merge process
1489 can be restarted by using the ``resolve`` command. When a merge is
1489 can be restarted by using the ``resolve`` command. When a merge is
1490 halted, the repository is left in a normal ``unresolved`` merge state.
1490 halted, the repository is left in a normal ``unresolved`` merge state.
1491 (default: ``continue``)
1491 (default: ``continue``)
1492
1492
1493 ``strict-capability-check``
1493 ``strict-capability-check``
1494 Whether capabilities of internal merge tools are checked strictly
1494 Whether capabilities of internal merge tools are checked strictly
1495 or not, while examining rules to decide merge tool to be used.
1495 or not, while examining rules to decide merge tool to be used.
1496 (default: False)
1496 (default: False)
1497
1497
1498 ``merge-patterns``
1498 ``merge-patterns``
1499 ------------------
1499 ------------------
1500
1500
1501 This section specifies merge tools to associate with particular file
1501 This section specifies merge tools to associate with particular file
1502 patterns. Tools matched here will take precedence over the default
1502 patterns. Tools matched here will take precedence over the default
1503 merge tool. Patterns are globs by default, rooted at the repository
1503 merge tool. Patterns are globs by default, rooted at the repository
1504 root.
1504 root.
1505
1505
1506 Example::
1506 Example::
1507
1507
1508 [merge-patterns]
1508 [merge-patterns]
1509 **.c = kdiff3
1509 **.c = kdiff3
1510 **.jpg = myimgmerge
1510 **.jpg = myimgmerge
1511
1511
1512 ``merge-tools``
1512 ``merge-tools``
1513 ---------------
1513 ---------------
1514
1514
1515 This section configures external merge tools to use for file-level
1515 This section configures external merge tools to use for file-level
1516 merges. This section has likely been preconfigured at install time.
1516 merges. This section has likely been preconfigured at install time.
1517 Use :hg:`config merge-tools` to check the existing configuration.
1517 Use :hg:`config merge-tools` to check the existing configuration.
1518 Also see :hg:`help merge-tools` for more details.
1518 Also see :hg:`help merge-tools` for more details.
1519
1519
1520 Example ``~/.hgrc``::
1520 Example ``~/.hgrc``::
1521
1521
1522 [merge-tools]
1522 [merge-tools]
1523 # Override stock tool location
1523 # Override stock tool location
1524 kdiff3.executable = ~/bin/kdiff3
1524 kdiff3.executable = ~/bin/kdiff3
1525 # Specify command line
1525 # Specify command line
1526 kdiff3.args = $base $local $other -o $output
1526 kdiff3.args = $base $local $other -o $output
1527 # Give higher priority
1527 # Give higher priority
1528 kdiff3.priority = 1
1528 kdiff3.priority = 1
1529
1529
1530 # Changing the priority of preconfigured tool
1530 # Changing the priority of preconfigured tool
1531 meld.priority = 0
1531 meld.priority = 0
1532
1532
1533 # Disable a preconfigured tool
1533 # Disable a preconfigured tool
1534 vimdiff.disabled = yes
1534 vimdiff.disabled = yes
1535
1535
1536 # Define new tool
1536 # Define new tool
1537 myHtmlTool.args = -m $local $other $base $output
1537 myHtmlTool.args = -m $local $other $base $output
1538 myHtmlTool.regkey = Software\FooSoftware\HtmlMerge
1538 myHtmlTool.regkey = Software\FooSoftware\HtmlMerge
1539 myHtmlTool.priority = 1
1539 myHtmlTool.priority = 1
1540
1540
1541 Supported arguments:
1541 Supported arguments:
1542
1542
1543 ``priority``
1543 ``priority``
1544 The priority in which to evaluate this tool.
1544 The priority in which to evaluate this tool.
1545 (default: 0)
1545 (default: 0)
1546
1546
1547 ``executable``
1547 ``executable``
1548 Either just the name of the executable or its pathname.
1548 Either just the name of the executable or its pathname.
1549
1549
1550 .. container:: windows
1550 .. container:: windows
1551
1551
1552 On Windows, the path can use environment variables with ${ProgramFiles}
1552 On Windows, the path can use environment variables with ${ProgramFiles}
1553 syntax.
1553 syntax.
1554
1554
1555 (default: the tool name)
1555 (default: the tool name)
1556
1556
1557 ``args``
1557 ``args``
1558 The arguments to pass to the tool executable. You can refer to the
1558 The arguments to pass to the tool executable. You can refer to the
1559 files being merged as well as the output file through these
1559 files being merged as well as the output file through these
1560 variables: ``$base``, ``$local``, ``$other``, ``$output``.
1560 variables: ``$base``, ``$local``, ``$other``, ``$output``.
1561
1561
1562 The meaning of ``$local`` and ``$other`` can vary depending on which action is
1562 The meaning of ``$local`` and ``$other`` can vary depending on which action is
1563 being performed. During an update or merge, ``$local`` represents the original
1563 being performed. During an update or merge, ``$local`` represents the original
1564 state of the file, while ``$other`` represents the commit you are updating to or
1564 state of the file, while ``$other`` represents the commit you are updating to or
1565 the commit you are merging with. During a rebase, ``$local`` represents the
1565 the commit you are merging with. During a rebase, ``$local`` represents the
1566 destination of the rebase, and ``$other`` represents the commit being rebased.
1566 destination of the rebase, and ``$other`` represents the commit being rebased.
1567
1567
1568 Some operations define custom labels to assist with identifying the revisions,
1568 Some operations define custom labels to assist with identifying the revisions,
1569 accessible via ``$labellocal``, ``$labelother``, and ``$labelbase``. If custom
1569 accessible via ``$labellocal``, ``$labelother``, and ``$labelbase``. If custom
1570 labels are not available, these will be ``local``, ``other``, and ``base``,
1570 labels are not available, these will be ``local``, ``other``, and ``base``,
1571 respectively.
1571 respectively.
1572 (default: ``$local $base $other``)
1572 (default: ``$local $base $other``)
1573
1573
1574 ``premerge``
1574 ``premerge``
1575 Attempt to run internal non-interactive 3-way merge tool before
1575 Attempt to run internal non-interactive 3-way merge tool before
1576 launching external tool. Options are ``true``, ``false``, ``keep``,
1576 launching external tool. Options are ``true``, ``false``, ``keep``,
1577 ``keep-merge3``, or ``keep-mergediff`` (experimental). The ``keep`` option
1577 ``keep-merge3``, or ``keep-mergediff`` (experimental). The ``keep`` option
1578 will leave markers in the file if the premerge fails. The ``keep-merge3``
1578 will leave markers in the file if the premerge fails. The ``keep-merge3``
1579 will do the same but include information about the base of the merge in the
1579 will do the same but include information about the base of the merge in the
1580 marker (see internal :merge3 in :hg:`help merge-tools`). The
1580 marker (see internal :merge3 in :hg:`help merge-tools`). The
1581 ``keep-mergediff`` option is similar but uses a different marker style
1581 ``keep-mergediff`` option is similar but uses a different marker style
1582 (see internal :merge3 in :hg:`help merge-tools`). (default: True)
1582 (see internal :merge3 in :hg:`help merge-tools`). (default: True)
1583
1583
1584 ``binary``
1584 ``binary``
1585 This tool can merge binary files. (default: False, unless tool
1585 This tool can merge binary files. (default: False, unless tool
1586 was selected by file pattern match)
1586 was selected by file pattern match)
1587
1587
1588 ``symlink``
1588 ``symlink``
1589 This tool can merge symlinks. (default: False)
1589 This tool can merge symlinks. (default: False)
1590
1590
1591 ``check``
1591 ``check``
1592 A list of merge success-checking options:
1592 A list of merge success-checking options:
1593
1593
1594 ``changed``
1594 ``changed``
1595 Ask whether merge was successful when the merged file shows no changes.
1595 Ask whether merge was successful when the merged file shows no changes.
1596 ``conflicts``
1596 ``conflicts``
1597 Check whether there are conflicts even though the tool reported success.
1597 Check whether there are conflicts even though the tool reported success.
1598 ``prompt``
1598 ``prompt``
1599 Always prompt for merge success, regardless of success reported by tool.
1599 Always prompt for merge success, regardless of success reported by tool.
1600
1600
1601 ``fixeol``
1601 ``fixeol``
1602 Attempt to fix up EOL changes caused by the merge tool.
1602 Attempt to fix up EOL changes caused by the merge tool.
1603 (default: False)
1603 (default: False)
1604
1604
1605 ``gui``
1605 ``gui``
1606 This tool requires a graphical interface to run. (default: False)
1606 This tool requires a graphical interface to run. (default: False)
1607
1607
1608 ``mergemarkers``
1608 ``mergemarkers``
1609 Controls whether the labels passed via ``$labellocal``, ``$labelother``, and
1609 Controls whether the labels passed via ``$labellocal``, ``$labelother``, and
1610 ``$labelbase`` are ``detailed`` (respecting ``mergemarkertemplate``) or
1610 ``$labelbase`` are ``detailed`` (respecting ``mergemarkertemplate``) or
1611 ``basic``. If ``premerge`` is ``keep`` or ``keep-merge3``, the conflict
1611 ``basic``. If ``premerge`` is ``keep`` or ``keep-merge3``, the conflict
1612 markers generated during premerge will be ``detailed`` if either this option or
1612 markers generated during premerge will be ``detailed`` if either this option or
1613 the corresponding option in the ``[ui]`` section is ``detailed``.
1613 the corresponding option in the ``[ui]`` section is ``detailed``.
1614 (default: ``basic``)
1614 (default: ``basic``)
1615
1615
1616 ``mergemarkertemplate``
1616 ``mergemarkertemplate``
1617 This setting can be used to override ``mergemarker`` from the
1617 This setting can be used to override ``mergemarker`` from the
1618 ``[command-templates]`` section on a per-tool basis; this applies to the
1618 ``[command-templates]`` section on a per-tool basis; this applies to the
1619 ``$label``-prefixed variables and to the conflict markers that are generated
1619 ``$label``-prefixed variables and to the conflict markers that are generated
1620 if ``premerge`` is ``keep` or ``keep-merge3``. See the corresponding variable
1620 if ``premerge`` is ``keep` or ``keep-merge3``. See the corresponding variable
1621 in ``[ui]`` for more information.
1621 in ``[ui]`` for more information.
1622
1622
1623 .. container:: windows
1623 .. container:: windows
1624
1624
1625 ``regkey``
1625 ``regkey``
1626 Windows registry key which describes install location of this
1626 Windows registry key which describes install location of this
1627 tool. Mercurial will search for this key first under
1627 tool. Mercurial will search for this key first under
1628 ``HKEY_CURRENT_USER`` and then under ``HKEY_LOCAL_MACHINE``.
1628 ``HKEY_CURRENT_USER`` and then under ``HKEY_LOCAL_MACHINE``.
1629 (default: None)
1629 (default: None)
1630
1630
1631 ``regkeyalt``
1631 ``regkeyalt``
1632 An alternate Windows registry key to try if the first key is not
1632 An alternate Windows registry key to try if the first key is not
1633 found. The alternate key uses the same ``regname`` and ``regappend``
1633 found. The alternate key uses the same ``regname`` and ``regappend``
1634 semantics of the primary key. The most common use for this key
1634 semantics of the primary key. The most common use for this key
1635 is to search for 32bit applications on 64bit operating systems.
1635 is to search for 32bit applications on 64bit operating systems.
1636 (default: None)
1636 (default: None)
1637
1637
1638 ``regname``
1638 ``regname``
1639 Name of value to read from specified registry key.
1639 Name of value to read from specified registry key.
1640 (default: the unnamed (default) value)
1640 (default: the unnamed (default) value)
1641
1641
1642 ``regappend``
1642 ``regappend``
1643 String to append to the value read from the registry, typically
1643 String to append to the value read from the registry, typically
1644 the executable name of the tool.
1644 the executable name of the tool.
1645 (default: None)
1645 (default: None)
1646
1646
1647 ``pager``
1647 ``pager``
1648 ---------
1648 ---------
1649
1649
1650 Setting used to control when to paginate and with what external tool. See
1650 Setting used to control when to paginate and with what external tool. See
1651 :hg:`help pager` for details.
1651 :hg:`help pager` for details.
1652
1652
1653 ``pager``
1653 ``pager``
1654 Define the external tool used as pager.
1654 Define the external tool used as pager.
1655
1655
1656 If no pager is set, Mercurial uses the environment variable $PAGER.
1656 If no pager is set, Mercurial uses the environment variable $PAGER.
1657 If neither pager.pager, nor $PAGER is set, a default pager will be
1657 If neither pager.pager, nor $PAGER is set, a default pager will be
1658 used, typically `less` on Unix and `more` on Windows. Example::
1658 used, typically `less` on Unix and `more` on Windows. Example::
1659
1659
1660 [pager]
1660 [pager]
1661 pager = less -FRX
1661 pager = less -FRX
1662
1662
1663 ``ignore``
1663 ``ignore``
1664 List of commands to disable the pager for. Example::
1664 List of commands to disable the pager for. Example::
1665
1665
1666 [pager]
1666 [pager]
1667 ignore = version, help, update
1667 ignore = version, help, update
1668
1668
1669 ``patch``
1669 ``patch``
1670 ---------
1670 ---------
1671
1671
1672 Settings used when applying patches, for instance through the 'import'
1672 Settings used when applying patches, for instance through the 'import'
1673 command or with Mercurial Queues extension.
1673 command or with Mercurial Queues extension.
1674
1674
1675 ``eol``
1675 ``eol``
1676 When set to 'strict' patch content and patched files end of lines
1676 When set to 'strict' patch content and patched files end of lines
1677 are preserved. When set to ``lf`` or ``crlf``, both files end of
1677 are preserved. When set to ``lf`` or ``crlf``, both files end of
1678 lines are ignored when patching and the result line endings are
1678 lines are ignored when patching and the result line endings are
1679 normalized to either LF (Unix) or CRLF (Windows). When set to
1679 normalized to either LF (Unix) or CRLF (Windows). When set to
1680 ``auto``, end of lines are again ignored while patching but line
1680 ``auto``, end of lines are again ignored while patching but line
1681 endings in patched files are normalized to their original setting
1681 endings in patched files are normalized to their original setting
1682 on a per-file basis. If target file does not exist or has no end
1682 on a per-file basis. If target file does not exist or has no end
1683 of line, patch line endings are preserved.
1683 of line, patch line endings are preserved.
1684 (default: strict)
1684 (default: strict)
1685
1685
1686 ``fuzz``
1686 ``fuzz``
1687 The number of lines of 'fuzz' to allow when applying patches. This
1687 The number of lines of 'fuzz' to allow when applying patches. This
1688 controls how much context the patcher is allowed to ignore when
1688 controls how much context the patcher is allowed to ignore when
1689 trying to apply a patch.
1689 trying to apply a patch.
1690 (default: 2)
1690 (default: 2)
1691
1691
1692 ``paths``
1692 ``paths``
1693 ---------
1693 ---------
1694
1694
1695 Assigns symbolic names and behavior to repositories.
1695 Assigns symbolic names and behavior to repositories.
1696
1696
1697 Options are symbolic names defining the URL or directory that is the
1697 Options are symbolic names defining the URL or directory that is the
1698 location of the repository. Example::
1698 location of the repository. Example::
1699
1699
1700 [paths]
1700 [paths]
1701 my_server = https://example.com/my_repo
1701 my_server = https://example.com/my_repo
1702 local_path = /home/me/repo
1702 local_path = /home/me/repo
1703
1703
1704 These symbolic names can be used from the command line. To pull
1704 These symbolic names can be used from the command line. To pull
1705 from ``my_server``: :hg:`pull my_server`. To push to ``local_path``:
1705 from ``my_server``: :hg:`pull my_server`. To push to ``local_path``:
1706 :hg:`push local_path`. You can check :hg:`help urls` for details about
1706 :hg:`push local_path`. You can check :hg:`help urls` for details about
1707 valid URLs.
1707 valid URLs.
1708
1708
1709 Options containing colons (``:``) denote sub-options that can influence
1709 Options containing colons (``:``) denote sub-options that can influence
1710 behavior for that specific path. Example::
1710 behavior for that specific path. Example::
1711
1711
1712 [paths]
1712 [paths]
1713 my_server = https://example.com/my_path
1713 my_server = https://example.com/my_path
1714 my_server:pushurl = ssh://example.com/my_path
1714 my_server:pushurl = ssh://example.com/my_path
1715
1715
1716 Paths using the `path://otherpath` scheme will inherit the sub-options value from
1716 Paths using the `path://otherpath` scheme will inherit the sub-options value from
1717 the path they point to.
1717 the path they point to.
1718
1718
1719 The following sub-options can be defined:
1719 The following sub-options can be defined:
1720
1720
1721 ``multi-urls``
1722 A boolean option. When enabled the value of the `[paths]` entry will be
1723 parsed as a list and the alias will resolve to multiple destination. If some
1724 of the list entry use the `path://` syntax, the suboption will be inherited
1725 individually.
1726
1721 ``pushurl``
1727 ``pushurl``
1722 The URL to use for push operations. If not defined, the location
1728 The URL to use for push operations. If not defined, the location
1723 defined by the path's main entry is used.
1729 defined by the path's main entry is used.
1724
1730
1725 ``pushrev``
1731 ``pushrev``
1726 A revset defining which revisions to push by default.
1732 A revset defining which revisions to push by default.
1727
1733
1728 When :hg:`push` is executed without a ``-r`` argument, the revset
1734 When :hg:`push` is executed without a ``-r`` argument, the revset
1729 defined by this sub-option is evaluated to determine what to push.
1735 defined by this sub-option is evaluated to determine what to push.
1730
1736
1731 For example, a value of ``.`` will push the working directory's
1737 For example, a value of ``.`` will push the working directory's
1732 revision by default.
1738 revision by default.
1733
1739
1734 Revsets specifying bookmarks will not result in the bookmark being
1740 Revsets specifying bookmarks will not result in the bookmark being
1735 pushed.
1741 pushed.
1736
1742
1737 The following special named paths exist:
1743 The following special named paths exist:
1738
1744
1739 ``default``
1745 ``default``
1740 The URL or directory to use when no source or remote is specified.
1746 The URL or directory to use when no source or remote is specified.
1741
1747
1742 :hg:`clone` will automatically define this path to the location the
1748 :hg:`clone` will automatically define this path to the location the
1743 repository was cloned from.
1749 repository was cloned from.
1744
1750
1745 ``default-push``
1751 ``default-push``
1746 (deprecated) The URL or directory for the default :hg:`push` location.
1752 (deprecated) The URL or directory for the default :hg:`push` location.
1747 ``default:pushurl`` should be used instead.
1753 ``default:pushurl`` should be used instead.
1748
1754
1749 ``phases``
1755 ``phases``
1750 ----------
1756 ----------
1751
1757
1752 Specifies default handling of phases. See :hg:`help phases` for more
1758 Specifies default handling of phases. See :hg:`help phases` for more
1753 information about working with phases.
1759 information about working with phases.
1754
1760
1755 ``publish``
1761 ``publish``
1756 Controls draft phase behavior when working as a server. When true,
1762 Controls draft phase behavior when working as a server. When true,
1757 pushed changesets are set to public in both client and server and
1763 pushed changesets are set to public in both client and server and
1758 pulled or cloned changesets are set to public in the client.
1764 pulled or cloned changesets are set to public in the client.
1759 (default: True)
1765 (default: True)
1760
1766
1761 ``new-commit``
1767 ``new-commit``
1762 Phase of newly-created commits.
1768 Phase of newly-created commits.
1763 (default: draft)
1769 (default: draft)
1764
1770
1765 ``checksubrepos``
1771 ``checksubrepos``
1766 Check the phase of the current revision of each subrepository. Allowed
1772 Check the phase of the current revision of each subrepository. Allowed
1767 values are "ignore", "follow" and "abort". For settings other than
1773 values are "ignore", "follow" and "abort". For settings other than
1768 "ignore", the phase of the current revision of each subrepository is
1774 "ignore", the phase of the current revision of each subrepository is
1769 checked before committing the parent repository. If any of those phases is
1775 checked before committing the parent repository. If any of those phases is
1770 greater than the phase of the parent repository (e.g. if a subrepo is in a
1776 greater than the phase of the parent repository (e.g. if a subrepo is in a
1771 "secret" phase while the parent repo is in "draft" phase), the commit is
1777 "secret" phase while the parent repo is in "draft" phase), the commit is
1772 either aborted (if checksubrepos is set to "abort") or the higher phase is
1778 either aborted (if checksubrepos is set to "abort") or the higher phase is
1773 used for the parent repository commit (if set to "follow").
1779 used for the parent repository commit (if set to "follow").
1774 (default: follow)
1780 (default: follow)
1775
1781
1776
1782
1777 ``profiling``
1783 ``profiling``
1778 -------------
1784 -------------
1779
1785
1780 Specifies profiling type, format, and file output. Two profilers are
1786 Specifies profiling type, format, and file output. Two profilers are
1781 supported: an instrumenting profiler (named ``ls``), and a sampling
1787 supported: an instrumenting profiler (named ``ls``), and a sampling
1782 profiler (named ``stat``).
1788 profiler (named ``stat``).
1783
1789
1784 In this section description, 'profiling data' stands for the raw data
1790 In this section description, 'profiling data' stands for the raw data
1785 collected during profiling, while 'profiling report' stands for a
1791 collected during profiling, while 'profiling report' stands for a
1786 statistical text report generated from the profiling data.
1792 statistical text report generated from the profiling data.
1787
1793
1788 ``enabled``
1794 ``enabled``
1789 Enable the profiler.
1795 Enable the profiler.
1790 (default: false)
1796 (default: false)
1791
1797
1792 This is equivalent to passing ``--profile`` on the command line.
1798 This is equivalent to passing ``--profile`` on the command line.
1793
1799
1794 ``type``
1800 ``type``
1795 The type of profiler to use.
1801 The type of profiler to use.
1796 (default: stat)
1802 (default: stat)
1797
1803
1798 ``ls``
1804 ``ls``
1799 Use Python's built-in instrumenting profiler. This profiler
1805 Use Python's built-in instrumenting profiler. This profiler
1800 works on all platforms, but each line number it reports is the
1806 works on all platforms, but each line number it reports is the
1801 first line of a function. This restriction makes it difficult to
1807 first line of a function. This restriction makes it difficult to
1802 identify the expensive parts of a non-trivial function.
1808 identify the expensive parts of a non-trivial function.
1803 ``stat``
1809 ``stat``
1804 Use a statistical profiler, statprof. This profiler is most
1810 Use a statistical profiler, statprof. This profiler is most
1805 useful for profiling commands that run for longer than about 0.1
1811 useful for profiling commands that run for longer than about 0.1
1806 seconds.
1812 seconds.
1807
1813
1808 ``format``
1814 ``format``
1809 Profiling format. Specific to the ``ls`` instrumenting profiler.
1815 Profiling format. Specific to the ``ls`` instrumenting profiler.
1810 (default: text)
1816 (default: text)
1811
1817
1812 ``text``
1818 ``text``
1813 Generate a profiling report. When saving to a file, it should be
1819 Generate a profiling report. When saving to a file, it should be
1814 noted that only the report is saved, and the profiling data is
1820 noted that only the report is saved, and the profiling data is
1815 not kept.
1821 not kept.
1816 ``kcachegrind``
1822 ``kcachegrind``
1817 Format profiling data for kcachegrind use: when saving to a
1823 Format profiling data for kcachegrind use: when saving to a
1818 file, the generated file can directly be loaded into
1824 file, the generated file can directly be loaded into
1819 kcachegrind.
1825 kcachegrind.
1820
1826
1821 ``statformat``
1827 ``statformat``
1822 Profiling format for the ``stat`` profiler.
1828 Profiling format for the ``stat`` profiler.
1823 (default: hotpath)
1829 (default: hotpath)
1824
1830
1825 ``hotpath``
1831 ``hotpath``
1826 Show a tree-based display containing the hot path of execution (where
1832 Show a tree-based display containing the hot path of execution (where
1827 most time was spent).
1833 most time was spent).
1828 ``bymethod``
1834 ``bymethod``
1829 Show a table of methods ordered by how frequently they are active.
1835 Show a table of methods ordered by how frequently they are active.
1830 ``byline``
1836 ``byline``
1831 Show a table of lines in files ordered by how frequently they are active.
1837 Show a table of lines in files ordered by how frequently they are active.
1832 ``json``
1838 ``json``
1833 Render profiling data as JSON.
1839 Render profiling data as JSON.
1834
1840
1835 ``frequency``
1841 ``frequency``
1836 Sampling frequency. Specific to the ``stat`` sampling profiler.
1842 Sampling frequency. Specific to the ``stat`` sampling profiler.
1837 (default: 1000)
1843 (default: 1000)
1838
1844
1839 ``output``
1845 ``output``
1840 File path where profiling data or report should be saved. If the
1846 File path where profiling data or report should be saved. If the
1841 file exists, it is replaced. (default: None, data is printed on
1847 file exists, it is replaced. (default: None, data is printed on
1842 stderr)
1848 stderr)
1843
1849
1844 ``sort``
1850 ``sort``
1845 Sort field. Specific to the ``ls`` instrumenting profiler.
1851 Sort field. Specific to the ``ls`` instrumenting profiler.
1846 One of ``callcount``, ``reccallcount``, ``totaltime`` and
1852 One of ``callcount``, ``reccallcount``, ``totaltime`` and
1847 ``inlinetime``.
1853 ``inlinetime``.
1848 (default: inlinetime)
1854 (default: inlinetime)
1849
1855
1850 ``time-track``
1856 ``time-track``
1851 Control if the stat profiler track ``cpu`` or ``real`` time.
1857 Control if the stat profiler track ``cpu`` or ``real`` time.
1852 (default: ``cpu`` on Windows, otherwise ``real``)
1858 (default: ``cpu`` on Windows, otherwise ``real``)
1853
1859
1854 ``limit``
1860 ``limit``
1855 Number of lines to show. Specific to the ``ls`` instrumenting profiler.
1861 Number of lines to show. Specific to the ``ls`` instrumenting profiler.
1856 (default: 30)
1862 (default: 30)
1857
1863
1858 ``nested``
1864 ``nested``
1859 Show at most this number of lines of drill-down info after each main entry.
1865 Show at most this number of lines of drill-down info after each main entry.
1860 This can help explain the difference between Total and Inline.
1866 This can help explain the difference between Total and Inline.
1861 Specific to the ``ls`` instrumenting profiler.
1867 Specific to the ``ls`` instrumenting profiler.
1862 (default: 0)
1868 (default: 0)
1863
1869
1864 ``showmin``
1870 ``showmin``
1865 Minimum fraction of samples an entry must have for it to be displayed.
1871 Minimum fraction of samples an entry must have for it to be displayed.
1866 Can be specified as a float between ``0.0`` and ``1.0`` or can have a
1872 Can be specified as a float between ``0.0`` and ``1.0`` or can have a
1867 ``%`` afterwards to allow values up to ``100``. e.g. ``5%``.
1873 ``%`` afterwards to allow values up to ``100``. e.g. ``5%``.
1868
1874
1869 Only used by the ``stat`` profiler.
1875 Only used by the ``stat`` profiler.
1870
1876
1871 For the ``hotpath`` format, default is ``0.05``.
1877 For the ``hotpath`` format, default is ``0.05``.
1872 For the ``chrome`` format, default is ``0.005``.
1878 For the ``chrome`` format, default is ``0.005``.
1873
1879
1874 The option is unused on other formats.
1880 The option is unused on other formats.
1875
1881
1876 ``showmax``
1882 ``showmax``
1877 Maximum fraction of samples an entry can have before it is ignored in
1883 Maximum fraction of samples an entry can have before it is ignored in
1878 display. Values format is the same as ``showmin``.
1884 display. Values format is the same as ``showmin``.
1879
1885
1880 Only used by the ``stat`` profiler.
1886 Only used by the ``stat`` profiler.
1881
1887
1882 For the ``chrome`` format, default is ``0.999``.
1888 For the ``chrome`` format, default is ``0.999``.
1883
1889
1884 The option is unused on other formats.
1890 The option is unused on other formats.
1885
1891
1886 ``showtime``
1892 ``showtime``
1887 Show time taken as absolute durations, in addition to percentages.
1893 Show time taken as absolute durations, in addition to percentages.
1888 Only used by the ``hotpath`` format.
1894 Only used by the ``hotpath`` format.
1889 (default: true)
1895 (default: true)
1890
1896
1891 ``progress``
1897 ``progress``
1892 ------------
1898 ------------
1893
1899
1894 Mercurial commands can draw progress bars that are as informative as
1900 Mercurial commands can draw progress bars that are as informative as
1895 possible. Some progress bars only offer indeterminate information, while others
1901 possible. Some progress bars only offer indeterminate information, while others
1896 have a definite end point.
1902 have a definite end point.
1897
1903
1898 ``debug``
1904 ``debug``
1899 Whether to print debug info when updating the progress bar. (default: False)
1905 Whether to print debug info when updating the progress bar. (default: False)
1900
1906
1901 ``delay``
1907 ``delay``
1902 Number of seconds (float) before showing the progress bar. (default: 3)
1908 Number of seconds (float) before showing the progress bar. (default: 3)
1903
1909
1904 ``changedelay``
1910 ``changedelay``
1905 Minimum delay before showing a new topic. When set to less than 3 * refresh,
1911 Minimum delay before showing a new topic. When set to less than 3 * refresh,
1906 that value will be used instead. (default: 1)
1912 that value will be used instead. (default: 1)
1907
1913
1908 ``estimateinterval``
1914 ``estimateinterval``
1909 Maximum sampling interval in seconds for speed and estimated time
1915 Maximum sampling interval in seconds for speed and estimated time
1910 calculation. (default: 60)
1916 calculation. (default: 60)
1911
1917
1912 ``refresh``
1918 ``refresh``
1913 Time in seconds between refreshes of the progress bar. (default: 0.1)
1919 Time in seconds between refreshes of the progress bar. (default: 0.1)
1914
1920
1915 ``format``
1921 ``format``
1916 Format of the progress bar.
1922 Format of the progress bar.
1917
1923
1918 Valid entries for the format field are ``topic``, ``bar``, ``number``,
1924 Valid entries for the format field are ``topic``, ``bar``, ``number``,
1919 ``unit``, ``estimate``, ``speed``, and ``item``. ``item`` defaults to the
1925 ``unit``, ``estimate``, ``speed``, and ``item``. ``item`` defaults to the
1920 last 20 characters of the item, but this can be changed by adding either
1926 last 20 characters of the item, but this can be changed by adding either
1921 ``-<num>`` which would take the last num characters, or ``+<num>`` for the
1927 ``-<num>`` which would take the last num characters, or ``+<num>`` for the
1922 first num characters.
1928 first num characters.
1923
1929
1924 (default: topic bar number estimate)
1930 (default: topic bar number estimate)
1925
1931
1926 ``width``
1932 ``width``
1927 If set, the maximum width of the progress information (that is, min(width,
1933 If set, the maximum width of the progress information (that is, min(width,
1928 term width) will be used).
1934 term width) will be used).
1929
1935
1930 ``clear-complete``
1936 ``clear-complete``
1931 Clear the progress bar after it's done. (default: True)
1937 Clear the progress bar after it's done. (default: True)
1932
1938
1933 ``disable``
1939 ``disable``
1934 If true, don't show a progress bar.
1940 If true, don't show a progress bar.
1935
1941
1936 ``assume-tty``
1942 ``assume-tty``
1937 If true, ALWAYS show a progress bar, unless disable is given.
1943 If true, ALWAYS show a progress bar, unless disable is given.
1938
1944
1939 ``rebase``
1945 ``rebase``
1940 ----------
1946 ----------
1941
1947
1942 ``evolution.allowdivergence``
1948 ``evolution.allowdivergence``
1943 Default to False, when True allow creating divergence when performing
1949 Default to False, when True allow creating divergence when performing
1944 rebase of obsolete changesets.
1950 rebase of obsolete changesets.
1945
1951
1946 ``revsetalias``
1952 ``revsetalias``
1947 ---------------
1953 ---------------
1948
1954
1949 Alias definitions for revsets. See :hg:`help revsets` for details.
1955 Alias definitions for revsets. See :hg:`help revsets` for details.
1950
1956
1951 ``rewrite``
1957 ``rewrite``
1952 -----------
1958 -----------
1953
1959
1954 ``backup-bundle``
1960 ``backup-bundle``
1955 Whether to save stripped changesets to a bundle file. (default: True)
1961 Whether to save stripped changesets to a bundle file. (default: True)
1956
1962
1957 ``update-timestamp``
1963 ``update-timestamp``
1958 If true, updates the date and time of the changeset to current. It is only
1964 If true, updates the date and time of the changeset to current. It is only
1959 applicable for `hg amend`, `hg commit --amend` and `hg uncommit` in the
1965 applicable for `hg amend`, `hg commit --amend` and `hg uncommit` in the
1960 current version.
1966 current version.
1961
1967
1962 ``empty-successor``
1968 ``empty-successor``
1963
1969
1964 Control what happens with empty successors that are the result of rewrite
1970 Control what happens with empty successors that are the result of rewrite
1965 operations. If set to ``skip``, the successor is not created. If set to
1971 operations. If set to ``skip``, the successor is not created. If set to
1966 ``keep``, the empty successor is created and kept.
1972 ``keep``, the empty successor is created and kept.
1967
1973
1968 Currently, only the rebase and absorb commands consider this configuration.
1974 Currently, only the rebase and absorb commands consider this configuration.
1969 (EXPERIMENTAL)
1975 (EXPERIMENTAL)
1970
1976
1971 ``share``
1977 ``share``
1972 ---------
1978 ---------
1973
1979
1974 ``safe-mismatch.source-safe``
1980 ``safe-mismatch.source-safe``
1975
1981
1976 Controls what happens when the shared repository does not use the
1982 Controls what happens when the shared repository does not use the
1977 share-safe mechanism but its source repository does.
1983 share-safe mechanism but its source repository does.
1978
1984
1979 Possible values are `abort` (default), `allow`, `upgrade-abort` and
1985 Possible values are `abort` (default), `allow`, `upgrade-abort` and
1980 `upgrade-abort`.
1986 `upgrade-abort`.
1981
1987
1982 ``abort``
1988 ``abort``
1983 Disallows running any command and aborts
1989 Disallows running any command and aborts
1984 ``allow``
1990 ``allow``
1985 Respects the feature presence in the share source
1991 Respects the feature presence in the share source
1986 ``upgrade-abort``
1992 ``upgrade-abort``
1987 tries to upgrade the share to use share-safe; if it fails, aborts
1993 tries to upgrade the share to use share-safe; if it fails, aborts
1988 ``upgrade-allow``
1994 ``upgrade-allow``
1989 tries to upgrade the share; if it fails, continue by
1995 tries to upgrade the share; if it fails, continue by
1990 respecting the share source setting
1996 respecting the share source setting
1991
1997
1992 Check :hg:`help config format.use-share-safe` for details about the
1998 Check :hg:`help config format.use-share-safe` for details about the
1993 share-safe feature.
1999 share-safe feature.
1994
2000
1995 ``safe-mismatch.source-safe.warn``
2001 ``safe-mismatch.source-safe.warn``
1996 Shows a warning on operations if the shared repository does not use
2002 Shows a warning on operations if the shared repository does not use
1997 share-safe, but the source repository does.
2003 share-safe, but the source repository does.
1998 (default: True)
2004 (default: True)
1999
2005
2000 ``safe-mismatch.source-not-safe``
2006 ``safe-mismatch.source-not-safe``
2001
2007
2002 Controls what happens when the shared repository uses the share-safe
2008 Controls what happens when the shared repository uses the share-safe
2003 mechanism but its source does not.
2009 mechanism but its source does not.
2004
2010
2005 Possible values are `abort` (default), `allow`, `downgrade-abort` and
2011 Possible values are `abort` (default), `allow`, `downgrade-abort` and
2006 `downgrade-abort`.
2012 `downgrade-abort`.
2007
2013
2008 ``abort``
2014 ``abort``
2009 Disallows running any command and aborts
2015 Disallows running any command and aborts
2010 ``allow``
2016 ``allow``
2011 Respects the feature presence in the share source
2017 Respects the feature presence in the share source
2012 ``downgrade-abort``
2018 ``downgrade-abort``
2013 tries to downgrade the share to not use share-safe; if it fails, aborts
2019 tries to downgrade the share to not use share-safe; if it fails, aborts
2014 ``downgrade-allow``
2020 ``downgrade-allow``
2015 tries to downgrade the share to not use share-safe;
2021 tries to downgrade the share to not use share-safe;
2016 if it fails, continue by respecting the shared source setting
2022 if it fails, continue by respecting the shared source setting
2017
2023
2018 Check :hg:`help config format.use-share-safe` for details about the
2024 Check :hg:`help config format.use-share-safe` for details about the
2019 share-safe feature.
2025 share-safe feature.
2020
2026
2021 ``safe-mismatch.source-not-safe.warn``
2027 ``safe-mismatch.source-not-safe.warn``
2022 Shows a warning on operations if the shared repository uses share-safe,
2028 Shows a warning on operations if the shared repository uses share-safe,
2023 but the source repository does not.
2029 but the source repository does not.
2024 (default: True)
2030 (default: True)
2025
2031
2026 ``storage``
2032 ``storage``
2027 -----------
2033 -----------
2028
2034
2029 Control the strategy Mercurial uses internally to store history. Options in this
2035 Control the strategy Mercurial uses internally to store history. Options in this
2030 category impact performance and repository size.
2036 category impact performance and repository size.
2031
2037
2032 ``revlog.optimize-delta-parent-choice``
2038 ``revlog.optimize-delta-parent-choice``
2033 When storing a merge revision, both parents will be equally considered as
2039 When storing a merge revision, both parents will be equally considered as
2034 a possible delta base. This results in better delta selection and improved
2040 a possible delta base. This results in better delta selection and improved
2035 revlog compression. This option is enabled by default.
2041 revlog compression. This option is enabled by default.
2036
2042
2037 Turning this option off can result in large increase of repository size for
2043 Turning this option off can result in large increase of repository size for
2038 repository with many merges.
2044 repository with many merges.
2039
2045
2040 ``revlog.persistent-nodemap.mmap``
2046 ``revlog.persistent-nodemap.mmap``
2041 Whether to use the Operating System "memory mapping" feature (when
2047 Whether to use the Operating System "memory mapping" feature (when
2042 possible) to access the persistent nodemap data. This improve performance
2048 possible) to access the persistent nodemap data. This improve performance
2043 and reduce memory pressure.
2049 and reduce memory pressure.
2044
2050
2045 Default to True.
2051 Default to True.
2046
2052
2047 For details on the "persistent-nodemap" feature, see:
2053 For details on the "persistent-nodemap" feature, see:
2048 :hg:`help config format.use-persistent-nodemap`.
2054 :hg:`help config format.use-persistent-nodemap`.
2049
2055
2050 ``revlog.persistent-nodemap.slow-path``
2056 ``revlog.persistent-nodemap.slow-path``
2051 Control the behavior of Merucrial when using a repository with "persistent"
2057 Control the behavior of Merucrial when using a repository with "persistent"
2052 nodemap with an installation of Mercurial without a fast implementation for
2058 nodemap with an installation of Mercurial without a fast implementation for
2053 the feature:
2059 the feature:
2054
2060
2055 ``allow``: Silently use the slower implementation to access the repository.
2061 ``allow``: Silently use the slower implementation to access the repository.
2056 ``warn``: Warn, but use the slower implementation to access the repository.
2062 ``warn``: Warn, but use the slower implementation to access the repository.
2057 ``abort``: Prevent access to such repositories. (This is the default)
2063 ``abort``: Prevent access to such repositories. (This is the default)
2058
2064
2059 For details on the "persistent-nodemap" feature, see:
2065 For details on the "persistent-nodemap" feature, see:
2060 :hg:`help config format.use-persistent-nodemap`.
2066 :hg:`help config format.use-persistent-nodemap`.
2061
2067
2062 ``revlog.reuse-external-delta-parent``
2068 ``revlog.reuse-external-delta-parent``
2063 Control the order in which delta parents are considered when adding new
2069 Control the order in which delta parents are considered when adding new
2064 revisions from an external source.
2070 revisions from an external source.
2065 (typically: apply bundle from `hg pull` or `hg push`).
2071 (typically: apply bundle from `hg pull` or `hg push`).
2066
2072
2067 New revisions are usually provided as a delta against other revisions. By
2073 New revisions are usually provided as a delta against other revisions. By
2068 default, Mercurial will try to reuse this delta first, therefore using the
2074 default, Mercurial will try to reuse this delta first, therefore using the
2069 same "delta parent" as the source. Directly using delta's from the source
2075 same "delta parent" as the source. Directly using delta's from the source
2070 reduces CPU usage and usually speeds up operation. However, in some case,
2076 reduces CPU usage and usually speeds up operation. However, in some case,
2071 the source might have sub-optimal delta bases and forcing their reevaluation
2077 the source might have sub-optimal delta bases and forcing their reevaluation
2072 is useful. For example, pushes from an old client could have sub-optimal
2078 is useful. For example, pushes from an old client could have sub-optimal
2073 delta's parent that the server want to optimize. (lack of general delta, bad
2079 delta's parent that the server want to optimize. (lack of general delta, bad
2074 parents, choice, lack of sparse-revlog, etc).
2080 parents, choice, lack of sparse-revlog, etc).
2075
2081
2076 This option is enabled by default. Turning it off will ensure bad delta
2082 This option is enabled by default. Turning it off will ensure bad delta
2077 parent choices from older client do not propagate to this repository, at
2083 parent choices from older client do not propagate to this repository, at
2078 the cost of a small increase in CPU consumption.
2084 the cost of a small increase in CPU consumption.
2079
2085
2080 Note: this option only control the order in which delta parents are
2086 Note: this option only control the order in which delta parents are
2081 considered. Even when disabled, the existing delta from the source will be
2087 considered. Even when disabled, the existing delta from the source will be
2082 reused if the same delta parent is selected.
2088 reused if the same delta parent is selected.
2083
2089
2084 ``revlog.reuse-external-delta``
2090 ``revlog.reuse-external-delta``
2085 Control the reuse of delta from external source.
2091 Control the reuse of delta from external source.
2086 (typically: apply bundle from `hg pull` or `hg push`).
2092 (typically: apply bundle from `hg pull` or `hg push`).
2087
2093
2088 New revisions are usually provided as a delta against another revision. By
2094 New revisions are usually provided as a delta against another revision. By
2089 default, Mercurial will not recompute the same delta again, trusting
2095 default, Mercurial will not recompute the same delta again, trusting
2090 externally provided deltas. There have been rare cases of small adjustment
2096 externally provided deltas. There have been rare cases of small adjustment
2091 to the diffing algorithm in the past. So in some rare case, recomputing
2097 to the diffing algorithm in the past. So in some rare case, recomputing
2092 delta provided by ancient clients can provides better results. Disabling
2098 delta provided by ancient clients can provides better results. Disabling
2093 this option means going through a full delta recomputation for all incoming
2099 this option means going through a full delta recomputation for all incoming
2094 revisions. It means a large increase in CPU usage and will slow operations
2100 revisions. It means a large increase in CPU usage and will slow operations
2095 down.
2101 down.
2096
2102
2097 This option is enabled by default. When disabled, it also disables the
2103 This option is enabled by default. When disabled, it also disables the
2098 related ``storage.revlog.reuse-external-delta-parent`` option.
2104 related ``storage.revlog.reuse-external-delta-parent`` option.
2099
2105
2100 ``revlog.zlib.level``
2106 ``revlog.zlib.level``
2101 Zlib compression level used when storing data into the repository. Accepted
2107 Zlib compression level used when storing data into the repository. Accepted
2102 Value range from 1 (lowest compression) to 9 (highest compression). Zlib
2108 Value range from 1 (lowest compression) to 9 (highest compression). Zlib
2103 default value is 6.
2109 default value is 6.
2104
2110
2105
2111
2106 ``revlog.zstd.level``
2112 ``revlog.zstd.level``
2107 zstd compression level used when storing data into the repository. Accepted
2113 zstd compression level used when storing data into the repository. Accepted
2108 Value range from 1 (lowest compression) to 22 (highest compression).
2114 Value range from 1 (lowest compression) to 22 (highest compression).
2109 (default 3)
2115 (default 3)
2110
2116
2111 ``server``
2117 ``server``
2112 ----------
2118 ----------
2113
2119
2114 Controls generic server settings.
2120 Controls generic server settings.
2115
2121
2116 ``bookmarks-pushkey-compat``
2122 ``bookmarks-pushkey-compat``
2117 Trigger pushkey hook when being pushed bookmark updates. This config exist
2123 Trigger pushkey hook when being pushed bookmark updates. This config exist
2118 for compatibility purpose (default to True)
2124 for compatibility purpose (default to True)
2119
2125
2120 If you use ``pushkey`` and ``pre-pushkey`` hooks to control bookmark
2126 If you use ``pushkey`` and ``pre-pushkey`` hooks to control bookmark
2121 movement we recommend you migrate them to ``txnclose-bookmark`` and
2127 movement we recommend you migrate them to ``txnclose-bookmark`` and
2122 ``pretxnclose-bookmark``.
2128 ``pretxnclose-bookmark``.
2123
2129
2124 ``compressionengines``
2130 ``compressionengines``
2125 List of compression engines and their relative priority to advertise
2131 List of compression engines and their relative priority to advertise
2126 to clients.
2132 to clients.
2127
2133
2128 The order of compression engines determines their priority, the first
2134 The order of compression engines determines their priority, the first
2129 having the highest priority. If a compression engine is not listed
2135 having the highest priority. If a compression engine is not listed
2130 here, it won't be advertised to clients.
2136 here, it won't be advertised to clients.
2131
2137
2132 If not set (the default), built-in defaults are used. Run
2138 If not set (the default), built-in defaults are used. Run
2133 :hg:`debuginstall` to list available compression engines and their
2139 :hg:`debuginstall` to list available compression engines and their
2134 default wire protocol priority.
2140 default wire protocol priority.
2135
2141
2136 Older Mercurial clients only support zlib compression and this setting
2142 Older Mercurial clients only support zlib compression and this setting
2137 has no effect for legacy clients.
2143 has no effect for legacy clients.
2138
2144
2139 ``uncompressed``
2145 ``uncompressed``
2140 Whether to allow clients to clone a repository using the
2146 Whether to allow clients to clone a repository using the
2141 uncompressed streaming protocol. This transfers about 40% more
2147 uncompressed streaming protocol. This transfers about 40% more
2142 data than a regular clone, but uses less memory and CPU on both
2148 data than a regular clone, but uses less memory and CPU on both
2143 server and client. Over a LAN (100 Mbps or better) or a very fast
2149 server and client. Over a LAN (100 Mbps or better) or a very fast
2144 WAN, an uncompressed streaming clone is a lot faster (~10x) than a
2150 WAN, an uncompressed streaming clone is a lot faster (~10x) than a
2145 regular clone. Over most WAN connections (anything slower than
2151 regular clone. Over most WAN connections (anything slower than
2146 about 6 Mbps), uncompressed streaming is slower, because of the
2152 about 6 Mbps), uncompressed streaming is slower, because of the
2147 extra data transfer overhead. This mode will also temporarily hold
2153 extra data transfer overhead. This mode will also temporarily hold
2148 the write lock while determining what data to transfer.
2154 the write lock while determining what data to transfer.
2149 (default: True)
2155 (default: True)
2150
2156
2151 ``uncompressedallowsecret``
2157 ``uncompressedallowsecret``
2152 Whether to allow stream clones when the repository contains secret
2158 Whether to allow stream clones when the repository contains secret
2153 changesets. (default: False)
2159 changesets. (default: False)
2154
2160
2155 ``preferuncompressed``
2161 ``preferuncompressed``
2156 When set, clients will try to use the uncompressed streaming
2162 When set, clients will try to use the uncompressed streaming
2157 protocol. (default: False)
2163 protocol. (default: False)
2158
2164
2159 ``disablefullbundle``
2165 ``disablefullbundle``
2160 When set, servers will refuse attempts to do pull-based clones.
2166 When set, servers will refuse attempts to do pull-based clones.
2161 If this option is set, ``preferuncompressed`` and/or clone bundles
2167 If this option is set, ``preferuncompressed`` and/or clone bundles
2162 are highly recommended. Partial clones will still be allowed.
2168 are highly recommended. Partial clones will still be allowed.
2163 (default: False)
2169 (default: False)
2164
2170
2165 ``streamunbundle``
2171 ``streamunbundle``
2166 When set, servers will apply data sent from the client directly,
2172 When set, servers will apply data sent from the client directly,
2167 otherwise it will be written to a temporary file first. This option
2173 otherwise it will be written to a temporary file first. This option
2168 effectively prevents concurrent pushes.
2174 effectively prevents concurrent pushes.
2169
2175
2170 ``pullbundle``
2176 ``pullbundle``
2171 When set, the server will check pullbundle.manifest for bundles
2177 When set, the server will check pullbundle.manifest for bundles
2172 covering the requested heads and common nodes. The first matching
2178 covering the requested heads and common nodes. The first matching
2173 entry will be streamed to the client.
2179 entry will be streamed to the client.
2174
2180
2175 For HTTP transport, the stream will still use zlib compression
2181 For HTTP transport, the stream will still use zlib compression
2176 for older clients.
2182 for older clients.
2177
2183
2178 ``concurrent-push-mode``
2184 ``concurrent-push-mode``
2179 Level of allowed race condition between two pushing clients.
2185 Level of allowed race condition between two pushing clients.
2180
2186
2181 - 'strict': push is abort if another client touched the repository
2187 - 'strict': push is abort if another client touched the repository
2182 while the push was preparing.
2188 while the push was preparing.
2183 - 'check-related': push is only aborted if it affects head that got also
2189 - 'check-related': push is only aborted if it affects head that got also
2184 affected while the push was preparing. (default since 5.4)
2190 affected while the push was preparing. (default since 5.4)
2185
2191
2186 'check-related' only takes effect for compatible clients (version
2192 'check-related' only takes effect for compatible clients (version
2187 4.3 and later). Older clients will use 'strict'.
2193 4.3 and later). Older clients will use 'strict'.
2188
2194
2189 ``validate``
2195 ``validate``
2190 Whether to validate the completeness of pushed changesets by
2196 Whether to validate the completeness of pushed changesets by
2191 checking that all new file revisions specified in manifests are
2197 checking that all new file revisions specified in manifests are
2192 present. (default: False)
2198 present. (default: False)
2193
2199
2194 ``maxhttpheaderlen``
2200 ``maxhttpheaderlen``
2195 Instruct HTTP clients not to send request headers longer than this
2201 Instruct HTTP clients not to send request headers longer than this
2196 many bytes. (default: 1024)
2202 many bytes. (default: 1024)
2197
2203
2198 ``bundle1``
2204 ``bundle1``
2199 Whether to allow clients to push and pull using the legacy bundle1
2205 Whether to allow clients to push and pull using the legacy bundle1
2200 exchange format. (default: True)
2206 exchange format. (default: True)
2201
2207
2202 ``bundle1gd``
2208 ``bundle1gd``
2203 Like ``bundle1`` but only used if the repository is using the
2209 Like ``bundle1`` but only used if the repository is using the
2204 *generaldelta* storage format. (default: True)
2210 *generaldelta* storage format. (default: True)
2205
2211
2206 ``bundle1.push``
2212 ``bundle1.push``
2207 Whether to allow clients to push using the legacy bundle1 exchange
2213 Whether to allow clients to push using the legacy bundle1 exchange
2208 format. (default: True)
2214 format. (default: True)
2209
2215
2210 ``bundle1gd.push``
2216 ``bundle1gd.push``
2211 Like ``bundle1.push`` but only used if the repository is using the
2217 Like ``bundle1.push`` but only used if the repository is using the
2212 *generaldelta* storage format. (default: True)
2218 *generaldelta* storage format. (default: True)
2213
2219
2214 ``bundle1.pull``
2220 ``bundle1.pull``
2215 Whether to allow clients to pull using the legacy bundle1 exchange
2221 Whether to allow clients to pull using the legacy bundle1 exchange
2216 format. (default: True)
2222 format. (default: True)
2217
2223
2218 ``bundle1gd.pull``
2224 ``bundle1gd.pull``
2219 Like ``bundle1.pull`` but only used if the repository is using the
2225 Like ``bundle1.pull`` but only used if the repository is using the
2220 *generaldelta* storage format. (default: True)
2226 *generaldelta* storage format. (default: True)
2221
2227
2222 Large repositories using the *generaldelta* storage format should
2228 Large repositories using the *generaldelta* storage format should
2223 consider setting this option because converting *generaldelta*
2229 consider setting this option because converting *generaldelta*
2224 repositories to the exchange format required by the bundle1 data
2230 repositories to the exchange format required by the bundle1 data
2225 format can consume a lot of CPU.
2231 format can consume a lot of CPU.
2226
2232
2227 ``bundle2.stream``
2233 ``bundle2.stream``
2228 Whether to allow clients to pull using the bundle2 streaming protocol.
2234 Whether to allow clients to pull using the bundle2 streaming protocol.
2229 (default: True)
2235 (default: True)
2230
2236
2231 ``zliblevel``
2237 ``zliblevel``
2232 Integer between ``-1`` and ``9`` that controls the zlib compression level
2238 Integer between ``-1`` and ``9`` that controls the zlib compression level
2233 for wire protocol commands that send zlib compressed output (notably the
2239 for wire protocol commands that send zlib compressed output (notably the
2234 commands that send repository history data).
2240 commands that send repository history data).
2235
2241
2236 The default (``-1``) uses the default zlib compression level, which is
2242 The default (``-1``) uses the default zlib compression level, which is
2237 likely equivalent to ``6``. ``0`` means no compression. ``9`` means
2243 likely equivalent to ``6``. ``0`` means no compression. ``9`` means
2238 maximum compression.
2244 maximum compression.
2239
2245
2240 Setting this option allows server operators to make trade-offs between
2246 Setting this option allows server operators to make trade-offs between
2241 bandwidth and CPU used. Lowering the compression lowers CPU utilization
2247 bandwidth and CPU used. Lowering the compression lowers CPU utilization
2242 but sends more bytes to clients.
2248 but sends more bytes to clients.
2243
2249
2244 This option only impacts the HTTP server.
2250 This option only impacts the HTTP server.
2245
2251
2246 ``zstdlevel``
2252 ``zstdlevel``
2247 Integer between ``1`` and ``22`` that controls the zstd compression level
2253 Integer between ``1`` and ``22`` that controls the zstd compression level
2248 for wire protocol commands. ``1`` is the minimal amount of compression and
2254 for wire protocol commands. ``1`` is the minimal amount of compression and
2249 ``22`` is the highest amount of compression.
2255 ``22`` is the highest amount of compression.
2250
2256
2251 The default (``3``) should be significantly faster than zlib while likely
2257 The default (``3``) should be significantly faster than zlib while likely
2252 delivering better compression ratios.
2258 delivering better compression ratios.
2253
2259
2254 This option only impacts the HTTP server.
2260 This option only impacts the HTTP server.
2255
2261
2256 See also ``server.zliblevel``.
2262 See also ``server.zliblevel``.
2257
2263
2258 ``view``
2264 ``view``
2259 Repository filter used when exchanging revisions with the peer.
2265 Repository filter used when exchanging revisions with the peer.
2260
2266
2261 The default view (``served``) excludes secret and hidden changesets.
2267 The default view (``served``) excludes secret and hidden changesets.
2262 Another useful value is ``immutable`` (no draft, secret or hidden
2268 Another useful value is ``immutable`` (no draft, secret or hidden
2263 changesets). (EXPERIMENTAL)
2269 changesets). (EXPERIMENTAL)
2264
2270
2265 ``smtp``
2271 ``smtp``
2266 --------
2272 --------
2267
2273
2268 Configuration for extensions that need to send email messages.
2274 Configuration for extensions that need to send email messages.
2269
2275
2270 ``host``
2276 ``host``
2271 Host name of mail server, e.g. "mail.example.com".
2277 Host name of mail server, e.g. "mail.example.com".
2272
2278
2273 ``port``
2279 ``port``
2274 Optional. Port to connect to on mail server. (default: 465 if
2280 Optional. Port to connect to on mail server. (default: 465 if
2275 ``tls`` is smtps; 25 otherwise)
2281 ``tls`` is smtps; 25 otherwise)
2276
2282
2277 ``tls``
2283 ``tls``
2278 Optional. Method to enable TLS when connecting to mail server: starttls,
2284 Optional. Method to enable TLS when connecting to mail server: starttls,
2279 smtps or none. (default: none)
2285 smtps or none. (default: none)
2280
2286
2281 ``username``
2287 ``username``
2282 Optional. User name for authenticating with the SMTP server.
2288 Optional. User name for authenticating with the SMTP server.
2283 (default: None)
2289 (default: None)
2284
2290
2285 ``password``
2291 ``password``
2286 Optional. Password for authenticating with the SMTP server. If not
2292 Optional. Password for authenticating with the SMTP server. If not
2287 specified, interactive sessions will prompt the user for a
2293 specified, interactive sessions will prompt the user for a
2288 password; non-interactive sessions will fail. (default: None)
2294 password; non-interactive sessions will fail. (default: None)
2289
2295
2290 ``local_hostname``
2296 ``local_hostname``
2291 Optional. The hostname that the sender can use to identify
2297 Optional. The hostname that the sender can use to identify
2292 itself to the MTA.
2298 itself to the MTA.
2293
2299
2294
2300
2295 ``subpaths``
2301 ``subpaths``
2296 ------------
2302 ------------
2297
2303
2298 Subrepository source URLs can go stale if a remote server changes name
2304 Subrepository source URLs can go stale if a remote server changes name
2299 or becomes temporarily unavailable. This section lets you define
2305 or becomes temporarily unavailable. This section lets you define
2300 rewrite rules of the form::
2306 rewrite rules of the form::
2301
2307
2302 <pattern> = <replacement>
2308 <pattern> = <replacement>
2303
2309
2304 where ``pattern`` is a regular expression matching a subrepository
2310 where ``pattern`` is a regular expression matching a subrepository
2305 source URL and ``replacement`` is the replacement string used to
2311 source URL and ``replacement`` is the replacement string used to
2306 rewrite it. Groups can be matched in ``pattern`` and referenced in
2312 rewrite it. Groups can be matched in ``pattern`` and referenced in
2307 ``replacements``. For instance::
2313 ``replacements``. For instance::
2308
2314
2309 http://server/(.*)-hg/ = http://hg.server/\1/
2315 http://server/(.*)-hg/ = http://hg.server/\1/
2310
2316
2311 rewrites ``http://server/foo-hg/`` into ``http://hg.server/foo/``.
2317 rewrites ``http://server/foo-hg/`` into ``http://hg.server/foo/``.
2312
2318
2313 Relative subrepository paths are first made absolute, and the
2319 Relative subrepository paths are first made absolute, and the
2314 rewrite rules are then applied on the full (absolute) path. If ``pattern``
2320 rewrite rules are then applied on the full (absolute) path. If ``pattern``
2315 doesn't match the full path, an attempt is made to apply it on the
2321 doesn't match the full path, an attempt is made to apply it on the
2316 relative path alone. The rules are applied in definition order.
2322 relative path alone. The rules are applied in definition order.
2317
2323
2318 ``subrepos``
2324 ``subrepos``
2319 ------------
2325 ------------
2320
2326
2321 This section contains options that control the behavior of the
2327 This section contains options that control the behavior of the
2322 subrepositories feature. See also :hg:`help subrepos`.
2328 subrepositories feature. See also :hg:`help subrepos`.
2323
2329
2324 Security note: auditing in Mercurial is known to be insufficient to
2330 Security note: auditing in Mercurial is known to be insufficient to
2325 prevent clone-time code execution with carefully constructed Git
2331 prevent clone-time code execution with carefully constructed Git
2326 subrepos. It is unknown if a similar detect is present in Subversion
2332 subrepos. It is unknown if a similar detect is present in Subversion
2327 subrepos. Both Git and Subversion subrepos are disabled by default
2333 subrepos. Both Git and Subversion subrepos are disabled by default
2328 out of security concerns. These subrepo types can be enabled using
2334 out of security concerns. These subrepo types can be enabled using
2329 the respective options below.
2335 the respective options below.
2330
2336
2331 ``allowed``
2337 ``allowed``
2332 Whether subrepositories are allowed in the working directory.
2338 Whether subrepositories are allowed in the working directory.
2333
2339
2334 When false, commands involving subrepositories (like :hg:`update`)
2340 When false, commands involving subrepositories (like :hg:`update`)
2335 will fail for all subrepository types.
2341 will fail for all subrepository types.
2336 (default: true)
2342 (default: true)
2337
2343
2338 ``hg:allowed``
2344 ``hg:allowed``
2339 Whether Mercurial subrepositories are allowed in the working
2345 Whether Mercurial subrepositories are allowed in the working
2340 directory. This option only has an effect if ``subrepos.allowed``
2346 directory. This option only has an effect if ``subrepos.allowed``
2341 is true.
2347 is true.
2342 (default: true)
2348 (default: true)
2343
2349
2344 ``git:allowed``
2350 ``git:allowed``
2345 Whether Git subrepositories are allowed in the working directory.
2351 Whether Git subrepositories are allowed in the working directory.
2346 This option only has an effect if ``subrepos.allowed`` is true.
2352 This option only has an effect if ``subrepos.allowed`` is true.
2347
2353
2348 See the security note above before enabling Git subrepos.
2354 See the security note above before enabling Git subrepos.
2349 (default: false)
2355 (default: false)
2350
2356
2351 ``svn:allowed``
2357 ``svn:allowed``
2352 Whether Subversion subrepositories are allowed in the working
2358 Whether Subversion subrepositories are allowed in the working
2353 directory. This option only has an effect if ``subrepos.allowed``
2359 directory. This option only has an effect if ``subrepos.allowed``
2354 is true.
2360 is true.
2355
2361
2356 See the security note above before enabling Subversion subrepos.
2362 See the security note above before enabling Subversion subrepos.
2357 (default: false)
2363 (default: false)
2358
2364
2359 ``templatealias``
2365 ``templatealias``
2360 -----------------
2366 -----------------
2361
2367
2362 Alias definitions for templates. See :hg:`help templates` for details.
2368 Alias definitions for templates. See :hg:`help templates` for details.
2363
2369
2364 ``templates``
2370 ``templates``
2365 -------------
2371 -------------
2366
2372
2367 Use the ``[templates]`` section to define template strings.
2373 Use the ``[templates]`` section to define template strings.
2368 See :hg:`help templates` for details.
2374 See :hg:`help templates` for details.
2369
2375
2370 ``trusted``
2376 ``trusted``
2371 -----------
2377 -----------
2372
2378
2373 Mercurial will not use the settings in the
2379 Mercurial will not use the settings in the
2374 ``.hg/hgrc`` file from a repository if it doesn't belong to a trusted
2380 ``.hg/hgrc`` file from a repository if it doesn't belong to a trusted
2375 user or to a trusted group, as various hgrc features allow arbitrary
2381 user or to a trusted group, as various hgrc features allow arbitrary
2376 commands to be run. This issue is often encountered when configuring
2382 commands to be run. This issue is often encountered when configuring
2377 hooks or extensions for shared repositories or servers. However,
2383 hooks or extensions for shared repositories or servers. However,
2378 the web interface will use some safe settings from the ``[web]``
2384 the web interface will use some safe settings from the ``[web]``
2379 section.
2385 section.
2380
2386
2381 This section specifies what users and groups are trusted. The
2387 This section specifies what users and groups are trusted. The
2382 current user is always trusted. To trust everybody, list a user or a
2388 current user is always trusted. To trust everybody, list a user or a
2383 group with name ``*``. These settings must be placed in an
2389 group with name ``*``. These settings must be placed in an
2384 *already-trusted file* to take effect, such as ``$HOME/.hgrc`` of the
2390 *already-trusted file* to take effect, such as ``$HOME/.hgrc`` of the
2385 user or service running Mercurial.
2391 user or service running Mercurial.
2386
2392
2387 ``users``
2393 ``users``
2388 Comma-separated list of trusted users.
2394 Comma-separated list of trusted users.
2389
2395
2390 ``groups``
2396 ``groups``
2391 Comma-separated list of trusted groups.
2397 Comma-separated list of trusted groups.
2392
2398
2393
2399
2394 ``ui``
2400 ``ui``
2395 ------
2401 ------
2396
2402
2397 User interface controls.
2403 User interface controls.
2398
2404
2399 ``archivemeta``
2405 ``archivemeta``
2400 Whether to include the .hg_archival.txt file containing meta data
2406 Whether to include the .hg_archival.txt file containing meta data
2401 (hashes for the repository base and for tip) in archives created
2407 (hashes for the repository base and for tip) in archives created
2402 by the :hg:`archive` command or downloaded via hgweb.
2408 by the :hg:`archive` command or downloaded via hgweb.
2403 (default: True)
2409 (default: True)
2404
2410
2405 ``askusername``
2411 ``askusername``
2406 Whether to prompt for a username when committing. If True, and
2412 Whether to prompt for a username when committing. If True, and
2407 neither ``$HGUSER`` nor ``$EMAIL`` has been specified, then the user will
2413 neither ``$HGUSER`` nor ``$EMAIL`` has been specified, then the user will
2408 be prompted to enter a username. If no username is entered, the
2414 be prompted to enter a username. If no username is entered, the
2409 default ``USER@HOST`` is used instead.
2415 default ``USER@HOST`` is used instead.
2410 (default: False)
2416 (default: False)
2411
2417
2412 ``clonebundles``
2418 ``clonebundles``
2413 Whether the "clone bundles" feature is enabled.
2419 Whether the "clone bundles" feature is enabled.
2414
2420
2415 When enabled, :hg:`clone` may download and apply a server-advertised
2421 When enabled, :hg:`clone` may download and apply a server-advertised
2416 bundle file from a URL instead of using the normal exchange mechanism.
2422 bundle file from a URL instead of using the normal exchange mechanism.
2417
2423
2418 This can likely result in faster and more reliable clones.
2424 This can likely result in faster and more reliable clones.
2419
2425
2420 (default: True)
2426 (default: True)
2421
2427
2422 ``clonebundlefallback``
2428 ``clonebundlefallback``
2423 Whether failure to apply an advertised "clone bundle" from a server
2429 Whether failure to apply an advertised "clone bundle" from a server
2424 should result in fallback to a regular clone.
2430 should result in fallback to a regular clone.
2425
2431
2426 This is disabled by default because servers advertising "clone
2432 This is disabled by default because servers advertising "clone
2427 bundles" often do so to reduce server load. If advertised bundles
2433 bundles" often do so to reduce server load. If advertised bundles
2428 start mass failing and clients automatically fall back to a regular
2434 start mass failing and clients automatically fall back to a regular
2429 clone, this would add significant and unexpected load to the server
2435 clone, this would add significant and unexpected load to the server
2430 since the server is expecting clone operations to be offloaded to
2436 since the server is expecting clone operations to be offloaded to
2431 pre-generated bundles. Failing fast (the default behavior) ensures
2437 pre-generated bundles. Failing fast (the default behavior) ensures
2432 clients don't overwhelm the server when "clone bundle" application
2438 clients don't overwhelm the server when "clone bundle" application
2433 fails.
2439 fails.
2434
2440
2435 (default: False)
2441 (default: False)
2436
2442
2437 ``clonebundleprefers``
2443 ``clonebundleprefers``
2438 Defines preferences for which "clone bundles" to use.
2444 Defines preferences for which "clone bundles" to use.
2439
2445
2440 Servers advertising "clone bundles" may advertise multiple available
2446 Servers advertising "clone bundles" may advertise multiple available
2441 bundles. Each bundle may have different attributes, such as the bundle
2447 bundles. Each bundle may have different attributes, such as the bundle
2442 type and compression format. This option is used to prefer a particular
2448 type and compression format. This option is used to prefer a particular
2443 bundle over another.
2449 bundle over another.
2444
2450
2445 The following keys are defined by Mercurial:
2451 The following keys are defined by Mercurial:
2446
2452
2447 BUNDLESPEC
2453 BUNDLESPEC
2448 A bundle type specifier. These are strings passed to :hg:`bundle -t`.
2454 A bundle type specifier. These are strings passed to :hg:`bundle -t`.
2449 e.g. ``gzip-v2`` or ``bzip2-v1``.
2455 e.g. ``gzip-v2`` or ``bzip2-v1``.
2450
2456
2451 COMPRESSION
2457 COMPRESSION
2452 The compression format of the bundle. e.g. ``gzip`` and ``bzip2``.
2458 The compression format of the bundle. e.g. ``gzip`` and ``bzip2``.
2453
2459
2454 Server operators may define custom keys.
2460 Server operators may define custom keys.
2455
2461
2456 Example values: ``COMPRESSION=bzip2``,
2462 Example values: ``COMPRESSION=bzip2``,
2457 ``BUNDLESPEC=gzip-v2, COMPRESSION=gzip``.
2463 ``BUNDLESPEC=gzip-v2, COMPRESSION=gzip``.
2458
2464
2459 By default, the first bundle advertised by the server is used.
2465 By default, the first bundle advertised by the server is used.
2460
2466
2461 ``color``
2467 ``color``
2462 When to colorize output. Possible value are Boolean ("yes" or "no"), or
2468 When to colorize output. Possible value are Boolean ("yes" or "no"), or
2463 "debug", or "always". (default: "yes"). "yes" will use color whenever it
2469 "debug", or "always". (default: "yes"). "yes" will use color whenever it
2464 seems possible. See :hg:`help color` for details.
2470 seems possible. See :hg:`help color` for details.
2465
2471
2466 ``commitsubrepos``
2472 ``commitsubrepos``
2467 Whether to commit modified subrepositories when committing the
2473 Whether to commit modified subrepositories when committing the
2468 parent repository. If False and one subrepository has uncommitted
2474 parent repository. If False and one subrepository has uncommitted
2469 changes, abort the commit.
2475 changes, abort the commit.
2470 (default: False)
2476 (default: False)
2471
2477
2472 ``debug``
2478 ``debug``
2473 Print debugging information. (default: False)
2479 Print debugging information. (default: False)
2474
2480
2475 ``editor``
2481 ``editor``
2476 The editor to use during a commit. (default: ``$EDITOR`` or ``vi``)
2482 The editor to use during a commit. (default: ``$EDITOR`` or ``vi``)
2477
2483
2478 ``fallbackencoding``
2484 ``fallbackencoding``
2479 Encoding to try if it's not possible to decode the changelog using
2485 Encoding to try if it's not possible to decode the changelog using
2480 UTF-8. (default: ISO-8859-1)
2486 UTF-8. (default: ISO-8859-1)
2481
2487
2482 ``graphnodetemplate``
2488 ``graphnodetemplate``
2483 (DEPRECATED) Use ``command-templates.graphnode`` instead.
2489 (DEPRECATED) Use ``command-templates.graphnode`` instead.
2484
2490
2485 ``ignore``
2491 ``ignore``
2486 A file to read per-user ignore patterns from. This file should be
2492 A file to read per-user ignore patterns from. This file should be
2487 in the same format as a repository-wide .hgignore file. Filenames
2493 in the same format as a repository-wide .hgignore file. Filenames
2488 are relative to the repository root. This option supports hook syntax,
2494 are relative to the repository root. This option supports hook syntax,
2489 so if you want to specify multiple ignore files, you can do so by
2495 so if you want to specify multiple ignore files, you can do so by
2490 setting something like ``ignore.other = ~/.hgignore2``. For details
2496 setting something like ``ignore.other = ~/.hgignore2``. For details
2491 of the ignore file format, see the ``hgignore(5)`` man page.
2497 of the ignore file format, see the ``hgignore(5)`` man page.
2492
2498
2493 ``interactive``
2499 ``interactive``
2494 Allow to prompt the user. (default: True)
2500 Allow to prompt the user. (default: True)
2495
2501
2496 ``interface``
2502 ``interface``
2497 Select the default interface for interactive features (default: text).
2503 Select the default interface for interactive features (default: text).
2498 Possible values are 'text' and 'curses'.
2504 Possible values are 'text' and 'curses'.
2499
2505
2500 ``interface.chunkselector``
2506 ``interface.chunkselector``
2501 Select the interface for change recording (e.g. :hg:`commit -i`).
2507 Select the interface for change recording (e.g. :hg:`commit -i`).
2502 Possible values are 'text' and 'curses'.
2508 Possible values are 'text' and 'curses'.
2503 This config overrides the interface specified by ui.interface.
2509 This config overrides the interface specified by ui.interface.
2504
2510
2505 ``large-file-limit``
2511 ``large-file-limit``
2506 Largest file size that gives no memory use warning.
2512 Largest file size that gives no memory use warning.
2507 Possible values are integers or 0 to disable the check.
2513 Possible values are integers or 0 to disable the check.
2508 (default: 10000000)
2514 (default: 10000000)
2509
2515
2510 ``logtemplate``
2516 ``logtemplate``
2511 (DEPRECATED) Use ``command-templates.log`` instead.
2517 (DEPRECATED) Use ``command-templates.log`` instead.
2512
2518
2513 ``merge``
2519 ``merge``
2514 The conflict resolution program to use during a manual merge.
2520 The conflict resolution program to use during a manual merge.
2515 For more information on merge tools see :hg:`help merge-tools`.
2521 For more information on merge tools see :hg:`help merge-tools`.
2516 For configuring merge tools see the ``[merge-tools]`` section.
2522 For configuring merge tools see the ``[merge-tools]`` section.
2517
2523
2518 ``mergemarkers``
2524 ``mergemarkers``
2519 Sets the merge conflict marker label styling. The ``detailed`` style
2525 Sets the merge conflict marker label styling. The ``detailed`` style
2520 uses the ``command-templates.mergemarker`` setting to style the labels.
2526 uses the ``command-templates.mergemarker`` setting to style the labels.
2521 The ``basic`` style just uses 'local' and 'other' as the marker label.
2527 The ``basic`` style just uses 'local' and 'other' as the marker label.
2522 One of ``basic`` or ``detailed``.
2528 One of ``basic`` or ``detailed``.
2523 (default: ``basic``)
2529 (default: ``basic``)
2524
2530
2525 ``mergemarkertemplate``
2531 ``mergemarkertemplate``
2526 (DEPRECATED) Use ``command-templates.mergemarker`` instead.
2532 (DEPRECATED) Use ``command-templates.mergemarker`` instead.
2527
2533
2528 ``message-output``
2534 ``message-output``
2529 Where to write status and error messages. (default: ``stdio``)
2535 Where to write status and error messages. (default: ``stdio``)
2530
2536
2531 ``channel``
2537 ``channel``
2532 Use separate channel for structured output. (Command-server only)
2538 Use separate channel for structured output. (Command-server only)
2533 ``stderr``
2539 ``stderr``
2534 Everything to stderr.
2540 Everything to stderr.
2535 ``stdio``
2541 ``stdio``
2536 Status to stdout, and error to stderr.
2542 Status to stdout, and error to stderr.
2537
2543
2538 ``origbackuppath``
2544 ``origbackuppath``
2539 The path to a directory used to store generated .orig files. If the path is
2545 The path to a directory used to store generated .orig files. If the path is
2540 not a directory, one will be created. If set, files stored in this
2546 not a directory, one will be created. If set, files stored in this
2541 directory have the same name as the original file and do not have a .orig
2547 directory have the same name as the original file and do not have a .orig
2542 suffix.
2548 suffix.
2543
2549
2544 ``paginate``
2550 ``paginate``
2545 Control the pagination of command output (default: True). See :hg:`help pager`
2551 Control the pagination of command output (default: True). See :hg:`help pager`
2546 for details.
2552 for details.
2547
2553
2548 ``patch``
2554 ``patch``
2549 An optional external tool that ``hg import`` and some extensions
2555 An optional external tool that ``hg import`` and some extensions
2550 will use for applying patches. By default Mercurial uses an
2556 will use for applying patches. By default Mercurial uses an
2551 internal patch utility. The external tool must work as the common
2557 internal patch utility. The external tool must work as the common
2552 Unix ``patch`` program. In particular, it must accept a ``-p``
2558 Unix ``patch`` program. In particular, it must accept a ``-p``
2553 argument to strip patch headers, a ``-d`` argument to specify the
2559 argument to strip patch headers, a ``-d`` argument to specify the
2554 current directory, a file name to patch, and a patch file to take
2560 current directory, a file name to patch, and a patch file to take
2555 from stdin.
2561 from stdin.
2556
2562
2557 It is possible to specify a patch tool together with extra
2563 It is possible to specify a patch tool together with extra
2558 arguments. For example, setting this option to ``patch --merge``
2564 arguments. For example, setting this option to ``patch --merge``
2559 will use the ``patch`` program with its 2-way merge option.
2565 will use the ``patch`` program with its 2-way merge option.
2560
2566
2561 ``portablefilenames``
2567 ``portablefilenames``
2562 Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``.
2568 Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``.
2563 (default: ``warn``)
2569 (default: ``warn``)
2564
2570
2565 ``warn``
2571 ``warn``
2566 Print a warning message on POSIX platforms, if a file with a non-portable
2572 Print a warning message on POSIX platforms, if a file with a non-portable
2567 filename is added (e.g. a file with a name that can't be created on
2573 filename is added (e.g. a file with a name that can't be created on
2568 Windows because it contains reserved parts like ``AUX``, reserved
2574 Windows because it contains reserved parts like ``AUX``, reserved
2569 characters like ``:``, or would cause a case collision with an existing
2575 characters like ``:``, or would cause a case collision with an existing
2570 file).
2576 file).
2571
2577
2572 ``ignore``
2578 ``ignore``
2573 Don't print a warning.
2579 Don't print a warning.
2574
2580
2575 ``abort``
2581 ``abort``
2576 The command is aborted.
2582 The command is aborted.
2577
2583
2578 ``true``
2584 ``true``
2579 Alias for ``warn``.
2585 Alias for ``warn``.
2580
2586
2581 ``false``
2587 ``false``
2582 Alias for ``ignore``.
2588 Alias for ``ignore``.
2583
2589
2584 .. container:: windows
2590 .. container:: windows
2585
2591
2586 On Windows, this configuration option is ignored and the command aborted.
2592 On Windows, this configuration option is ignored and the command aborted.
2587
2593
2588 ``pre-merge-tool-output-template``
2594 ``pre-merge-tool-output-template``
2589 (DEPRECATED) Use ``command-template.pre-merge-tool-output`` instead.
2595 (DEPRECATED) Use ``command-template.pre-merge-tool-output`` instead.
2590
2596
2591 ``quiet``
2597 ``quiet``
2592 Reduce the amount of output printed.
2598 Reduce the amount of output printed.
2593 (default: False)
2599 (default: False)
2594
2600
2595 ``relative-paths``
2601 ``relative-paths``
2596 Prefer relative paths in the UI.
2602 Prefer relative paths in the UI.
2597
2603
2598 ``remotecmd``
2604 ``remotecmd``
2599 Remote command to use for clone/push/pull operations.
2605 Remote command to use for clone/push/pull operations.
2600 (default: ``hg``)
2606 (default: ``hg``)
2601
2607
2602 ``report_untrusted``
2608 ``report_untrusted``
2603 Warn if a ``.hg/hgrc`` file is ignored due to not being owned by a
2609 Warn if a ``.hg/hgrc`` file is ignored due to not being owned by a
2604 trusted user or group.
2610 trusted user or group.
2605 (default: True)
2611 (default: True)
2606
2612
2607 ``slash``
2613 ``slash``
2608 (Deprecated. Use ``slashpath`` template filter instead.)
2614 (Deprecated. Use ``slashpath`` template filter instead.)
2609
2615
2610 Display paths using a slash (``/``) as the path separator. This
2616 Display paths using a slash (``/``) as the path separator. This
2611 only makes a difference on systems where the default path
2617 only makes a difference on systems where the default path
2612 separator is not the slash character (e.g. Windows uses the
2618 separator is not the slash character (e.g. Windows uses the
2613 backslash character (``\``)).
2619 backslash character (``\``)).
2614 (default: False)
2620 (default: False)
2615
2621
2616 ``statuscopies``
2622 ``statuscopies``
2617 Display copies in the status command.
2623 Display copies in the status command.
2618
2624
2619 ``ssh``
2625 ``ssh``
2620 Command to use for SSH connections. (default: ``ssh``)
2626 Command to use for SSH connections. (default: ``ssh``)
2621
2627
2622 ``ssherrorhint``
2628 ``ssherrorhint``
2623 A hint shown to the user in the case of SSH error (e.g.
2629 A hint shown to the user in the case of SSH error (e.g.
2624 ``Please see http://company/internalwiki/ssh.html``)
2630 ``Please see http://company/internalwiki/ssh.html``)
2625
2631
2626 ``strict``
2632 ``strict``
2627 Require exact command names, instead of allowing unambiguous
2633 Require exact command names, instead of allowing unambiguous
2628 abbreviations. (default: False)
2634 abbreviations. (default: False)
2629
2635
2630 ``style``
2636 ``style``
2631 Name of style to use for command output.
2637 Name of style to use for command output.
2632
2638
2633 ``supportcontact``
2639 ``supportcontact``
2634 A URL where users should report a Mercurial traceback. Use this if you are a
2640 A URL where users should report a Mercurial traceback. Use this if you are a
2635 large organisation with its own Mercurial deployment process and crash
2641 large organisation with its own Mercurial deployment process and crash
2636 reports should be addressed to your internal support.
2642 reports should be addressed to your internal support.
2637
2643
2638 ``textwidth``
2644 ``textwidth``
2639 Maximum width of help text. A longer line generated by ``hg help`` or
2645 Maximum width of help text. A longer line generated by ``hg help`` or
2640 ``hg subcommand --help`` will be broken after white space to get this
2646 ``hg subcommand --help`` will be broken after white space to get this
2641 width or the terminal width, whichever comes first.
2647 width or the terminal width, whichever comes first.
2642 A non-positive value will disable this and the terminal width will be
2648 A non-positive value will disable this and the terminal width will be
2643 used. (default: 78)
2649 used. (default: 78)
2644
2650
2645 ``timeout``
2651 ``timeout``
2646 The timeout used when a lock is held (in seconds), a negative value
2652 The timeout used when a lock is held (in seconds), a negative value
2647 means no timeout. (default: 600)
2653 means no timeout. (default: 600)
2648
2654
2649 ``timeout.warn``
2655 ``timeout.warn``
2650 Time (in seconds) before a warning is printed about held lock. A negative
2656 Time (in seconds) before a warning is printed about held lock. A negative
2651 value means no warning. (default: 0)
2657 value means no warning. (default: 0)
2652
2658
2653 ``traceback``
2659 ``traceback``
2654 Mercurial always prints a traceback when an unknown exception
2660 Mercurial always prints a traceback when an unknown exception
2655 occurs. Setting this to True will make Mercurial print a traceback
2661 occurs. Setting this to True will make Mercurial print a traceback
2656 on all exceptions, even those recognized by Mercurial (such as
2662 on all exceptions, even those recognized by Mercurial (such as
2657 IOError or MemoryError). (default: False)
2663 IOError or MemoryError). (default: False)
2658
2664
2659 ``tweakdefaults``
2665 ``tweakdefaults``
2660
2666
2661 By default Mercurial's behavior changes very little from release
2667 By default Mercurial's behavior changes very little from release
2662 to release, but over time the recommended config settings
2668 to release, but over time the recommended config settings
2663 shift. Enable this config to opt in to get automatic tweaks to
2669 shift. Enable this config to opt in to get automatic tweaks to
2664 Mercurial's behavior over time. This config setting will have no
2670 Mercurial's behavior over time. This config setting will have no
2665 effect if ``HGPLAIN`` is set or ``HGPLAINEXCEPT`` is set and does
2671 effect if ``HGPLAIN`` is set or ``HGPLAINEXCEPT`` is set and does
2666 not include ``tweakdefaults``. (default: False)
2672 not include ``tweakdefaults``. (default: False)
2667
2673
2668 It currently means::
2674 It currently means::
2669
2675
2670 .. tweakdefaultsmarker
2676 .. tweakdefaultsmarker
2671
2677
2672 ``username``
2678 ``username``
2673 The committer of a changeset created when running "commit".
2679 The committer of a changeset created when running "commit".
2674 Typically a person's name and email address, e.g. ``Fred Widget
2680 Typically a person's name and email address, e.g. ``Fred Widget
2675 <fred@example.com>``. Environment variables in the
2681 <fred@example.com>``. Environment variables in the
2676 username are expanded.
2682 username are expanded.
2677
2683
2678 (default: ``$EMAIL`` or ``username@hostname``. If the username in
2684 (default: ``$EMAIL`` or ``username@hostname``. If the username in
2679 hgrc is empty, e.g. if the system admin set ``username =`` in the
2685 hgrc is empty, e.g. if the system admin set ``username =`` in the
2680 system hgrc, it has to be specified manually or in a different
2686 system hgrc, it has to be specified manually or in a different
2681 hgrc file)
2687 hgrc file)
2682
2688
2683 ``verbose``
2689 ``verbose``
2684 Increase the amount of output printed. (default: False)
2690 Increase the amount of output printed. (default: False)
2685
2691
2686
2692
2687 ``command-templates``
2693 ``command-templates``
2688 ---------------------
2694 ---------------------
2689
2695
2690 Templates used for customizing the output of commands.
2696 Templates used for customizing the output of commands.
2691
2697
2692 ``graphnode``
2698 ``graphnode``
2693 The template used to print changeset nodes in an ASCII revision graph.
2699 The template used to print changeset nodes in an ASCII revision graph.
2694 (default: ``{graphnode}``)
2700 (default: ``{graphnode}``)
2695
2701
2696 ``log``
2702 ``log``
2697 Template string for commands that print changesets.
2703 Template string for commands that print changesets.
2698
2704
2699 ``mergemarker``
2705 ``mergemarker``
2700 The template used to print the commit description next to each conflict
2706 The template used to print the commit description next to each conflict
2701 marker during merge conflicts. See :hg:`help templates` for the template
2707 marker during merge conflicts. See :hg:`help templates` for the template
2702 format.
2708 format.
2703
2709
2704 Defaults to showing the hash, tags, branches, bookmarks, author, and
2710 Defaults to showing the hash, tags, branches, bookmarks, author, and
2705 the first line of the commit description.
2711 the first line of the commit description.
2706
2712
2707 If you use non-ASCII characters in names for tags, branches, bookmarks,
2713 If you use non-ASCII characters in names for tags, branches, bookmarks,
2708 authors, and/or commit descriptions, you must pay attention to encodings of
2714 authors, and/or commit descriptions, you must pay attention to encodings of
2709 managed files. At template expansion, non-ASCII characters use the encoding
2715 managed files. At template expansion, non-ASCII characters use the encoding
2710 specified by the ``--encoding`` global option, ``HGENCODING`` or other
2716 specified by the ``--encoding`` global option, ``HGENCODING`` or other
2711 environment variables that govern your locale. If the encoding of the merge
2717 environment variables that govern your locale. If the encoding of the merge
2712 markers is different from the encoding of the merged files,
2718 markers is different from the encoding of the merged files,
2713 serious problems may occur.
2719 serious problems may occur.
2714
2720
2715 Can be overridden per-merge-tool, see the ``[merge-tools]`` section.
2721 Can be overridden per-merge-tool, see the ``[merge-tools]`` section.
2716
2722
2717 ``oneline-summary``
2723 ``oneline-summary``
2718 A template used by `hg rebase` and other commands for showing a one-line
2724 A template used by `hg rebase` and other commands for showing a one-line
2719 summary of a commit. If the template configured here is longer than one
2725 summary of a commit. If the template configured here is longer than one
2720 line, then only the first line is used.
2726 line, then only the first line is used.
2721
2727
2722 The template can be overridden per command by defining a template in
2728 The template can be overridden per command by defining a template in
2723 `oneline-summary.<command>`, where `<command>` can be e.g. "rebase".
2729 `oneline-summary.<command>`, where `<command>` can be e.g. "rebase".
2724
2730
2725 ``pre-merge-tool-output``
2731 ``pre-merge-tool-output``
2726 A template that is printed before executing an external merge tool. This can
2732 A template that is printed before executing an external merge tool. This can
2727 be used to print out additional context that might be useful to have during
2733 be used to print out additional context that might be useful to have during
2728 the conflict resolution, such as the description of the various commits
2734 the conflict resolution, such as the description of the various commits
2729 involved or bookmarks/tags.
2735 involved or bookmarks/tags.
2730
2736
2731 Additional information is available in the ``local`, ``base``, and ``other``
2737 Additional information is available in the ``local`, ``base``, and ``other``
2732 dicts. For example: ``{local.label}``, ``{base.name}``, or
2738 dicts. For example: ``{local.label}``, ``{base.name}``, or
2733 ``{other.islink}``.
2739 ``{other.islink}``.
2734
2740
2735
2741
2736 ``web``
2742 ``web``
2737 -------
2743 -------
2738
2744
2739 Web interface configuration. The settings in this section apply to
2745 Web interface configuration. The settings in this section apply to
2740 both the builtin webserver (started by :hg:`serve`) and the script you
2746 both the builtin webserver (started by :hg:`serve`) and the script you
2741 run through a webserver (``hgweb.cgi`` and the derivatives for FastCGI
2747 run through a webserver (``hgweb.cgi`` and the derivatives for FastCGI
2742 and WSGI).
2748 and WSGI).
2743
2749
2744 The Mercurial webserver does no authentication (it does not prompt for
2750 The Mercurial webserver does no authentication (it does not prompt for
2745 usernames and passwords to validate *who* users are), but it does do
2751 usernames and passwords to validate *who* users are), but it does do
2746 authorization (it grants or denies access for *authenticated users*
2752 authorization (it grants or denies access for *authenticated users*
2747 based on settings in this section). You must either configure your
2753 based on settings in this section). You must either configure your
2748 webserver to do authentication for you, or disable the authorization
2754 webserver to do authentication for you, or disable the authorization
2749 checks.
2755 checks.
2750
2756
2751 For a quick setup in a trusted environment, e.g., a private LAN, where
2757 For a quick setup in a trusted environment, e.g., a private LAN, where
2752 you want it to accept pushes from anybody, you can use the following
2758 you want it to accept pushes from anybody, you can use the following
2753 command line::
2759 command line::
2754
2760
2755 $ hg --config web.allow-push=* --config web.push_ssl=False serve
2761 $ hg --config web.allow-push=* --config web.push_ssl=False serve
2756
2762
2757 Note that this will allow anybody to push anything to the server and
2763 Note that this will allow anybody to push anything to the server and
2758 that this should not be used for public servers.
2764 that this should not be used for public servers.
2759
2765
2760 The full set of options is:
2766 The full set of options is:
2761
2767
2762 ``accesslog``
2768 ``accesslog``
2763 Where to output the access log. (default: stdout)
2769 Where to output the access log. (default: stdout)
2764
2770
2765 ``address``
2771 ``address``
2766 Interface address to bind to. (default: all)
2772 Interface address to bind to. (default: all)
2767
2773
2768 ``allow-archive``
2774 ``allow-archive``
2769 List of archive format (bz2, gz, zip) allowed for downloading.
2775 List of archive format (bz2, gz, zip) allowed for downloading.
2770 (default: empty)
2776 (default: empty)
2771
2777
2772 ``allowbz2``
2778 ``allowbz2``
2773 (DEPRECATED) Whether to allow .tar.bz2 downloading of repository
2779 (DEPRECATED) Whether to allow .tar.bz2 downloading of repository
2774 revisions.
2780 revisions.
2775 (default: False)
2781 (default: False)
2776
2782
2777 ``allowgz``
2783 ``allowgz``
2778 (DEPRECATED) Whether to allow .tar.gz downloading of repository
2784 (DEPRECATED) Whether to allow .tar.gz downloading of repository
2779 revisions.
2785 revisions.
2780 (default: False)
2786 (default: False)
2781
2787
2782 ``allow-pull``
2788 ``allow-pull``
2783 Whether to allow pulling from the repository. (default: True)
2789 Whether to allow pulling from the repository. (default: True)
2784
2790
2785 ``allow-push``
2791 ``allow-push``
2786 Whether to allow pushing to the repository. If empty or not set,
2792 Whether to allow pushing to the repository. If empty or not set,
2787 pushing is not allowed. If the special value ``*``, any remote
2793 pushing is not allowed. If the special value ``*``, any remote
2788 user can push, including unauthenticated users. Otherwise, the
2794 user can push, including unauthenticated users. Otherwise, the
2789 remote user must have been authenticated, and the authenticated
2795 remote user must have been authenticated, and the authenticated
2790 user name must be present in this list. The contents of the
2796 user name must be present in this list. The contents of the
2791 allow-push list are examined after the deny_push list.
2797 allow-push list are examined after the deny_push list.
2792
2798
2793 ``allow_read``
2799 ``allow_read``
2794 If the user has not already been denied repository access due to
2800 If the user has not already been denied repository access due to
2795 the contents of deny_read, this list determines whether to grant
2801 the contents of deny_read, this list determines whether to grant
2796 repository access to the user. If this list is not empty, and the
2802 repository access to the user. If this list is not empty, and the
2797 user is unauthenticated or not present in the list, then access is
2803 user is unauthenticated or not present in the list, then access is
2798 denied for the user. If the list is empty or not set, then access
2804 denied for the user. If the list is empty or not set, then access
2799 is permitted to all users by default. Setting allow_read to the
2805 is permitted to all users by default. Setting allow_read to the
2800 special value ``*`` is equivalent to it not being set (i.e. access
2806 special value ``*`` is equivalent to it not being set (i.e. access
2801 is permitted to all users). The contents of the allow_read list are
2807 is permitted to all users). The contents of the allow_read list are
2802 examined after the deny_read list.
2808 examined after the deny_read list.
2803
2809
2804 ``allowzip``
2810 ``allowzip``
2805 (DEPRECATED) Whether to allow .zip downloading of repository
2811 (DEPRECATED) Whether to allow .zip downloading of repository
2806 revisions. This feature creates temporary files.
2812 revisions. This feature creates temporary files.
2807 (default: False)
2813 (default: False)
2808
2814
2809 ``archivesubrepos``
2815 ``archivesubrepos``
2810 Whether to recurse into subrepositories when archiving.
2816 Whether to recurse into subrepositories when archiving.
2811 (default: False)
2817 (default: False)
2812
2818
2813 ``baseurl``
2819 ``baseurl``
2814 Base URL to use when publishing URLs in other locations, so
2820 Base URL to use when publishing URLs in other locations, so
2815 third-party tools like email notification hooks can construct
2821 third-party tools like email notification hooks can construct
2816 URLs. Example: ``http://hgserver/repos/``.
2822 URLs. Example: ``http://hgserver/repos/``.
2817
2823
2818 ``cacerts``
2824 ``cacerts``
2819 Path to file containing a list of PEM encoded certificate
2825 Path to file containing a list of PEM encoded certificate
2820 authority certificates. Environment variables and ``~user``
2826 authority certificates. Environment variables and ``~user``
2821 constructs are expanded in the filename. If specified on the
2827 constructs are expanded in the filename. If specified on the
2822 client, then it will verify the identity of remote HTTPS servers
2828 client, then it will verify the identity of remote HTTPS servers
2823 with these certificates.
2829 with these certificates.
2824
2830
2825 To disable SSL verification temporarily, specify ``--insecure`` from
2831 To disable SSL verification temporarily, specify ``--insecure`` from
2826 command line.
2832 command line.
2827
2833
2828 You can use OpenSSL's CA certificate file if your platform has
2834 You can use OpenSSL's CA certificate file if your platform has
2829 one. On most Linux systems this will be
2835 one. On most Linux systems this will be
2830 ``/etc/ssl/certs/ca-certificates.crt``. Otherwise you will have to
2836 ``/etc/ssl/certs/ca-certificates.crt``. Otherwise you will have to
2831 generate this file manually. The form must be as follows::
2837 generate this file manually. The form must be as follows::
2832
2838
2833 -----BEGIN CERTIFICATE-----
2839 -----BEGIN CERTIFICATE-----
2834 ... (certificate in base64 PEM encoding) ...
2840 ... (certificate in base64 PEM encoding) ...
2835 -----END CERTIFICATE-----
2841 -----END CERTIFICATE-----
2836 -----BEGIN CERTIFICATE-----
2842 -----BEGIN CERTIFICATE-----
2837 ... (certificate in base64 PEM encoding) ...
2843 ... (certificate in base64 PEM encoding) ...
2838 -----END CERTIFICATE-----
2844 -----END CERTIFICATE-----
2839
2845
2840 ``cache``
2846 ``cache``
2841 Whether to support caching in hgweb. (default: True)
2847 Whether to support caching in hgweb. (default: True)
2842
2848
2843 ``certificate``
2849 ``certificate``
2844 Certificate to use when running :hg:`serve`.
2850 Certificate to use when running :hg:`serve`.
2845
2851
2846 ``collapse``
2852 ``collapse``
2847 With ``descend`` enabled, repositories in subdirectories are shown at
2853 With ``descend`` enabled, repositories in subdirectories are shown at
2848 a single level alongside repositories in the current path. With
2854 a single level alongside repositories in the current path. With
2849 ``collapse`` also enabled, repositories residing at a deeper level than
2855 ``collapse`` also enabled, repositories residing at a deeper level than
2850 the current path are grouped behind navigable directory entries that
2856 the current path are grouped behind navigable directory entries that
2851 lead to the locations of these repositories. In effect, this setting
2857 lead to the locations of these repositories. In effect, this setting
2852 collapses each collection of repositories found within a subdirectory
2858 collapses each collection of repositories found within a subdirectory
2853 into a single entry for that subdirectory. (default: False)
2859 into a single entry for that subdirectory. (default: False)
2854
2860
2855 ``comparisoncontext``
2861 ``comparisoncontext``
2856 Number of lines of context to show in side-by-side file comparison. If
2862 Number of lines of context to show in side-by-side file comparison. If
2857 negative or the value ``full``, whole files are shown. (default: 5)
2863 negative or the value ``full``, whole files are shown. (default: 5)
2858
2864
2859 This setting can be overridden by a ``context`` request parameter to the
2865 This setting can be overridden by a ``context`` request parameter to the
2860 ``comparison`` command, taking the same values.
2866 ``comparison`` command, taking the same values.
2861
2867
2862 ``contact``
2868 ``contact``
2863 Name or email address of the person in charge of the repository.
2869 Name or email address of the person in charge of the repository.
2864 (default: ui.username or ``$EMAIL`` or "unknown" if unset or empty)
2870 (default: ui.username or ``$EMAIL`` or "unknown" if unset or empty)
2865
2871
2866 ``csp``
2872 ``csp``
2867 Send a ``Content-Security-Policy`` HTTP header with this value.
2873 Send a ``Content-Security-Policy`` HTTP header with this value.
2868
2874
2869 The value may contain a special string ``%nonce%``, which will be replaced
2875 The value may contain a special string ``%nonce%``, which will be replaced
2870 by a randomly-generated one-time use value. If the value contains
2876 by a randomly-generated one-time use value. If the value contains
2871 ``%nonce%``, ``web.cache`` will be disabled, as caching undermines the
2877 ``%nonce%``, ``web.cache`` will be disabled, as caching undermines the
2872 one-time property of the nonce. This nonce will also be inserted into
2878 one-time property of the nonce. This nonce will also be inserted into
2873 ``<script>`` elements containing inline JavaScript.
2879 ``<script>`` elements containing inline JavaScript.
2874
2880
2875 Note: lots of HTML content sent by the server is derived from repository
2881 Note: lots of HTML content sent by the server is derived from repository
2876 data. Please consider the potential for malicious repository data to
2882 data. Please consider the potential for malicious repository data to
2877 "inject" itself into generated HTML content as part of your security
2883 "inject" itself into generated HTML content as part of your security
2878 threat model.
2884 threat model.
2879
2885
2880 ``deny_push``
2886 ``deny_push``
2881 Whether to deny pushing to the repository. If empty or not set,
2887 Whether to deny pushing to the repository. If empty or not set,
2882 push is not denied. If the special value ``*``, all remote users are
2888 push is not denied. If the special value ``*``, all remote users are
2883 denied push. Otherwise, unauthenticated users are all denied, and
2889 denied push. Otherwise, unauthenticated users are all denied, and
2884 any authenticated user name present in this list is also denied. The
2890 any authenticated user name present in this list is also denied. The
2885 contents of the deny_push list are examined before the allow-push list.
2891 contents of the deny_push list are examined before the allow-push list.
2886
2892
2887 ``deny_read``
2893 ``deny_read``
2888 Whether to deny reading/viewing of the repository. If this list is
2894 Whether to deny reading/viewing of the repository. If this list is
2889 not empty, unauthenticated users are all denied, and any
2895 not empty, unauthenticated users are all denied, and any
2890 authenticated user name present in this list is also denied access to
2896 authenticated user name present in this list is also denied access to
2891 the repository. If set to the special value ``*``, all remote users
2897 the repository. If set to the special value ``*``, all remote users
2892 are denied access (rarely needed ;). If deny_read is empty or not set,
2898 are denied access (rarely needed ;). If deny_read is empty or not set,
2893 the determination of repository access depends on the presence and
2899 the determination of repository access depends on the presence and
2894 content of the allow_read list (see description). If both
2900 content of the allow_read list (see description). If both
2895 deny_read and allow_read are empty or not set, then access is
2901 deny_read and allow_read are empty or not set, then access is
2896 permitted to all users by default. If the repository is being
2902 permitted to all users by default. If the repository is being
2897 served via hgwebdir, denied users will not be able to see it in
2903 served via hgwebdir, denied users will not be able to see it in
2898 the list of repositories. The contents of the deny_read list have
2904 the list of repositories. The contents of the deny_read list have
2899 priority over (are examined before) the contents of the allow_read
2905 priority over (are examined before) the contents of the allow_read
2900 list.
2906 list.
2901
2907
2902 ``descend``
2908 ``descend``
2903 hgwebdir indexes will not descend into subdirectories. Only repositories
2909 hgwebdir indexes will not descend into subdirectories. Only repositories
2904 directly in the current path will be shown (other repositories are still
2910 directly in the current path will be shown (other repositories are still
2905 available from the index corresponding to their containing path).
2911 available from the index corresponding to their containing path).
2906
2912
2907 ``description``
2913 ``description``
2908 Textual description of the repository's purpose or contents.
2914 Textual description of the repository's purpose or contents.
2909 (default: "unknown")
2915 (default: "unknown")
2910
2916
2911 ``encoding``
2917 ``encoding``
2912 Character encoding name. (default: the current locale charset)
2918 Character encoding name. (default: the current locale charset)
2913 Example: "UTF-8".
2919 Example: "UTF-8".
2914
2920
2915 ``errorlog``
2921 ``errorlog``
2916 Where to output the error log. (default: stderr)
2922 Where to output the error log. (default: stderr)
2917
2923
2918 ``guessmime``
2924 ``guessmime``
2919 Control MIME types for raw download of file content.
2925 Control MIME types for raw download of file content.
2920 Set to True to let hgweb guess the content type from the file
2926 Set to True to let hgweb guess the content type from the file
2921 extension. This will serve HTML files as ``text/html`` and might
2927 extension. This will serve HTML files as ``text/html`` and might
2922 allow cross-site scripting attacks when serving untrusted
2928 allow cross-site scripting attacks when serving untrusted
2923 repositories. (default: False)
2929 repositories. (default: False)
2924
2930
2925 ``hidden``
2931 ``hidden``
2926 Whether to hide the repository in the hgwebdir index.
2932 Whether to hide the repository in the hgwebdir index.
2927 (default: False)
2933 (default: False)
2928
2934
2929 ``ipv6``
2935 ``ipv6``
2930 Whether to use IPv6. (default: False)
2936 Whether to use IPv6. (default: False)
2931
2937
2932 ``labels``
2938 ``labels``
2933 List of string *labels* associated with the repository.
2939 List of string *labels* associated with the repository.
2934
2940
2935 Labels are exposed as a template keyword and can be used to customize
2941 Labels are exposed as a template keyword and can be used to customize
2936 output. e.g. the ``index`` template can group or filter repositories
2942 output. e.g. the ``index`` template can group or filter repositories
2937 by labels and the ``summary`` template can display additional content
2943 by labels and the ``summary`` template can display additional content
2938 if a specific label is present.
2944 if a specific label is present.
2939
2945
2940 ``logoimg``
2946 ``logoimg``
2941 File name of the logo image that some templates display on each page.
2947 File name of the logo image that some templates display on each page.
2942 The file name is relative to ``staticurl``. That is, the full path to
2948 The file name is relative to ``staticurl``. That is, the full path to
2943 the logo image is "staticurl/logoimg".
2949 the logo image is "staticurl/logoimg".
2944 If unset, ``hglogo.png`` will be used.
2950 If unset, ``hglogo.png`` will be used.
2945
2951
2946 ``logourl``
2952 ``logourl``
2947 Base URL to use for logos. If unset, ``https://mercurial-scm.org/``
2953 Base URL to use for logos. If unset, ``https://mercurial-scm.org/``
2948 will be used.
2954 will be used.
2949
2955
2950 ``maxchanges``
2956 ``maxchanges``
2951 Maximum number of changes to list on the changelog. (default: 10)
2957 Maximum number of changes to list on the changelog. (default: 10)
2952
2958
2953 ``maxfiles``
2959 ``maxfiles``
2954 Maximum number of files to list per changeset. (default: 10)
2960 Maximum number of files to list per changeset. (default: 10)
2955
2961
2956 ``maxshortchanges``
2962 ``maxshortchanges``
2957 Maximum number of changes to list on the shortlog, graph or filelog
2963 Maximum number of changes to list on the shortlog, graph or filelog
2958 pages. (default: 60)
2964 pages. (default: 60)
2959
2965
2960 ``name``
2966 ``name``
2961 Repository name to use in the web interface.
2967 Repository name to use in the web interface.
2962 (default: current working directory)
2968 (default: current working directory)
2963
2969
2964 ``port``
2970 ``port``
2965 Port to listen on. (default: 8000)
2971 Port to listen on. (default: 8000)
2966
2972
2967 ``prefix``
2973 ``prefix``
2968 Prefix path to serve from. (default: '' (server root))
2974 Prefix path to serve from. (default: '' (server root))
2969
2975
2970 ``push_ssl``
2976 ``push_ssl``
2971 Whether to require that inbound pushes be transported over SSL to
2977 Whether to require that inbound pushes be transported over SSL to
2972 prevent password sniffing. (default: True)
2978 prevent password sniffing. (default: True)
2973
2979
2974 ``refreshinterval``
2980 ``refreshinterval``
2975 How frequently directory listings re-scan the filesystem for new
2981 How frequently directory listings re-scan the filesystem for new
2976 repositories, in seconds. This is relevant when wildcards are used
2982 repositories, in seconds. This is relevant when wildcards are used
2977 to define paths. Depending on how much filesystem traversal is
2983 to define paths. Depending on how much filesystem traversal is
2978 required, refreshing may negatively impact performance.
2984 required, refreshing may negatively impact performance.
2979
2985
2980 Values less than or equal to 0 always refresh.
2986 Values less than or equal to 0 always refresh.
2981 (default: 20)
2987 (default: 20)
2982
2988
2983 ``server-header``
2989 ``server-header``
2984 Value for HTTP ``Server`` response header.
2990 Value for HTTP ``Server`` response header.
2985
2991
2986 ``static``
2992 ``static``
2987 Directory where static files are served from.
2993 Directory where static files are served from.
2988
2994
2989 ``staticurl``
2995 ``staticurl``
2990 Base URL to use for static files. If unset, static files (e.g. the
2996 Base URL to use for static files. If unset, static files (e.g. the
2991 hgicon.png favicon) will be served by the CGI script itself. Use
2997 hgicon.png favicon) will be served by the CGI script itself. Use
2992 this setting to serve them directly with the HTTP server.
2998 this setting to serve them directly with the HTTP server.
2993 Example: ``http://hgserver/static/``.
2999 Example: ``http://hgserver/static/``.
2994
3000
2995 ``stripes``
3001 ``stripes``
2996 How many lines a "zebra stripe" should span in multi-line output.
3002 How many lines a "zebra stripe" should span in multi-line output.
2997 Set to 0 to disable. (default: 1)
3003 Set to 0 to disable. (default: 1)
2998
3004
2999 ``style``
3005 ``style``
3000 Which template map style to use. The available options are the names of
3006 Which template map style to use. The available options are the names of
3001 subdirectories in the HTML templates path. (default: ``paper``)
3007 subdirectories in the HTML templates path. (default: ``paper``)
3002 Example: ``monoblue``.
3008 Example: ``monoblue``.
3003
3009
3004 ``templates``
3010 ``templates``
3005 Where to find the HTML templates. The default path to the HTML templates
3011 Where to find the HTML templates. The default path to the HTML templates
3006 can be obtained from ``hg debuginstall``.
3012 can be obtained from ``hg debuginstall``.
3007
3013
3008 ``websub``
3014 ``websub``
3009 ----------
3015 ----------
3010
3016
3011 Web substitution filter definition. You can use this section to
3017 Web substitution filter definition. You can use this section to
3012 define a set of regular expression substitution patterns which
3018 define a set of regular expression substitution patterns which
3013 let you automatically modify the hgweb server output.
3019 let you automatically modify the hgweb server output.
3014
3020
3015 The default hgweb templates only apply these substitution patterns
3021 The default hgweb templates only apply these substitution patterns
3016 on the revision description fields. You can apply them anywhere
3022 on the revision description fields. You can apply them anywhere
3017 you want when you create your own templates by adding calls to the
3023 you want when you create your own templates by adding calls to the
3018 "websub" filter (usually after calling the "escape" filter).
3024 "websub" filter (usually after calling the "escape" filter).
3019
3025
3020 This can be used, for example, to convert issue references to links
3026 This can be used, for example, to convert issue references to links
3021 to your issue tracker, or to convert "markdown-like" syntax into
3027 to your issue tracker, or to convert "markdown-like" syntax into
3022 HTML (see the examples below).
3028 HTML (see the examples below).
3023
3029
3024 Each entry in this section names a substitution filter.
3030 Each entry in this section names a substitution filter.
3025 The value of each entry defines the substitution expression itself.
3031 The value of each entry defines the substitution expression itself.
3026 The websub expressions follow the old interhg extension syntax,
3032 The websub expressions follow the old interhg extension syntax,
3027 which in turn imitates the Unix sed replacement syntax::
3033 which in turn imitates the Unix sed replacement syntax::
3028
3034
3029 patternname = s/SEARCH_REGEX/REPLACE_EXPRESSION/[i]
3035 patternname = s/SEARCH_REGEX/REPLACE_EXPRESSION/[i]
3030
3036
3031 You can use any separator other than "/". The final "i" is optional
3037 You can use any separator other than "/". The final "i" is optional
3032 and indicates that the search must be case insensitive.
3038 and indicates that the search must be case insensitive.
3033
3039
3034 Examples::
3040 Examples::
3035
3041
3036 [websub]
3042 [websub]
3037 issues = s|issue(\d+)|<a href="http://bts.example.org/issue\1">issue\1</a>|i
3043 issues = s|issue(\d+)|<a href="http://bts.example.org/issue\1">issue\1</a>|i
3038 italic = s/\b_(\S+)_\b/<i>\1<\/i>/
3044 italic = s/\b_(\S+)_\b/<i>\1<\/i>/
3039 bold = s/\*\b(\S+)\b\*/<b>\1<\/b>/
3045 bold = s/\*\b(\S+)\b\*/<b>\1<\/b>/
3040
3046
3041 ``worker``
3047 ``worker``
3042 ----------
3048 ----------
3043
3049
3044 Parallel master/worker configuration. We currently perform working
3050 Parallel master/worker configuration. We currently perform working
3045 directory updates in parallel on Unix-like systems, which greatly
3051 directory updates in parallel on Unix-like systems, which greatly
3046 helps performance.
3052 helps performance.
3047
3053
3048 ``enabled``
3054 ``enabled``
3049 Whether to enable workers code to be used.
3055 Whether to enable workers code to be used.
3050 (default: true)
3056 (default: true)
3051
3057
3052 ``numcpus``
3058 ``numcpus``
3053 Number of CPUs to use for parallel operations. A zero or
3059 Number of CPUs to use for parallel operations. A zero or
3054 negative value is treated as ``use the default``.
3060 negative value is treated as ``use the default``.
3055 (default: 4 or the number of CPUs on the system, whichever is larger)
3061 (default: 4 or the number of CPUs on the system, whichever is larger)
3056
3062
3057 ``backgroundclose``
3063 ``backgroundclose``
3058 Whether to enable closing file handles on background threads during certain
3064 Whether to enable closing file handles on background threads during certain
3059 operations. Some platforms aren't very efficient at closing file
3065 operations. Some platforms aren't very efficient at closing file
3060 handles that have been written or appended to. By performing file closing
3066 handles that have been written or appended to. By performing file closing
3061 on background threads, file write rate can increase substantially.
3067 on background threads, file write rate can increase substantially.
3062 (default: true on Windows, false elsewhere)
3068 (default: true on Windows, false elsewhere)
3063
3069
3064 ``backgroundcloseminfilecount``
3070 ``backgroundcloseminfilecount``
3065 Minimum number of files required to trigger background file closing.
3071 Minimum number of files required to trigger background file closing.
3066 Operations not writing this many files won't start background close
3072 Operations not writing this many files won't start background close
3067 threads.
3073 threads.
3068 (default: 2048)
3074 (default: 2048)
3069
3075
3070 ``backgroundclosemaxqueue``
3076 ``backgroundclosemaxqueue``
3071 The maximum number of opened file handles waiting to be closed in the
3077 The maximum number of opened file handles waiting to be closed in the
3072 background. This option only has an effect if ``backgroundclose`` is
3078 background. This option only has an effect if ``backgroundclose`` is
3073 enabled.
3079 enabled.
3074 (default: 384)
3080 (default: 384)
3075
3081
3076 ``backgroundclosethreadcount``
3082 ``backgroundclosethreadcount``
3077 Number of threads to process background file closes. Only relevant if
3083 Number of threads to process background file closes. Only relevant if
3078 ``backgroundclose`` is enabled.
3084 ``backgroundclose`` is enabled.
3079 (default: 4)
3085 (default: 4)
@@ -1,4002 +1,4008 b''
1 Short help:
1 Short help:
2
2
3 $ hg
3 $ hg
4 Mercurial Distributed SCM
4 Mercurial Distributed SCM
5
5
6 basic commands:
6 basic commands:
7
7
8 add add the specified files on the next commit
8 add add the specified files on the next commit
9 annotate show changeset information by line for each file
9 annotate show changeset information by line for each file
10 clone make a copy of an existing repository
10 clone make a copy of an existing repository
11 commit commit the specified files or all outstanding changes
11 commit commit the specified files or all outstanding changes
12 diff diff repository (or selected files)
12 diff diff repository (or selected files)
13 export dump the header and diffs for one or more changesets
13 export dump the header and diffs for one or more changesets
14 forget forget the specified files on the next commit
14 forget forget the specified files on the next commit
15 init create a new repository in the given directory
15 init create a new repository in the given directory
16 log show revision history of entire repository or files
16 log show revision history of entire repository or files
17 merge merge another revision into working directory
17 merge merge another revision into working directory
18 pull pull changes from the specified source
18 pull pull changes from the specified source
19 push push changes to the specified destination
19 push push changes to the specified destination
20 remove remove the specified files on the next commit
20 remove remove the specified files on the next commit
21 serve start stand-alone webserver
21 serve start stand-alone webserver
22 status show changed files in the working directory
22 status show changed files in the working directory
23 summary summarize working directory state
23 summary summarize working directory state
24 update update working directory (or switch revisions)
24 update update working directory (or switch revisions)
25
25
26 (use 'hg help' for the full list of commands or 'hg -v' for details)
26 (use 'hg help' for the full list of commands or 'hg -v' for details)
27
27
28 $ hg -q
28 $ hg -q
29 add add the specified files on the next commit
29 add add the specified files on the next commit
30 annotate show changeset information by line for each file
30 annotate show changeset information by line for each file
31 clone make a copy of an existing repository
31 clone make a copy of an existing repository
32 commit commit the specified files or all outstanding changes
32 commit commit the specified files or all outstanding changes
33 diff diff repository (or selected files)
33 diff diff repository (or selected files)
34 export dump the header and diffs for one or more changesets
34 export dump the header and diffs for one or more changesets
35 forget forget the specified files on the next commit
35 forget forget the specified files on the next commit
36 init create a new repository in the given directory
36 init create a new repository in the given directory
37 log show revision history of entire repository or files
37 log show revision history of entire repository or files
38 merge merge another revision into working directory
38 merge merge another revision into working directory
39 pull pull changes from the specified source
39 pull pull changes from the specified source
40 push push changes to the specified destination
40 push push changes to the specified destination
41 remove remove the specified files on the next commit
41 remove remove the specified files on the next commit
42 serve start stand-alone webserver
42 serve start stand-alone webserver
43 status show changed files in the working directory
43 status show changed files in the working directory
44 summary summarize working directory state
44 summary summarize working directory state
45 update update working directory (or switch revisions)
45 update update working directory (or switch revisions)
46
46
47 Extra extensions will be printed in help output in a non-reliable order since
47 Extra extensions will be printed in help output in a non-reliable order since
48 the extension is unknown.
48 the extension is unknown.
49 #if no-extraextensions
49 #if no-extraextensions
50
50
51 $ hg help
51 $ hg help
52 Mercurial Distributed SCM
52 Mercurial Distributed SCM
53
53
54 list of commands:
54 list of commands:
55
55
56 Repository creation:
56 Repository creation:
57
57
58 clone make a copy of an existing repository
58 clone make a copy of an existing repository
59 init create a new repository in the given directory
59 init create a new repository in the given directory
60
60
61 Remote repository management:
61 Remote repository management:
62
62
63 incoming show new changesets found in source
63 incoming show new changesets found in source
64 outgoing show changesets not found in the destination
64 outgoing show changesets not found in the destination
65 paths show aliases for remote repositories
65 paths show aliases for remote repositories
66 pull pull changes from the specified source
66 pull pull changes from the specified source
67 push push changes to the specified destination
67 push push changes to the specified destination
68 serve start stand-alone webserver
68 serve start stand-alone webserver
69
69
70 Change creation:
70 Change creation:
71
71
72 commit commit the specified files or all outstanding changes
72 commit commit the specified files or all outstanding changes
73
73
74 Change manipulation:
74 Change manipulation:
75
75
76 backout reverse effect of earlier changeset
76 backout reverse effect of earlier changeset
77 graft copy changes from other branches onto the current branch
77 graft copy changes from other branches onto the current branch
78 merge merge another revision into working directory
78 merge merge another revision into working directory
79
79
80 Change organization:
80 Change organization:
81
81
82 bookmarks create a new bookmark or list existing bookmarks
82 bookmarks create a new bookmark or list existing bookmarks
83 branch set or show the current branch name
83 branch set or show the current branch name
84 branches list repository named branches
84 branches list repository named branches
85 phase set or show the current phase name
85 phase set or show the current phase name
86 tag add one or more tags for the current or given revision
86 tag add one or more tags for the current or given revision
87 tags list repository tags
87 tags list repository tags
88
88
89 File content management:
89 File content management:
90
90
91 annotate show changeset information by line for each file
91 annotate show changeset information by line for each file
92 cat output the current or given revision of files
92 cat output the current or given revision of files
93 copy mark files as copied for the next commit
93 copy mark files as copied for the next commit
94 diff diff repository (or selected files)
94 diff diff repository (or selected files)
95 grep search for a pattern in specified files
95 grep search for a pattern in specified files
96
96
97 Change navigation:
97 Change navigation:
98
98
99 bisect subdivision search of changesets
99 bisect subdivision search of changesets
100 heads show branch heads
100 heads show branch heads
101 identify identify the working directory or specified revision
101 identify identify the working directory or specified revision
102 log show revision history of entire repository or files
102 log show revision history of entire repository or files
103
103
104 Working directory management:
104 Working directory management:
105
105
106 add add the specified files on the next commit
106 add add the specified files on the next commit
107 addremove add all new files, delete all missing files
107 addremove add all new files, delete all missing files
108 files list tracked files
108 files list tracked files
109 forget forget the specified files on the next commit
109 forget forget the specified files on the next commit
110 purge removes files not tracked by Mercurial
110 purge removes files not tracked by Mercurial
111 remove remove the specified files on the next commit
111 remove remove the specified files on the next commit
112 rename rename files; equivalent of copy + remove
112 rename rename files; equivalent of copy + remove
113 resolve redo merges or set/view the merge status of files
113 resolve redo merges or set/view the merge status of files
114 revert restore files to their checkout state
114 revert restore files to their checkout state
115 root print the root (top) of the current working directory
115 root print the root (top) of the current working directory
116 shelve save and set aside changes from the working directory
116 shelve save and set aside changes from the working directory
117 status show changed files in the working directory
117 status show changed files in the working directory
118 summary summarize working directory state
118 summary summarize working directory state
119 unshelve restore a shelved change to the working directory
119 unshelve restore a shelved change to the working directory
120 update update working directory (or switch revisions)
120 update update working directory (or switch revisions)
121
121
122 Change import/export:
122 Change import/export:
123
123
124 archive create an unversioned archive of a repository revision
124 archive create an unversioned archive of a repository revision
125 bundle create a bundle file
125 bundle create a bundle file
126 export dump the header and diffs for one or more changesets
126 export dump the header and diffs for one or more changesets
127 import import an ordered set of patches
127 import import an ordered set of patches
128 unbundle apply one or more bundle files
128 unbundle apply one or more bundle files
129
129
130 Repository maintenance:
130 Repository maintenance:
131
131
132 manifest output the current or given revision of the project manifest
132 manifest output the current or given revision of the project manifest
133 recover roll back an interrupted transaction
133 recover roll back an interrupted transaction
134 verify verify the integrity of the repository
134 verify verify the integrity of the repository
135
135
136 Help:
136 Help:
137
137
138 config show combined config settings from all hgrc files
138 config show combined config settings from all hgrc files
139 help show help for a given topic or a help overview
139 help show help for a given topic or a help overview
140 version output version and copyright information
140 version output version and copyright information
141
141
142 additional help topics:
142 additional help topics:
143
143
144 Mercurial identifiers:
144 Mercurial identifiers:
145
145
146 filesets Specifying File Sets
146 filesets Specifying File Sets
147 hgignore Syntax for Mercurial Ignore Files
147 hgignore Syntax for Mercurial Ignore Files
148 patterns File Name Patterns
148 patterns File Name Patterns
149 revisions Specifying Revisions
149 revisions Specifying Revisions
150 urls URL Paths
150 urls URL Paths
151
151
152 Mercurial output:
152 Mercurial output:
153
153
154 color Colorizing Outputs
154 color Colorizing Outputs
155 dates Date Formats
155 dates Date Formats
156 diffs Diff Formats
156 diffs Diff Formats
157 templating Template Usage
157 templating Template Usage
158
158
159 Mercurial configuration:
159 Mercurial configuration:
160
160
161 config Configuration Files
161 config Configuration Files
162 environment Environment Variables
162 environment Environment Variables
163 extensions Using Additional Features
163 extensions Using Additional Features
164 flags Command-line flags
164 flags Command-line flags
165 hgweb Configuring hgweb
165 hgweb Configuring hgweb
166 merge-tools Merge Tools
166 merge-tools Merge Tools
167 pager Pager Support
167 pager Pager Support
168
168
169 Concepts:
169 Concepts:
170
170
171 bundlespec Bundle File Formats
171 bundlespec Bundle File Formats
172 evolution Safely rewriting history (EXPERIMENTAL)
172 evolution Safely rewriting history (EXPERIMENTAL)
173 glossary Glossary
173 glossary Glossary
174 phases Working with Phases
174 phases Working with Phases
175 subrepos Subrepositories
175 subrepos Subrepositories
176
176
177 Miscellaneous:
177 Miscellaneous:
178
178
179 deprecated Deprecated Features
179 deprecated Deprecated Features
180 internals Technical implementation topics
180 internals Technical implementation topics
181 scripting Using Mercurial from scripts and automation
181 scripting Using Mercurial from scripts and automation
182
182
183 (use 'hg help -v' to show built-in aliases and global options)
183 (use 'hg help -v' to show built-in aliases and global options)
184
184
185 $ hg -q help
185 $ hg -q help
186 Repository creation:
186 Repository creation:
187
187
188 clone make a copy of an existing repository
188 clone make a copy of an existing repository
189 init create a new repository in the given directory
189 init create a new repository in the given directory
190
190
191 Remote repository management:
191 Remote repository management:
192
192
193 incoming show new changesets found in source
193 incoming show new changesets found in source
194 outgoing show changesets not found in the destination
194 outgoing show changesets not found in the destination
195 paths show aliases for remote repositories
195 paths show aliases for remote repositories
196 pull pull changes from the specified source
196 pull pull changes from the specified source
197 push push changes to the specified destination
197 push push changes to the specified destination
198 serve start stand-alone webserver
198 serve start stand-alone webserver
199
199
200 Change creation:
200 Change creation:
201
201
202 commit commit the specified files or all outstanding changes
202 commit commit the specified files or all outstanding changes
203
203
204 Change manipulation:
204 Change manipulation:
205
205
206 backout reverse effect of earlier changeset
206 backout reverse effect of earlier changeset
207 graft copy changes from other branches onto the current branch
207 graft copy changes from other branches onto the current branch
208 merge merge another revision into working directory
208 merge merge another revision into working directory
209
209
210 Change organization:
210 Change organization:
211
211
212 bookmarks create a new bookmark or list existing bookmarks
212 bookmarks create a new bookmark or list existing bookmarks
213 branch set or show the current branch name
213 branch set or show the current branch name
214 branches list repository named branches
214 branches list repository named branches
215 phase set or show the current phase name
215 phase set or show the current phase name
216 tag add one or more tags for the current or given revision
216 tag add one or more tags for the current or given revision
217 tags list repository tags
217 tags list repository tags
218
218
219 File content management:
219 File content management:
220
220
221 annotate show changeset information by line for each file
221 annotate show changeset information by line for each file
222 cat output the current or given revision of files
222 cat output the current or given revision of files
223 copy mark files as copied for the next commit
223 copy mark files as copied for the next commit
224 diff diff repository (or selected files)
224 diff diff repository (or selected files)
225 grep search for a pattern in specified files
225 grep search for a pattern in specified files
226
226
227 Change navigation:
227 Change navigation:
228
228
229 bisect subdivision search of changesets
229 bisect subdivision search of changesets
230 heads show branch heads
230 heads show branch heads
231 identify identify the working directory or specified revision
231 identify identify the working directory or specified revision
232 log show revision history of entire repository or files
232 log show revision history of entire repository or files
233
233
234 Working directory management:
234 Working directory management:
235
235
236 add add the specified files on the next commit
236 add add the specified files on the next commit
237 addremove add all new files, delete all missing files
237 addremove add all new files, delete all missing files
238 files list tracked files
238 files list tracked files
239 forget forget the specified files on the next commit
239 forget forget the specified files on the next commit
240 purge removes files not tracked by Mercurial
240 purge removes files not tracked by Mercurial
241 remove remove the specified files on the next commit
241 remove remove the specified files on the next commit
242 rename rename files; equivalent of copy + remove
242 rename rename files; equivalent of copy + remove
243 resolve redo merges or set/view the merge status of files
243 resolve redo merges or set/view the merge status of files
244 revert restore files to their checkout state
244 revert restore files to their checkout state
245 root print the root (top) of the current working directory
245 root print the root (top) of the current working directory
246 shelve save and set aside changes from the working directory
246 shelve save and set aside changes from the working directory
247 status show changed files in the working directory
247 status show changed files in the working directory
248 summary summarize working directory state
248 summary summarize working directory state
249 unshelve restore a shelved change to the working directory
249 unshelve restore a shelved change to the working directory
250 update update working directory (or switch revisions)
250 update update working directory (or switch revisions)
251
251
252 Change import/export:
252 Change import/export:
253
253
254 archive create an unversioned archive of a repository revision
254 archive create an unversioned archive of a repository revision
255 bundle create a bundle file
255 bundle create a bundle file
256 export dump the header and diffs for one or more changesets
256 export dump the header and diffs for one or more changesets
257 import import an ordered set of patches
257 import import an ordered set of patches
258 unbundle apply one or more bundle files
258 unbundle apply one or more bundle files
259
259
260 Repository maintenance:
260 Repository maintenance:
261
261
262 manifest output the current or given revision of the project manifest
262 manifest output the current or given revision of the project manifest
263 recover roll back an interrupted transaction
263 recover roll back an interrupted transaction
264 verify verify the integrity of the repository
264 verify verify the integrity of the repository
265
265
266 Help:
266 Help:
267
267
268 config show combined config settings from all hgrc files
268 config show combined config settings from all hgrc files
269 help show help for a given topic or a help overview
269 help show help for a given topic or a help overview
270 version output version and copyright information
270 version output version and copyright information
271
271
272 additional help topics:
272 additional help topics:
273
273
274 Mercurial identifiers:
274 Mercurial identifiers:
275
275
276 filesets Specifying File Sets
276 filesets Specifying File Sets
277 hgignore Syntax for Mercurial Ignore Files
277 hgignore Syntax for Mercurial Ignore Files
278 patterns File Name Patterns
278 patterns File Name Patterns
279 revisions Specifying Revisions
279 revisions Specifying Revisions
280 urls URL Paths
280 urls URL Paths
281
281
282 Mercurial output:
282 Mercurial output:
283
283
284 color Colorizing Outputs
284 color Colorizing Outputs
285 dates Date Formats
285 dates Date Formats
286 diffs Diff Formats
286 diffs Diff Formats
287 templating Template Usage
287 templating Template Usage
288
288
289 Mercurial configuration:
289 Mercurial configuration:
290
290
291 config Configuration Files
291 config Configuration Files
292 environment Environment Variables
292 environment Environment Variables
293 extensions Using Additional Features
293 extensions Using Additional Features
294 flags Command-line flags
294 flags Command-line flags
295 hgweb Configuring hgweb
295 hgweb Configuring hgweb
296 merge-tools Merge Tools
296 merge-tools Merge Tools
297 pager Pager Support
297 pager Pager Support
298
298
299 Concepts:
299 Concepts:
300
300
301 bundlespec Bundle File Formats
301 bundlespec Bundle File Formats
302 evolution Safely rewriting history (EXPERIMENTAL)
302 evolution Safely rewriting history (EXPERIMENTAL)
303 glossary Glossary
303 glossary Glossary
304 phases Working with Phases
304 phases Working with Phases
305 subrepos Subrepositories
305 subrepos Subrepositories
306
306
307 Miscellaneous:
307 Miscellaneous:
308
308
309 deprecated Deprecated Features
309 deprecated Deprecated Features
310 internals Technical implementation topics
310 internals Technical implementation topics
311 scripting Using Mercurial from scripts and automation
311 scripting Using Mercurial from scripts and automation
312
312
313 Test extension help:
313 Test extension help:
314 $ hg help extensions --config extensions.rebase= --config extensions.children=
314 $ hg help extensions --config extensions.rebase= --config extensions.children=
315 Using Additional Features
315 Using Additional Features
316 """""""""""""""""""""""""
316 """""""""""""""""""""""""
317
317
318 Mercurial has the ability to add new features through the use of
318 Mercurial has the ability to add new features through the use of
319 extensions. Extensions may add new commands, add options to existing
319 extensions. Extensions may add new commands, add options to existing
320 commands, change the default behavior of commands, or implement hooks.
320 commands, change the default behavior of commands, or implement hooks.
321
321
322 To enable the "foo" extension, either shipped with Mercurial or in the
322 To enable the "foo" extension, either shipped with Mercurial or in the
323 Python search path, create an entry for it in your configuration file,
323 Python search path, create an entry for it in your configuration file,
324 like this:
324 like this:
325
325
326 [extensions]
326 [extensions]
327 foo =
327 foo =
328
328
329 You may also specify the full path to an extension:
329 You may also specify the full path to an extension:
330
330
331 [extensions]
331 [extensions]
332 myfeature = ~/.hgext/myfeature.py
332 myfeature = ~/.hgext/myfeature.py
333
333
334 See 'hg help config' for more information on configuration files.
334 See 'hg help config' for more information on configuration files.
335
335
336 Extensions are not loaded by default for a variety of reasons: they can
336 Extensions are not loaded by default for a variety of reasons: they can
337 increase startup overhead; they may be meant for advanced usage only; they
337 increase startup overhead; they may be meant for advanced usage only; they
338 may provide potentially dangerous abilities (such as letting you destroy
338 may provide potentially dangerous abilities (such as letting you destroy
339 or modify history); they might not be ready for prime time; or they may
339 or modify history); they might not be ready for prime time; or they may
340 alter some usual behaviors of stock Mercurial. It is thus up to the user
340 alter some usual behaviors of stock Mercurial. It is thus up to the user
341 to activate extensions as needed.
341 to activate extensions as needed.
342
342
343 To explicitly disable an extension enabled in a configuration file of
343 To explicitly disable an extension enabled in a configuration file of
344 broader scope, prepend its path with !:
344 broader scope, prepend its path with !:
345
345
346 [extensions]
346 [extensions]
347 # disabling extension bar residing in /path/to/extension/bar.py
347 # disabling extension bar residing in /path/to/extension/bar.py
348 bar = !/path/to/extension/bar.py
348 bar = !/path/to/extension/bar.py
349 # ditto, but no path was supplied for extension baz
349 # ditto, but no path was supplied for extension baz
350 baz = !
350 baz = !
351
351
352 enabled extensions:
352 enabled extensions:
353
353
354 children command to display child changesets (DEPRECATED)
354 children command to display child changesets (DEPRECATED)
355 rebase command to move sets of revisions to a different ancestor
355 rebase command to move sets of revisions to a different ancestor
356
356
357 disabled extensions:
357 disabled extensions:
358
358
359 acl hooks for controlling repository access
359 acl hooks for controlling repository access
360 blackbox log repository events to a blackbox for debugging
360 blackbox log repository events to a blackbox for debugging
361 bugzilla hooks for integrating with the Bugzilla bug tracker
361 bugzilla hooks for integrating with the Bugzilla bug tracker
362 censor erase file content at a given revision
362 censor erase file content at a given revision
363 churn command to display statistics about repository history
363 churn command to display statistics about repository history
364 clonebundles advertise pre-generated bundles to seed clones
364 clonebundles advertise pre-generated bundles to seed clones
365 closehead close arbitrary heads without checking them out first
365 closehead close arbitrary heads without checking them out first
366 convert import revisions from foreign VCS repositories into
366 convert import revisions from foreign VCS repositories into
367 Mercurial
367 Mercurial
368 eol automatically manage newlines in repository files
368 eol automatically manage newlines in repository files
369 extdiff command to allow external programs to compare revisions
369 extdiff command to allow external programs to compare revisions
370 factotum http authentication with factotum
370 factotum http authentication with factotum
371 fastexport export repositories as git fast-import stream
371 fastexport export repositories as git fast-import stream
372 githelp try mapping git commands to Mercurial commands
372 githelp try mapping git commands to Mercurial commands
373 gpg commands to sign and verify changesets
373 gpg commands to sign and verify changesets
374 hgk browse the repository in a graphical way
374 hgk browse the repository in a graphical way
375 highlight syntax highlighting for hgweb (requires Pygments)
375 highlight syntax highlighting for hgweb (requires Pygments)
376 histedit interactive history editing
376 histedit interactive history editing
377 keyword expand keywords in tracked files
377 keyword expand keywords in tracked files
378 largefiles track large binary files
378 largefiles track large binary files
379 mq manage a stack of patches
379 mq manage a stack of patches
380 notify hooks for sending email push notifications
380 notify hooks for sending email push notifications
381 patchbomb command to send changesets as (a series of) patch emails
381 patchbomb command to send changesets as (a series of) patch emails
382 relink recreates hardlinks between repository clones
382 relink recreates hardlinks between repository clones
383 schemes extend schemes with shortcuts to repository swarms
383 schemes extend schemes with shortcuts to repository swarms
384 share share a common history between several working directories
384 share share a common history between several working directories
385 transplant command to transplant changesets from another branch
385 transplant command to transplant changesets from another branch
386 win32mbcs allow the use of MBCS paths with problematic encodings
386 win32mbcs allow the use of MBCS paths with problematic encodings
387 zeroconf discover and advertise repositories on the local network
387 zeroconf discover and advertise repositories on the local network
388
388
389 #endif
389 #endif
390
390
391 Verify that deprecated extensions are included if --verbose:
391 Verify that deprecated extensions are included if --verbose:
392
392
393 $ hg -v help extensions | grep children
393 $ hg -v help extensions | grep children
394 children command to display child changesets (DEPRECATED)
394 children command to display child changesets (DEPRECATED)
395
395
396 Verify that extension keywords appear in help templates
396 Verify that extension keywords appear in help templates
397
397
398 $ hg help --config extensions.transplant= templating|grep transplant > /dev/null
398 $ hg help --config extensions.transplant= templating|grep transplant > /dev/null
399
399
400 Test short command list with verbose option
400 Test short command list with verbose option
401
401
402 $ hg -v help shortlist
402 $ hg -v help shortlist
403 Mercurial Distributed SCM
403 Mercurial Distributed SCM
404
404
405 basic commands:
405 basic commands:
406
406
407 abort abort an unfinished operation (EXPERIMENTAL)
407 abort abort an unfinished operation (EXPERIMENTAL)
408 add add the specified files on the next commit
408 add add the specified files on the next commit
409 annotate, blame
409 annotate, blame
410 show changeset information by line for each file
410 show changeset information by line for each file
411 clone make a copy of an existing repository
411 clone make a copy of an existing repository
412 commit, ci commit the specified files or all outstanding changes
412 commit, ci commit the specified files or all outstanding changes
413 continue resumes an interrupted operation (EXPERIMENTAL)
413 continue resumes an interrupted operation (EXPERIMENTAL)
414 diff diff repository (or selected files)
414 diff diff repository (or selected files)
415 export dump the header and diffs for one or more changesets
415 export dump the header and diffs for one or more changesets
416 forget forget the specified files on the next commit
416 forget forget the specified files on the next commit
417 init create a new repository in the given directory
417 init create a new repository in the given directory
418 log, history show revision history of entire repository or files
418 log, history show revision history of entire repository or files
419 merge merge another revision into working directory
419 merge merge another revision into working directory
420 pull pull changes from the specified source
420 pull pull changes from the specified source
421 push push changes to the specified destination
421 push push changes to the specified destination
422 remove, rm remove the specified files on the next commit
422 remove, rm remove the specified files on the next commit
423 serve start stand-alone webserver
423 serve start stand-alone webserver
424 status, st show changed files in the working directory
424 status, st show changed files in the working directory
425 summary, sum summarize working directory state
425 summary, sum summarize working directory state
426 update, up, checkout, co
426 update, up, checkout, co
427 update working directory (or switch revisions)
427 update working directory (or switch revisions)
428
428
429 global options ([+] can be repeated):
429 global options ([+] can be repeated):
430
430
431 -R --repository REPO repository root directory or name of overlay bundle
431 -R --repository REPO repository root directory or name of overlay bundle
432 file
432 file
433 --cwd DIR change working directory
433 --cwd DIR change working directory
434 -y --noninteractive do not prompt, automatically pick the first choice for
434 -y --noninteractive do not prompt, automatically pick the first choice for
435 all prompts
435 all prompts
436 -q --quiet suppress output
436 -q --quiet suppress output
437 -v --verbose enable additional output
437 -v --verbose enable additional output
438 --color TYPE when to colorize (boolean, always, auto, never, or
438 --color TYPE when to colorize (boolean, always, auto, never, or
439 debug)
439 debug)
440 --config CONFIG [+] set/override config option (use 'section.name=value')
440 --config CONFIG [+] set/override config option (use 'section.name=value')
441 --debug enable debugging output
441 --debug enable debugging output
442 --debugger start debugger
442 --debugger start debugger
443 --encoding ENCODE set the charset encoding (default: ascii)
443 --encoding ENCODE set the charset encoding (default: ascii)
444 --encodingmode MODE set the charset encoding mode (default: strict)
444 --encodingmode MODE set the charset encoding mode (default: strict)
445 --traceback always print a traceback on exception
445 --traceback always print a traceback on exception
446 --time time how long the command takes
446 --time time how long the command takes
447 --profile print command execution profile
447 --profile print command execution profile
448 --version output version information and exit
448 --version output version information and exit
449 -h --help display help and exit
449 -h --help display help and exit
450 --hidden consider hidden changesets
450 --hidden consider hidden changesets
451 --pager TYPE when to paginate (boolean, always, auto, or never)
451 --pager TYPE when to paginate (boolean, always, auto, or never)
452 (default: auto)
452 (default: auto)
453
453
454 (use 'hg help' for the full list of commands)
454 (use 'hg help' for the full list of commands)
455
455
456 $ hg add -h
456 $ hg add -h
457 hg add [OPTION]... [FILE]...
457 hg add [OPTION]... [FILE]...
458
458
459 add the specified files on the next commit
459 add the specified files on the next commit
460
460
461 Schedule files to be version controlled and added to the repository.
461 Schedule files to be version controlled and added to the repository.
462
462
463 The files will be added to the repository at the next commit. To undo an
463 The files will be added to the repository at the next commit. To undo an
464 add before that, see 'hg forget'.
464 add before that, see 'hg forget'.
465
465
466 If no names are given, add all files to the repository (except files
466 If no names are given, add all files to the repository (except files
467 matching ".hgignore").
467 matching ".hgignore").
468
468
469 Returns 0 if all files are successfully added.
469 Returns 0 if all files are successfully added.
470
470
471 options ([+] can be repeated):
471 options ([+] can be repeated):
472
472
473 -I --include PATTERN [+] include names matching the given patterns
473 -I --include PATTERN [+] include names matching the given patterns
474 -X --exclude PATTERN [+] exclude names matching the given patterns
474 -X --exclude PATTERN [+] exclude names matching the given patterns
475 -S --subrepos recurse into subrepositories
475 -S --subrepos recurse into subrepositories
476 -n --dry-run do not perform actions, just print output
476 -n --dry-run do not perform actions, just print output
477
477
478 (some details hidden, use --verbose to show complete help)
478 (some details hidden, use --verbose to show complete help)
479
479
480 Verbose help for add
480 Verbose help for add
481
481
482 $ hg add -hv
482 $ hg add -hv
483 hg add [OPTION]... [FILE]...
483 hg add [OPTION]... [FILE]...
484
484
485 add the specified files on the next commit
485 add the specified files on the next commit
486
486
487 Schedule files to be version controlled and added to the repository.
487 Schedule files to be version controlled and added to the repository.
488
488
489 The files will be added to the repository at the next commit. To undo an
489 The files will be added to the repository at the next commit. To undo an
490 add before that, see 'hg forget'.
490 add before that, see 'hg forget'.
491
491
492 If no names are given, add all files to the repository (except files
492 If no names are given, add all files to the repository (except files
493 matching ".hgignore").
493 matching ".hgignore").
494
494
495 Examples:
495 Examples:
496
496
497 - New (unknown) files are added automatically by 'hg add':
497 - New (unknown) files are added automatically by 'hg add':
498
498
499 $ ls
499 $ ls
500 foo.c
500 foo.c
501 $ hg status
501 $ hg status
502 ? foo.c
502 ? foo.c
503 $ hg add
503 $ hg add
504 adding foo.c
504 adding foo.c
505 $ hg status
505 $ hg status
506 A foo.c
506 A foo.c
507
507
508 - Specific files to be added can be specified:
508 - Specific files to be added can be specified:
509
509
510 $ ls
510 $ ls
511 bar.c foo.c
511 bar.c foo.c
512 $ hg status
512 $ hg status
513 ? bar.c
513 ? bar.c
514 ? foo.c
514 ? foo.c
515 $ hg add bar.c
515 $ hg add bar.c
516 $ hg status
516 $ hg status
517 A bar.c
517 A bar.c
518 ? foo.c
518 ? foo.c
519
519
520 Returns 0 if all files are successfully added.
520 Returns 0 if all files are successfully added.
521
521
522 options ([+] can be repeated):
522 options ([+] can be repeated):
523
523
524 -I --include PATTERN [+] include names matching the given patterns
524 -I --include PATTERN [+] include names matching the given patterns
525 -X --exclude PATTERN [+] exclude names matching the given patterns
525 -X --exclude PATTERN [+] exclude names matching the given patterns
526 -S --subrepos recurse into subrepositories
526 -S --subrepos recurse into subrepositories
527 -n --dry-run do not perform actions, just print output
527 -n --dry-run do not perform actions, just print output
528
528
529 global options ([+] can be repeated):
529 global options ([+] can be repeated):
530
530
531 -R --repository REPO repository root directory or name of overlay bundle
531 -R --repository REPO repository root directory or name of overlay bundle
532 file
532 file
533 --cwd DIR change working directory
533 --cwd DIR change working directory
534 -y --noninteractive do not prompt, automatically pick the first choice for
534 -y --noninteractive do not prompt, automatically pick the first choice for
535 all prompts
535 all prompts
536 -q --quiet suppress output
536 -q --quiet suppress output
537 -v --verbose enable additional output
537 -v --verbose enable additional output
538 --color TYPE when to colorize (boolean, always, auto, never, or
538 --color TYPE when to colorize (boolean, always, auto, never, or
539 debug)
539 debug)
540 --config CONFIG [+] set/override config option (use 'section.name=value')
540 --config CONFIG [+] set/override config option (use 'section.name=value')
541 --debug enable debugging output
541 --debug enable debugging output
542 --debugger start debugger
542 --debugger start debugger
543 --encoding ENCODE set the charset encoding (default: ascii)
543 --encoding ENCODE set the charset encoding (default: ascii)
544 --encodingmode MODE set the charset encoding mode (default: strict)
544 --encodingmode MODE set the charset encoding mode (default: strict)
545 --traceback always print a traceback on exception
545 --traceback always print a traceback on exception
546 --time time how long the command takes
546 --time time how long the command takes
547 --profile print command execution profile
547 --profile print command execution profile
548 --version output version information and exit
548 --version output version information and exit
549 -h --help display help and exit
549 -h --help display help and exit
550 --hidden consider hidden changesets
550 --hidden consider hidden changesets
551 --pager TYPE when to paginate (boolean, always, auto, or never)
551 --pager TYPE when to paginate (boolean, always, auto, or never)
552 (default: auto)
552 (default: auto)
553
553
554 Test the textwidth config option
554 Test the textwidth config option
555
555
556 $ hg root -h --config ui.textwidth=50
556 $ hg root -h --config ui.textwidth=50
557 hg root
557 hg root
558
558
559 print the root (top) of the current working
559 print the root (top) of the current working
560 directory
560 directory
561
561
562 Print the root directory of the current
562 Print the root directory of the current
563 repository.
563 repository.
564
564
565 Returns 0 on success.
565 Returns 0 on success.
566
566
567 options:
567 options:
568
568
569 -T --template TEMPLATE display with template
569 -T --template TEMPLATE display with template
570
570
571 (some details hidden, use --verbose to show
571 (some details hidden, use --verbose to show
572 complete help)
572 complete help)
573
573
574 Test help option with version option
574 Test help option with version option
575
575
576 $ hg add -h --version
576 $ hg add -h --version
577 Mercurial Distributed SCM (version *) (glob)
577 Mercurial Distributed SCM (version *) (glob)
578 (see https://mercurial-scm.org for more information)
578 (see https://mercurial-scm.org for more information)
579
579
580 Copyright (C) 2005-* Olivia Mackall and others (glob)
580 Copyright (C) 2005-* Olivia Mackall and others (glob)
581 This is free software; see the source for copying conditions. There is NO
581 This is free software; see the source for copying conditions. There is NO
582 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
582 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
583
583
584 $ hg add --skjdfks
584 $ hg add --skjdfks
585 hg add: option --skjdfks not recognized
585 hg add: option --skjdfks not recognized
586 hg add [OPTION]... [FILE]...
586 hg add [OPTION]... [FILE]...
587
587
588 add the specified files on the next commit
588 add the specified files on the next commit
589
589
590 options ([+] can be repeated):
590 options ([+] can be repeated):
591
591
592 -I --include PATTERN [+] include names matching the given patterns
592 -I --include PATTERN [+] include names matching the given patterns
593 -X --exclude PATTERN [+] exclude names matching the given patterns
593 -X --exclude PATTERN [+] exclude names matching the given patterns
594 -S --subrepos recurse into subrepositories
594 -S --subrepos recurse into subrepositories
595 -n --dry-run do not perform actions, just print output
595 -n --dry-run do not perform actions, just print output
596
596
597 (use 'hg add -h' to show more help)
597 (use 'hg add -h' to show more help)
598 [10]
598 [10]
599
599
600 Test ambiguous command help
600 Test ambiguous command help
601
601
602 $ hg help ad
602 $ hg help ad
603 list of commands:
603 list of commands:
604
604
605 add add the specified files on the next commit
605 add add the specified files on the next commit
606 addremove add all new files, delete all missing files
606 addremove add all new files, delete all missing files
607
607
608 (use 'hg help -v ad' to show built-in aliases and global options)
608 (use 'hg help -v ad' to show built-in aliases and global options)
609
609
610 Test command without options
610 Test command without options
611
611
612 $ hg help verify
612 $ hg help verify
613 hg verify
613 hg verify
614
614
615 verify the integrity of the repository
615 verify the integrity of the repository
616
616
617 Verify the integrity of the current repository.
617 Verify the integrity of the current repository.
618
618
619 This will perform an extensive check of the repository's integrity,
619 This will perform an extensive check of the repository's integrity,
620 validating the hashes and checksums of each entry in the changelog,
620 validating the hashes and checksums of each entry in the changelog,
621 manifest, and tracked files, as well as the integrity of their crosslinks
621 manifest, and tracked files, as well as the integrity of their crosslinks
622 and indices.
622 and indices.
623
623
624 Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
624 Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
625 information about recovery from corruption of the repository.
625 information about recovery from corruption of the repository.
626
626
627 Returns 0 on success, 1 if errors are encountered.
627 Returns 0 on success, 1 if errors are encountered.
628
628
629 options:
629 options:
630
630
631 (some details hidden, use --verbose to show complete help)
631 (some details hidden, use --verbose to show complete help)
632
632
633 $ hg help diff
633 $ hg help diff
634 hg diff [OPTION]... ([-c REV] | [--from REV1] [--to REV2]) [FILE]...
634 hg diff [OPTION]... ([-c REV] | [--from REV1] [--to REV2]) [FILE]...
635
635
636 diff repository (or selected files)
636 diff repository (or selected files)
637
637
638 Show differences between revisions for the specified files.
638 Show differences between revisions for the specified files.
639
639
640 Differences between files are shown using the unified diff format.
640 Differences between files are shown using the unified diff format.
641
641
642 Note:
642 Note:
643 'hg diff' may generate unexpected results for merges, as it will
643 'hg diff' may generate unexpected results for merges, as it will
644 default to comparing against the working directory's first parent
644 default to comparing against the working directory's first parent
645 changeset if no revisions are specified.
645 changeset if no revisions are specified.
646
646
647 By default, the working directory files are compared to its first parent.
647 By default, the working directory files are compared to its first parent.
648 To see the differences from another revision, use --from. To see the
648 To see the differences from another revision, use --from. To see the
649 difference to another revision, use --to. For example, 'hg diff --from .^'
649 difference to another revision, use --to. For example, 'hg diff --from .^'
650 will show the differences from the working copy's grandparent to the
650 will show the differences from the working copy's grandparent to the
651 working copy, 'hg diff --to .' will show the diff from the working copy to
651 working copy, 'hg diff --to .' will show the diff from the working copy to
652 its parent (i.e. the reverse of the default), and 'hg diff --from 1.0 --to
652 its parent (i.e. the reverse of the default), and 'hg diff --from 1.0 --to
653 1.2' will show the diff between those two revisions.
653 1.2' will show the diff between those two revisions.
654
654
655 Alternatively you can specify -c/--change with a revision to see the
655 Alternatively you can specify -c/--change with a revision to see the
656 changes in that changeset relative to its first parent (i.e. 'hg diff -c
656 changes in that changeset relative to its first parent (i.e. 'hg diff -c
657 42' is equivalent to 'hg diff --from 42^ --to 42')
657 42' is equivalent to 'hg diff --from 42^ --to 42')
658
658
659 Without the -a/--text option, diff will avoid generating diffs of files it
659 Without the -a/--text option, diff will avoid generating diffs of files it
660 detects as binary. With -a, diff will generate a diff anyway, probably
660 detects as binary. With -a, diff will generate a diff anyway, probably
661 with undesirable results.
661 with undesirable results.
662
662
663 Use the -g/--git option to generate diffs in the git extended diff format.
663 Use the -g/--git option to generate diffs in the git extended diff format.
664 For more information, read 'hg help diffs'.
664 For more information, read 'hg help diffs'.
665
665
666 Returns 0 on success.
666 Returns 0 on success.
667
667
668 options ([+] can be repeated):
668 options ([+] can be repeated):
669
669
670 --from REV1 revision to diff from
670 --from REV1 revision to diff from
671 --to REV2 revision to diff to
671 --to REV2 revision to diff to
672 -c --change REV change made by revision
672 -c --change REV change made by revision
673 -a --text treat all files as text
673 -a --text treat all files as text
674 -g --git use git extended diff format
674 -g --git use git extended diff format
675 --binary generate binary diffs in git mode (default)
675 --binary generate binary diffs in git mode (default)
676 --nodates omit dates from diff headers
676 --nodates omit dates from diff headers
677 --noprefix omit a/ and b/ prefixes from filenames
677 --noprefix omit a/ and b/ prefixes from filenames
678 -p --show-function show which function each change is in
678 -p --show-function show which function each change is in
679 --reverse produce a diff that undoes the changes
679 --reverse produce a diff that undoes the changes
680 -w --ignore-all-space ignore white space when comparing lines
680 -w --ignore-all-space ignore white space when comparing lines
681 -b --ignore-space-change ignore changes in the amount of white space
681 -b --ignore-space-change ignore changes in the amount of white space
682 -B --ignore-blank-lines ignore changes whose lines are all blank
682 -B --ignore-blank-lines ignore changes whose lines are all blank
683 -Z --ignore-space-at-eol ignore changes in whitespace at EOL
683 -Z --ignore-space-at-eol ignore changes in whitespace at EOL
684 -U --unified NUM number of lines of context to show
684 -U --unified NUM number of lines of context to show
685 --stat output diffstat-style summary of changes
685 --stat output diffstat-style summary of changes
686 --root DIR produce diffs relative to subdirectory
686 --root DIR produce diffs relative to subdirectory
687 -I --include PATTERN [+] include names matching the given patterns
687 -I --include PATTERN [+] include names matching the given patterns
688 -X --exclude PATTERN [+] exclude names matching the given patterns
688 -X --exclude PATTERN [+] exclude names matching the given patterns
689 -S --subrepos recurse into subrepositories
689 -S --subrepos recurse into subrepositories
690
690
691 (some details hidden, use --verbose to show complete help)
691 (some details hidden, use --verbose to show complete help)
692
692
693 $ hg help status
693 $ hg help status
694 hg status [OPTION]... [FILE]...
694 hg status [OPTION]... [FILE]...
695
695
696 aliases: st
696 aliases: st
697
697
698 show changed files in the working directory
698 show changed files in the working directory
699
699
700 Show status of files in the repository. If names are given, only files
700 Show status of files in the repository. If names are given, only files
701 that match are shown. Files that are clean or ignored or the source of a
701 that match are shown. Files that are clean or ignored or the source of a
702 copy/move operation, are not listed unless -c/--clean, -i/--ignored,
702 copy/move operation, are not listed unless -c/--clean, -i/--ignored,
703 -C/--copies or -A/--all are given. Unless options described with "show
703 -C/--copies or -A/--all are given. Unless options described with "show
704 only ..." are given, the options -mardu are used.
704 only ..." are given, the options -mardu are used.
705
705
706 Option -q/--quiet hides untracked (unknown and ignored) files unless
706 Option -q/--quiet hides untracked (unknown and ignored) files unless
707 explicitly requested with -u/--unknown or -i/--ignored.
707 explicitly requested with -u/--unknown or -i/--ignored.
708
708
709 Note:
709 Note:
710 'hg status' may appear to disagree with diff if permissions have
710 'hg status' may appear to disagree with diff if permissions have
711 changed or a merge has occurred. The standard diff format does not
711 changed or a merge has occurred. The standard diff format does not
712 report permission changes and diff only reports changes relative to one
712 report permission changes and diff only reports changes relative to one
713 merge parent.
713 merge parent.
714
714
715 If one revision is given, it is used as the base revision. If two
715 If one revision is given, it is used as the base revision. If two
716 revisions are given, the differences between them are shown. The --change
716 revisions are given, the differences between them are shown. The --change
717 option can also be used as a shortcut to list the changed files of a
717 option can also be used as a shortcut to list the changed files of a
718 revision from its first parent.
718 revision from its first parent.
719
719
720 The codes used to show the status of files are:
720 The codes used to show the status of files are:
721
721
722 M = modified
722 M = modified
723 A = added
723 A = added
724 R = removed
724 R = removed
725 C = clean
725 C = clean
726 ! = missing (deleted by non-hg command, but still tracked)
726 ! = missing (deleted by non-hg command, but still tracked)
727 ? = not tracked
727 ? = not tracked
728 I = ignored
728 I = ignored
729 = origin of the previous file (with --copies)
729 = origin of the previous file (with --copies)
730
730
731 Returns 0 on success.
731 Returns 0 on success.
732
732
733 options ([+] can be repeated):
733 options ([+] can be repeated):
734
734
735 -A --all show status of all files
735 -A --all show status of all files
736 -m --modified show only modified files
736 -m --modified show only modified files
737 -a --added show only added files
737 -a --added show only added files
738 -r --removed show only removed files
738 -r --removed show only removed files
739 -d --deleted show only missing files
739 -d --deleted show only missing files
740 -c --clean show only files without changes
740 -c --clean show only files without changes
741 -u --unknown show only unknown (not tracked) files
741 -u --unknown show only unknown (not tracked) files
742 -i --ignored show only ignored files
742 -i --ignored show only ignored files
743 -n --no-status hide status prefix
743 -n --no-status hide status prefix
744 -C --copies show source of copied files
744 -C --copies show source of copied files
745 -0 --print0 end filenames with NUL, for use with xargs
745 -0 --print0 end filenames with NUL, for use with xargs
746 --rev REV [+] show difference from revision
746 --rev REV [+] show difference from revision
747 --change REV list the changed files of a revision
747 --change REV list the changed files of a revision
748 -I --include PATTERN [+] include names matching the given patterns
748 -I --include PATTERN [+] include names matching the given patterns
749 -X --exclude PATTERN [+] exclude names matching the given patterns
749 -X --exclude PATTERN [+] exclude names matching the given patterns
750 -S --subrepos recurse into subrepositories
750 -S --subrepos recurse into subrepositories
751 -T --template TEMPLATE display with template
751 -T --template TEMPLATE display with template
752
752
753 (some details hidden, use --verbose to show complete help)
753 (some details hidden, use --verbose to show complete help)
754
754
755 $ hg -q help status
755 $ hg -q help status
756 hg status [OPTION]... [FILE]...
756 hg status [OPTION]... [FILE]...
757
757
758 show changed files in the working directory
758 show changed files in the working directory
759
759
760 $ hg help foo
760 $ hg help foo
761 abort: no such help topic: foo
761 abort: no such help topic: foo
762 (try 'hg help --keyword foo')
762 (try 'hg help --keyword foo')
763 [10]
763 [10]
764
764
765 $ hg skjdfks
765 $ hg skjdfks
766 hg: unknown command 'skjdfks'
766 hg: unknown command 'skjdfks'
767 (use 'hg help' for a list of commands)
767 (use 'hg help' for a list of commands)
768 [10]
768 [10]
769
769
770 Typoed command gives suggestion
770 Typoed command gives suggestion
771 $ hg puls
771 $ hg puls
772 hg: unknown command 'puls'
772 hg: unknown command 'puls'
773 (did you mean one of pull, push?)
773 (did you mean one of pull, push?)
774 [10]
774 [10]
775
775
776 Not enabled extension gets suggested
776 Not enabled extension gets suggested
777
777
778 $ hg rebase
778 $ hg rebase
779 hg: unknown command 'rebase'
779 hg: unknown command 'rebase'
780 'rebase' is provided by the following extension:
780 'rebase' is provided by the following extension:
781
781
782 rebase command to move sets of revisions to a different ancestor
782 rebase command to move sets of revisions to a different ancestor
783
783
784 (use 'hg help extensions' for information on enabling extensions)
784 (use 'hg help extensions' for information on enabling extensions)
785 [10]
785 [10]
786
786
787 Disabled extension gets suggested
787 Disabled extension gets suggested
788 $ hg --config extensions.rebase=! rebase
788 $ hg --config extensions.rebase=! rebase
789 hg: unknown command 'rebase'
789 hg: unknown command 'rebase'
790 'rebase' is provided by the following extension:
790 'rebase' is provided by the following extension:
791
791
792 rebase command to move sets of revisions to a different ancestor
792 rebase command to move sets of revisions to a different ancestor
793
793
794 (use 'hg help extensions' for information on enabling extensions)
794 (use 'hg help extensions' for information on enabling extensions)
795 [10]
795 [10]
796
796
797 Checking that help adapts based on the config:
797 Checking that help adapts based on the config:
798
798
799 $ hg help diff --config ui.tweakdefaults=true | egrep -e '^ *(-g|config)'
799 $ hg help diff --config ui.tweakdefaults=true | egrep -e '^ *(-g|config)'
800 -g --[no-]git use git extended diff format (default: on from
800 -g --[no-]git use git extended diff format (default: on from
801 config)
801 config)
802
802
803 Make sure that we don't run afoul of the help system thinking that
803 Make sure that we don't run afoul of the help system thinking that
804 this is a section and erroring out weirdly.
804 this is a section and erroring out weirdly.
805
805
806 $ hg .log
806 $ hg .log
807 hg: unknown command '.log'
807 hg: unknown command '.log'
808 (did you mean log?)
808 (did you mean log?)
809 [10]
809 [10]
810
810
811 $ hg log.
811 $ hg log.
812 hg: unknown command 'log.'
812 hg: unknown command 'log.'
813 (did you mean log?)
813 (did you mean log?)
814 [10]
814 [10]
815 $ hg pu.lh
815 $ hg pu.lh
816 hg: unknown command 'pu.lh'
816 hg: unknown command 'pu.lh'
817 (did you mean one of pull, push?)
817 (did you mean one of pull, push?)
818 [10]
818 [10]
819
819
820 $ cat > helpext.py <<EOF
820 $ cat > helpext.py <<EOF
821 > import os
821 > import os
822 > from mercurial import commands, fancyopts, registrar
822 > from mercurial import commands, fancyopts, registrar
823 >
823 >
824 > def func(arg):
824 > def func(arg):
825 > return '%sfoo' % arg
825 > return '%sfoo' % arg
826 > class customopt(fancyopts.customopt):
826 > class customopt(fancyopts.customopt):
827 > def newstate(self, oldstate, newparam, abort):
827 > def newstate(self, oldstate, newparam, abort):
828 > return '%sbar' % oldstate
828 > return '%sbar' % oldstate
829 > cmdtable = {}
829 > cmdtable = {}
830 > command = registrar.command(cmdtable)
830 > command = registrar.command(cmdtable)
831 >
831 >
832 > @command(b'nohelp',
832 > @command(b'nohelp',
833 > [(b'', b'longdesc', 3, b'x'*67),
833 > [(b'', b'longdesc', 3, b'x'*67),
834 > (b'n', b'', None, b'normal desc'),
834 > (b'n', b'', None, b'normal desc'),
835 > (b'', b'newline', b'', b'line1\nline2'),
835 > (b'', b'newline', b'', b'line1\nline2'),
836 > (b'', b'default-off', False, b'enable X'),
836 > (b'', b'default-off', False, b'enable X'),
837 > (b'', b'default-on', True, b'enable Y'),
837 > (b'', b'default-on', True, b'enable Y'),
838 > (b'', b'callableopt', func, b'adds foo'),
838 > (b'', b'callableopt', func, b'adds foo'),
839 > (b'', b'customopt', customopt(''), b'adds bar'),
839 > (b'', b'customopt', customopt(''), b'adds bar'),
840 > (b'', b'customopt-withdefault', customopt('foo'), b'adds bar')],
840 > (b'', b'customopt-withdefault', customopt('foo'), b'adds bar')],
841 > b'hg nohelp',
841 > b'hg nohelp',
842 > norepo=True)
842 > norepo=True)
843 > @command(b'debugoptADV', [(b'', b'aopt', None, b'option is (ADVANCED)')])
843 > @command(b'debugoptADV', [(b'', b'aopt', None, b'option is (ADVANCED)')])
844 > @command(b'debugoptDEP', [(b'', b'dopt', None, b'option is (DEPRECATED)')])
844 > @command(b'debugoptDEP', [(b'', b'dopt', None, b'option is (DEPRECATED)')])
845 > @command(b'debugoptEXP', [(b'', b'eopt', None, b'option is (EXPERIMENTAL)')])
845 > @command(b'debugoptEXP', [(b'', b'eopt', None, b'option is (EXPERIMENTAL)')])
846 > def nohelp(ui, *args, **kwargs):
846 > def nohelp(ui, *args, **kwargs):
847 > pass
847 > pass
848 >
848 >
849 > @command(b'hashelp', [], b'hg hashelp', norepo=True)
849 > @command(b'hashelp', [], b'hg hashelp', norepo=True)
850 > def hashelp(ui, *args, **kwargs):
850 > def hashelp(ui, *args, **kwargs):
851 > """Extension command's help"""
851 > """Extension command's help"""
852 >
852 >
853 > def uisetup(ui):
853 > def uisetup(ui):
854 > ui.setconfig(b'alias', b'shellalias', b'!echo hi', b'helpext')
854 > ui.setconfig(b'alias', b'shellalias', b'!echo hi', b'helpext')
855 > ui.setconfig(b'alias', b'hgalias', b'summary', b'helpext')
855 > ui.setconfig(b'alias', b'hgalias', b'summary', b'helpext')
856 > ui.setconfig(b'alias', b'hgalias:doc', b'My doc', b'helpext')
856 > ui.setconfig(b'alias', b'hgalias:doc', b'My doc', b'helpext')
857 > ui.setconfig(b'alias', b'hgalias:category', b'navigation', b'helpext')
857 > ui.setconfig(b'alias', b'hgalias:category', b'navigation', b'helpext')
858 > ui.setconfig(b'alias', b'hgaliasnodoc', b'summary', b'helpext')
858 > ui.setconfig(b'alias', b'hgaliasnodoc', b'summary', b'helpext')
859 >
859 >
860 > EOF
860 > EOF
861 $ echo '[extensions]' >> $HGRCPATH
861 $ echo '[extensions]' >> $HGRCPATH
862 $ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
862 $ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
863
863
864 Test for aliases
864 Test for aliases
865
865
866 $ hg help | grep hgalias
866 $ hg help | grep hgalias
867 hgalias My doc
867 hgalias My doc
868
868
869 $ hg help hgalias
869 $ hg help hgalias
870 hg hgalias [--remote]
870 hg hgalias [--remote]
871
871
872 alias for: hg summary
872 alias for: hg summary
873
873
874 My doc
874 My doc
875
875
876 defined by: helpext
876 defined by: helpext
877
877
878 options:
878 options:
879
879
880 --remote check for push and pull
880 --remote check for push and pull
881
881
882 (some details hidden, use --verbose to show complete help)
882 (some details hidden, use --verbose to show complete help)
883 $ hg help hgaliasnodoc
883 $ hg help hgaliasnodoc
884 hg hgaliasnodoc [--remote]
884 hg hgaliasnodoc [--remote]
885
885
886 alias for: hg summary
886 alias for: hg summary
887
887
888 summarize working directory state
888 summarize working directory state
889
889
890 This generates a brief summary of the working directory state, including
890 This generates a brief summary of the working directory state, including
891 parents, branch, commit status, phase and available updates.
891 parents, branch, commit status, phase and available updates.
892
892
893 With the --remote option, this will check the default paths for incoming
893 With the --remote option, this will check the default paths for incoming
894 and outgoing changes. This can be time-consuming.
894 and outgoing changes. This can be time-consuming.
895
895
896 Returns 0 on success.
896 Returns 0 on success.
897
897
898 defined by: helpext
898 defined by: helpext
899
899
900 options:
900 options:
901
901
902 --remote check for push and pull
902 --remote check for push and pull
903
903
904 (some details hidden, use --verbose to show complete help)
904 (some details hidden, use --verbose to show complete help)
905
905
906 $ hg help shellalias
906 $ hg help shellalias
907 hg shellalias
907 hg shellalias
908
908
909 shell alias for: echo hi
909 shell alias for: echo hi
910
910
911 (no help text available)
911 (no help text available)
912
912
913 defined by: helpext
913 defined by: helpext
914
914
915 (some details hidden, use --verbose to show complete help)
915 (some details hidden, use --verbose to show complete help)
916
916
917 Test command with no help text
917 Test command with no help text
918
918
919 $ hg help nohelp
919 $ hg help nohelp
920 hg nohelp
920 hg nohelp
921
921
922 (no help text available)
922 (no help text available)
923
923
924 options:
924 options:
925
925
926 --longdesc VALUE
926 --longdesc VALUE
927 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
927 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
928 xxxxxxxxxxxxxxxxxxxxxxx (default: 3)
928 xxxxxxxxxxxxxxxxxxxxxxx (default: 3)
929 -n -- normal desc
929 -n -- normal desc
930 --newline VALUE line1 line2
930 --newline VALUE line1 line2
931 --default-off enable X
931 --default-off enable X
932 --[no-]default-on enable Y (default: on)
932 --[no-]default-on enable Y (default: on)
933 --callableopt VALUE adds foo
933 --callableopt VALUE adds foo
934 --customopt VALUE adds bar
934 --customopt VALUE adds bar
935 --customopt-withdefault VALUE adds bar (default: foo)
935 --customopt-withdefault VALUE adds bar (default: foo)
936
936
937 (some details hidden, use --verbose to show complete help)
937 (some details hidden, use --verbose to show complete help)
938
938
939 Test that default list of commands includes extension commands that have help,
939 Test that default list of commands includes extension commands that have help,
940 but not those that don't, except in verbose mode, when a keyword is passed, or
940 but not those that don't, except in verbose mode, when a keyword is passed, or
941 when help about the extension is requested.
941 when help about the extension is requested.
942
942
943 #if no-extraextensions
943 #if no-extraextensions
944
944
945 $ hg help | grep hashelp
945 $ hg help | grep hashelp
946 hashelp Extension command's help
946 hashelp Extension command's help
947 $ hg help | grep nohelp
947 $ hg help | grep nohelp
948 [1]
948 [1]
949 $ hg help -v | grep nohelp
949 $ hg help -v | grep nohelp
950 nohelp (no help text available)
950 nohelp (no help text available)
951
951
952 $ hg help -k nohelp
952 $ hg help -k nohelp
953 Commands:
953 Commands:
954
954
955 nohelp hg nohelp
955 nohelp hg nohelp
956
956
957 Extension Commands:
957 Extension Commands:
958
958
959 nohelp (no help text available)
959 nohelp (no help text available)
960
960
961 $ hg help helpext
961 $ hg help helpext
962 helpext extension - no help text available
962 helpext extension - no help text available
963
963
964 list of commands:
964 list of commands:
965
965
966 hashelp Extension command's help
966 hashelp Extension command's help
967 nohelp (no help text available)
967 nohelp (no help text available)
968
968
969 (use 'hg help -v helpext' to show built-in aliases and global options)
969 (use 'hg help -v helpext' to show built-in aliases and global options)
970
970
971 #endif
971 #endif
972
972
973 Test list of internal help commands
973 Test list of internal help commands
974
974
975 $ hg help debug
975 $ hg help debug
976 debug commands (internal and unsupported):
976 debug commands (internal and unsupported):
977
977
978 debugancestor
978 debugancestor
979 find the ancestor revision of two revisions in a given index
979 find the ancestor revision of two revisions in a given index
980 debugantivirusrunning
980 debugantivirusrunning
981 attempt to trigger an antivirus scanner to see if one is active
981 attempt to trigger an antivirus scanner to see if one is active
982 debugapplystreamclonebundle
982 debugapplystreamclonebundle
983 apply a stream clone bundle file
983 apply a stream clone bundle file
984 debugbackupbundle
984 debugbackupbundle
985 lists the changesets available in backup bundles
985 lists the changesets available in backup bundles
986 debugbuilddag
986 debugbuilddag
987 builds a repo with a given DAG from scratch in the current
987 builds a repo with a given DAG from scratch in the current
988 empty repo
988 empty repo
989 debugbundle lists the contents of a bundle
989 debugbundle lists the contents of a bundle
990 debugcapabilities
990 debugcapabilities
991 lists the capabilities of a remote peer
991 lists the capabilities of a remote peer
992 debugchangedfiles
992 debugchangedfiles
993 list the stored files changes for a revision
993 list the stored files changes for a revision
994 debugcheckstate
994 debugcheckstate
995 validate the correctness of the current dirstate
995 validate the correctness of the current dirstate
996 debugcolor show available color, effects or style
996 debugcolor show available color, effects or style
997 debugcommands
997 debugcommands
998 list all available commands and options
998 list all available commands and options
999 debugcomplete
999 debugcomplete
1000 returns the completion list associated with the given command
1000 returns the completion list associated with the given command
1001 debugcreatestreamclonebundle
1001 debugcreatestreamclonebundle
1002 create a stream clone bundle file
1002 create a stream clone bundle file
1003 debugdag format the changelog or an index DAG as a concise textual
1003 debugdag format the changelog or an index DAG as a concise textual
1004 description
1004 description
1005 debugdata dump the contents of a data file revision
1005 debugdata dump the contents of a data file revision
1006 debugdate parse and display a date
1006 debugdate parse and display a date
1007 debugdeltachain
1007 debugdeltachain
1008 dump information about delta chains in a revlog
1008 dump information about delta chains in a revlog
1009 debugdirstate
1009 debugdirstate
1010 show the contents of the current dirstate
1010 show the contents of the current dirstate
1011 debugdiscovery
1011 debugdiscovery
1012 runs the changeset discovery protocol in isolation
1012 runs the changeset discovery protocol in isolation
1013 debugdownload
1013 debugdownload
1014 download a resource using Mercurial logic and config
1014 download a resource using Mercurial logic and config
1015 debugextensions
1015 debugextensions
1016 show information about active extensions
1016 show information about active extensions
1017 debugfileset parse and apply a fileset specification
1017 debugfileset parse and apply a fileset specification
1018 debugformat display format information about the current repository
1018 debugformat display format information about the current repository
1019 debugfsinfo show information detected about current filesystem
1019 debugfsinfo show information detected about current filesystem
1020 debuggetbundle
1020 debuggetbundle
1021 retrieves a bundle from a repo
1021 retrieves a bundle from a repo
1022 debugignore display the combined ignore pattern and information about
1022 debugignore display the combined ignore pattern and information about
1023 ignored files
1023 ignored files
1024 debugindex dump index data for a storage primitive
1024 debugindex dump index data for a storage primitive
1025 debugindexdot
1025 debugindexdot
1026 dump an index DAG as a graphviz dot file
1026 dump an index DAG as a graphviz dot file
1027 debugindexstats
1027 debugindexstats
1028 show stats related to the changelog index
1028 show stats related to the changelog index
1029 debuginstall test Mercurial installation
1029 debuginstall test Mercurial installation
1030 debugknown test whether node ids are known to a repo
1030 debugknown test whether node ids are known to a repo
1031 debuglocks show or modify state of locks
1031 debuglocks show or modify state of locks
1032 debugmanifestfulltextcache
1032 debugmanifestfulltextcache
1033 show, clear or amend the contents of the manifest fulltext
1033 show, clear or amend the contents of the manifest fulltext
1034 cache
1034 cache
1035 debugmergestate
1035 debugmergestate
1036 print merge state
1036 print merge state
1037 debugnamecomplete
1037 debugnamecomplete
1038 complete "names" - tags, open branch names, bookmark names
1038 complete "names" - tags, open branch names, bookmark names
1039 debugnodemap write and inspect on disk nodemap
1039 debugnodemap write and inspect on disk nodemap
1040 debugobsolete
1040 debugobsolete
1041 create arbitrary obsolete marker
1041 create arbitrary obsolete marker
1042 debugoptADV (no help text available)
1042 debugoptADV (no help text available)
1043 debugoptDEP (no help text available)
1043 debugoptDEP (no help text available)
1044 debugoptEXP (no help text available)
1044 debugoptEXP (no help text available)
1045 debugp1copies
1045 debugp1copies
1046 dump copy information compared to p1
1046 dump copy information compared to p1
1047 debugp2copies
1047 debugp2copies
1048 dump copy information compared to p2
1048 dump copy information compared to p2
1049 debugpathcomplete
1049 debugpathcomplete
1050 complete part or all of a tracked path
1050 complete part or all of a tracked path
1051 debugpathcopies
1051 debugpathcopies
1052 show copies between two revisions
1052 show copies between two revisions
1053 debugpeer establish a connection to a peer repository
1053 debugpeer establish a connection to a peer repository
1054 debugpickmergetool
1054 debugpickmergetool
1055 examine which merge tool is chosen for specified file
1055 examine which merge tool is chosen for specified file
1056 debugpushkey access the pushkey key/value protocol
1056 debugpushkey access the pushkey key/value protocol
1057 debugpvec (no help text available)
1057 debugpvec (no help text available)
1058 debugrebuilddirstate
1058 debugrebuilddirstate
1059 rebuild the dirstate as it would look like for the given
1059 rebuild the dirstate as it would look like for the given
1060 revision
1060 revision
1061 debugrebuildfncache
1061 debugrebuildfncache
1062 rebuild the fncache file
1062 rebuild the fncache file
1063 debugrename dump rename information
1063 debugrename dump rename information
1064 debugrequires
1064 debugrequires
1065 print the current repo requirements
1065 print the current repo requirements
1066 debugrevlog show data and statistics about a revlog
1066 debugrevlog show data and statistics about a revlog
1067 debugrevlogindex
1067 debugrevlogindex
1068 dump the contents of a revlog index
1068 dump the contents of a revlog index
1069 debugrevspec parse and apply a revision specification
1069 debugrevspec parse and apply a revision specification
1070 debugserve run a server with advanced settings
1070 debugserve run a server with advanced settings
1071 debugsetparents
1071 debugsetparents
1072 manually set the parents of the current working directory
1072 manually set the parents of the current working directory
1073 (DANGEROUS)
1073 (DANGEROUS)
1074 debugshell run an interactive Python interpreter
1074 debugshell run an interactive Python interpreter
1075 debugsidedata
1075 debugsidedata
1076 dump the side data for a cl/manifest/file revision
1076 dump the side data for a cl/manifest/file revision
1077 debugssl test a secure connection to a server
1077 debugssl test a secure connection to a server
1078 debugstrip strip changesets and all their descendants from the repository
1078 debugstrip strip changesets and all their descendants from the repository
1079 debugsub (no help text available)
1079 debugsub (no help text available)
1080 debugsuccessorssets
1080 debugsuccessorssets
1081 show set of successors for revision
1081 show set of successors for revision
1082 debugtagscache
1082 debugtagscache
1083 display the contents of .hg/cache/hgtagsfnodes1
1083 display the contents of .hg/cache/hgtagsfnodes1
1084 debugtemplate
1084 debugtemplate
1085 parse and apply a template
1085 parse and apply a template
1086 debuguigetpass
1086 debuguigetpass
1087 show prompt to type password
1087 show prompt to type password
1088 debuguiprompt
1088 debuguiprompt
1089 show plain prompt
1089 show plain prompt
1090 debugupdatecaches
1090 debugupdatecaches
1091 warm all known caches in the repository
1091 warm all known caches in the repository
1092 debugupgraderepo
1092 debugupgraderepo
1093 upgrade a repository to use different features
1093 upgrade a repository to use different features
1094 debugwalk show how files match on given patterns
1094 debugwalk show how files match on given patterns
1095 debugwhyunstable
1095 debugwhyunstable
1096 explain instabilities of a changeset
1096 explain instabilities of a changeset
1097 debugwireargs
1097 debugwireargs
1098 (no help text available)
1098 (no help text available)
1099 debugwireproto
1099 debugwireproto
1100 send wire protocol commands to a server
1100 send wire protocol commands to a server
1101
1101
1102 (use 'hg help -v debug' to show built-in aliases and global options)
1102 (use 'hg help -v debug' to show built-in aliases and global options)
1103
1103
1104 internals topic renders index of available sub-topics
1104 internals topic renders index of available sub-topics
1105
1105
1106 $ hg help internals
1106 $ hg help internals
1107 Technical implementation topics
1107 Technical implementation topics
1108 """""""""""""""""""""""""""""""
1108 """""""""""""""""""""""""""""""
1109
1109
1110 To access a subtopic, use "hg help internals.{subtopic-name}"
1110 To access a subtopic, use "hg help internals.{subtopic-name}"
1111
1111
1112 bid-merge Bid Merge Algorithm
1112 bid-merge Bid Merge Algorithm
1113 bundle2 Bundle2
1113 bundle2 Bundle2
1114 bundles Bundles
1114 bundles Bundles
1115 cbor CBOR
1115 cbor CBOR
1116 censor Censor
1116 censor Censor
1117 changegroups Changegroups
1117 changegroups Changegroups
1118 config Config Registrar
1118 config Config Registrar
1119 extensions Extension API
1119 extensions Extension API
1120 mergestate Mergestate
1120 mergestate Mergestate
1121 requirements Repository Requirements
1121 requirements Repository Requirements
1122 revlogs Revision Logs
1122 revlogs Revision Logs
1123 wireprotocol Wire Protocol
1123 wireprotocol Wire Protocol
1124 wireprotocolrpc
1124 wireprotocolrpc
1125 Wire Protocol RPC
1125 Wire Protocol RPC
1126 wireprotocolv2
1126 wireprotocolv2
1127 Wire Protocol Version 2
1127 Wire Protocol Version 2
1128
1128
1129 sub-topics can be accessed
1129 sub-topics can be accessed
1130
1130
1131 $ hg help internals.changegroups
1131 $ hg help internals.changegroups
1132 Changegroups
1132 Changegroups
1133 """"""""""""
1133 """"""""""""
1134
1134
1135 Changegroups are representations of repository revlog data, specifically
1135 Changegroups are representations of repository revlog data, specifically
1136 the changelog data, root/flat manifest data, treemanifest data, and
1136 the changelog data, root/flat manifest data, treemanifest data, and
1137 filelogs.
1137 filelogs.
1138
1138
1139 There are 4 versions of changegroups: "1", "2", "3" and "4". From a high-
1139 There are 4 versions of changegroups: "1", "2", "3" and "4". From a high-
1140 level, versions "1" and "2" are almost exactly the same, with the only
1140 level, versions "1" and "2" are almost exactly the same, with the only
1141 difference being an additional item in the *delta header*. Version "3"
1141 difference being an additional item in the *delta header*. Version "3"
1142 adds support for storage flags in the *delta header* and optionally
1142 adds support for storage flags in the *delta header* and optionally
1143 exchanging treemanifests (enabled by setting an option on the
1143 exchanging treemanifests (enabled by setting an option on the
1144 "changegroup" part in the bundle2). Version "4" adds support for
1144 "changegroup" part in the bundle2). Version "4" adds support for
1145 exchanging sidedata (additional revision metadata not part of the digest).
1145 exchanging sidedata (additional revision metadata not part of the digest).
1146
1146
1147 Changegroups when not exchanging treemanifests consist of 3 logical
1147 Changegroups when not exchanging treemanifests consist of 3 logical
1148 segments:
1148 segments:
1149
1149
1150 +---------------------------------+
1150 +---------------------------------+
1151 | | | |
1151 | | | |
1152 | changeset | manifest | filelogs |
1152 | changeset | manifest | filelogs |
1153 | | | |
1153 | | | |
1154 | | | |
1154 | | | |
1155 +---------------------------------+
1155 +---------------------------------+
1156
1156
1157 When exchanging treemanifests, there are 4 logical segments:
1157 When exchanging treemanifests, there are 4 logical segments:
1158
1158
1159 +-------------------------------------------------+
1159 +-------------------------------------------------+
1160 | | | | |
1160 | | | | |
1161 | changeset | root | treemanifests | filelogs |
1161 | changeset | root | treemanifests | filelogs |
1162 | | manifest | | |
1162 | | manifest | | |
1163 | | | | |
1163 | | | | |
1164 +-------------------------------------------------+
1164 +-------------------------------------------------+
1165
1165
1166 The principle building block of each segment is a *chunk*. A *chunk* is a
1166 The principle building block of each segment is a *chunk*. A *chunk* is a
1167 framed piece of data:
1167 framed piece of data:
1168
1168
1169 +---------------------------------------+
1169 +---------------------------------------+
1170 | | |
1170 | | |
1171 | length | data |
1171 | length | data |
1172 | (4 bytes) | (<length - 4> bytes) |
1172 | (4 bytes) | (<length - 4> bytes) |
1173 | | |
1173 | | |
1174 +---------------------------------------+
1174 +---------------------------------------+
1175
1175
1176 All integers are big-endian signed integers. Each chunk starts with a
1176 All integers are big-endian signed integers. Each chunk starts with a
1177 32-bit integer indicating the length of the entire chunk (including the
1177 32-bit integer indicating the length of the entire chunk (including the
1178 length field itself).
1178 length field itself).
1179
1179
1180 There is a special case chunk that has a value of 0 for the length
1180 There is a special case chunk that has a value of 0 for the length
1181 ("0x00000000"). We call this an *empty chunk*.
1181 ("0x00000000"). We call this an *empty chunk*.
1182
1182
1183 Delta Groups
1183 Delta Groups
1184 ============
1184 ============
1185
1185
1186 A *delta group* expresses the content of a revlog as a series of deltas,
1186 A *delta group* expresses the content of a revlog as a series of deltas,
1187 or patches against previous revisions.
1187 or patches against previous revisions.
1188
1188
1189 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
1189 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
1190 to signal the end of the delta group:
1190 to signal the end of the delta group:
1191
1191
1192 +------------------------------------------------------------------------+
1192 +------------------------------------------------------------------------+
1193 | | | | | |
1193 | | | | | |
1194 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
1194 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
1195 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
1195 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
1196 | | | | | |
1196 | | | | | |
1197 +------------------------------------------------------------------------+
1197 +------------------------------------------------------------------------+
1198
1198
1199 Each *chunk*'s data consists of the following:
1199 Each *chunk*'s data consists of the following:
1200
1200
1201 +---------------------------------------+
1201 +---------------------------------------+
1202 | | |
1202 | | |
1203 | delta header | delta data |
1203 | delta header | delta data |
1204 | (various by version) | (various) |
1204 | (various by version) | (various) |
1205 | | |
1205 | | |
1206 +---------------------------------------+
1206 +---------------------------------------+
1207
1207
1208 The *delta data* is a series of *delta*s that describe a diff from an
1208 The *delta data* is a series of *delta*s that describe a diff from an
1209 existing entry (either that the recipient already has, or previously
1209 existing entry (either that the recipient already has, or previously
1210 specified in the bundle/changegroup).
1210 specified in the bundle/changegroup).
1211
1211
1212 The *delta header* is different between versions "1", "2", "3" and "4" of
1212 The *delta header* is different between versions "1", "2", "3" and "4" of
1213 the changegroup format.
1213 the changegroup format.
1214
1214
1215 Version 1 (headerlen=80):
1215 Version 1 (headerlen=80):
1216
1216
1217 +------------------------------------------------------+
1217 +------------------------------------------------------+
1218 | | | | |
1218 | | | | |
1219 | node | p1 node | p2 node | link node |
1219 | node | p1 node | p2 node | link node |
1220 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1220 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1221 | | | | |
1221 | | | | |
1222 +------------------------------------------------------+
1222 +------------------------------------------------------+
1223
1223
1224 Version 2 (headerlen=100):
1224 Version 2 (headerlen=100):
1225
1225
1226 +------------------------------------------------------------------+
1226 +------------------------------------------------------------------+
1227 | | | | | |
1227 | | | | | |
1228 | node | p1 node | p2 node | base node | link node |
1228 | node | p1 node | p2 node | base node | link node |
1229 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1229 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1230 | | | | | |
1230 | | | | | |
1231 +------------------------------------------------------------------+
1231 +------------------------------------------------------------------+
1232
1232
1233 Version 3 (headerlen=102):
1233 Version 3 (headerlen=102):
1234
1234
1235 +------------------------------------------------------------------------------+
1235 +------------------------------------------------------------------------------+
1236 | | | | | | |
1236 | | | | | | |
1237 | node | p1 node | p2 node | base node | link node | flags |
1237 | node | p1 node | p2 node | base node | link node | flags |
1238 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
1238 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
1239 | | | | | | |
1239 | | | | | | |
1240 +------------------------------------------------------------------------------+
1240 +------------------------------------------------------------------------------+
1241
1241
1242 Version 4 (headerlen=103):
1242 Version 4 (headerlen=103):
1243
1243
1244 +------------------------------------------------------------------------------+----------+
1244 +------------------------------------------------------------------------------+----------+
1245 | | | | | | | |
1245 | | | | | | | |
1246 | node | p1 node | p2 node | base node | link node | flags | pflags |
1246 | node | p1 node | p2 node | base node | link node | flags | pflags |
1247 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) | (1 byte) |
1247 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) | (1 byte) |
1248 | | | | | | | |
1248 | | | | | | | |
1249 +------------------------------------------------------------------------------+----------+
1249 +------------------------------------------------------------------------------+----------+
1250
1250
1251 The *delta data* consists of "chunklen - 4 - headerlen" bytes, which
1251 The *delta data* consists of "chunklen - 4 - headerlen" bytes, which
1252 contain a series of *delta*s, densely packed (no separators). These deltas
1252 contain a series of *delta*s, densely packed (no separators). These deltas
1253 describe a diff from an existing entry (either that the recipient already
1253 describe a diff from an existing entry (either that the recipient already
1254 has, or previously specified in the bundle/changegroup). The format is
1254 has, or previously specified in the bundle/changegroup). The format is
1255 described more fully in "hg help internals.bdiff", but briefly:
1255 described more fully in "hg help internals.bdiff", but briefly:
1256
1256
1257 +---------------------------------------------------------------+
1257 +---------------------------------------------------------------+
1258 | | | | |
1258 | | | | |
1259 | start offset | end offset | new length | content |
1259 | start offset | end offset | new length | content |
1260 | (4 bytes) | (4 bytes) | (4 bytes) | (<new length> bytes) |
1260 | (4 bytes) | (4 bytes) | (4 bytes) | (<new length> bytes) |
1261 | | | | |
1261 | | | | |
1262 +---------------------------------------------------------------+
1262 +---------------------------------------------------------------+
1263
1263
1264 Please note that the length field in the delta data does *not* include
1264 Please note that the length field in the delta data does *not* include
1265 itself.
1265 itself.
1266
1266
1267 In version 1, the delta is always applied against the previous node from
1267 In version 1, the delta is always applied against the previous node from
1268 the changegroup or the first parent if this is the first entry in the
1268 the changegroup or the first parent if this is the first entry in the
1269 changegroup.
1269 changegroup.
1270
1270
1271 In version 2 and up, the delta base node is encoded in the entry in the
1271 In version 2 and up, the delta base node is encoded in the entry in the
1272 changegroup. This allows the delta to be expressed against any parent,
1272 changegroup. This allows the delta to be expressed against any parent,
1273 which can result in smaller deltas and more efficient encoding of data.
1273 which can result in smaller deltas and more efficient encoding of data.
1274
1274
1275 The *flags* field holds bitwise flags affecting the processing of revision
1275 The *flags* field holds bitwise flags affecting the processing of revision
1276 data. The following flags are defined:
1276 data. The following flags are defined:
1277
1277
1278 32768
1278 32768
1279 Censored revision. The revision's fulltext has been replaced by censor
1279 Censored revision. The revision's fulltext has been replaced by censor
1280 metadata. May only occur on file revisions.
1280 metadata. May only occur on file revisions.
1281
1281
1282 16384
1282 16384
1283 Ellipsis revision. Revision hash does not match data (likely due to
1283 Ellipsis revision. Revision hash does not match data (likely due to
1284 rewritten parents).
1284 rewritten parents).
1285
1285
1286 8192
1286 8192
1287 Externally stored. The revision fulltext contains "key:value" "\n"
1287 Externally stored. The revision fulltext contains "key:value" "\n"
1288 delimited metadata defining an object stored elsewhere. Used by the LFS
1288 delimited metadata defining an object stored elsewhere. Used by the LFS
1289 extension.
1289 extension.
1290
1290
1291 4096
1291 4096
1292 Contains copy information. This revision changes files in a way that
1292 Contains copy information. This revision changes files in a way that
1293 could affect copy tracing. This does *not* affect changegroup handling,
1293 could affect copy tracing. This does *not* affect changegroup handling,
1294 but is relevant for other parts of Mercurial.
1294 but is relevant for other parts of Mercurial.
1295
1295
1296 For historical reasons, the integer values are identical to revlog version
1296 For historical reasons, the integer values are identical to revlog version
1297 1 per-revision storage flags and correspond to bits being set in this
1297 1 per-revision storage flags and correspond to bits being set in this
1298 2-byte field. Bits were allocated starting from the most-significant bit,
1298 2-byte field. Bits were allocated starting from the most-significant bit,
1299 hence the reverse ordering and allocation of these flags.
1299 hence the reverse ordering and allocation of these flags.
1300
1300
1301 The *pflags* (protocol flags) field holds bitwise flags affecting the
1301 The *pflags* (protocol flags) field holds bitwise flags affecting the
1302 protocol itself. They are first in the header since they may affect the
1302 protocol itself. They are first in the header since they may affect the
1303 handling of the rest of the fields in a future version. They are defined
1303 handling of the rest of the fields in a future version. They are defined
1304 as such:
1304 as such:
1305
1305
1306 1 indicates whether to read a chunk of sidedata (of variable length) right
1306 1 indicates whether to read a chunk of sidedata (of variable length) right
1307 after the revision flags.
1307 after the revision flags.
1308
1308
1309 Changeset Segment
1309 Changeset Segment
1310 =================
1310 =================
1311
1311
1312 The *changeset segment* consists of a single *delta group* holding
1312 The *changeset segment* consists of a single *delta group* holding
1313 changelog data. The *empty chunk* at the end of the *delta group* denotes
1313 changelog data. The *empty chunk* at the end of the *delta group* denotes
1314 the boundary to the *manifest segment*.
1314 the boundary to the *manifest segment*.
1315
1315
1316 Manifest Segment
1316 Manifest Segment
1317 ================
1317 ================
1318
1318
1319 The *manifest segment* consists of a single *delta group* holding manifest
1319 The *manifest segment* consists of a single *delta group* holding manifest
1320 data. If treemanifests are in use, it contains only the manifest for the
1320 data. If treemanifests are in use, it contains only the manifest for the
1321 root directory of the repository. Otherwise, it contains the entire
1321 root directory of the repository. Otherwise, it contains the entire
1322 manifest data. The *empty chunk* at the end of the *delta group* denotes
1322 manifest data. The *empty chunk* at the end of the *delta group* denotes
1323 the boundary to the next segment (either the *treemanifests segment* or
1323 the boundary to the next segment (either the *treemanifests segment* or
1324 the *filelogs segment*, depending on version and the request options).
1324 the *filelogs segment*, depending on version and the request options).
1325
1325
1326 Treemanifests Segment
1326 Treemanifests Segment
1327 ---------------------
1327 ---------------------
1328
1328
1329 The *treemanifests segment* only exists in changegroup version "3" and
1329 The *treemanifests segment* only exists in changegroup version "3" and
1330 "4", and only if the 'treemanifest' param is part of the bundle2
1330 "4", and only if the 'treemanifest' param is part of the bundle2
1331 changegroup part (it is not possible to use changegroup version 3 or 4
1331 changegroup part (it is not possible to use changegroup version 3 or 4
1332 outside of bundle2). Aside from the filenames in the *treemanifests
1332 outside of bundle2). Aside from the filenames in the *treemanifests
1333 segment* containing a trailing "/" character, it behaves identically to
1333 segment* containing a trailing "/" character, it behaves identically to
1334 the *filelogs segment* (see below). The final sub-segment is followed by
1334 the *filelogs segment* (see below). The final sub-segment is followed by
1335 an *empty chunk* (logically, a sub-segment with filename size 0). This
1335 an *empty chunk* (logically, a sub-segment with filename size 0). This
1336 denotes the boundary to the *filelogs segment*.
1336 denotes the boundary to the *filelogs segment*.
1337
1337
1338 Filelogs Segment
1338 Filelogs Segment
1339 ================
1339 ================
1340
1340
1341 The *filelogs segment* consists of multiple sub-segments, each
1341 The *filelogs segment* consists of multiple sub-segments, each
1342 corresponding to an individual file whose data is being described:
1342 corresponding to an individual file whose data is being described:
1343
1343
1344 +--------------------------------------------------+
1344 +--------------------------------------------------+
1345 | | | | | |
1345 | | | | | |
1346 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
1346 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
1347 | | | | | (4 bytes) |
1347 | | | | | (4 bytes) |
1348 | | | | | |
1348 | | | | | |
1349 +--------------------------------------------------+
1349 +--------------------------------------------------+
1350
1350
1351 The final filelog sub-segment is followed by an *empty chunk* (logically,
1351 The final filelog sub-segment is followed by an *empty chunk* (logically,
1352 a sub-segment with filename size 0). This denotes the end of the segment
1352 a sub-segment with filename size 0). This denotes the end of the segment
1353 and of the overall changegroup.
1353 and of the overall changegroup.
1354
1354
1355 Each filelog sub-segment consists of the following:
1355 Each filelog sub-segment consists of the following:
1356
1356
1357 +------------------------------------------------------+
1357 +------------------------------------------------------+
1358 | | | |
1358 | | | |
1359 | filename length | filename | delta group |
1359 | filename length | filename | delta group |
1360 | (4 bytes) | (<length - 4> bytes) | (various) |
1360 | (4 bytes) | (<length - 4> bytes) | (various) |
1361 | | | |
1361 | | | |
1362 +------------------------------------------------------+
1362 +------------------------------------------------------+
1363
1363
1364 That is, a *chunk* consisting of the filename (not terminated or padded)
1364 That is, a *chunk* consisting of the filename (not terminated or padded)
1365 followed by N chunks constituting the *delta group* for this file. The
1365 followed by N chunks constituting the *delta group* for this file. The
1366 *empty chunk* at the end of each *delta group* denotes the boundary to the
1366 *empty chunk* at the end of each *delta group* denotes the boundary to the
1367 next filelog sub-segment.
1367 next filelog sub-segment.
1368
1368
1369 non-existent subtopics print an error
1369 non-existent subtopics print an error
1370
1370
1371 $ hg help internals.foo
1371 $ hg help internals.foo
1372 abort: no such help topic: internals.foo
1372 abort: no such help topic: internals.foo
1373 (try 'hg help --keyword foo')
1373 (try 'hg help --keyword foo')
1374 [10]
1374 [10]
1375
1375
1376 test advanced, deprecated and experimental options are hidden in command help
1376 test advanced, deprecated and experimental options are hidden in command help
1377 $ hg help debugoptADV
1377 $ hg help debugoptADV
1378 hg debugoptADV
1378 hg debugoptADV
1379
1379
1380 (no help text available)
1380 (no help text available)
1381
1381
1382 options:
1382 options:
1383
1383
1384 (some details hidden, use --verbose to show complete help)
1384 (some details hidden, use --verbose to show complete help)
1385 $ hg help debugoptDEP
1385 $ hg help debugoptDEP
1386 hg debugoptDEP
1386 hg debugoptDEP
1387
1387
1388 (no help text available)
1388 (no help text available)
1389
1389
1390 options:
1390 options:
1391
1391
1392 (some details hidden, use --verbose to show complete help)
1392 (some details hidden, use --verbose to show complete help)
1393
1393
1394 $ hg help debugoptEXP
1394 $ hg help debugoptEXP
1395 hg debugoptEXP
1395 hg debugoptEXP
1396
1396
1397 (no help text available)
1397 (no help text available)
1398
1398
1399 options:
1399 options:
1400
1400
1401 (some details hidden, use --verbose to show complete help)
1401 (some details hidden, use --verbose to show complete help)
1402
1402
1403 test advanced, deprecated and experimental options are shown with -v
1403 test advanced, deprecated and experimental options are shown with -v
1404 $ hg help -v debugoptADV | grep aopt
1404 $ hg help -v debugoptADV | grep aopt
1405 --aopt option is (ADVANCED)
1405 --aopt option is (ADVANCED)
1406 $ hg help -v debugoptDEP | grep dopt
1406 $ hg help -v debugoptDEP | grep dopt
1407 --dopt option is (DEPRECATED)
1407 --dopt option is (DEPRECATED)
1408 $ hg help -v debugoptEXP | grep eopt
1408 $ hg help -v debugoptEXP | grep eopt
1409 --eopt option is (EXPERIMENTAL)
1409 --eopt option is (EXPERIMENTAL)
1410
1410
1411 #if gettext
1411 #if gettext
1412 test deprecated option is hidden with translation with untranslated description
1412 test deprecated option is hidden with translation with untranslated description
1413 (use many globy for not failing on changed transaction)
1413 (use many globy for not failing on changed transaction)
1414 $ LANGUAGE=sv hg help debugoptDEP
1414 $ LANGUAGE=sv hg help debugoptDEP
1415 hg debugoptDEP
1415 hg debugoptDEP
1416
1416
1417 (*) (glob)
1417 (*) (glob)
1418
1418
1419 options:
1419 options:
1420
1420
1421 (some details hidden, use --verbose to show complete help)
1421 (some details hidden, use --verbose to show complete help)
1422 #endif
1422 #endif
1423
1423
1424 Test commands that collide with topics (issue4240)
1424 Test commands that collide with topics (issue4240)
1425
1425
1426 $ hg config -hq
1426 $ hg config -hq
1427 hg config [-u] [NAME]...
1427 hg config [-u] [NAME]...
1428
1428
1429 show combined config settings from all hgrc files
1429 show combined config settings from all hgrc files
1430 $ hg showconfig -hq
1430 $ hg showconfig -hq
1431 hg config [-u] [NAME]...
1431 hg config [-u] [NAME]...
1432
1432
1433 show combined config settings from all hgrc files
1433 show combined config settings from all hgrc files
1434
1434
1435 Test a help topic
1435 Test a help topic
1436
1436
1437 $ hg help dates
1437 $ hg help dates
1438 Date Formats
1438 Date Formats
1439 """"""""""""
1439 """"""""""""
1440
1440
1441 Some commands allow the user to specify a date, e.g.:
1441 Some commands allow the user to specify a date, e.g.:
1442
1442
1443 - backout, commit, import, tag: Specify the commit date.
1443 - backout, commit, import, tag: Specify the commit date.
1444 - log, revert, update: Select revision(s) by date.
1444 - log, revert, update: Select revision(s) by date.
1445
1445
1446 Many date formats are valid. Here are some examples:
1446 Many date formats are valid. Here are some examples:
1447
1447
1448 - "Wed Dec 6 13:18:29 2006" (local timezone assumed)
1448 - "Wed Dec 6 13:18:29 2006" (local timezone assumed)
1449 - "Dec 6 13:18 -0600" (year assumed, time offset provided)
1449 - "Dec 6 13:18 -0600" (year assumed, time offset provided)
1450 - "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
1450 - "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
1451 - "Dec 6" (midnight)
1451 - "Dec 6" (midnight)
1452 - "13:18" (today assumed)
1452 - "13:18" (today assumed)
1453 - "3:39" (3:39AM assumed)
1453 - "3:39" (3:39AM assumed)
1454 - "3:39pm" (15:39)
1454 - "3:39pm" (15:39)
1455 - "2006-12-06 13:18:29" (ISO 8601 format)
1455 - "2006-12-06 13:18:29" (ISO 8601 format)
1456 - "2006-12-6 13:18"
1456 - "2006-12-6 13:18"
1457 - "2006-12-6"
1457 - "2006-12-6"
1458 - "12-6"
1458 - "12-6"
1459 - "12/6"
1459 - "12/6"
1460 - "12/6/6" (Dec 6 2006)
1460 - "12/6/6" (Dec 6 2006)
1461 - "today" (midnight)
1461 - "today" (midnight)
1462 - "yesterday" (midnight)
1462 - "yesterday" (midnight)
1463 - "now" - right now
1463 - "now" - right now
1464
1464
1465 Lastly, there is Mercurial's internal format:
1465 Lastly, there is Mercurial's internal format:
1466
1466
1467 - "1165411109 0" (Wed Dec 6 13:18:29 2006 UTC)
1467 - "1165411109 0" (Wed Dec 6 13:18:29 2006 UTC)
1468
1468
1469 This is the internal representation format for dates. The first number is
1469 This is the internal representation format for dates. The first number is
1470 the number of seconds since the epoch (1970-01-01 00:00 UTC). The second
1470 the number of seconds since the epoch (1970-01-01 00:00 UTC). The second
1471 is the offset of the local timezone, in seconds west of UTC (negative if
1471 is the offset of the local timezone, in seconds west of UTC (negative if
1472 the timezone is east of UTC).
1472 the timezone is east of UTC).
1473
1473
1474 The log command also accepts date ranges:
1474 The log command also accepts date ranges:
1475
1475
1476 - "<DATE" - at or before a given date/time
1476 - "<DATE" - at or before a given date/time
1477 - ">DATE" - on or after a given date/time
1477 - ">DATE" - on or after a given date/time
1478 - "DATE to DATE" - a date range, inclusive
1478 - "DATE to DATE" - a date range, inclusive
1479 - "-DAYS" - within a given number of days from today
1479 - "-DAYS" - within a given number of days from today
1480
1480
1481 Test repeated config section name
1481 Test repeated config section name
1482
1482
1483 $ hg help config.host
1483 $ hg help config.host
1484 "http_proxy.host"
1484 "http_proxy.host"
1485 Host name and (optional) port of the proxy server, for example
1485 Host name and (optional) port of the proxy server, for example
1486 "myproxy:8000".
1486 "myproxy:8000".
1487
1487
1488 "smtp.host"
1488 "smtp.host"
1489 Host name of mail server, e.g. "mail.example.com".
1489 Host name of mail server, e.g. "mail.example.com".
1490
1490
1491
1491
1492 Test section name with dot
1492 Test section name with dot
1493
1493
1494 $ hg help config.ui.username
1494 $ hg help config.ui.username
1495 "ui.username"
1495 "ui.username"
1496 The committer of a changeset created when running "commit". Typically
1496 The committer of a changeset created when running "commit". Typically
1497 a person's name and email address, e.g. "Fred Widget
1497 a person's name and email address, e.g. "Fred Widget
1498 <fred@example.com>". Environment variables in the username are
1498 <fred@example.com>". Environment variables in the username are
1499 expanded.
1499 expanded.
1500
1500
1501 (default: "$EMAIL" or "username@hostname". If the username in hgrc is
1501 (default: "$EMAIL" or "username@hostname". If the username in hgrc is
1502 empty, e.g. if the system admin set "username =" in the system hgrc,
1502 empty, e.g. if the system admin set "username =" in the system hgrc,
1503 it has to be specified manually or in a different hgrc file)
1503 it has to be specified manually or in a different hgrc file)
1504
1504
1505
1505
1506 $ hg help config.annotate.git
1506 $ hg help config.annotate.git
1507 abort: help section not found: config.annotate.git
1507 abort: help section not found: config.annotate.git
1508 [10]
1508 [10]
1509
1509
1510 $ hg help config.update.check
1510 $ hg help config.update.check
1511 "commands.update.check"
1511 "commands.update.check"
1512 Determines what level of checking 'hg update' will perform before
1512 Determines what level of checking 'hg update' will perform before
1513 moving to a destination revision. Valid values are "abort", "none",
1513 moving to a destination revision. Valid values are "abort", "none",
1514 "linear", and "noconflict". "abort" always fails if the working
1514 "linear", and "noconflict". "abort" always fails if the working
1515 directory has uncommitted changes. "none" performs no checking, and
1515 directory has uncommitted changes. "none" performs no checking, and
1516 may result in a merge with uncommitted changes. "linear" allows any
1516 may result in a merge with uncommitted changes. "linear" allows any
1517 update as long as it follows a straight line in the revision history,
1517 update as long as it follows a straight line in the revision history,
1518 and may trigger a merge with uncommitted changes. "noconflict" will
1518 and may trigger a merge with uncommitted changes. "noconflict" will
1519 allow any update which would not trigger a merge with uncommitted
1519 allow any update which would not trigger a merge with uncommitted
1520 changes, if any are present. (default: "linear")
1520 changes, if any are present. (default: "linear")
1521
1521
1522
1522
1523 $ hg help config.commands.update.check
1523 $ hg help config.commands.update.check
1524 "commands.update.check"
1524 "commands.update.check"
1525 Determines what level of checking 'hg update' will perform before
1525 Determines what level of checking 'hg update' will perform before
1526 moving to a destination revision. Valid values are "abort", "none",
1526 moving to a destination revision. Valid values are "abort", "none",
1527 "linear", and "noconflict". "abort" always fails if the working
1527 "linear", and "noconflict". "abort" always fails if the working
1528 directory has uncommitted changes. "none" performs no checking, and
1528 directory has uncommitted changes. "none" performs no checking, and
1529 may result in a merge with uncommitted changes. "linear" allows any
1529 may result in a merge with uncommitted changes. "linear" allows any
1530 update as long as it follows a straight line in the revision history,
1530 update as long as it follows a straight line in the revision history,
1531 and may trigger a merge with uncommitted changes. "noconflict" will
1531 and may trigger a merge with uncommitted changes. "noconflict" will
1532 allow any update which would not trigger a merge with uncommitted
1532 allow any update which would not trigger a merge with uncommitted
1533 changes, if any are present. (default: "linear")
1533 changes, if any are present. (default: "linear")
1534
1534
1535
1535
1536 $ hg help config.ommands.update.check
1536 $ hg help config.ommands.update.check
1537 abort: help section not found: config.ommands.update.check
1537 abort: help section not found: config.ommands.update.check
1538 [10]
1538 [10]
1539
1539
1540 Unrelated trailing paragraphs shouldn't be included
1540 Unrelated trailing paragraphs shouldn't be included
1541
1541
1542 $ hg help config.extramsg | grep '^$'
1542 $ hg help config.extramsg | grep '^$'
1543
1543
1544
1544
1545 Test capitalized section name
1545 Test capitalized section name
1546
1546
1547 $ hg help scripting.HGPLAIN > /dev/null
1547 $ hg help scripting.HGPLAIN > /dev/null
1548
1548
1549 Help subsection:
1549 Help subsection:
1550
1550
1551 $ hg help config.charsets |grep "Email example:" > /dev/null
1551 $ hg help config.charsets |grep "Email example:" > /dev/null
1552 [1]
1552 [1]
1553
1553
1554 Show nested definitions
1554 Show nested definitions
1555 ("profiling.type"[break]"ls"[break]"stat"[break])
1555 ("profiling.type"[break]"ls"[break]"stat"[break])
1556
1556
1557 $ hg help config.type | egrep '^$'|wc -l
1557 $ hg help config.type | egrep '^$'|wc -l
1558 \s*3 (re)
1558 \s*3 (re)
1559
1559
1560 $ hg help config.profiling.type.ls
1560 $ hg help config.profiling.type.ls
1561 "profiling.type.ls"
1561 "profiling.type.ls"
1562 Use Python's built-in instrumenting profiler. This profiler works on
1562 Use Python's built-in instrumenting profiler. This profiler works on
1563 all platforms, but each line number it reports is the first line of
1563 all platforms, but each line number it reports is the first line of
1564 a function. This restriction makes it difficult to identify the
1564 a function. This restriction makes it difficult to identify the
1565 expensive parts of a non-trivial function.
1565 expensive parts of a non-trivial function.
1566
1566
1567
1567
1568 Separate sections from subsections
1568 Separate sections from subsections
1569
1569
1570 $ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq
1570 $ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq
1571 "format"
1571 "format"
1572 --------
1572 --------
1573
1573
1574 "usegeneraldelta"
1574 "usegeneraldelta"
1575
1575
1576 "dotencode"
1576 "dotencode"
1577
1577
1578 "usefncache"
1578 "usefncache"
1579
1579
1580 "use-persistent-nodemap"
1580 "use-persistent-nodemap"
1581
1581
1582 "use-share-safe"
1582 "use-share-safe"
1583
1583
1584 "usestore"
1584 "usestore"
1585
1585
1586 "sparse-revlog"
1586 "sparse-revlog"
1587
1587
1588 "revlog-compression"
1588 "revlog-compression"
1589
1589
1590 "bookmarks-in-store"
1590 "bookmarks-in-store"
1591
1591
1592 "profiling"
1592 "profiling"
1593 -----------
1593 -----------
1594
1594
1595 "format"
1595 "format"
1596
1596
1597 "progress"
1597 "progress"
1598 ----------
1598 ----------
1599
1599
1600 "format"
1600 "format"
1601
1601
1602
1602
1603 Last item in help config.*:
1603 Last item in help config.*:
1604
1604
1605 $ hg help config.`hg help config|grep '^ "'| \
1605 $ hg help config.`hg help config|grep '^ "'| \
1606 > tail -1|sed 's![ "]*!!g'`| \
1606 > tail -1|sed 's![ "]*!!g'`| \
1607 > grep 'hg help -c config' > /dev/null
1607 > grep 'hg help -c config' > /dev/null
1608 [1]
1608 [1]
1609
1609
1610 note to use help -c for general hg help config:
1610 note to use help -c for general hg help config:
1611
1611
1612 $ hg help config |grep 'hg help -c config' > /dev/null
1612 $ hg help config |grep 'hg help -c config' > /dev/null
1613
1613
1614 Test templating help
1614 Test templating help
1615
1615
1616 $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
1616 $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
1617 desc String. The text of the changeset description.
1617 desc String. The text of the changeset description.
1618 diffstat String. Statistics of changes with the following format:
1618 diffstat String. Statistics of changes with the following format:
1619 firstline Any text. Returns the first line of text.
1619 firstline Any text. Returns the first line of text.
1620 nonempty Any text. Returns '(none)' if the string is empty.
1620 nonempty Any text. Returns '(none)' if the string is empty.
1621
1621
1622 Test deprecated items
1622 Test deprecated items
1623
1623
1624 $ hg help -v templating | grep currentbookmark
1624 $ hg help -v templating | grep currentbookmark
1625 currentbookmark
1625 currentbookmark
1626 $ hg help templating | (grep currentbookmark || true)
1626 $ hg help templating | (grep currentbookmark || true)
1627
1627
1628 Test help hooks
1628 Test help hooks
1629
1629
1630 $ cat > helphook1.py <<EOF
1630 $ cat > helphook1.py <<EOF
1631 > from mercurial import help
1631 > from mercurial import help
1632 >
1632 >
1633 > def rewrite(ui, topic, doc):
1633 > def rewrite(ui, topic, doc):
1634 > return doc + b'\nhelphook1\n'
1634 > return doc + b'\nhelphook1\n'
1635 >
1635 >
1636 > def extsetup(ui):
1636 > def extsetup(ui):
1637 > help.addtopichook(b'revisions', rewrite)
1637 > help.addtopichook(b'revisions', rewrite)
1638 > EOF
1638 > EOF
1639 $ cat > helphook2.py <<EOF
1639 $ cat > helphook2.py <<EOF
1640 > from mercurial import help
1640 > from mercurial import help
1641 >
1641 >
1642 > def rewrite(ui, topic, doc):
1642 > def rewrite(ui, topic, doc):
1643 > return doc + b'\nhelphook2\n'
1643 > return doc + b'\nhelphook2\n'
1644 >
1644 >
1645 > def extsetup(ui):
1645 > def extsetup(ui):
1646 > help.addtopichook(b'revisions', rewrite)
1646 > help.addtopichook(b'revisions', rewrite)
1647 > EOF
1647 > EOF
1648 $ echo '[extensions]' >> $HGRCPATH
1648 $ echo '[extensions]' >> $HGRCPATH
1649 $ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
1649 $ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
1650 $ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
1650 $ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
1651 $ hg help revsets | grep helphook
1651 $ hg help revsets | grep helphook
1652 helphook1
1652 helphook1
1653 helphook2
1653 helphook2
1654
1654
1655 help -c should only show debug --debug
1655 help -c should only show debug --debug
1656
1656
1657 $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
1657 $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
1658 [1]
1658 [1]
1659
1659
1660 help -c should only show deprecated for -v
1660 help -c should only show deprecated for -v
1661
1661
1662 $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
1662 $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
1663 [1]
1663 [1]
1664
1664
1665 Test -s / --system
1665 Test -s / --system
1666
1666
1667 $ hg help config.files -s windows |grep 'etc/mercurial' | \
1667 $ hg help config.files -s windows |grep 'etc/mercurial' | \
1668 > wc -l | sed -e 's/ //g'
1668 > wc -l | sed -e 's/ //g'
1669 0
1669 0
1670 $ hg help config.files --system unix | grep 'USER' | \
1670 $ hg help config.files --system unix | grep 'USER' | \
1671 > wc -l | sed -e 's/ //g'
1671 > wc -l | sed -e 's/ //g'
1672 0
1672 0
1673
1673
1674 Test -e / -c / -k combinations
1674 Test -e / -c / -k combinations
1675
1675
1676 $ hg help -c|egrep '^[A-Z].*:|^ debug'
1676 $ hg help -c|egrep '^[A-Z].*:|^ debug'
1677 Commands:
1677 Commands:
1678 $ hg help -e|egrep '^[A-Z].*:|^ debug'
1678 $ hg help -e|egrep '^[A-Z].*:|^ debug'
1679 Extensions:
1679 Extensions:
1680 $ hg help -k|egrep '^[A-Z].*:|^ debug'
1680 $ hg help -k|egrep '^[A-Z].*:|^ debug'
1681 Topics:
1681 Topics:
1682 Commands:
1682 Commands:
1683 Extensions:
1683 Extensions:
1684 Extension Commands:
1684 Extension Commands:
1685 $ hg help -c schemes
1685 $ hg help -c schemes
1686 abort: no such help topic: schemes
1686 abort: no such help topic: schemes
1687 (try 'hg help --keyword schemes')
1687 (try 'hg help --keyword schemes')
1688 [10]
1688 [10]
1689 $ hg help -e schemes |head -1
1689 $ hg help -e schemes |head -1
1690 schemes extension - extend schemes with shortcuts to repository swarms
1690 schemes extension - extend schemes with shortcuts to repository swarms
1691 $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
1691 $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
1692 Commands:
1692 Commands:
1693 $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
1693 $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
1694 Extensions:
1694 Extensions:
1695 $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
1695 $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
1696 Extensions:
1696 Extensions:
1697 Commands:
1697 Commands:
1698 $ hg help -c commit > /dev/null
1698 $ hg help -c commit > /dev/null
1699 $ hg help -e -c commit > /dev/null
1699 $ hg help -e -c commit > /dev/null
1700 $ hg help -e commit
1700 $ hg help -e commit
1701 abort: no such help topic: commit
1701 abort: no such help topic: commit
1702 (try 'hg help --keyword commit')
1702 (try 'hg help --keyword commit')
1703 [10]
1703 [10]
1704
1704
1705 Test keyword search help
1705 Test keyword search help
1706
1706
1707 $ cat > prefixedname.py <<EOF
1707 $ cat > prefixedname.py <<EOF
1708 > '''matched against word "clone"
1708 > '''matched against word "clone"
1709 > '''
1709 > '''
1710 > EOF
1710 > EOF
1711 $ echo '[extensions]' >> $HGRCPATH
1711 $ echo '[extensions]' >> $HGRCPATH
1712 $ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
1712 $ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
1713 $ hg help -k clone
1713 $ hg help -k clone
1714 Topics:
1714 Topics:
1715
1715
1716 config Configuration Files
1716 config Configuration Files
1717 extensions Using Additional Features
1717 extensions Using Additional Features
1718 glossary Glossary
1718 glossary Glossary
1719 phases Working with Phases
1719 phases Working with Phases
1720 subrepos Subrepositories
1720 subrepos Subrepositories
1721 urls URL Paths
1721 urls URL Paths
1722
1722
1723 Commands:
1723 Commands:
1724
1724
1725 bookmarks create a new bookmark or list existing bookmarks
1725 bookmarks create a new bookmark or list existing bookmarks
1726 clone make a copy of an existing repository
1726 clone make a copy of an existing repository
1727 paths show aliases for remote repositories
1727 paths show aliases for remote repositories
1728 pull pull changes from the specified source
1728 pull pull changes from the specified source
1729 update update working directory (or switch revisions)
1729 update update working directory (or switch revisions)
1730
1730
1731 Extensions:
1731 Extensions:
1732
1732
1733 clonebundles advertise pre-generated bundles to seed clones
1733 clonebundles advertise pre-generated bundles to seed clones
1734 narrow create clones which fetch history data for subset of files
1734 narrow create clones which fetch history data for subset of files
1735 (EXPERIMENTAL)
1735 (EXPERIMENTAL)
1736 prefixedname matched against word "clone"
1736 prefixedname matched against word "clone"
1737 relink recreates hardlinks between repository clones
1737 relink recreates hardlinks between repository clones
1738
1738
1739 Extension Commands:
1739 Extension Commands:
1740
1740
1741 qclone clone main and patch repository at same time
1741 qclone clone main and patch repository at same time
1742
1742
1743 Test unfound topic
1743 Test unfound topic
1744
1744
1745 $ hg help nonexistingtopicthatwillneverexisteverever
1745 $ hg help nonexistingtopicthatwillneverexisteverever
1746 abort: no such help topic: nonexistingtopicthatwillneverexisteverever
1746 abort: no such help topic: nonexistingtopicthatwillneverexisteverever
1747 (try 'hg help --keyword nonexistingtopicthatwillneverexisteverever')
1747 (try 'hg help --keyword nonexistingtopicthatwillneverexisteverever')
1748 [10]
1748 [10]
1749
1749
1750 Test unfound keyword
1750 Test unfound keyword
1751
1751
1752 $ hg help --keyword nonexistingwordthatwillneverexisteverever
1752 $ hg help --keyword nonexistingwordthatwillneverexisteverever
1753 abort: no matches
1753 abort: no matches
1754 (try 'hg help' for a list of topics)
1754 (try 'hg help' for a list of topics)
1755 [10]
1755 [10]
1756
1756
1757 Test omit indicating for help
1757 Test omit indicating for help
1758
1758
1759 $ cat > addverboseitems.py <<EOF
1759 $ cat > addverboseitems.py <<EOF
1760 > r'''extension to test omit indicating.
1760 > r'''extension to test omit indicating.
1761 >
1761 >
1762 > This paragraph is never omitted (for extension)
1762 > This paragraph is never omitted (for extension)
1763 >
1763 >
1764 > .. container:: verbose
1764 > .. container:: verbose
1765 >
1765 >
1766 > This paragraph is omitted,
1766 > This paragraph is omitted,
1767 > if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
1767 > if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
1768 >
1768 >
1769 > This paragraph is never omitted, too (for extension)
1769 > This paragraph is never omitted, too (for extension)
1770 > '''
1770 > '''
1771 > from __future__ import absolute_import
1771 > from __future__ import absolute_import
1772 > from mercurial import commands, help
1772 > from mercurial import commands, help
1773 > testtopic = br"""This paragraph is never omitted (for topic).
1773 > testtopic = br"""This paragraph is never omitted (for topic).
1774 >
1774 >
1775 > .. container:: verbose
1775 > .. container:: verbose
1776 >
1776 >
1777 > This paragraph is omitted,
1777 > This paragraph is omitted,
1778 > if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
1778 > if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
1779 >
1779 >
1780 > This paragraph is never omitted, too (for topic)
1780 > This paragraph is never omitted, too (for topic)
1781 > """
1781 > """
1782 > def extsetup(ui):
1782 > def extsetup(ui):
1783 > help.helptable.append(([b"topic-containing-verbose"],
1783 > help.helptable.append(([b"topic-containing-verbose"],
1784 > b"This is the topic to test omit indicating.",
1784 > b"This is the topic to test omit indicating.",
1785 > lambda ui: testtopic))
1785 > lambda ui: testtopic))
1786 > EOF
1786 > EOF
1787 $ echo '[extensions]' >> $HGRCPATH
1787 $ echo '[extensions]' >> $HGRCPATH
1788 $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
1788 $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
1789 $ hg help addverboseitems
1789 $ hg help addverboseitems
1790 addverboseitems extension - extension to test omit indicating.
1790 addverboseitems extension - extension to test omit indicating.
1791
1791
1792 This paragraph is never omitted (for extension)
1792 This paragraph is never omitted (for extension)
1793
1793
1794 This paragraph is never omitted, too (for extension)
1794 This paragraph is never omitted, too (for extension)
1795
1795
1796 (some details hidden, use --verbose to show complete help)
1796 (some details hidden, use --verbose to show complete help)
1797
1797
1798 no commands defined
1798 no commands defined
1799 $ hg help -v addverboseitems
1799 $ hg help -v addverboseitems
1800 addverboseitems extension - extension to test omit indicating.
1800 addverboseitems extension - extension to test omit indicating.
1801
1801
1802 This paragraph is never omitted (for extension)
1802 This paragraph is never omitted (for extension)
1803
1803
1804 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1804 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1805 extension)
1805 extension)
1806
1806
1807 This paragraph is never omitted, too (for extension)
1807 This paragraph is never omitted, too (for extension)
1808
1808
1809 no commands defined
1809 no commands defined
1810 $ hg help topic-containing-verbose
1810 $ hg help topic-containing-verbose
1811 This is the topic to test omit indicating.
1811 This is the topic to test omit indicating.
1812 """"""""""""""""""""""""""""""""""""""""""
1812 """"""""""""""""""""""""""""""""""""""""""
1813
1813
1814 This paragraph is never omitted (for topic).
1814 This paragraph is never omitted (for topic).
1815
1815
1816 This paragraph is never omitted, too (for topic)
1816 This paragraph is never omitted, too (for topic)
1817
1817
1818 (some details hidden, use --verbose to show complete help)
1818 (some details hidden, use --verbose to show complete help)
1819 $ hg help -v topic-containing-verbose
1819 $ hg help -v topic-containing-verbose
1820 This is the topic to test omit indicating.
1820 This is the topic to test omit indicating.
1821 """"""""""""""""""""""""""""""""""""""""""
1821 """"""""""""""""""""""""""""""""""""""""""
1822
1822
1823 This paragraph is never omitted (for topic).
1823 This paragraph is never omitted (for topic).
1824
1824
1825 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1825 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1826 topic)
1826 topic)
1827
1827
1828 This paragraph is never omitted, too (for topic)
1828 This paragraph is never omitted, too (for topic)
1829
1829
1830 Test section lookup
1830 Test section lookup
1831
1831
1832 $ hg help revset.merge
1832 $ hg help revset.merge
1833 "merge()"
1833 "merge()"
1834 Changeset is a merge changeset.
1834 Changeset is a merge changeset.
1835
1835
1836 $ hg help glossary.dag
1836 $ hg help glossary.dag
1837 DAG
1837 DAG
1838 The repository of changesets of a distributed version control system
1838 The repository of changesets of a distributed version control system
1839 (DVCS) can be described as a directed acyclic graph (DAG), consisting
1839 (DVCS) can be described as a directed acyclic graph (DAG), consisting
1840 of nodes and edges, where nodes correspond to changesets and edges
1840 of nodes and edges, where nodes correspond to changesets and edges
1841 imply a parent -> child relation. This graph can be visualized by
1841 imply a parent -> child relation. This graph can be visualized by
1842 graphical tools such as 'hg log --graph'. In Mercurial, the DAG is
1842 graphical tools such as 'hg log --graph'. In Mercurial, the DAG is
1843 limited by the requirement for children to have at most two parents.
1843 limited by the requirement for children to have at most two parents.
1844
1844
1845
1845
1846 $ hg help hgrc.paths
1846 $ hg help hgrc.paths
1847 "paths"
1847 "paths"
1848 -------
1848 -------
1849
1849
1850 Assigns symbolic names and behavior to repositories.
1850 Assigns symbolic names and behavior to repositories.
1851
1851
1852 Options are symbolic names defining the URL or directory that is the
1852 Options are symbolic names defining the URL or directory that is the
1853 location of the repository. Example:
1853 location of the repository. Example:
1854
1854
1855 [paths]
1855 [paths]
1856 my_server = https://example.com/my_repo
1856 my_server = https://example.com/my_repo
1857 local_path = /home/me/repo
1857 local_path = /home/me/repo
1858
1858
1859 These symbolic names can be used from the command line. To pull from
1859 These symbolic names can be used from the command line. To pull from
1860 "my_server": 'hg pull my_server'. To push to "local_path": 'hg push
1860 "my_server": 'hg pull my_server'. To push to "local_path": 'hg push
1861 local_path'. You can check 'hg help urls' for details about valid URLs.
1861 local_path'. You can check 'hg help urls' for details about valid URLs.
1862
1862
1863 Options containing colons (":") denote sub-options that can influence
1863 Options containing colons (":") denote sub-options that can influence
1864 behavior for that specific path. Example:
1864 behavior for that specific path. Example:
1865
1865
1866 [paths]
1866 [paths]
1867 my_server = https://example.com/my_path
1867 my_server = https://example.com/my_path
1868 my_server:pushurl = ssh://example.com/my_path
1868 my_server:pushurl = ssh://example.com/my_path
1869
1869
1870 Paths using the 'path://otherpath' scheme will inherit the sub-options
1870 Paths using the 'path://otherpath' scheme will inherit the sub-options
1871 value from the path they point to.
1871 value from the path they point to.
1872
1872
1873 The following sub-options can be defined:
1873 The following sub-options can be defined:
1874
1874
1875 "multi-urls"
1876 A boolean option. When enabled the value of the '[paths]' entry will be
1877 parsed as a list and the alias will resolve to multiple destination. If
1878 some of the list entry use the 'path://' syntax, the suboption will be
1879 inherited individually.
1880
1875 "pushurl"
1881 "pushurl"
1876 The URL to use for push operations. If not defined, the location
1882 The URL to use for push operations. If not defined, the location
1877 defined by the path's main entry is used.
1883 defined by the path's main entry is used.
1878
1884
1879 "pushrev"
1885 "pushrev"
1880 A revset defining which revisions to push by default.
1886 A revset defining which revisions to push by default.
1881
1887
1882 When 'hg push' is executed without a "-r" argument, the revset defined
1888 When 'hg push' is executed without a "-r" argument, the revset defined
1883 by this sub-option is evaluated to determine what to push.
1889 by this sub-option is evaluated to determine what to push.
1884
1890
1885 For example, a value of "." will push the working directory's revision
1891 For example, a value of "." will push the working directory's revision
1886 by default.
1892 by default.
1887
1893
1888 Revsets specifying bookmarks will not result in the bookmark being
1894 Revsets specifying bookmarks will not result in the bookmark being
1889 pushed.
1895 pushed.
1890
1896
1891 The following special named paths exist:
1897 The following special named paths exist:
1892
1898
1893 "default"
1899 "default"
1894 The URL or directory to use when no source or remote is specified.
1900 The URL or directory to use when no source or remote is specified.
1895
1901
1896 'hg clone' will automatically define this path to the location the
1902 'hg clone' will automatically define this path to the location the
1897 repository was cloned from.
1903 repository was cloned from.
1898
1904
1899 "default-push"
1905 "default-push"
1900 (deprecated) The URL or directory for the default 'hg push' location.
1906 (deprecated) The URL or directory for the default 'hg push' location.
1901 "default:pushurl" should be used instead.
1907 "default:pushurl" should be used instead.
1902
1908
1903 $ hg help glossary.mcguffin
1909 $ hg help glossary.mcguffin
1904 abort: help section not found: glossary.mcguffin
1910 abort: help section not found: glossary.mcguffin
1905 [10]
1911 [10]
1906
1912
1907 $ hg help glossary.mc.guffin
1913 $ hg help glossary.mc.guffin
1908 abort: help section not found: glossary.mc.guffin
1914 abort: help section not found: glossary.mc.guffin
1909 [10]
1915 [10]
1910
1916
1911 $ hg help template.files
1917 $ hg help template.files
1912 files List of strings. All files modified, added, or removed by
1918 files List of strings. All files modified, added, or removed by
1913 this changeset.
1919 this changeset.
1914 files(pattern)
1920 files(pattern)
1915 All files of the current changeset matching the pattern. See
1921 All files of the current changeset matching the pattern. See
1916 'hg help patterns'.
1922 'hg help patterns'.
1917
1923
1918 Test section lookup by translated message
1924 Test section lookup by translated message
1919
1925
1920 str.lower() instead of encoding.lower(str) on translated message might
1926 str.lower() instead of encoding.lower(str) on translated message might
1921 make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
1927 make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
1922 as the second or later byte of multi-byte character.
1928 as the second or later byte of multi-byte character.
1923
1929
1924 For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
1930 For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
1925 contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
1931 contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
1926 replacement makes message meaningless.
1932 replacement makes message meaningless.
1927
1933
1928 This tests that section lookup by translated string isn't broken by
1934 This tests that section lookup by translated string isn't broken by
1929 such str.lower().
1935 such str.lower().
1930
1936
1931 $ "$PYTHON" <<EOF
1937 $ "$PYTHON" <<EOF
1932 > def escape(s):
1938 > def escape(s):
1933 > return b''.join(b'\\u%x' % ord(uc) for uc in s.decode('cp932'))
1939 > return b''.join(b'\\u%x' % ord(uc) for uc in s.decode('cp932'))
1934 > # translation of "record" in ja_JP.cp932
1940 > # translation of "record" in ja_JP.cp932
1935 > upper = b"\x8bL\x98^"
1941 > upper = b"\x8bL\x98^"
1936 > # str.lower()-ed section name should be treated as different one
1942 > # str.lower()-ed section name should be treated as different one
1937 > lower = b"\x8bl\x98^"
1943 > lower = b"\x8bl\x98^"
1938 > with open('ambiguous.py', 'wb') as fp:
1944 > with open('ambiguous.py', 'wb') as fp:
1939 > fp.write(b"""# ambiguous section names in ja_JP.cp932
1945 > fp.write(b"""# ambiguous section names in ja_JP.cp932
1940 > u'''summary of extension
1946 > u'''summary of extension
1941 >
1947 >
1942 > %s
1948 > %s
1943 > ----
1949 > ----
1944 >
1950 >
1945 > Upper name should show only this message
1951 > Upper name should show only this message
1946 >
1952 >
1947 > %s
1953 > %s
1948 > ----
1954 > ----
1949 >
1955 >
1950 > Lower name should show only this message
1956 > Lower name should show only this message
1951 >
1957 >
1952 > subsequent section
1958 > subsequent section
1953 > ------------------
1959 > ------------------
1954 >
1960 >
1955 > This should be hidden at 'hg help ambiguous' with section name.
1961 > This should be hidden at 'hg help ambiguous' with section name.
1956 > '''
1962 > '''
1957 > """ % (escape(upper), escape(lower)))
1963 > """ % (escape(upper), escape(lower)))
1958 > EOF
1964 > EOF
1959
1965
1960 $ cat >> $HGRCPATH <<EOF
1966 $ cat >> $HGRCPATH <<EOF
1961 > [extensions]
1967 > [extensions]
1962 > ambiguous = ./ambiguous.py
1968 > ambiguous = ./ambiguous.py
1963 > EOF
1969 > EOF
1964
1970
1965 $ "$PYTHON" <<EOF | sh
1971 $ "$PYTHON" <<EOF | sh
1966 > from mercurial.utils import procutil
1972 > from mercurial.utils import procutil
1967 > upper = b"\x8bL\x98^"
1973 > upper = b"\x8bL\x98^"
1968 > procutil.stdout.write(b"hg --encoding cp932 help -e ambiguous.%s\n" % upper)
1974 > procutil.stdout.write(b"hg --encoding cp932 help -e ambiguous.%s\n" % upper)
1969 > EOF
1975 > EOF
1970 \x8bL\x98^ (esc)
1976 \x8bL\x98^ (esc)
1971 ----
1977 ----
1972
1978
1973 Upper name should show only this message
1979 Upper name should show only this message
1974
1980
1975
1981
1976 $ "$PYTHON" <<EOF | sh
1982 $ "$PYTHON" <<EOF | sh
1977 > from mercurial.utils import procutil
1983 > from mercurial.utils import procutil
1978 > lower = b"\x8bl\x98^"
1984 > lower = b"\x8bl\x98^"
1979 > procutil.stdout.write(b"hg --encoding cp932 help -e ambiguous.%s\n" % lower)
1985 > procutil.stdout.write(b"hg --encoding cp932 help -e ambiguous.%s\n" % lower)
1980 > EOF
1986 > EOF
1981 \x8bl\x98^ (esc)
1987 \x8bl\x98^ (esc)
1982 ----
1988 ----
1983
1989
1984 Lower name should show only this message
1990 Lower name should show only this message
1985
1991
1986
1992
1987 $ cat >> $HGRCPATH <<EOF
1993 $ cat >> $HGRCPATH <<EOF
1988 > [extensions]
1994 > [extensions]
1989 > ambiguous = !
1995 > ambiguous = !
1990 > EOF
1996 > EOF
1991
1997
1992 Show help content of disabled extensions
1998 Show help content of disabled extensions
1993
1999
1994 $ cat >> $HGRCPATH <<EOF
2000 $ cat >> $HGRCPATH <<EOF
1995 > [extensions]
2001 > [extensions]
1996 > ambiguous = !./ambiguous.py
2002 > ambiguous = !./ambiguous.py
1997 > EOF
2003 > EOF
1998 $ hg help -e ambiguous
2004 $ hg help -e ambiguous
1999 ambiguous extension - (no help text available)
2005 ambiguous extension - (no help text available)
2000
2006
2001 (use 'hg help extensions' for information on enabling extensions)
2007 (use 'hg help extensions' for information on enabling extensions)
2002
2008
2003 Test dynamic list of merge tools only shows up once
2009 Test dynamic list of merge tools only shows up once
2004 $ hg help merge-tools
2010 $ hg help merge-tools
2005 Merge Tools
2011 Merge Tools
2006 """""""""""
2012 """""""""""
2007
2013
2008 To merge files Mercurial uses merge tools.
2014 To merge files Mercurial uses merge tools.
2009
2015
2010 A merge tool combines two different versions of a file into a merged file.
2016 A merge tool combines two different versions of a file into a merged file.
2011 Merge tools are given the two files and the greatest common ancestor of
2017 Merge tools are given the two files and the greatest common ancestor of
2012 the two file versions, so they can determine the changes made on both
2018 the two file versions, so they can determine the changes made on both
2013 branches.
2019 branches.
2014
2020
2015 Merge tools are used both for 'hg resolve', 'hg merge', 'hg update', 'hg
2021 Merge tools are used both for 'hg resolve', 'hg merge', 'hg update', 'hg
2016 backout' and in several extensions.
2022 backout' and in several extensions.
2017
2023
2018 Usually, the merge tool tries to automatically reconcile the files by
2024 Usually, the merge tool tries to automatically reconcile the files by
2019 combining all non-overlapping changes that occurred separately in the two
2025 combining all non-overlapping changes that occurred separately in the two
2020 different evolutions of the same initial base file. Furthermore, some
2026 different evolutions of the same initial base file. Furthermore, some
2021 interactive merge programs make it easier to manually resolve conflicting
2027 interactive merge programs make it easier to manually resolve conflicting
2022 merges, either in a graphical way, or by inserting some conflict markers.
2028 merges, either in a graphical way, or by inserting some conflict markers.
2023 Mercurial does not include any interactive merge programs but relies on
2029 Mercurial does not include any interactive merge programs but relies on
2024 external tools for that.
2030 external tools for that.
2025
2031
2026 Available merge tools
2032 Available merge tools
2027 =====================
2033 =====================
2028
2034
2029 External merge tools and their properties are configured in the merge-
2035 External merge tools and their properties are configured in the merge-
2030 tools configuration section - see hgrc(5) - but they can often just be
2036 tools configuration section - see hgrc(5) - but they can often just be
2031 named by their executable.
2037 named by their executable.
2032
2038
2033 A merge tool is generally usable if its executable can be found on the
2039 A merge tool is generally usable if its executable can be found on the
2034 system and if it can handle the merge. The executable is found if it is an
2040 system and if it can handle the merge. The executable is found if it is an
2035 absolute or relative executable path or the name of an application in the
2041 absolute or relative executable path or the name of an application in the
2036 executable search path. The tool is assumed to be able to handle the merge
2042 executable search path. The tool is assumed to be able to handle the merge
2037 if it can handle symlinks if the file is a symlink, if it can handle
2043 if it can handle symlinks if the file is a symlink, if it can handle
2038 binary files if the file is binary, and if a GUI is available if the tool
2044 binary files if the file is binary, and if a GUI is available if the tool
2039 requires a GUI.
2045 requires a GUI.
2040
2046
2041 There are some internal merge tools which can be used. The internal merge
2047 There are some internal merge tools which can be used. The internal merge
2042 tools are:
2048 tools are:
2043
2049
2044 ":dump"
2050 ":dump"
2045 Creates three versions of the files to merge, containing the contents of
2051 Creates three versions of the files to merge, containing the contents of
2046 local, other and base. These files can then be used to perform a merge
2052 local, other and base. These files can then be used to perform a merge
2047 manually. If the file to be merged is named "a.txt", these files will
2053 manually. If the file to be merged is named "a.txt", these files will
2048 accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
2054 accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
2049 they will be placed in the same directory as "a.txt".
2055 they will be placed in the same directory as "a.txt".
2050
2056
2051 This implies premerge. Therefore, files aren't dumped, if premerge runs
2057 This implies premerge. Therefore, files aren't dumped, if premerge runs
2052 successfully. Use :forcedump to forcibly write files out.
2058 successfully. Use :forcedump to forcibly write files out.
2053
2059
2054 (actual capabilities: binary, symlink)
2060 (actual capabilities: binary, symlink)
2055
2061
2056 ":fail"
2062 ":fail"
2057 Rather than attempting to merge files that were modified on both
2063 Rather than attempting to merge files that were modified on both
2058 branches, it marks them as unresolved. The resolve command must be used
2064 branches, it marks them as unresolved. The resolve command must be used
2059 to resolve these conflicts.
2065 to resolve these conflicts.
2060
2066
2061 (actual capabilities: binary, symlink)
2067 (actual capabilities: binary, symlink)
2062
2068
2063 ":forcedump"
2069 ":forcedump"
2064 Creates three versions of the files as same as :dump, but omits
2070 Creates three versions of the files as same as :dump, but omits
2065 premerge.
2071 premerge.
2066
2072
2067 (actual capabilities: binary, symlink)
2073 (actual capabilities: binary, symlink)
2068
2074
2069 ":local"
2075 ":local"
2070 Uses the local 'p1()' version of files as the merged version.
2076 Uses the local 'p1()' version of files as the merged version.
2071
2077
2072 (actual capabilities: binary, symlink)
2078 (actual capabilities: binary, symlink)
2073
2079
2074 ":merge"
2080 ":merge"
2075 Uses the internal non-interactive simple merge algorithm for merging
2081 Uses the internal non-interactive simple merge algorithm for merging
2076 files. It will fail if there are any conflicts and leave markers in the
2082 files. It will fail if there are any conflicts and leave markers in the
2077 partially merged file. Markers will have two sections, one for each side
2083 partially merged file. Markers will have two sections, one for each side
2078 of merge.
2084 of merge.
2079
2085
2080 ":merge-local"
2086 ":merge-local"
2081 Like :merge, but resolve all conflicts non-interactively in favor of the
2087 Like :merge, but resolve all conflicts non-interactively in favor of the
2082 local 'p1()' changes.
2088 local 'p1()' changes.
2083
2089
2084 ":merge-other"
2090 ":merge-other"
2085 Like :merge, but resolve all conflicts non-interactively in favor of the
2091 Like :merge, but resolve all conflicts non-interactively in favor of the
2086 other 'p2()' changes.
2092 other 'p2()' changes.
2087
2093
2088 ":merge3"
2094 ":merge3"
2089 Uses the internal non-interactive simple merge algorithm for merging
2095 Uses the internal non-interactive simple merge algorithm for merging
2090 files. It will fail if there are any conflicts and leave markers in the
2096 files. It will fail if there are any conflicts and leave markers in the
2091 partially merged file. Marker will have three sections, one from each
2097 partially merged file. Marker will have three sections, one from each
2092 side of the merge and one for the base content.
2098 side of the merge and one for the base content.
2093
2099
2094 ":mergediff"
2100 ":mergediff"
2095 Uses the internal non-interactive simple merge algorithm for merging
2101 Uses the internal non-interactive simple merge algorithm for merging
2096 files. It will fail if there are any conflicts and leave markers in the
2102 files. It will fail if there are any conflicts and leave markers in the
2097 partially merged file. The marker will have two sections, one with the
2103 partially merged file. The marker will have two sections, one with the
2098 content from one side of the merge, and one with a diff from the base
2104 content from one side of the merge, and one with a diff from the base
2099 content to the content on the other side. (experimental)
2105 content to the content on the other side. (experimental)
2100
2106
2101 ":other"
2107 ":other"
2102 Uses the other 'p2()' version of files as the merged version.
2108 Uses the other 'p2()' version of files as the merged version.
2103
2109
2104 (actual capabilities: binary, symlink)
2110 (actual capabilities: binary, symlink)
2105
2111
2106 ":prompt"
2112 ":prompt"
2107 Asks the user which of the local 'p1()' or the other 'p2()' version to
2113 Asks the user which of the local 'p1()' or the other 'p2()' version to
2108 keep as the merged version.
2114 keep as the merged version.
2109
2115
2110 (actual capabilities: binary, symlink)
2116 (actual capabilities: binary, symlink)
2111
2117
2112 ":tagmerge"
2118 ":tagmerge"
2113 Uses the internal tag merge algorithm (experimental).
2119 Uses the internal tag merge algorithm (experimental).
2114
2120
2115 ":union"
2121 ":union"
2116 Uses the internal non-interactive simple merge algorithm for merging
2122 Uses the internal non-interactive simple merge algorithm for merging
2117 files. It will use both left and right sides for conflict regions. No
2123 files. It will use both left and right sides for conflict regions. No
2118 markers are inserted.
2124 markers are inserted.
2119
2125
2120 Internal tools are always available and do not require a GUI but will by
2126 Internal tools are always available and do not require a GUI but will by
2121 default not handle symlinks or binary files. See next section for detail
2127 default not handle symlinks or binary files. See next section for detail
2122 about "actual capabilities" described above.
2128 about "actual capabilities" described above.
2123
2129
2124 Choosing a merge tool
2130 Choosing a merge tool
2125 =====================
2131 =====================
2126
2132
2127 Mercurial uses these rules when deciding which merge tool to use:
2133 Mercurial uses these rules when deciding which merge tool to use:
2128
2134
2129 1. If a tool has been specified with the --tool option to merge or
2135 1. If a tool has been specified with the --tool option to merge or
2130 resolve, it is used. If it is the name of a tool in the merge-tools
2136 resolve, it is used. If it is the name of a tool in the merge-tools
2131 configuration, its configuration is used. Otherwise the specified tool
2137 configuration, its configuration is used. Otherwise the specified tool
2132 must be executable by the shell.
2138 must be executable by the shell.
2133 2. If the "HGMERGE" environment variable is present, its value is used and
2139 2. If the "HGMERGE" environment variable is present, its value is used and
2134 must be executable by the shell.
2140 must be executable by the shell.
2135 3. If the filename of the file to be merged matches any of the patterns in
2141 3. If the filename of the file to be merged matches any of the patterns in
2136 the merge-patterns configuration section, the first usable merge tool
2142 the merge-patterns configuration section, the first usable merge tool
2137 corresponding to a matching pattern is used.
2143 corresponding to a matching pattern is used.
2138 4. If ui.merge is set it will be considered next. If the value is not the
2144 4. If ui.merge is set it will be considered next. If the value is not the
2139 name of a configured tool, the specified value is used and must be
2145 name of a configured tool, the specified value is used and must be
2140 executable by the shell. Otherwise the named tool is used if it is
2146 executable by the shell. Otherwise the named tool is used if it is
2141 usable.
2147 usable.
2142 5. If any usable merge tools are present in the merge-tools configuration
2148 5. If any usable merge tools are present in the merge-tools configuration
2143 section, the one with the highest priority is used.
2149 section, the one with the highest priority is used.
2144 6. If a program named "hgmerge" can be found on the system, it is used -
2150 6. If a program named "hgmerge" can be found on the system, it is used -
2145 but it will by default not be used for symlinks and binary files.
2151 but it will by default not be used for symlinks and binary files.
2146 7. If the file to be merged is not binary and is not a symlink, then
2152 7. If the file to be merged is not binary and is not a symlink, then
2147 internal ":merge" is used.
2153 internal ":merge" is used.
2148 8. Otherwise, ":prompt" is used.
2154 8. Otherwise, ":prompt" is used.
2149
2155
2150 For historical reason, Mercurial treats merge tools as below while
2156 For historical reason, Mercurial treats merge tools as below while
2151 examining rules above.
2157 examining rules above.
2152
2158
2153 step specified via binary symlink
2159 step specified via binary symlink
2154 ----------------------------------
2160 ----------------------------------
2155 1. --tool o/o o/o
2161 1. --tool o/o o/o
2156 2. HGMERGE o/o o/o
2162 2. HGMERGE o/o o/o
2157 3. merge-patterns o/o(*) x/?(*)
2163 3. merge-patterns o/o(*) x/?(*)
2158 4. ui.merge x/?(*) x/?(*)
2164 4. ui.merge x/?(*) x/?(*)
2159
2165
2160 Each capability column indicates Mercurial behavior for internal/external
2166 Each capability column indicates Mercurial behavior for internal/external
2161 merge tools at examining each rule.
2167 merge tools at examining each rule.
2162
2168
2163 - "o": "assume that a tool has capability"
2169 - "o": "assume that a tool has capability"
2164 - "x": "assume that a tool does not have capability"
2170 - "x": "assume that a tool does not have capability"
2165 - "?": "check actual capability of a tool"
2171 - "?": "check actual capability of a tool"
2166
2172
2167 If "merge.strict-capability-check" configuration is true, Mercurial checks
2173 If "merge.strict-capability-check" configuration is true, Mercurial checks
2168 capabilities of merge tools strictly in (*) cases above (= each capability
2174 capabilities of merge tools strictly in (*) cases above (= each capability
2169 column becomes "?/?"). It is false by default for backward compatibility.
2175 column becomes "?/?"). It is false by default for backward compatibility.
2170
2176
2171 Note:
2177 Note:
2172 After selecting a merge program, Mercurial will by default attempt to
2178 After selecting a merge program, Mercurial will by default attempt to
2173 merge the files using a simple merge algorithm first. Only if it
2179 merge the files using a simple merge algorithm first. Only if it
2174 doesn't succeed because of conflicting changes will Mercurial actually
2180 doesn't succeed because of conflicting changes will Mercurial actually
2175 execute the merge program. Whether to use the simple merge algorithm
2181 execute the merge program. Whether to use the simple merge algorithm
2176 first can be controlled by the premerge setting of the merge tool.
2182 first can be controlled by the premerge setting of the merge tool.
2177 Premerge is enabled by default unless the file is binary or a symlink.
2183 Premerge is enabled by default unless the file is binary or a symlink.
2178
2184
2179 See the merge-tools and ui sections of hgrc(5) for details on the
2185 See the merge-tools and ui sections of hgrc(5) for details on the
2180 configuration of merge tools.
2186 configuration of merge tools.
2181
2187
2182 Compression engines listed in `hg help bundlespec`
2188 Compression engines listed in `hg help bundlespec`
2183
2189
2184 $ hg help bundlespec | grep gzip
2190 $ hg help bundlespec | grep gzip
2185 "v1" bundles can only use the "gzip", "bzip2", and "none" compression
2191 "v1" bundles can only use the "gzip", "bzip2", and "none" compression
2186 An algorithm that produces smaller bundles than "gzip".
2192 An algorithm that produces smaller bundles than "gzip".
2187 This engine will likely produce smaller bundles than "gzip" but will be
2193 This engine will likely produce smaller bundles than "gzip" but will be
2188 "gzip"
2194 "gzip"
2189 better compression than "gzip". It also frequently yields better (?)
2195 better compression than "gzip". It also frequently yields better (?)
2190
2196
2191 Test usage of section marks in help documents
2197 Test usage of section marks in help documents
2192
2198
2193 $ cd "$TESTDIR"/../doc
2199 $ cd "$TESTDIR"/../doc
2194 $ "$PYTHON" check-seclevel.py
2200 $ "$PYTHON" check-seclevel.py
2195 $ cd $TESTTMP
2201 $ cd $TESTTMP
2196
2202
2197 #if serve
2203 #if serve
2198
2204
2199 Test the help pages in hgweb.
2205 Test the help pages in hgweb.
2200
2206
2201 Dish up an empty repo; serve it cold.
2207 Dish up an empty repo; serve it cold.
2202
2208
2203 $ hg init "$TESTTMP/test"
2209 $ hg init "$TESTTMP/test"
2204 $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
2210 $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
2205 $ cat hg.pid >> $DAEMON_PIDS
2211 $ cat hg.pid >> $DAEMON_PIDS
2206
2212
2207 $ get-with-headers.py $LOCALIP:$HGPORT "help"
2213 $ get-with-headers.py $LOCALIP:$HGPORT "help"
2208 200 Script output follows
2214 200 Script output follows
2209
2215
2210 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2216 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2211 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2217 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2212 <head>
2218 <head>
2213 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2219 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2214 <meta name="robots" content="index, nofollow" />
2220 <meta name="robots" content="index, nofollow" />
2215 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2221 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2216 <script type="text/javascript" src="/static/mercurial.js"></script>
2222 <script type="text/javascript" src="/static/mercurial.js"></script>
2217
2223
2218 <title>Help: Index</title>
2224 <title>Help: Index</title>
2219 </head>
2225 </head>
2220 <body>
2226 <body>
2221
2227
2222 <div class="container">
2228 <div class="container">
2223 <div class="menu">
2229 <div class="menu">
2224 <div class="logo">
2230 <div class="logo">
2225 <a href="https://mercurial-scm.org/">
2231 <a href="https://mercurial-scm.org/">
2226 <img src="/static/hglogo.png" alt="mercurial" /></a>
2232 <img src="/static/hglogo.png" alt="mercurial" /></a>
2227 </div>
2233 </div>
2228 <ul>
2234 <ul>
2229 <li><a href="/shortlog">log</a></li>
2235 <li><a href="/shortlog">log</a></li>
2230 <li><a href="/graph">graph</a></li>
2236 <li><a href="/graph">graph</a></li>
2231 <li><a href="/tags">tags</a></li>
2237 <li><a href="/tags">tags</a></li>
2232 <li><a href="/bookmarks">bookmarks</a></li>
2238 <li><a href="/bookmarks">bookmarks</a></li>
2233 <li><a href="/branches">branches</a></li>
2239 <li><a href="/branches">branches</a></li>
2234 </ul>
2240 </ul>
2235 <ul>
2241 <ul>
2236 <li class="active">help</li>
2242 <li class="active">help</li>
2237 </ul>
2243 </ul>
2238 </div>
2244 </div>
2239
2245
2240 <div class="main">
2246 <div class="main">
2241 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2247 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2242
2248
2243 <form class="search" action="/log">
2249 <form class="search" action="/log">
2244
2250
2245 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2251 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2246 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2252 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2247 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2253 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2248 </form>
2254 </form>
2249 <table class="bigtable">
2255 <table class="bigtable">
2250 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
2256 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
2251
2257
2252 <tr><td>
2258 <tr><td>
2253 <a href="/help/bundlespec">
2259 <a href="/help/bundlespec">
2254 bundlespec
2260 bundlespec
2255 </a>
2261 </a>
2256 </td><td>
2262 </td><td>
2257 Bundle File Formats
2263 Bundle File Formats
2258 </td></tr>
2264 </td></tr>
2259 <tr><td>
2265 <tr><td>
2260 <a href="/help/color">
2266 <a href="/help/color">
2261 color
2267 color
2262 </a>
2268 </a>
2263 </td><td>
2269 </td><td>
2264 Colorizing Outputs
2270 Colorizing Outputs
2265 </td></tr>
2271 </td></tr>
2266 <tr><td>
2272 <tr><td>
2267 <a href="/help/config">
2273 <a href="/help/config">
2268 config
2274 config
2269 </a>
2275 </a>
2270 </td><td>
2276 </td><td>
2271 Configuration Files
2277 Configuration Files
2272 </td></tr>
2278 </td></tr>
2273 <tr><td>
2279 <tr><td>
2274 <a href="/help/dates">
2280 <a href="/help/dates">
2275 dates
2281 dates
2276 </a>
2282 </a>
2277 </td><td>
2283 </td><td>
2278 Date Formats
2284 Date Formats
2279 </td></tr>
2285 </td></tr>
2280 <tr><td>
2286 <tr><td>
2281 <a href="/help/deprecated">
2287 <a href="/help/deprecated">
2282 deprecated
2288 deprecated
2283 </a>
2289 </a>
2284 </td><td>
2290 </td><td>
2285 Deprecated Features
2291 Deprecated Features
2286 </td></tr>
2292 </td></tr>
2287 <tr><td>
2293 <tr><td>
2288 <a href="/help/diffs">
2294 <a href="/help/diffs">
2289 diffs
2295 diffs
2290 </a>
2296 </a>
2291 </td><td>
2297 </td><td>
2292 Diff Formats
2298 Diff Formats
2293 </td></tr>
2299 </td></tr>
2294 <tr><td>
2300 <tr><td>
2295 <a href="/help/environment">
2301 <a href="/help/environment">
2296 environment
2302 environment
2297 </a>
2303 </a>
2298 </td><td>
2304 </td><td>
2299 Environment Variables
2305 Environment Variables
2300 </td></tr>
2306 </td></tr>
2301 <tr><td>
2307 <tr><td>
2302 <a href="/help/evolution">
2308 <a href="/help/evolution">
2303 evolution
2309 evolution
2304 </a>
2310 </a>
2305 </td><td>
2311 </td><td>
2306 Safely rewriting history (EXPERIMENTAL)
2312 Safely rewriting history (EXPERIMENTAL)
2307 </td></tr>
2313 </td></tr>
2308 <tr><td>
2314 <tr><td>
2309 <a href="/help/extensions">
2315 <a href="/help/extensions">
2310 extensions
2316 extensions
2311 </a>
2317 </a>
2312 </td><td>
2318 </td><td>
2313 Using Additional Features
2319 Using Additional Features
2314 </td></tr>
2320 </td></tr>
2315 <tr><td>
2321 <tr><td>
2316 <a href="/help/filesets">
2322 <a href="/help/filesets">
2317 filesets
2323 filesets
2318 </a>
2324 </a>
2319 </td><td>
2325 </td><td>
2320 Specifying File Sets
2326 Specifying File Sets
2321 </td></tr>
2327 </td></tr>
2322 <tr><td>
2328 <tr><td>
2323 <a href="/help/flags">
2329 <a href="/help/flags">
2324 flags
2330 flags
2325 </a>
2331 </a>
2326 </td><td>
2332 </td><td>
2327 Command-line flags
2333 Command-line flags
2328 </td></tr>
2334 </td></tr>
2329 <tr><td>
2335 <tr><td>
2330 <a href="/help/glossary">
2336 <a href="/help/glossary">
2331 glossary
2337 glossary
2332 </a>
2338 </a>
2333 </td><td>
2339 </td><td>
2334 Glossary
2340 Glossary
2335 </td></tr>
2341 </td></tr>
2336 <tr><td>
2342 <tr><td>
2337 <a href="/help/hgignore">
2343 <a href="/help/hgignore">
2338 hgignore
2344 hgignore
2339 </a>
2345 </a>
2340 </td><td>
2346 </td><td>
2341 Syntax for Mercurial Ignore Files
2347 Syntax for Mercurial Ignore Files
2342 </td></tr>
2348 </td></tr>
2343 <tr><td>
2349 <tr><td>
2344 <a href="/help/hgweb">
2350 <a href="/help/hgweb">
2345 hgweb
2351 hgweb
2346 </a>
2352 </a>
2347 </td><td>
2353 </td><td>
2348 Configuring hgweb
2354 Configuring hgweb
2349 </td></tr>
2355 </td></tr>
2350 <tr><td>
2356 <tr><td>
2351 <a href="/help/internals">
2357 <a href="/help/internals">
2352 internals
2358 internals
2353 </a>
2359 </a>
2354 </td><td>
2360 </td><td>
2355 Technical implementation topics
2361 Technical implementation topics
2356 </td></tr>
2362 </td></tr>
2357 <tr><td>
2363 <tr><td>
2358 <a href="/help/merge-tools">
2364 <a href="/help/merge-tools">
2359 merge-tools
2365 merge-tools
2360 </a>
2366 </a>
2361 </td><td>
2367 </td><td>
2362 Merge Tools
2368 Merge Tools
2363 </td></tr>
2369 </td></tr>
2364 <tr><td>
2370 <tr><td>
2365 <a href="/help/pager">
2371 <a href="/help/pager">
2366 pager
2372 pager
2367 </a>
2373 </a>
2368 </td><td>
2374 </td><td>
2369 Pager Support
2375 Pager Support
2370 </td></tr>
2376 </td></tr>
2371 <tr><td>
2377 <tr><td>
2372 <a href="/help/patterns">
2378 <a href="/help/patterns">
2373 patterns
2379 patterns
2374 </a>
2380 </a>
2375 </td><td>
2381 </td><td>
2376 File Name Patterns
2382 File Name Patterns
2377 </td></tr>
2383 </td></tr>
2378 <tr><td>
2384 <tr><td>
2379 <a href="/help/phases">
2385 <a href="/help/phases">
2380 phases
2386 phases
2381 </a>
2387 </a>
2382 </td><td>
2388 </td><td>
2383 Working with Phases
2389 Working with Phases
2384 </td></tr>
2390 </td></tr>
2385 <tr><td>
2391 <tr><td>
2386 <a href="/help/revisions">
2392 <a href="/help/revisions">
2387 revisions
2393 revisions
2388 </a>
2394 </a>
2389 </td><td>
2395 </td><td>
2390 Specifying Revisions
2396 Specifying Revisions
2391 </td></tr>
2397 </td></tr>
2392 <tr><td>
2398 <tr><td>
2393 <a href="/help/scripting">
2399 <a href="/help/scripting">
2394 scripting
2400 scripting
2395 </a>
2401 </a>
2396 </td><td>
2402 </td><td>
2397 Using Mercurial from scripts and automation
2403 Using Mercurial from scripts and automation
2398 </td></tr>
2404 </td></tr>
2399 <tr><td>
2405 <tr><td>
2400 <a href="/help/subrepos">
2406 <a href="/help/subrepos">
2401 subrepos
2407 subrepos
2402 </a>
2408 </a>
2403 </td><td>
2409 </td><td>
2404 Subrepositories
2410 Subrepositories
2405 </td></tr>
2411 </td></tr>
2406 <tr><td>
2412 <tr><td>
2407 <a href="/help/templating">
2413 <a href="/help/templating">
2408 templating
2414 templating
2409 </a>
2415 </a>
2410 </td><td>
2416 </td><td>
2411 Template Usage
2417 Template Usage
2412 </td></tr>
2418 </td></tr>
2413 <tr><td>
2419 <tr><td>
2414 <a href="/help/urls">
2420 <a href="/help/urls">
2415 urls
2421 urls
2416 </a>
2422 </a>
2417 </td><td>
2423 </td><td>
2418 URL Paths
2424 URL Paths
2419 </td></tr>
2425 </td></tr>
2420 <tr><td>
2426 <tr><td>
2421 <a href="/help/topic-containing-verbose">
2427 <a href="/help/topic-containing-verbose">
2422 topic-containing-verbose
2428 topic-containing-verbose
2423 </a>
2429 </a>
2424 </td><td>
2430 </td><td>
2425 This is the topic to test omit indicating.
2431 This is the topic to test omit indicating.
2426 </td></tr>
2432 </td></tr>
2427
2433
2428
2434
2429 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
2435 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
2430
2436
2431 <tr><td>
2437 <tr><td>
2432 <a href="/help/abort">
2438 <a href="/help/abort">
2433 abort
2439 abort
2434 </a>
2440 </a>
2435 </td><td>
2441 </td><td>
2436 abort an unfinished operation (EXPERIMENTAL)
2442 abort an unfinished operation (EXPERIMENTAL)
2437 </td></tr>
2443 </td></tr>
2438 <tr><td>
2444 <tr><td>
2439 <a href="/help/add">
2445 <a href="/help/add">
2440 add
2446 add
2441 </a>
2447 </a>
2442 </td><td>
2448 </td><td>
2443 add the specified files on the next commit
2449 add the specified files on the next commit
2444 </td></tr>
2450 </td></tr>
2445 <tr><td>
2451 <tr><td>
2446 <a href="/help/annotate">
2452 <a href="/help/annotate">
2447 annotate
2453 annotate
2448 </a>
2454 </a>
2449 </td><td>
2455 </td><td>
2450 show changeset information by line for each file
2456 show changeset information by line for each file
2451 </td></tr>
2457 </td></tr>
2452 <tr><td>
2458 <tr><td>
2453 <a href="/help/clone">
2459 <a href="/help/clone">
2454 clone
2460 clone
2455 </a>
2461 </a>
2456 </td><td>
2462 </td><td>
2457 make a copy of an existing repository
2463 make a copy of an existing repository
2458 </td></tr>
2464 </td></tr>
2459 <tr><td>
2465 <tr><td>
2460 <a href="/help/commit">
2466 <a href="/help/commit">
2461 commit
2467 commit
2462 </a>
2468 </a>
2463 </td><td>
2469 </td><td>
2464 commit the specified files or all outstanding changes
2470 commit the specified files or all outstanding changes
2465 </td></tr>
2471 </td></tr>
2466 <tr><td>
2472 <tr><td>
2467 <a href="/help/continue">
2473 <a href="/help/continue">
2468 continue
2474 continue
2469 </a>
2475 </a>
2470 </td><td>
2476 </td><td>
2471 resumes an interrupted operation (EXPERIMENTAL)
2477 resumes an interrupted operation (EXPERIMENTAL)
2472 </td></tr>
2478 </td></tr>
2473 <tr><td>
2479 <tr><td>
2474 <a href="/help/diff">
2480 <a href="/help/diff">
2475 diff
2481 diff
2476 </a>
2482 </a>
2477 </td><td>
2483 </td><td>
2478 diff repository (or selected files)
2484 diff repository (or selected files)
2479 </td></tr>
2485 </td></tr>
2480 <tr><td>
2486 <tr><td>
2481 <a href="/help/export">
2487 <a href="/help/export">
2482 export
2488 export
2483 </a>
2489 </a>
2484 </td><td>
2490 </td><td>
2485 dump the header and diffs for one or more changesets
2491 dump the header and diffs for one or more changesets
2486 </td></tr>
2492 </td></tr>
2487 <tr><td>
2493 <tr><td>
2488 <a href="/help/forget">
2494 <a href="/help/forget">
2489 forget
2495 forget
2490 </a>
2496 </a>
2491 </td><td>
2497 </td><td>
2492 forget the specified files on the next commit
2498 forget the specified files on the next commit
2493 </td></tr>
2499 </td></tr>
2494 <tr><td>
2500 <tr><td>
2495 <a href="/help/init">
2501 <a href="/help/init">
2496 init
2502 init
2497 </a>
2503 </a>
2498 </td><td>
2504 </td><td>
2499 create a new repository in the given directory
2505 create a new repository in the given directory
2500 </td></tr>
2506 </td></tr>
2501 <tr><td>
2507 <tr><td>
2502 <a href="/help/log">
2508 <a href="/help/log">
2503 log
2509 log
2504 </a>
2510 </a>
2505 </td><td>
2511 </td><td>
2506 show revision history of entire repository or files
2512 show revision history of entire repository or files
2507 </td></tr>
2513 </td></tr>
2508 <tr><td>
2514 <tr><td>
2509 <a href="/help/merge">
2515 <a href="/help/merge">
2510 merge
2516 merge
2511 </a>
2517 </a>
2512 </td><td>
2518 </td><td>
2513 merge another revision into working directory
2519 merge another revision into working directory
2514 </td></tr>
2520 </td></tr>
2515 <tr><td>
2521 <tr><td>
2516 <a href="/help/pull">
2522 <a href="/help/pull">
2517 pull
2523 pull
2518 </a>
2524 </a>
2519 </td><td>
2525 </td><td>
2520 pull changes from the specified source
2526 pull changes from the specified source
2521 </td></tr>
2527 </td></tr>
2522 <tr><td>
2528 <tr><td>
2523 <a href="/help/push">
2529 <a href="/help/push">
2524 push
2530 push
2525 </a>
2531 </a>
2526 </td><td>
2532 </td><td>
2527 push changes to the specified destination
2533 push changes to the specified destination
2528 </td></tr>
2534 </td></tr>
2529 <tr><td>
2535 <tr><td>
2530 <a href="/help/remove">
2536 <a href="/help/remove">
2531 remove
2537 remove
2532 </a>
2538 </a>
2533 </td><td>
2539 </td><td>
2534 remove the specified files on the next commit
2540 remove the specified files on the next commit
2535 </td></tr>
2541 </td></tr>
2536 <tr><td>
2542 <tr><td>
2537 <a href="/help/serve">
2543 <a href="/help/serve">
2538 serve
2544 serve
2539 </a>
2545 </a>
2540 </td><td>
2546 </td><td>
2541 start stand-alone webserver
2547 start stand-alone webserver
2542 </td></tr>
2548 </td></tr>
2543 <tr><td>
2549 <tr><td>
2544 <a href="/help/status">
2550 <a href="/help/status">
2545 status
2551 status
2546 </a>
2552 </a>
2547 </td><td>
2553 </td><td>
2548 show changed files in the working directory
2554 show changed files in the working directory
2549 </td></tr>
2555 </td></tr>
2550 <tr><td>
2556 <tr><td>
2551 <a href="/help/summary">
2557 <a href="/help/summary">
2552 summary
2558 summary
2553 </a>
2559 </a>
2554 </td><td>
2560 </td><td>
2555 summarize working directory state
2561 summarize working directory state
2556 </td></tr>
2562 </td></tr>
2557 <tr><td>
2563 <tr><td>
2558 <a href="/help/update">
2564 <a href="/help/update">
2559 update
2565 update
2560 </a>
2566 </a>
2561 </td><td>
2567 </td><td>
2562 update working directory (or switch revisions)
2568 update working directory (or switch revisions)
2563 </td></tr>
2569 </td></tr>
2564
2570
2565
2571
2566
2572
2567 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
2573 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
2568
2574
2569 <tr><td>
2575 <tr><td>
2570 <a href="/help/addremove">
2576 <a href="/help/addremove">
2571 addremove
2577 addremove
2572 </a>
2578 </a>
2573 </td><td>
2579 </td><td>
2574 add all new files, delete all missing files
2580 add all new files, delete all missing files
2575 </td></tr>
2581 </td></tr>
2576 <tr><td>
2582 <tr><td>
2577 <a href="/help/archive">
2583 <a href="/help/archive">
2578 archive
2584 archive
2579 </a>
2585 </a>
2580 </td><td>
2586 </td><td>
2581 create an unversioned archive of a repository revision
2587 create an unversioned archive of a repository revision
2582 </td></tr>
2588 </td></tr>
2583 <tr><td>
2589 <tr><td>
2584 <a href="/help/backout">
2590 <a href="/help/backout">
2585 backout
2591 backout
2586 </a>
2592 </a>
2587 </td><td>
2593 </td><td>
2588 reverse effect of earlier changeset
2594 reverse effect of earlier changeset
2589 </td></tr>
2595 </td></tr>
2590 <tr><td>
2596 <tr><td>
2591 <a href="/help/bisect">
2597 <a href="/help/bisect">
2592 bisect
2598 bisect
2593 </a>
2599 </a>
2594 </td><td>
2600 </td><td>
2595 subdivision search of changesets
2601 subdivision search of changesets
2596 </td></tr>
2602 </td></tr>
2597 <tr><td>
2603 <tr><td>
2598 <a href="/help/bookmarks">
2604 <a href="/help/bookmarks">
2599 bookmarks
2605 bookmarks
2600 </a>
2606 </a>
2601 </td><td>
2607 </td><td>
2602 create a new bookmark or list existing bookmarks
2608 create a new bookmark or list existing bookmarks
2603 </td></tr>
2609 </td></tr>
2604 <tr><td>
2610 <tr><td>
2605 <a href="/help/branch">
2611 <a href="/help/branch">
2606 branch
2612 branch
2607 </a>
2613 </a>
2608 </td><td>
2614 </td><td>
2609 set or show the current branch name
2615 set or show the current branch name
2610 </td></tr>
2616 </td></tr>
2611 <tr><td>
2617 <tr><td>
2612 <a href="/help/branches">
2618 <a href="/help/branches">
2613 branches
2619 branches
2614 </a>
2620 </a>
2615 </td><td>
2621 </td><td>
2616 list repository named branches
2622 list repository named branches
2617 </td></tr>
2623 </td></tr>
2618 <tr><td>
2624 <tr><td>
2619 <a href="/help/bundle">
2625 <a href="/help/bundle">
2620 bundle
2626 bundle
2621 </a>
2627 </a>
2622 </td><td>
2628 </td><td>
2623 create a bundle file
2629 create a bundle file
2624 </td></tr>
2630 </td></tr>
2625 <tr><td>
2631 <tr><td>
2626 <a href="/help/cat">
2632 <a href="/help/cat">
2627 cat
2633 cat
2628 </a>
2634 </a>
2629 </td><td>
2635 </td><td>
2630 output the current or given revision of files
2636 output the current or given revision of files
2631 </td></tr>
2637 </td></tr>
2632 <tr><td>
2638 <tr><td>
2633 <a href="/help/config">
2639 <a href="/help/config">
2634 config
2640 config
2635 </a>
2641 </a>
2636 </td><td>
2642 </td><td>
2637 show combined config settings from all hgrc files
2643 show combined config settings from all hgrc files
2638 </td></tr>
2644 </td></tr>
2639 <tr><td>
2645 <tr><td>
2640 <a href="/help/copy">
2646 <a href="/help/copy">
2641 copy
2647 copy
2642 </a>
2648 </a>
2643 </td><td>
2649 </td><td>
2644 mark files as copied for the next commit
2650 mark files as copied for the next commit
2645 </td></tr>
2651 </td></tr>
2646 <tr><td>
2652 <tr><td>
2647 <a href="/help/files">
2653 <a href="/help/files">
2648 files
2654 files
2649 </a>
2655 </a>
2650 </td><td>
2656 </td><td>
2651 list tracked files
2657 list tracked files
2652 </td></tr>
2658 </td></tr>
2653 <tr><td>
2659 <tr><td>
2654 <a href="/help/graft">
2660 <a href="/help/graft">
2655 graft
2661 graft
2656 </a>
2662 </a>
2657 </td><td>
2663 </td><td>
2658 copy changes from other branches onto the current branch
2664 copy changes from other branches onto the current branch
2659 </td></tr>
2665 </td></tr>
2660 <tr><td>
2666 <tr><td>
2661 <a href="/help/grep">
2667 <a href="/help/grep">
2662 grep
2668 grep
2663 </a>
2669 </a>
2664 </td><td>
2670 </td><td>
2665 search for a pattern in specified files
2671 search for a pattern in specified files
2666 </td></tr>
2672 </td></tr>
2667 <tr><td>
2673 <tr><td>
2668 <a href="/help/hashelp">
2674 <a href="/help/hashelp">
2669 hashelp
2675 hashelp
2670 </a>
2676 </a>
2671 </td><td>
2677 </td><td>
2672 Extension command's help
2678 Extension command's help
2673 </td></tr>
2679 </td></tr>
2674 <tr><td>
2680 <tr><td>
2675 <a href="/help/heads">
2681 <a href="/help/heads">
2676 heads
2682 heads
2677 </a>
2683 </a>
2678 </td><td>
2684 </td><td>
2679 show branch heads
2685 show branch heads
2680 </td></tr>
2686 </td></tr>
2681 <tr><td>
2687 <tr><td>
2682 <a href="/help/help">
2688 <a href="/help/help">
2683 help
2689 help
2684 </a>
2690 </a>
2685 </td><td>
2691 </td><td>
2686 show help for a given topic or a help overview
2692 show help for a given topic or a help overview
2687 </td></tr>
2693 </td></tr>
2688 <tr><td>
2694 <tr><td>
2689 <a href="/help/hgalias">
2695 <a href="/help/hgalias">
2690 hgalias
2696 hgalias
2691 </a>
2697 </a>
2692 </td><td>
2698 </td><td>
2693 My doc
2699 My doc
2694 </td></tr>
2700 </td></tr>
2695 <tr><td>
2701 <tr><td>
2696 <a href="/help/hgaliasnodoc">
2702 <a href="/help/hgaliasnodoc">
2697 hgaliasnodoc
2703 hgaliasnodoc
2698 </a>
2704 </a>
2699 </td><td>
2705 </td><td>
2700 summarize working directory state
2706 summarize working directory state
2701 </td></tr>
2707 </td></tr>
2702 <tr><td>
2708 <tr><td>
2703 <a href="/help/identify">
2709 <a href="/help/identify">
2704 identify
2710 identify
2705 </a>
2711 </a>
2706 </td><td>
2712 </td><td>
2707 identify the working directory or specified revision
2713 identify the working directory or specified revision
2708 </td></tr>
2714 </td></tr>
2709 <tr><td>
2715 <tr><td>
2710 <a href="/help/import">
2716 <a href="/help/import">
2711 import
2717 import
2712 </a>
2718 </a>
2713 </td><td>
2719 </td><td>
2714 import an ordered set of patches
2720 import an ordered set of patches
2715 </td></tr>
2721 </td></tr>
2716 <tr><td>
2722 <tr><td>
2717 <a href="/help/incoming">
2723 <a href="/help/incoming">
2718 incoming
2724 incoming
2719 </a>
2725 </a>
2720 </td><td>
2726 </td><td>
2721 show new changesets found in source
2727 show new changesets found in source
2722 </td></tr>
2728 </td></tr>
2723 <tr><td>
2729 <tr><td>
2724 <a href="/help/manifest">
2730 <a href="/help/manifest">
2725 manifest
2731 manifest
2726 </a>
2732 </a>
2727 </td><td>
2733 </td><td>
2728 output the current or given revision of the project manifest
2734 output the current or given revision of the project manifest
2729 </td></tr>
2735 </td></tr>
2730 <tr><td>
2736 <tr><td>
2731 <a href="/help/nohelp">
2737 <a href="/help/nohelp">
2732 nohelp
2738 nohelp
2733 </a>
2739 </a>
2734 </td><td>
2740 </td><td>
2735 (no help text available)
2741 (no help text available)
2736 </td></tr>
2742 </td></tr>
2737 <tr><td>
2743 <tr><td>
2738 <a href="/help/outgoing">
2744 <a href="/help/outgoing">
2739 outgoing
2745 outgoing
2740 </a>
2746 </a>
2741 </td><td>
2747 </td><td>
2742 show changesets not found in the destination
2748 show changesets not found in the destination
2743 </td></tr>
2749 </td></tr>
2744 <tr><td>
2750 <tr><td>
2745 <a href="/help/paths">
2751 <a href="/help/paths">
2746 paths
2752 paths
2747 </a>
2753 </a>
2748 </td><td>
2754 </td><td>
2749 show aliases for remote repositories
2755 show aliases for remote repositories
2750 </td></tr>
2756 </td></tr>
2751 <tr><td>
2757 <tr><td>
2752 <a href="/help/phase">
2758 <a href="/help/phase">
2753 phase
2759 phase
2754 </a>
2760 </a>
2755 </td><td>
2761 </td><td>
2756 set or show the current phase name
2762 set or show the current phase name
2757 </td></tr>
2763 </td></tr>
2758 <tr><td>
2764 <tr><td>
2759 <a href="/help/purge">
2765 <a href="/help/purge">
2760 purge
2766 purge
2761 </a>
2767 </a>
2762 </td><td>
2768 </td><td>
2763 removes files not tracked by Mercurial
2769 removes files not tracked by Mercurial
2764 </td></tr>
2770 </td></tr>
2765 <tr><td>
2771 <tr><td>
2766 <a href="/help/recover">
2772 <a href="/help/recover">
2767 recover
2773 recover
2768 </a>
2774 </a>
2769 </td><td>
2775 </td><td>
2770 roll back an interrupted transaction
2776 roll back an interrupted transaction
2771 </td></tr>
2777 </td></tr>
2772 <tr><td>
2778 <tr><td>
2773 <a href="/help/rename">
2779 <a href="/help/rename">
2774 rename
2780 rename
2775 </a>
2781 </a>
2776 </td><td>
2782 </td><td>
2777 rename files; equivalent of copy + remove
2783 rename files; equivalent of copy + remove
2778 </td></tr>
2784 </td></tr>
2779 <tr><td>
2785 <tr><td>
2780 <a href="/help/resolve">
2786 <a href="/help/resolve">
2781 resolve
2787 resolve
2782 </a>
2788 </a>
2783 </td><td>
2789 </td><td>
2784 redo merges or set/view the merge status of files
2790 redo merges or set/view the merge status of files
2785 </td></tr>
2791 </td></tr>
2786 <tr><td>
2792 <tr><td>
2787 <a href="/help/revert">
2793 <a href="/help/revert">
2788 revert
2794 revert
2789 </a>
2795 </a>
2790 </td><td>
2796 </td><td>
2791 restore files to their checkout state
2797 restore files to their checkout state
2792 </td></tr>
2798 </td></tr>
2793 <tr><td>
2799 <tr><td>
2794 <a href="/help/root">
2800 <a href="/help/root">
2795 root
2801 root
2796 </a>
2802 </a>
2797 </td><td>
2803 </td><td>
2798 print the root (top) of the current working directory
2804 print the root (top) of the current working directory
2799 </td></tr>
2805 </td></tr>
2800 <tr><td>
2806 <tr><td>
2801 <a href="/help/shellalias">
2807 <a href="/help/shellalias">
2802 shellalias
2808 shellalias
2803 </a>
2809 </a>
2804 </td><td>
2810 </td><td>
2805 (no help text available)
2811 (no help text available)
2806 </td></tr>
2812 </td></tr>
2807 <tr><td>
2813 <tr><td>
2808 <a href="/help/shelve">
2814 <a href="/help/shelve">
2809 shelve
2815 shelve
2810 </a>
2816 </a>
2811 </td><td>
2817 </td><td>
2812 save and set aside changes from the working directory
2818 save and set aside changes from the working directory
2813 </td></tr>
2819 </td></tr>
2814 <tr><td>
2820 <tr><td>
2815 <a href="/help/tag">
2821 <a href="/help/tag">
2816 tag
2822 tag
2817 </a>
2823 </a>
2818 </td><td>
2824 </td><td>
2819 add one or more tags for the current or given revision
2825 add one or more tags for the current or given revision
2820 </td></tr>
2826 </td></tr>
2821 <tr><td>
2827 <tr><td>
2822 <a href="/help/tags">
2828 <a href="/help/tags">
2823 tags
2829 tags
2824 </a>
2830 </a>
2825 </td><td>
2831 </td><td>
2826 list repository tags
2832 list repository tags
2827 </td></tr>
2833 </td></tr>
2828 <tr><td>
2834 <tr><td>
2829 <a href="/help/unbundle">
2835 <a href="/help/unbundle">
2830 unbundle
2836 unbundle
2831 </a>
2837 </a>
2832 </td><td>
2838 </td><td>
2833 apply one or more bundle files
2839 apply one or more bundle files
2834 </td></tr>
2840 </td></tr>
2835 <tr><td>
2841 <tr><td>
2836 <a href="/help/unshelve">
2842 <a href="/help/unshelve">
2837 unshelve
2843 unshelve
2838 </a>
2844 </a>
2839 </td><td>
2845 </td><td>
2840 restore a shelved change to the working directory
2846 restore a shelved change to the working directory
2841 </td></tr>
2847 </td></tr>
2842 <tr><td>
2848 <tr><td>
2843 <a href="/help/verify">
2849 <a href="/help/verify">
2844 verify
2850 verify
2845 </a>
2851 </a>
2846 </td><td>
2852 </td><td>
2847 verify the integrity of the repository
2853 verify the integrity of the repository
2848 </td></tr>
2854 </td></tr>
2849 <tr><td>
2855 <tr><td>
2850 <a href="/help/version">
2856 <a href="/help/version">
2851 version
2857 version
2852 </a>
2858 </a>
2853 </td><td>
2859 </td><td>
2854 output version and copyright information
2860 output version and copyright information
2855 </td></tr>
2861 </td></tr>
2856
2862
2857
2863
2858 </table>
2864 </table>
2859 </div>
2865 </div>
2860 </div>
2866 </div>
2861
2867
2862
2868
2863
2869
2864 </body>
2870 </body>
2865 </html>
2871 </html>
2866
2872
2867
2873
2868 $ get-with-headers.py $LOCALIP:$HGPORT "help/add"
2874 $ get-with-headers.py $LOCALIP:$HGPORT "help/add"
2869 200 Script output follows
2875 200 Script output follows
2870
2876
2871 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2877 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2872 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2878 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2873 <head>
2879 <head>
2874 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2880 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2875 <meta name="robots" content="index, nofollow" />
2881 <meta name="robots" content="index, nofollow" />
2876 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2882 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2877 <script type="text/javascript" src="/static/mercurial.js"></script>
2883 <script type="text/javascript" src="/static/mercurial.js"></script>
2878
2884
2879 <title>Help: add</title>
2885 <title>Help: add</title>
2880 </head>
2886 </head>
2881 <body>
2887 <body>
2882
2888
2883 <div class="container">
2889 <div class="container">
2884 <div class="menu">
2890 <div class="menu">
2885 <div class="logo">
2891 <div class="logo">
2886 <a href="https://mercurial-scm.org/">
2892 <a href="https://mercurial-scm.org/">
2887 <img src="/static/hglogo.png" alt="mercurial" /></a>
2893 <img src="/static/hglogo.png" alt="mercurial" /></a>
2888 </div>
2894 </div>
2889 <ul>
2895 <ul>
2890 <li><a href="/shortlog">log</a></li>
2896 <li><a href="/shortlog">log</a></li>
2891 <li><a href="/graph">graph</a></li>
2897 <li><a href="/graph">graph</a></li>
2892 <li><a href="/tags">tags</a></li>
2898 <li><a href="/tags">tags</a></li>
2893 <li><a href="/bookmarks">bookmarks</a></li>
2899 <li><a href="/bookmarks">bookmarks</a></li>
2894 <li><a href="/branches">branches</a></li>
2900 <li><a href="/branches">branches</a></li>
2895 </ul>
2901 </ul>
2896 <ul>
2902 <ul>
2897 <li class="active"><a href="/help">help</a></li>
2903 <li class="active"><a href="/help">help</a></li>
2898 </ul>
2904 </ul>
2899 </div>
2905 </div>
2900
2906
2901 <div class="main">
2907 <div class="main">
2902 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2908 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2903 <h3>Help: add</h3>
2909 <h3>Help: add</h3>
2904
2910
2905 <form class="search" action="/log">
2911 <form class="search" action="/log">
2906
2912
2907 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2913 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2908 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2914 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2909 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2915 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2910 </form>
2916 </form>
2911 <div id="doc">
2917 <div id="doc">
2912 <p>
2918 <p>
2913 hg add [OPTION]... [FILE]...
2919 hg add [OPTION]... [FILE]...
2914 </p>
2920 </p>
2915 <p>
2921 <p>
2916 add the specified files on the next commit
2922 add the specified files on the next commit
2917 </p>
2923 </p>
2918 <p>
2924 <p>
2919 Schedule files to be version controlled and added to the
2925 Schedule files to be version controlled and added to the
2920 repository.
2926 repository.
2921 </p>
2927 </p>
2922 <p>
2928 <p>
2923 The files will be added to the repository at the next commit. To
2929 The files will be added to the repository at the next commit. To
2924 undo an add before that, see 'hg forget'.
2930 undo an add before that, see 'hg forget'.
2925 </p>
2931 </p>
2926 <p>
2932 <p>
2927 If no names are given, add all files to the repository (except
2933 If no names are given, add all files to the repository (except
2928 files matching &quot;.hgignore&quot;).
2934 files matching &quot;.hgignore&quot;).
2929 </p>
2935 </p>
2930 <p>
2936 <p>
2931 Examples:
2937 Examples:
2932 </p>
2938 </p>
2933 <ul>
2939 <ul>
2934 <li> New (unknown) files are added automatically by 'hg add':
2940 <li> New (unknown) files are added automatically by 'hg add':
2935 <pre>
2941 <pre>
2936 \$ ls (re)
2942 \$ ls (re)
2937 foo.c
2943 foo.c
2938 \$ hg status (re)
2944 \$ hg status (re)
2939 ? foo.c
2945 ? foo.c
2940 \$ hg add (re)
2946 \$ hg add (re)
2941 adding foo.c
2947 adding foo.c
2942 \$ hg status (re)
2948 \$ hg status (re)
2943 A foo.c
2949 A foo.c
2944 </pre>
2950 </pre>
2945 <li> Specific files to be added can be specified:
2951 <li> Specific files to be added can be specified:
2946 <pre>
2952 <pre>
2947 \$ ls (re)
2953 \$ ls (re)
2948 bar.c foo.c
2954 bar.c foo.c
2949 \$ hg status (re)
2955 \$ hg status (re)
2950 ? bar.c
2956 ? bar.c
2951 ? foo.c
2957 ? foo.c
2952 \$ hg add bar.c (re)
2958 \$ hg add bar.c (re)
2953 \$ hg status (re)
2959 \$ hg status (re)
2954 A bar.c
2960 A bar.c
2955 ? foo.c
2961 ? foo.c
2956 </pre>
2962 </pre>
2957 </ul>
2963 </ul>
2958 <p>
2964 <p>
2959 Returns 0 if all files are successfully added.
2965 Returns 0 if all files are successfully added.
2960 </p>
2966 </p>
2961 <p>
2967 <p>
2962 options ([+] can be repeated):
2968 options ([+] can be repeated):
2963 </p>
2969 </p>
2964 <table>
2970 <table>
2965 <tr><td>-I</td>
2971 <tr><td>-I</td>
2966 <td>--include PATTERN [+]</td>
2972 <td>--include PATTERN [+]</td>
2967 <td>include names matching the given patterns</td></tr>
2973 <td>include names matching the given patterns</td></tr>
2968 <tr><td>-X</td>
2974 <tr><td>-X</td>
2969 <td>--exclude PATTERN [+]</td>
2975 <td>--exclude PATTERN [+]</td>
2970 <td>exclude names matching the given patterns</td></tr>
2976 <td>exclude names matching the given patterns</td></tr>
2971 <tr><td>-S</td>
2977 <tr><td>-S</td>
2972 <td>--subrepos</td>
2978 <td>--subrepos</td>
2973 <td>recurse into subrepositories</td></tr>
2979 <td>recurse into subrepositories</td></tr>
2974 <tr><td>-n</td>
2980 <tr><td>-n</td>
2975 <td>--dry-run</td>
2981 <td>--dry-run</td>
2976 <td>do not perform actions, just print output</td></tr>
2982 <td>do not perform actions, just print output</td></tr>
2977 </table>
2983 </table>
2978 <p>
2984 <p>
2979 global options ([+] can be repeated):
2985 global options ([+] can be repeated):
2980 </p>
2986 </p>
2981 <table>
2987 <table>
2982 <tr><td>-R</td>
2988 <tr><td>-R</td>
2983 <td>--repository REPO</td>
2989 <td>--repository REPO</td>
2984 <td>repository root directory or name of overlay bundle file</td></tr>
2990 <td>repository root directory or name of overlay bundle file</td></tr>
2985 <tr><td></td>
2991 <tr><td></td>
2986 <td>--cwd DIR</td>
2992 <td>--cwd DIR</td>
2987 <td>change working directory</td></tr>
2993 <td>change working directory</td></tr>
2988 <tr><td>-y</td>
2994 <tr><td>-y</td>
2989 <td>--noninteractive</td>
2995 <td>--noninteractive</td>
2990 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2996 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2991 <tr><td>-q</td>
2997 <tr><td>-q</td>
2992 <td>--quiet</td>
2998 <td>--quiet</td>
2993 <td>suppress output</td></tr>
2999 <td>suppress output</td></tr>
2994 <tr><td>-v</td>
3000 <tr><td>-v</td>
2995 <td>--verbose</td>
3001 <td>--verbose</td>
2996 <td>enable additional output</td></tr>
3002 <td>enable additional output</td></tr>
2997 <tr><td></td>
3003 <tr><td></td>
2998 <td>--color TYPE</td>
3004 <td>--color TYPE</td>
2999 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
3005 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
3000 <tr><td></td>
3006 <tr><td></td>
3001 <td>--config CONFIG [+]</td>
3007 <td>--config CONFIG [+]</td>
3002 <td>set/override config option (use 'section.name=value')</td></tr>
3008 <td>set/override config option (use 'section.name=value')</td></tr>
3003 <tr><td></td>
3009 <tr><td></td>
3004 <td>--debug</td>
3010 <td>--debug</td>
3005 <td>enable debugging output</td></tr>
3011 <td>enable debugging output</td></tr>
3006 <tr><td></td>
3012 <tr><td></td>
3007 <td>--debugger</td>
3013 <td>--debugger</td>
3008 <td>start debugger</td></tr>
3014 <td>start debugger</td></tr>
3009 <tr><td></td>
3015 <tr><td></td>
3010 <td>--encoding ENCODE</td>
3016 <td>--encoding ENCODE</td>
3011 <td>set the charset encoding (default: ascii)</td></tr>
3017 <td>set the charset encoding (default: ascii)</td></tr>
3012 <tr><td></td>
3018 <tr><td></td>
3013 <td>--encodingmode MODE</td>
3019 <td>--encodingmode MODE</td>
3014 <td>set the charset encoding mode (default: strict)</td></tr>
3020 <td>set the charset encoding mode (default: strict)</td></tr>
3015 <tr><td></td>
3021 <tr><td></td>
3016 <td>--traceback</td>
3022 <td>--traceback</td>
3017 <td>always print a traceback on exception</td></tr>
3023 <td>always print a traceback on exception</td></tr>
3018 <tr><td></td>
3024 <tr><td></td>
3019 <td>--time</td>
3025 <td>--time</td>
3020 <td>time how long the command takes</td></tr>
3026 <td>time how long the command takes</td></tr>
3021 <tr><td></td>
3027 <tr><td></td>
3022 <td>--profile</td>
3028 <td>--profile</td>
3023 <td>print command execution profile</td></tr>
3029 <td>print command execution profile</td></tr>
3024 <tr><td></td>
3030 <tr><td></td>
3025 <td>--version</td>
3031 <td>--version</td>
3026 <td>output version information and exit</td></tr>
3032 <td>output version information and exit</td></tr>
3027 <tr><td>-h</td>
3033 <tr><td>-h</td>
3028 <td>--help</td>
3034 <td>--help</td>
3029 <td>display help and exit</td></tr>
3035 <td>display help and exit</td></tr>
3030 <tr><td></td>
3036 <tr><td></td>
3031 <td>--hidden</td>
3037 <td>--hidden</td>
3032 <td>consider hidden changesets</td></tr>
3038 <td>consider hidden changesets</td></tr>
3033 <tr><td></td>
3039 <tr><td></td>
3034 <td>--pager TYPE</td>
3040 <td>--pager TYPE</td>
3035 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
3041 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
3036 </table>
3042 </table>
3037
3043
3038 </div>
3044 </div>
3039 </div>
3045 </div>
3040 </div>
3046 </div>
3041
3047
3042
3048
3043
3049
3044 </body>
3050 </body>
3045 </html>
3051 </html>
3046
3052
3047
3053
3048 $ get-with-headers.py $LOCALIP:$HGPORT "help/remove"
3054 $ get-with-headers.py $LOCALIP:$HGPORT "help/remove"
3049 200 Script output follows
3055 200 Script output follows
3050
3056
3051 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3057 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3052 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3058 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3053 <head>
3059 <head>
3054 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3060 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3055 <meta name="robots" content="index, nofollow" />
3061 <meta name="robots" content="index, nofollow" />
3056 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3062 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3057 <script type="text/javascript" src="/static/mercurial.js"></script>
3063 <script type="text/javascript" src="/static/mercurial.js"></script>
3058
3064
3059 <title>Help: remove</title>
3065 <title>Help: remove</title>
3060 </head>
3066 </head>
3061 <body>
3067 <body>
3062
3068
3063 <div class="container">
3069 <div class="container">
3064 <div class="menu">
3070 <div class="menu">
3065 <div class="logo">
3071 <div class="logo">
3066 <a href="https://mercurial-scm.org/">
3072 <a href="https://mercurial-scm.org/">
3067 <img src="/static/hglogo.png" alt="mercurial" /></a>
3073 <img src="/static/hglogo.png" alt="mercurial" /></a>
3068 </div>
3074 </div>
3069 <ul>
3075 <ul>
3070 <li><a href="/shortlog">log</a></li>
3076 <li><a href="/shortlog">log</a></li>
3071 <li><a href="/graph">graph</a></li>
3077 <li><a href="/graph">graph</a></li>
3072 <li><a href="/tags">tags</a></li>
3078 <li><a href="/tags">tags</a></li>
3073 <li><a href="/bookmarks">bookmarks</a></li>
3079 <li><a href="/bookmarks">bookmarks</a></li>
3074 <li><a href="/branches">branches</a></li>
3080 <li><a href="/branches">branches</a></li>
3075 </ul>
3081 </ul>
3076 <ul>
3082 <ul>
3077 <li class="active"><a href="/help">help</a></li>
3083 <li class="active"><a href="/help">help</a></li>
3078 </ul>
3084 </ul>
3079 </div>
3085 </div>
3080
3086
3081 <div class="main">
3087 <div class="main">
3082 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3088 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3083 <h3>Help: remove</h3>
3089 <h3>Help: remove</h3>
3084
3090
3085 <form class="search" action="/log">
3091 <form class="search" action="/log">
3086
3092
3087 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3093 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3088 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3094 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3089 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3095 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3090 </form>
3096 </form>
3091 <div id="doc">
3097 <div id="doc">
3092 <p>
3098 <p>
3093 hg remove [OPTION]... FILE...
3099 hg remove [OPTION]... FILE...
3094 </p>
3100 </p>
3095 <p>
3101 <p>
3096 aliases: rm
3102 aliases: rm
3097 </p>
3103 </p>
3098 <p>
3104 <p>
3099 remove the specified files on the next commit
3105 remove the specified files on the next commit
3100 </p>
3106 </p>
3101 <p>
3107 <p>
3102 Schedule the indicated files for removal from the current branch.
3108 Schedule the indicated files for removal from the current branch.
3103 </p>
3109 </p>
3104 <p>
3110 <p>
3105 This command schedules the files to be removed at the next commit.
3111 This command schedules the files to be removed at the next commit.
3106 To undo a remove before that, see 'hg revert'. To undo added
3112 To undo a remove before that, see 'hg revert'. To undo added
3107 files, see 'hg forget'.
3113 files, see 'hg forget'.
3108 </p>
3114 </p>
3109 <p>
3115 <p>
3110 -A/--after can be used to remove only files that have already
3116 -A/--after can be used to remove only files that have already
3111 been deleted, -f/--force can be used to force deletion, and -Af
3117 been deleted, -f/--force can be used to force deletion, and -Af
3112 can be used to remove files from the next revision without
3118 can be used to remove files from the next revision without
3113 deleting them from the working directory.
3119 deleting them from the working directory.
3114 </p>
3120 </p>
3115 <p>
3121 <p>
3116 The following table details the behavior of remove for different
3122 The following table details the behavior of remove for different
3117 file states (columns) and option combinations (rows). The file
3123 file states (columns) and option combinations (rows). The file
3118 states are Added [A], Clean [C], Modified [M] and Missing [!]
3124 states are Added [A], Clean [C], Modified [M] and Missing [!]
3119 (as reported by 'hg status'). The actions are Warn, Remove
3125 (as reported by 'hg status'). The actions are Warn, Remove
3120 (from branch) and Delete (from disk):
3126 (from branch) and Delete (from disk):
3121 </p>
3127 </p>
3122 <table>
3128 <table>
3123 <tr><td>opt/state</td>
3129 <tr><td>opt/state</td>
3124 <td>A</td>
3130 <td>A</td>
3125 <td>C</td>
3131 <td>C</td>
3126 <td>M</td>
3132 <td>M</td>
3127 <td>!</td></tr>
3133 <td>!</td></tr>
3128 <tr><td>none</td>
3134 <tr><td>none</td>
3129 <td>W</td>
3135 <td>W</td>
3130 <td>RD</td>
3136 <td>RD</td>
3131 <td>W</td>
3137 <td>W</td>
3132 <td>R</td></tr>
3138 <td>R</td></tr>
3133 <tr><td>-f</td>
3139 <tr><td>-f</td>
3134 <td>R</td>
3140 <td>R</td>
3135 <td>RD</td>
3141 <td>RD</td>
3136 <td>RD</td>
3142 <td>RD</td>
3137 <td>R</td></tr>
3143 <td>R</td></tr>
3138 <tr><td>-A</td>
3144 <tr><td>-A</td>
3139 <td>W</td>
3145 <td>W</td>
3140 <td>W</td>
3146 <td>W</td>
3141 <td>W</td>
3147 <td>W</td>
3142 <td>R</td></tr>
3148 <td>R</td></tr>
3143 <tr><td>-Af</td>
3149 <tr><td>-Af</td>
3144 <td>R</td>
3150 <td>R</td>
3145 <td>R</td>
3151 <td>R</td>
3146 <td>R</td>
3152 <td>R</td>
3147 <td>R</td></tr>
3153 <td>R</td></tr>
3148 </table>
3154 </table>
3149 <p>
3155 <p>
3150 <b>Note:</b>
3156 <b>Note:</b>
3151 </p>
3157 </p>
3152 <p>
3158 <p>
3153 'hg remove' never deletes files in Added [A] state from the
3159 'hg remove' never deletes files in Added [A] state from the
3154 working directory, not even if &quot;--force&quot; is specified.
3160 working directory, not even if &quot;--force&quot; is specified.
3155 </p>
3161 </p>
3156 <p>
3162 <p>
3157 Returns 0 on success, 1 if any warnings encountered.
3163 Returns 0 on success, 1 if any warnings encountered.
3158 </p>
3164 </p>
3159 <p>
3165 <p>
3160 options ([+] can be repeated):
3166 options ([+] can be repeated):
3161 </p>
3167 </p>
3162 <table>
3168 <table>
3163 <tr><td>-A</td>
3169 <tr><td>-A</td>
3164 <td>--after</td>
3170 <td>--after</td>
3165 <td>record delete for missing files</td></tr>
3171 <td>record delete for missing files</td></tr>
3166 <tr><td>-f</td>
3172 <tr><td>-f</td>
3167 <td>--force</td>
3173 <td>--force</td>
3168 <td>forget added files, delete modified files</td></tr>
3174 <td>forget added files, delete modified files</td></tr>
3169 <tr><td>-S</td>
3175 <tr><td>-S</td>
3170 <td>--subrepos</td>
3176 <td>--subrepos</td>
3171 <td>recurse into subrepositories</td></tr>
3177 <td>recurse into subrepositories</td></tr>
3172 <tr><td>-I</td>
3178 <tr><td>-I</td>
3173 <td>--include PATTERN [+]</td>
3179 <td>--include PATTERN [+]</td>
3174 <td>include names matching the given patterns</td></tr>
3180 <td>include names matching the given patterns</td></tr>
3175 <tr><td>-X</td>
3181 <tr><td>-X</td>
3176 <td>--exclude PATTERN [+]</td>
3182 <td>--exclude PATTERN [+]</td>
3177 <td>exclude names matching the given patterns</td></tr>
3183 <td>exclude names matching the given patterns</td></tr>
3178 <tr><td>-n</td>
3184 <tr><td>-n</td>
3179 <td>--dry-run</td>
3185 <td>--dry-run</td>
3180 <td>do not perform actions, just print output</td></tr>
3186 <td>do not perform actions, just print output</td></tr>
3181 </table>
3187 </table>
3182 <p>
3188 <p>
3183 global options ([+] can be repeated):
3189 global options ([+] can be repeated):
3184 </p>
3190 </p>
3185 <table>
3191 <table>
3186 <tr><td>-R</td>
3192 <tr><td>-R</td>
3187 <td>--repository REPO</td>
3193 <td>--repository REPO</td>
3188 <td>repository root directory or name of overlay bundle file</td></tr>
3194 <td>repository root directory or name of overlay bundle file</td></tr>
3189 <tr><td></td>
3195 <tr><td></td>
3190 <td>--cwd DIR</td>
3196 <td>--cwd DIR</td>
3191 <td>change working directory</td></tr>
3197 <td>change working directory</td></tr>
3192 <tr><td>-y</td>
3198 <tr><td>-y</td>
3193 <td>--noninteractive</td>
3199 <td>--noninteractive</td>
3194 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
3200 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
3195 <tr><td>-q</td>
3201 <tr><td>-q</td>
3196 <td>--quiet</td>
3202 <td>--quiet</td>
3197 <td>suppress output</td></tr>
3203 <td>suppress output</td></tr>
3198 <tr><td>-v</td>
3204 <tr><td>-v</td>
3199 <td>--verbose</td>
3205 <td>--verbose</td>
3200 <td>enable additional output</td></tr>
3206 <td>enable additional output</td></tr>
3201 <tr><td></td>
3207 <tr><td></td>
3202 <td>--color TYPE</td>
3208 <td>--color TYPE</td>
3203 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
3209 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
3204 <tr><td></td>
3210 <tr><td></td>
3205 <td>--config CONFIG [+]</td>
3211 <td>--config CONFIG [+]</td>
3206 <td>set/override config option (use 'section.name=value')</td></tr>
3212 <td>set/override config option (use 'section.name=value')</td></tr>
3207 <tr><td></td>
3213 <tr><td></td>
3208 <td>--debug</td>
3214 <td>--debug</td>
3209 <td>enable debugging output</td></tr>
3215 <td>enable debugging output</td></tr>
3210 <tr><td></td>
3216 <tr><td></td>
3211 <td>--debugger</td>
3217 <td>--debugger</td>
3212 <td>start debugger</td></tr>
3218 <td>start debugger</td></tr>
3213 <tr><td></td>
3219 <tr><td></td>
3214 <td>--encoding ENCODE</td>
3220 <td>--encoding ENCODE</td>
3215 <td>set the charset encoding (default: ascii)</td></tr>
3221 <td>set the charset encoding (default: ascii)</td></tr>
3216 <tr><td></td>
3222 <tr><td></td>
3217 <td>--encodingmode MODE</td>
3223 <td>--encodingmode MODE</td>
3218 <td>set the charset encoding mode (default: strict)</td></tr>
3224 <td>set the charset encoding mode (default: strict)</td></tr>
3219 <tr><td></td>
3225 <tr><td></td>
3220 <td>--traceback</td>
3226 <td>--traceback</td>
3221 <td>always print a traceback on exception</td></tr>
3227 <td>always print a traceback on exception</td></tr>
3222 <tr><td></td>
3228 <tr><td></td>
3223 <td>--time</td>
3229 <td>--time</td>
3224 <td>time how long the command takes</td></tr>
3230 <td>time how long the command takes</td></tr>
3225 <tr><td></td>
3231 <tr><td></td>
3226 <td>--profile</td>
3232 <td>--profile</td>
3227 <td>print command execution profile</td></tr>
3233 <td>print command execution profile</td></tr>
3228 <tr><td></td>
3234 <tr><td></td>
3229 <td>--version</td>
3235 <td>--version</td>
3230 <td>output version information and exit</td></tr>
3236 <td>output version information and exit</td></tr>
3231 <tr><td>-h</td>
3237 <tr><td>-h</td>
3232 <td>--help</td>
3238 <td>--help</td>
3233 <td>display help and exit</td></tr>
3239 <td>display help and exit</td></tr>
3234 <tr><td></td>
3240 <tr><td></td>
3235 <td>--hidden</td>
3241 <td>--hidden</td>
3236 <td>consider hidden changesets</td></tr>
3242 <td>consider hidden changesets</td></tr>
3237 <tr><td></td>
3243 <tr><td></td>
3238 <td>--pager TYPE</td>
3244 <td>--pager TYPE</td>
3239 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
3245 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
3240 </table>
3246 </table>
3241
3247
3242 </div>
3248 </div>
3243 </div>
3249 </div>
3244 </div>
3250 </div>
3245
3251
3246
3252
3247
3253
3248 </body>
3254 </body>
3249 </html>
3255 </html>
3250
3256
3251
3257
3252 $ get-with-headers.py $LOCALIP:$HGPORT "help/dates"
3258 $ get-with-headers.py $LOCALIP:$HGPORT "help/dates"
3253 200 Script output follows
3259 200 Script output follows
3254
3260
3255 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3261 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3256 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3262 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3257 <head>
3263 <head>
3258 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3264 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3259 <meta name="robots" content="index, nofollow" />
3265 <meta name="robots" content="index, nofollow" />
3260 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3266 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3261 <script type="text/javascript" src="/static/mercurial.js"></script>
3267 <script type="text/javascript" src="/static/mercurial.js"></script>
3262
3268
3263 <title>Help: dates</title>
3269 <title>Help: dates</title>
3264 </head>
3270 </head>
3265 <body>
3271 <body>
3266
3272
3267 <div class="container">
3273 <div class="container">
3268 <div class="menu">
3274 <div class="menu">
3269 <div class="logo">
3275 <div class="logo">
3270 <a href="https://mercurial-scm.org/">
3276 <a href="https://mercurial-scm.org/">
3271 <img src="/static/hglogo.png" alt="mercurial" /></a>
3277 <img src="/static/hglogo.png" alt="mercurial" /></a>
3272 </div>
3278 </div>
3273 <ul>
3279 <ul>
3274 <li><a href="/shortlog">log</a></li>
3280 <li><a href="/shortlog">log</a></li>
3275 <li><a href="/graph">graph</a></li>
3281 <li><a href="/graph">graph</a></li>
3276 <li><a href="/tags">tags</a></li>
3282 <li><a href="/tags">tags</a></li>
3277 <li><a href="/bookmarks">bookmarks</a></li>
3283 <li><a href="/bookmarks">bookmarks</a></li>
3278 <li><a href="/branches">branches</a></li>
3284 <li><a href="/branches">branches</a></li>
3279 </ul>
3285 </ul>
3280 <ul>
3286 <ul>
3281 <li class="active"><a href="/help">help</a></li>
3287 <li class="active"><a href="/help">help</a></li>
3282 </ul>
3288 </ul>
3283 </div>
3289 </div>
3284
3290
3285 <div class="main">
3291 <div class="main">
3286 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3292 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3287 <h3>Help: dates</h3>
3293 <h3>Help: dates</h3>
3288
3294
3289 <form class="search" action="/log">
3295 <form class="search" action="/log">
3290
3296
3291 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3297 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3292 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3298 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3293 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3299 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3294 </form>
3300 </form>
3295 <div id="doc">
3301 <div id="doc">
3296 <h1>Date Formats</h1>
3302 <h1>Date Formats</h1>
3297 <p>
3303 <p>
3298 Some commands allow the user to specify a date, e.g.:
3304 Some commands allow the user to specify a date, e.g.:
3299 </p>
3305 </p>
3300 <ul>
3306 <ul>
3301 <li> backout, commit, import, tag: Specify the commit date.
3307 <li> backout, commit, import, tag: Specify the commit date.
3302 <li> log, revert, update: Select revision(s) by date.
3308 <li> log, revert, update: Select revision(s) by date.
3303 </ul>
3309 </ul>
3304 <p>
3310 <p>
3305 Many date formats are valid. Here are some examples:
3311 Many date formats are valid. Here are some examples:
3306 </p>
3312 </p>
3307 <ul>
3313 <ul>
3308 <li> &quot;Wed Dec 6 13:18:29 2006&quot; (local timezone assumed)
3314 <li> &quot;Wed Dec 6 13:18:29 2006&quot; (local timezone assumed)
3309 <li> &quot;Dec 6 13:18 -0600&quot; (year assumed, time offset provided)
3315 <li> &quot;Dec 6 13:18 -0600&quot; (year assumed, time offset provided)
3310 <li> &quot;Dec 6 13:18 UTC&quot; (UTC and GMT are aliases for +0000)
3316 <li> &quot;Dec 6 13:18 UTC&quot; (UTC and GMT are aliases for +0000)
3311 <li> &quot;Dec 6&quot; (midnight)
3317 <li> &quot;Dec 6&quot; (midnight)
3312 <li> &quot;13:18&quot; (today assumed)
3318 <li> &quot;13:18&quot; (today assumed)
3313 <li> &quot;3:39&quot; (3:39AM assumed)
3319 <li> &quot;3:39&quot; (3:39AM assumed)
3314 <li> &quot;3:39pm&quot; (15:39)
3320 <li> &quot;3:39pm&quot; (15:39)
3315 <li> &quot;2006-12-06 13:18:29&quot; (ISO 8601 format)
3321 <li> &quot;2006-12-06 13:18:29&quot; (ISO 8601 format)
3316 <li> &quot;2006-12-6 13:18&quot;
3322 <li> &quot;2006-12-6 13:18&quot;
3317 <li> &quot;2006-12-6&quot;
3323 <li> &quot;2006-12-6&quot;
3318 <li> &quot;12-6&quot;
3324 <li> &quot;12-6&quot;
3319 <li> &quot;12/6&quot;
3325 <li> &quot;12/6&quot;
3320 <li> &quot;12/6/6&quot; (Dec 6 2006)
3326 <li> &quot;12/6/6&quot; (Dec 6 2006)
3321 <li> &quot;today&quot; (midnight)
3327 <li> &quot;today&quot; (midnight)
3322 <li> &quot;yesterday&quot; (midnight)
3328 <li> &quot;yesterday&quot; (midnight)
3323 <li> &quot;now&quot; - right now
3329 <li> &quot;now&quot; - right now
3324 </ul>
3330 </ul>
3325 <p>
3331 <p>
3326 Lastly, there is Mercurial's internal format:
3332 Lastly, there is Mercurial's internal format:
3327 </p>
3333 </p>
3328 <ul>
3334 <ul>
3329 <li> &quot;1165411109 0&quot; (Wed Dec 6 13:18:29 2006 UTC)
3335 <li> &quot;1165411109 0&quot; (Wed Dec 6 13:18:29 2006 UTC)
3330 </ul>
3336 </ul>
3331 <p>
3337 <p>
3332 This is the internal representation format for dates. The first number
3338 This is the internal representation format for dates. The first number
3333 is the number of seconds since the epoch (1970-01-01 00:00 UTC). The
3339 is the number of seconds since the epoch (1970-01-01 00:00 UTC). The
3334 second is the offset of the local timezone, in seconds west of UTC
3340 second is the offset of the local timezone, in seconds west of UTC
3335 (negative if the timezone is east of UTC).
3341 (negative if the timezone is east of UTC).
3336 </p>
3342 </p>
3337 <p>
3343 <p>
3338 The log command also accepts date ranges:
3344 The log command also accepts date ranges:
3339 </p>
3345 </p>
3340 <ul>
3346 <ul>
3341 <li> &quot;&lt;DATE&quot; - at or before a given date/time
3347 <li> &quot;&lt;DATE&quot; - at or before a given date/time
3342 <li> &quot;&gt;DATE&quot; - on or after a given date/time
3348 <li> &quot;&gt;DATE&quot; - on or after a given date/time
3343 <li> &quot;DATE to DATE&quot; - a date range, inclusive
3349 <li> &quot;DATE to DATE&quot; - a date range, inclusive
3344 <li> &quot;-DAYS&quot; - within a given number of days from today
3350 <li> &quot;-DAYS&quot; - within a given number of days from today
3345 </ul>
3351 </ul>
3346
3352
3347 </div>
3353 </div>
3348 </div>
3354 </div>
3349 </div>
3355 </div>
3350
3356
3351
3357
3352
3358
3353 </body>
3359 </body>
3354 </html>
3360 </html>
3355
3361
3356
3362
3357 $ get-with-headers.py $LOCALIP:$HGPORT "help/pager"
3363 $ get-with-headers.py $LOCALIP:$HGPORT "help/pager"
3358 200 Script output follows
3364 200 Script output follows
3359
3365
3360 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3366 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3361 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3367 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3362 <head>
3368 <head>
3363 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3369 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3364 <meta name="robots" content="index, nofollow" />
3370 <meta name="robots" content="index, nofollow" />
3365 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3371 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3366 <script type="text/javascript" src="/static/mercurial.js"></script>
3372 <script type="text/javascript" src="/static/mercurial.js"></script>
3367
3373
3368 <title>Help: pager</title>
3374 <title>Help: pager</title>
3369 </head>
3375 </head>
3370 <body>
3376 <body>
3371
3377
3372 <div class="container">
3378 <div class="container">
3373 <div class="menu">
3379 <div class="menu">
3374 <div class="logo">
3380 <div class="logo">
3375 <a href="https://mercurial-scm.org/">
3381 <a href="https://mercurial-scm.org/">
3376 <img src="/static/hglogo.png" alt="mercurial" /></a>
3382 <img src="/static/hglogo.png" alt="mercurial" /></a>
3377 </div>
3383 </div>
3378 <ul>
3384 <ul>
3379 <li><a href="/shortlog">log</a></li>
3385 <li><a href="/shortlog">log</a></li>
3380 <li><a href="/graph">graph</a></li>
3386 <li><a href="/graph">graph</a></li>
3381 <li><a href="/tags">tags</a></li>
3387 <li><a href="/tags">tags</a></li>
3382 <li><a href="/bookmarks">bookmarks</a></li>
3388 <li><a href="/bookmarks">bookmarks</a></li>
3383 <li><a href="/branches">branches</a></li>
3389 <li><a href="/branches">branches</a></li>
3384 </ul>
3390 </ul>
3385 <ul>
3391 <ul>
3386 <li class="active"><a href="/help">help</a></li>
3392 <li class="active"><a href="/help">help</a></li>
3387 </ul>
3393 </ul>
3388 </div>
3394 </div>
3389
3395
3390 <div class="main">
3396 <div class="main">
3391 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3397 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3392 <h3>Help: pager</h3>
3398 <h3>Help: pager</h3>
3393
3399
3394 <form class="search" action="/log">
3400 <form class="search" action="/log">
3395
3401
3396 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3402 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3397 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3403 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3398 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3404 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3399 </form>
3405 </form>
3400 <div id="doc">
3406 <div id="doc">
3401 <h1>Pager Support</h1>
3407 <h1>Pager Support</h1>
3402 <p>
3408 <p>
3403 Some Mercurial commands can produce a lot of output, and Mercurial will
3409 Some Mercurial commands can produce a lot of output, and Mercurial will
3404 attempt to use a pager to make those commands more pleasant.
3410 attempt to use a pager to make those commands more pleasant.
3405 </p>
3411 </p>
3406 <p>
3412 <p>
3407 To set the pager that should be used, set the application variable:
3413 To set the pager that should be used, set the application variable:
3408 </p>
3414 </p>
3409 <pre>
3415 <pre>
3410 [pager]
3416 [pager]
3411 pager = less -FRX
3417 pager = less -FRX
3412 </pre>
3418 </pre>
3413 <p>
3419 <p>
3414 If no pager is set in the user or repository configuration, Mercurial uses the
3420 If no pager is set in the user or repository configuration, Mercurial uses the
3415 environment variable $PAGER. If $PAGER is not set, pager.pager from the default
3421 environment variable $PAGER. If $PAGER is not set, pager.pager from the default
3416 or system configuration is used. If none of these are set, a default pager will
3422 or system configuration is used. If none of these are set, a default pager will
3417 be used, typically 'less' on Unix and 'more' on Windows.
3423 be used, typically 'less' on Unix and 'more' on Windows.
3418 </p>
3424 </p>
3419 <p>
3425 <p>
3420 You can disable the pager for certain commands by adding them to the
3426 You can disable the pager for certain commands by adding them to the
3421 pager.ignore list:
3427 pager.ignore list:
3422 </p>
3428 </p>
3423 <pre>
3429 <pre>
3424 [pager]
3430 [pager]
3425 ignore = version, help, update
3431 ignore = version, help, update
3426 </pre>
3432 </pre>
3427 <p>
3433 <p>
3428 To ignore global commands like 'hg version' or 'hg help', you have
3434 To ignore global commands like 'hg version' or 'hg help', you have
3429 to specify them in your user configuration file.
3435 to specify them in your user configuration file.
3430 </p>
3436 </p>
3431 <p>
3437 <p>
3432 To control whether the pager is used at all for an individual command,
3438 To control whether the pager is used at all for an individual command,
3433 you can use --pager=&lt;value&gt;:
3439 you can use --pager=&lt;value&gt;:
3434 </p>
3440 </p>
3435 <ul>
3441 <ul>
3436 <li> use as needed: 'auto'.
3442 <li> use as needed: 'auto'.
3437 <li> require the pager: 'yes' or 'on'.
3443 <li> require the pager: 'yes' or 'on'.
3438 <li> suppress the pager: 'no' or 'off' (any unrecognized value will also work).
3444 <li> suppress the pager: 'no' or 'off' (any unrecognized value will also work).
3439 </ul>
3445 </ul>
3440 <p>
3446 <p>
3441 To globally turn off all attempts to use a pager, set:
3447 To globally turn off all attempts to use a pager, set:
3442 </p>
3448 </p>
3443 <pre>
3449 <pre>
3444 [ui]
3450 [ui]
3445 paginate = never
3451 paginate = never
3446 </pre>
3452 </pre>
3447 <p>
3453 <p>
3448 which will prevent the pager from running.
3454 which will prevent the pager from running.
3449 </p>
3455 </p>
3450
3456
3451 </div>
3457 </div>
3452 </div>
3458 </div>
3453 </div>
3459 </div>
3454
3460
3455
3461
3456
3462
3457 </body>
3463 </body>
3458 </html>
3464 </html>
3459
3465
3460
3466
3461 Sub-topic indexes rendered properly
3467 Sub-topic indexes rendered properly
3462
3468
3463 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals"
3469 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals"
3464 200 Script output follows
3470 200 Script output follows
3465
3471
3466 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3472 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3467 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3473 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3468 <head>
3474 <head>
3469 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3475 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3470 <meta name="robots" content="index, nofollow" />
3476 <meta name="robots" content="index, nofollow" />
3471 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3477 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3472 <script type="text/javascript" src="/static/mercurial.js"></script>
3478 <script type="text/javascript" src="/static/mercurial.js"></script>
3473
3479
3474 <title>Help: internals</title>
3480 <title>Help: internals</title>
3475 </head>
3481 </head>
3476 <body>
3482 <body>
3477
3483
3478 <div class="container">
3484 <div class="container">
3479 <div class="menu">
3485 <div class="menu">
3480 <div class="logo">
3486 <div class="logo">
3481 <a href="https://mercurial-scm.org/">
3487 <a href="https://mercurial-scm.org/">
3482 <img src="/static/hglogo.png" alt="mercurial" /></a>
3488 <img src="/static/hglogo.png" alt="mercurial" /></a>
3483 </div>
3489 </div>
3484 <ul>
3490 <ul>
3485 <li><a href="/shortlog">log</a></li>
3491 <li><a href="/shortlog">log</a></li>
3486 <li><a href="/graph">graph</a></li>
3492 <li><a href="/graph">graph</a></li>
3487 <li><a href="/tags">tags</a></li>
3493 <li><a href="/tags">tags</a></li>
3488 <li><a href="/bookmarks">bookmarks</a></li>
3494 <li><a href="/bookmarks">bookmarks</a></li>
3489 <li><a href="/branches">branches</a></li>
3495 <li><a href="/branches">branches</a></li>
3490 </ul>
3496 </ul>
3491 <ul>
3497 <ul>
3492 <li><a href="/help">help</a></li>
3498 <li><a href="/help">help</a></li>
3493 </ul>
3499 </ul>
3494 </div>
3500 </div>
3495
3501
3496 <div class="main">
3502 <div class="main">
3497 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3503 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3498
3504
3499 <form class="search" action="/log">
3505 <form class="search" action="/log">
3500
3506
3501 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3507 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3502 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3508 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3503 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3509 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3504 </form>
3510 </form>
3505 <table class="bigtable">
3511 <table class="bigtable">
3506 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
3512 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
3507
3513
3508 <tr><td>
3514 <tr><td>
3509 <a href="/help/internals.bid-merge">
3515 <a href="/help/internals.bid-merge">
3510 bid-merge
3516 bid-merge
3511 </a>
3517 </a>
3512 </td><td>
3518 </td><td>
3513 Bid Merge Algorithm
3519 Bid Merge Algorithm
3514 </td></tr>
3520 </td></tr>
3515 <tr><td>
3521 <tr><td>
3516 <a href="/help/internals.bundle2">
3522 <a href="/help/internals.bundle2">
3517 bundle2
3523 bundle2
3518 </a>
3524 </a>
3519 </td><td>
3525 </td><td>
3520 Bundle2
3526 Bundle2
3521 </td></tr>
3527 </td></tr>
3522 <tr><td>
3528 <tr><td>
3523 <a href="/help/internals.bundles">
3529 <a href="/help/internals.bundles">
3524 bundles
3530 bundles
3525 </a>
3531 </a>
3526 </td><td>
3532 </td><td>
3527 Bundles
3533 Bundles
3528 </td></tr>
3534 </td></tr>
3529 <tr><td>
3535 <tr><td>
3530 <a href="/help/internals.cbor">
3536 <a href="/help/internals.cbor">
3531 cbor
3537 cbor
3532 </a>
3538 </a>
3533 </td><td>
3539 </td><td>
3534 CBOR
3540 CBOR
3535 </td></tr>
3541 </td></tr>
3536 <tr><td>
3542 <tr><td>
3537 <a href="/help/internals.censor">
3543 <a href="/help/internals.censor">
3538 censor
3544 censor
3539 </a>
3545 </a>
3540 </td><td>
3546 </td><td>
3541 Censor
3547 Censor
3542 </td></tr>
3548 </td></tr>
3543 <tr><td>
3549 <tr><td>
3544 <a href="/help/internals.changegroups">
3550 <a href="/help/internals.changegroups">
3545 changegroups
3551 changegroups
3546 </a>
3552 </a>
3547 </td><td>
3553 </td><td>
3548 Changegroups
3554 Changegroups
3549 </td></tr>
3555 </td></tr>
3550 <tr><td>
3556 <tr><td>
3551 <a href="/help/internals.config">
3557 <a href="/help/internals.config">
3552 config
3558 config
3553 </a>
3559 </a>
3554 </td><td>
3560 </td><td>
3555 Config Registrar
3561 Config Registrar
3556 </td></tr>
3562 </td></tr>
3557 <tr><td>
3563 <tr><td>
3558 <a href="/help/internals.extensions">
3564 <a href="/help/internals.extensions">
3559 extensions
3565 extensions
3560 </a>
3566 </a>
3561 </td><td>
3567 </td><td>
3562 Extension API
3568 Extension API
3563 </td></tr>
3569 </td></tr>
3564 <tr><td>
3570 <tr><td>
3565 <a href="/help/internals.mergestate">
3571 <a href="/help/internals.mergestate">
3566 mergestate
3572 mergestate
3567 </a>
3573 </a>
3568 </td><td>
3574 </td><td>
3569 Mergestate
3575 Mergestate
3570 </td></tr>
3576 </td></tr>
3571 <tr><td>
3577 <tr><td>
3572 <a href="/help/internals.requirements">
3578 <a href="/help/internals.requirements">
3573 requirements
3579 requirements
3574 </a>
3580 </a>
3575 </td><td>
3581 </td><td>
3576 Repository Requirements
3582 Repository Requirements
3577 </td></tr>
3583 </td></tr>
3578 <tr><td>
3584 <tr><td>
3579 <a href="/help/internals.revlogs">
3585 <a href="/help/internals.revlogs">
3580 revlogs
3586 revlogs
3581 </a>
3587 </a>
3582 </td><td>
3588 </td><td>
3583 Revision Logs
3589 Revision Logs
3584 </td></tr>
3590 </td></tr>
3585 <tr><td>
3591 <tr><td>
3586 <a href="/help/internals.wireprotocol">
3592 <a href="/help/internals.wireprotocol">
3587 wireprotocol
3593 wireprotocol
3588 </a>
3594 </a>
3589 </td><td>
3595 </td><td>
3590 Wire Protocol
3596 Wire Protocol
3591 </td></tr>
3597 </td></tr>
3592 <tr><td>
3598 <tr><td>
3593 <a href="/help/internals.wireprotocolrpc">
3599 <a href="/help/internals.wireprotocolrpc">
3594 wireprotocolrpc
3600 wireprotocolrpc
3595 </a>
3601 </a>
3596 </td><td>
3602 </td><td>
3597 Wire Protocol RPC
3603 Wire Protocol RPC
3598 </td></tr>
3604 </td></tr>
3599 <tr><td>
3605 <tr><td>
3600 <a href="/help/internals.wireprotocolv2">
3606 <a href="/help/internals.wireprotocolv2">
3601 wireprotocolv2
3607 wireprotocolv2
3602 </a>
3608 </a>
3603 </td><td>
3609 </td><td>
3604 Wire Protocol Version 2
3610 Wire Protocol Version 2
3605 </td></tr>
3611 </td></tr>
3606
3612
3607
3613
3608
3614
3609
3615
3610
3616
3611 </table>
3617 </table>
3612 </div>
3618 </div>
3613 </div>
3619 </div>
3614
3620
3615
3621
3616
3622
3617 </body>
3623 </body>
3618 </html>
3624 </html>
3619
3625
3620
3626
3621 Sub-topic topics rendered properly
3627 Sub-topic topics rendered properly
3622
3628
3623 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals.changegroups"
3629 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals.changegroups"
3624 200 Script output follows
3630 200 Script output follows
3625
3631
3626 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3632 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3627 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3633 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3628 <head>
3634 <head>
3629 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3635 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3630 <meta name="robots" content="index, nofollow" />
3636 <meta name="robots" content="index, nofollow" />
3631 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3637 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3632 <script type="text/javascript" src="/static/mercurial.js"></script>
3638 <script type="text/javascript" src="/static/mercurial.js"></script>
3633
3639
3634 <title>Help: internals.changegroups</title>
3640 <title>Help: internals.changegroups</title>
3635 </head>
3641 </head>
3636 <body>
3642 <body>
3637
3643
3638 <div class="container">
3644 <div class="container">
3639 <div class="menu">
3645 <div class="menu">
3640 <div class="logo">
3646 <div class="logo">
3641 <a href="https://mercurial-scm.org/">
3647 <a href="https://mercurial-scm.org/">
3642 <img src="/static/hglogo.png" alt="mercurial" /></a>
3648 <img src="/static/hglogo.png" alt="mercurial" /></a>
3643 </div>
3649 </div>
3644 <ul>
3650 <ul>
3645 <li><a href="/shortlog">log</a></li>
3651 <li><a href="/shortlog">log</a></li>
3646 <li><a href="/graph">graph</a></li>
3652 <li><a href="/graph">graph</a></li>
3647 <li><a href="/tags">tags</a></li>
3653 <li><a href="/tags">tags</a></li>
3648 <li><a href="/bookmarks">bookmarks</a></li>
3654 <li><a href="/bookmarks">bookmarks</a></li>
3649 <li><a href="/branches">branches</a></li>
3655 <li><a href="/branches">branches</a></li>
3650 </ul>
3656 </ul>
3651 <ul>
3657 <ul>
3652 <li class="active"><a href="/help">help</a></li>
3658 <li class="active"><a href="/help">help</a></li>
3653 </ul>
3659 </ul>
3654 </div>
3660 </div>
3655
3661
3656 <div class="main">
3662 <div class="main">
3657 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3663 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3658 <h3>Help: internals.changegroups</h3>
3664 <h3>Help: internals.changegroups</h3>
3659
3665
3660 <form class="search" action="/log">
3666 <form class="search" action="/log">
3661
3667
3662 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3668 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3663 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3669 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3664 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3670 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3665 </form>
3671 </form>
3666 <div id="doc">
3672 <div id="doc">
3667 <h1>Changegroups</h1>
3673 <h1>Changegroups</h1>
3668 <p>
3674 <p>
3669 Changegroups are representations of repository revlog data, specifically
3675 Changegroups are representations of repository revlog data, specifically
3670 the changelog data, root/flat manifest data, treemanifest data, and
3676 the changelog data, root/flat manifest data, treemanifest data, and
3671 filelogs.
3677 filelogs.
3672 </p>
3678 </p>
3673 <p>
3679 <p>
3674 There are 4 versions of changegroups: &quot;1&quot;, &quot;2&quot;, &quot;3&quot; and &quot;4&quot;. From a
3680 There are 4 versions of changegroups: &quot;1&quot;, &quot;2&quot;, &quot;3&quot; and &quot;4&quot;. From a
3675 high-level, versions &quot;1&quot; and &quot;2&quot; are almost exactly the same, with the
3681 high-level, versions &quot;1&quot; and &quot;2&quot; are almost exactly the same, with the
3676 only difference being an additional item in the *delta header*. Version
3682 only difference being an additional item in the *delta header*. Version
3677 &quot;3&quot; adds support for storage flags in the *delta header* and optionally
3683 &quot;3&quot; adds support for storage flags in the *delta header* and optionally
3678 exchanging treemanifests (enabled by setting an option on the
3684 exchanging treemanifests (enabled by setting an option on the
3679 &quot;changegroup&quot; part in the bundle2). Version &quot;4&quot; adds support for exchanging
3685 &quot;changegroup&quot; part in the bundle2). Version &quot;4&quot; adds support for exchanging
3680 sidedata (additional revision metadata not part of the digest).
3686 sidedata (additional revision metadata not part of the digest).
3681 </p>
3687 </p>
3682 <p>
3688 <p>
3683 Changegroups when not exchanging treemanifests consist of 3 logical
3689 Changegroups when not exchanging treemanifests consist of 3 logical
3684 segments:
3690 segments:
3685 </p>
3691 </p>
3686 <pre>
3692 <pre>
3687 +---------------------------------+
3693 +---------------------------------+
3688 | | | |
3694 | | | |
3689 | changeset | manifest | filelogs |
3695 | changeset | manifest | filelogs |
3690 | | | |
3696 | | | |
3691 | | | |
3697 | | | |
3692 +---------------------------------+
3698 +---------------------------------+
3693 </pre>
3699 </pre>
3694 <p>
3700 <p>
3695 When exchanging treemanifests, there are 4 logical segments:
3701 When exchanging treemanifests, there are 4 logical segments:
3696 </p>
3702 </p>
3697 <pre>
3703 <pre>
3698 +-------------------------------------------------+
3704 +-------------------------------------------------+
3699 | | | | |
3705 | | | | |
3700 | changeset | root | treemanifests | filelogs |
3706 | changeset | root | treemanifests | filelogs |
3701 | | manifest | | |
3707 | | manifest | | |
3702 | | | | |
3708 | | | | |
3703 +-------------------------------------------------+
3709 +-------------------------------------------------+
3704 </pre>
3710 </pre>
3705 <p>
3711 <p>
3706 The principle building block of each segment is a *chunk*. A *chunk*
3712 The principle building block of each segment is a *chunk*. A *chunk*
3707 is a framed piece of data:
3713 is a framed piece of data:
3708 </p>
3714 </p>
3709 <pre>
3715 <pre>
3710 +---------------------------------------+
3716 +---------------------------------------+
3711 | | |
3717 | | |
3712 | length | data |
3718 | length | data |
3713 | (4 bytes) | (&lt;length - 4&gt; bytes) |
3719 | (4 bytes) | (&lt;length - 4&gt; bytes) |
3714 | | |
3720 | | |
3715 +---------------------------------------+
3721 +---------------------------------------+
3716 </pre>
3722 </pre>
3717 <p>
3723 <p>
3718 All integers are big-endian signed integers. Each chunk starts with a 32-bit
3724 All integers are big-endian signed integers. Each chunk starts with a 32-bit
3719 integer indicating the length of the entire chunk (including the length field
3725 integer indicating the length of the entire chunk (including the length field
3720 itself).
3726 itself).
3721 </p>
3727 </p>
3722 <p>
3728 <p>
3723 There is a special case chunk that has a value of 0 for the length
3729 There is a special case chunk that has a value of 0 for the length
3724 (&quot;0x00000000&quot;). We call this an *empty chunk*.
3730 (&quot;0x00000000&quot;). We call this an *empty chunk*.
3725 </p>
3731 </p>
3726 <h2>Delta Groups</h2>
3732 <h2>Delta Groups</h2>
3727 <p>
3733 <p>
3728 A *delta group* expresses the content of a revlog as a series of deltas,
3734 A *delta group* expresses the content of a revlog as a series of deltas,
3729 or patches against previous revisions.
3735 or patches against previous revisions.
3730 </p>
3736 </p>
3731 <p>
3737 <p>
3732 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
3738 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
3733 to signal the end of the delta group:
3739 to signal the end of the delta group:
3734 </p>
3740 </p>
3735 <pre>
3741 <pre>
3736 +------------------------------------------------------------------------+
3742 +------------------------------------------------------------------------+
3737 | | | | | |
3743 | | | | | |
3738 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
3744 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
3739 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
3745 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
3740 | | | | | |
3746 | | | | | |
3741 +------------------------------------------------------------------------+
3747 +------------------------------------------------------------------------+
3742 </pre>
3748 </pre>
3743 <p>
3749 <p>
3744 Each *chunk*'s data consists of the following:
3750 Each *chunk*'s data consists of the following:
3745 </p>
3751 </p>
3746 <pre>
3752 <pre>
3747 +---------------------------------------+
3753 +---------------------------------------+
3748 | | |
3754 | | |
3749 | delta header | delta data |
3755 | delta header | delta data |
3750 | (various by version) | (various) |
3756 | (various by version) | (various) |
3751 | | |
3757 | | |
3752 +---------------------------------------+
3758 +---------------------------------------+
3753 </pre>
3759 </pre>
3754 <p>
3760 <p>
3755 The *delta data* is a series of *delta*s that describe a diff from an existing
3761 The *delta data* is a series of *delta*s that describe a diff from an existing
3756 entry (either that the recipient already has, or previously specified in the
3762 entry (either that the recipient already has, or previously specified in the
3757 bundle/changegroup).
3763 bundle/changegroup).
3758 </p>
3764 </p>
3759 <p>
3765 <p>
3760 The *delta header* is different between versions &quot;1&quot;, &quot;2&quot;, &quot;3&quot; and &quot;4&quot;
3766 The *delta header* is different between versions &quot;1&quot;, &quot;2&quot;, &quot;3&quot; and &quot;4&quot;
3761 of the changegroup format.
3767 of the changegroup format.
3762 </p>
3768 </p>
3763 <p>
3769 <p>
3764 Version 1 (headerlen=80):
3770 Version 1 (headerlen=80):
3765 </p>
3771 </p>
3766 <pre>
3772 <pre>
3767 +------------------------------------------------------+
3773 +------------------------------------------------------+
3768 | | | | |
3774 | | | | |
3769 | node | p1 node | p2 node | link node |
3775 | node | p1 node | p2 node | link node |
3770 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3776 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3771 | | | | |
3777 | | | | |
3772 +------------------------------------------------------+
3778 +------------------------------------------------------+
3773 </pre>
3779 </pre>
3774 <p>
3780 <p>
3775 Version 2 (headerlen=100):
3781 Version 2 (headerlen=100):
3776 </p>
3782 </p>
3777 <pre>
3783 <pre>
3778 +------------------------------------------------------------------+
3784 +------------------------------------------------------------------+
3779 | | | | | |
3785 | | | | | |
3780 | node | p1 node | p2 node | base node | link node |
3786 | node | p1 node | p2 node | base node | link node |
3781 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3787 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3782 | | | | | |
3788 | | | | | |
3783 +------------------------------------------------------------------+
3789 +------------------------------------------------------------------+
3784 </pre>
3790 </pre>
3785 <p>
3791 <p>
3786 Version 3 (headerlen=102):
3792 Version 3 (headerlen=102):
3787 </p>
3793 </p>
3788 <pre>
3794 <pre>
3789 +------------------------------------------------------------------------------+
3795 +------------------------------------------------------------------------------+
3790 | | | | | | |
3796 | | | | | | |
3791 | node | p1 node | p2 node | base node | link node | flags |
3797 | node | p1 node | p2 node | base node | link node | flags |
3792 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
3798 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
3793 | | | | | | |
3799 | | | | | | |
3794 +------------------------------------------------------------------------------+
3800 +------------------------------------------------------------------------------+
3795 </pre>
3801 </pre>
3796 <p>
3802 <p>
3797 Version 4 (headerlen=103):
3803 Version 4 (headerlen=103):
3798 </p>
3804 </p>
3799 <pre>
3805 <pre>
3800 +------------------------------------------------------------------------------+----------+
3806 +------------------------------------------------------------------------------+----------+
3801 | | | | | | | |
3807 | | | | | | | |
3802 | node | p1 node | p2 node | base node | link node | flags | pflags |
3808 | node | p1 node | p2 node | base node | link node | flags | pflags |
3803 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) | (1 byte) |
3809 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) | (1 byte) |
3804 | | | | | | | |
3810 | | | | | | | |
3805 +------------------------------------------------------------------------------+----------+
3811 +------------------------------------------------------------------------------+----------+
3806 </pre>
3812 </pre>
3807 <p>
3813 <p>
3808 The *delta data* consists of &quot;chunklen - 4 - headerlen&quot; bytes, which contain a
3814 The *delta data* consists of &quot;chunklen - 4 - headerlen&quot; bytes, which contain a
3809 series of *delta*s, densely packed (no separators). These deltas describe a diff
3815 series of *delta*s, densely packed (no separators). These deltas describe a diff
3810 from an existing entry (either that the recipient already has, or previously
3816 from an existing entry (either that the recipient already has, or previously
3811 specified in the bundle/changegroup). The format is described more fully in
3817 specified in the bundle/changegroup). The format is described more fully in
3812 &quot;hg help internals.bdiff&quot;, but briefly:
3818 &quot;hg help internals.bdiff&quot;, but briefly:
3813 </p>
3819 </p>
3814 <pre>
3820 <pre>
3815 +---------------------------------------------------------------+
3821 +---------------------------------------------------------------+
3816 | | | | |
3822 | | | | |
3817 | start offset | end offset | new length | content |
3823 | start offset | end offset | new length | content |
3818 | (4 bytes) | (4 bytes) | (4 bytes) | (&lt;new length&gt; bytes) |
3824 | (4 bytes) | (4 bytes) | (4 bytes) | (&lt;new length&gt; bytes) |
3819 | | | | |
3825 | | | | |
3820 +---------------------------------------------------------------+
3826 +---------------------------------------------------------------+
3821 </pre>
3827 </pre>
3822 <p>
3828 <p>
3823 Please note that the length field in the delta data does *not* include itself.
3829 Please note that the length field in the delta data does *not* include itself.
3824 </p>
3830 </p>
3825 <p>
3831 <p>
3826 In version 1, the delta is always applied against the previous node from
3832 In version 1, the delta is always applied against the previous node from
3827 the changegroup or the first parent if this is the first entry in the
3833 the changegroup or the first parent if this is the first entry in the
3828 changegroup.
3834 changegroup.
3829 </p>
3835 </p>
3830 <p>
3836 <p>
3831 In version 2 and up, the delta base node is encoded in the entry in the
3837 In version 2 and up, the delta base node is encoded in the entry in the
3832 changegroup. This allows the delta to be expressed against any parent,
3838 changegroup. This allows the delta to be expressed against any parent,
3833 which can result in smaller deltas and more efficient encoding of data.
3839 which can result in smaller deltas and more efficient encoding of data.
3834 </p>
3840 </p>
3835 <p>
3841 <p>
3836 The *flags* field holds bitwise flags affecting the processing of revision
3842 The *flags* field holds bitwise flags affecting the processing of revision
3837 data. The following flags are defined:
3843 data. The following flags are defined:
3838 </p>
3844 </p>
3839 <dl>
3845 <dl>
3840 <dt>32768
3846 <dt>32768
3841 <dd>Censored revision. The revision's fulltext has been replaced by censor metadata. May only occur on file revisions.
3847 <dd>Censored revision. The revision's fulltext has been replaced by censor metadata. May only occur on file revisions.
3842 <dt>16384
3848 <dt>16384
3843 <dd>Ellipsis revision. Revision hash does not match data (likely due to rewritten parents).
3849 <dd>Ellipsis revision. Revision hash does not match data (likely due to rewritten parents).
3844 <dt>8192
3850 <dt>8192
3845 <dd>Externally stored. The revision fulltext contains &quot;key:value&quot; &quot;\n&quot; delimited metadata defining an object stored elsewhere. Used by the LFS extension.
3851 <dd>Externally stored. The revision fulltext contains &quot;key:value&quot; &quot;\n&quot; delimited metadata defining an object stored elsewhere. Used by the LFS extension.
3846 <dt>4096
3852 <dt>4096
3847 <dd>Contains copy information. This revision changes files in a way that could affect copy tracing. This does *not* affect changegroup handling, but is relevant for other parts of Mercurial.
3853 <dd>Contains copy information. This revision changes files in a way that could affect copy tracing. This does *not* affect changegroup handling, but is relevant for other parts of Mercurial.
3848 </dl>
3854 </dl>
3849 <p>
3855 <p>
3850 For historical reasons, the integer values are identical to revlog version 1
3856 For historical reasons, the integer values are identical to revlog version 1
3851 per-revision storage flags and correspond to bits being set in this 2-byte
3857 per-revision storage flags and correspond to bits being set in this 2-byte
3852 field. Bits were allocated starting from the most-significant bit, hence the
3858 field. Bits were allocated starting from the most-significant bit, hence the
3853 reverse ordering and allocation of these flags.
3859 reverse ordering and allocation of these flags.
3854 </p>
3860 </p>
3855 <p>
3861 <p>
3856 The *pflags* (protocol flags) field holds bitwise flags affecting the protocol
3862 The *pflags* (protocol flags) field holds bitwise flags affecting the protocol
3857 itself. They are first in the header since they may affect the handling of the
3863 itself. They are first in the header since they may affect the handling of the
3858 rest of the fields in a future version. They are defined as such:
3864 rest of the fields in a future version. They are defined as such:
3859 </p>
3865 </p>
3860 <dl>
3866 <dl>
3861 <dt>1 indicates whether to read a chunk of sidedata (of variable length) right
3867 <dt>1 indicates whether to read a chunk of sidedata (of variable length) right
3862 <dd>after the revision flags.
3868 <dd>after the revision flags.
3863 </dl>
3869 </dl>
3864 <h2>Changeset Segment</h2>
3870 <h2>Changeset Segment</h2>
3865 <p>
3871 <p>
3866 The *changeset segment* consists of a single *delta group* holding
3872 The *changeset segment* consists of a single *delta group* holding
3867 changelog data. The *empty chunk* at the end of the *delta group* denotes
3873 changelog data. The *empty chunk* at the end of the *delta group* denotes
3868 the boundary to the *manifest segment*.
3874 the boundary to the *manifest segment*.
3869 </p>
3875 </p>
3870 <h2>Manifest Segment</h2>
3876 <h2>Manifest Segment</h2>
3871 <p>
3877 <p>
3872 The *manifest segment* consists of a single *delta group* holding manifest
3878 The *manifest segment* consists of a single *delta group* holding manifest
3873 data. If treemanifests are in use, it contains only the manifest for the
3879 data. If treemanifests are in use, it contains only the manifest for the
3874 root directory of the repository. Otherwise, it contains the entire
3880 root directory of the repository. Otherwise, it contains the entire
3875 manifest data. The *empty chunk* at the end of the *delta group* denotes
3881 manifest data. The *empty chunk* at the end of the *delta group* denotes
3876 the boundary to the next segment (either the *treemanifests segment* or the
3882 the boundary to the next segment (either the *treemanifests segment* or the
3877 *filelogs segment*, depending on version and the request options).
3883 *filelogs segment*, depending on version and the request options).
3878 </p>
3884 </p>
3879 <h3>Treemanifests Segment</h3>
3885 <h3>Treemanifests Segment</h3>
3880 <p>
3886 <p>
3881 The *treemanifests segment* only exists in changegroup version &quot;3&quot; and &quot;4&quot;,
3887 The *treemanifests segment* only exists in changegroup version &quot;3&quot; and &quot;4&quot;,
3882 and only if the 'treemanifest' param is part of the bundle2 changegroup part
3888 and only if the 'treemanifest' param is part of the bundle2 changegroup part
3883 (it is not possible to use changegroup version 3 or 4 outside of bundle2).
3889 (it is not possible to use changegroup version 3 or 4 outside of bundle2).
3884 Aside from the filenames in the *treemanifests segment* containing a
3890 Aside from the filenames in the *treemanifests segment* containing a
3885 trailing &quot;/&quot; character, it behaves identically to the *filelogs segment*
3891 trailing &quot;/&quot; character, it behaves identically to the *filelogs segment*
3886 (see below). The final sub-segment is followed by an *empty chunk* (logically,
3892 (see below). The final sub-segment is followed by an *empty chunk* (logically,
3887 a sub-segment with filename size 0). This denotes the boundary to the
3893 a sub-segment with filename size 0). This denotes the boundary to the
3888 *filelogs segment*.
3894 *filelogs segment*.
3889 </p>
3895 </p>
3890 <h2>Filelogs Segment</h2>
3896 <h2>Filelogs Segment</h2>
3891 <p>
3897 <p>
3892 The *filelogs segment* consists of multiple sub-segments, each
3898 The *filelogs segment* consists of multiple sub-segments, each
3893 corresponding to an individual file whose data is being described:
3899 corresponding to an individual file whose data is being described:
3894 </p>
3900 </p>
3895 <pre>
3901 <pre>
3896 +--------------------------------------------------+
3902 +--------------------------------------------------+
3897 | | | | | |
3903 | | | | | |
3898 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
3904 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
3899 | | | | | (4 bytes) |
3905 | | | | | (4 bytes) |
3900 | | | | | |
3906 | | | | | |
3901 +--------------------------------------------------+
3907 +--------------------------------------------------+
3902 </pre>
3908 </pre>
3903 <p>
3909 <p>
3904 The final filelog sub-segment is followed by an *empty chunk* (logically,
3910 The final filelog sub-segment is followed by an *empty chunk* (logically,
3905 a sub-segment with filename size 0). This denotes the end of the segment
3911 a sub-segment with filename size 0). This denotes the end of the segment
3906 and of the overall changegroup.
3912 and of the overall changegroup.
3907 </p>
3913 </p>
3908 <p>
3914 <p>
3909 Each filelog sub-segment consists of the following:
3915 Each filelog sub-segment consists of the following:
3910 </p>
3916 </p>
3911 <pre>
3917 <pre>
3912 +------------------------------------------------------+
3918 +------------------------------------------------------+
3913 | | | |
3919 | | | |
3914 | filename length | filename | delta group |
3920 | filename length | filename | delta group |
3915 | (4 bytes) | (&lt;length - 4&gt; bytes) | (various) |
3921 | (4 bytes) | (&lt;length - 4&gt; bytes) | (various) |
3916 | | | |
3922 | | | |
3917 +------------------------------------------------------+
3923 +------------------------------------------------------+
3918 </pre>
3924 </pre>
3919 <p>
3925 <p>
3920 That is, a *chunk* consisting of the filename (not terminated or padded)
3926 That is, a *chunk* consisting of the filename (not terminated or padded)
3921 followed by N chunks constituting the *delta group* for this file. The
3927 followed by N chunks constituting the *delta group* for this file. The
3922 *empty chunk* at the end of each *delta group* denotes the boundary to the
3928 *empty chunk* at the end of each *delta group* denotes the boundary to the
3923 next filelog sub-segment.
3929 next filelog sub-segment.
3924 </p>
3930 </p>
3925
3931
3926 </div>
3932 </div>
3927 </div>
3933 </div>
3928 </div>
3934 </div>
3929
3935
3930
3936
3931
3937
3932 </body>
3938 </body>
3933 </html>
3939 </html>
3934
3940
3935
3941
3936 $ get-with-headers.py 127.0.0.1:$HGPORT "help/unknowntopic"
3942 $ get-with-headers.py 127.0.0.1:$HGPORT "help/unknowntopic"
3937 404 Not Found
3943 404 Not Found
3938
3944
3939 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3945 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3940 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3946 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3941 <head>
3947 <head>
3942 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3948 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3943 <meta name="robots" content="index, nofollow" />
3949 <meta name="robots" content="index, nofollow" />
3944 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3950 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3945 <script type="text/javascript" src="/static/mercurial.js"></script>
3951 <script type="text/javascript" src="/static/mercurial.js"></script>
3946
3952
3947 <title>test: error</title>
3953 <title>test: error</title>
3948 </head>
3954 </head>
3949 <body>
3955 <body>
3950
3956
3951 <div class="container">
3957 <div class="container">
3952 <div class="menu">
3958 <div class="menu">
3953 <div class="logo">
3959 <div class="logo">
3954 <a href="https://mercurial-scm.org/">
3960 <a href="https://mercurial-scm.org/">
3955 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
3961 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
3956 </div>
3962 </div>
3957 <ul>
3963 <ul>
3958 <li><a href="/shortlog">log</a></li>
3964 <li><a href="/shortlog">log</a></li>
3959 <li><a href="/graph">graph</a></li>
3965 <li><a href="/graph">graph</a></li>
3960 <li><a href="/tags">tags</a></li>
3966 <li><a href="/tags">tags</a></li>
3961 <li><a href="/bookmarks">bookmarks</a></li>
3967 <li><a href="/bookmarks">bookmarks</a></li>
3962 <li><a href="/branches">branches</a></li>
3968 <li><a href="/branches">branches</a></li>
3963 </ul>
3969 </ul>
3964 <ul>
3970 <ul>
3965 <li><a href="/help">help</a></li>
3971 <li><a href="/help">help</a></li>
3966 </ul>
3972 </ul>
3967 </div>
3973 </div>
3968
3974
3969 <div class="main">
3975 <div class="main">
3970
3976
3971 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3977 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3972 <h3>error</h3>
3978 <h3>error</h3>
3973
3979
3974
3980
3975 <form class="search" action="/log">
3981 <form class="search" action="/log">
3976
3982
3977 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3983 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3978 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3984 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3979 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3985 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3980 </form>
3986 </form>
3981
3987
3982 <div class="description">
3988 <div class="description">
3983 <p>
3989 <p>
3984 An error occurred while processing your request:
3990 An error occurred while processing your request:
3985 </p>
3991 </p>
3986 <p>
3992 <p>
3987 Not Found
3993 Not Found
3988 </p>
3994 </p>
3989 </div>
3995 </div>
3990 </div>
3996 </div>
3991 </div>
3997 </div>
3992
3998
3993
3999
3994
4000
3995 </body>
4001 </body>
3996 </html>
4002 </html>
3997
4003
3998 [1]
4004 [1]
3999
4005
4000 $ killdaemons.py
4006 $ killdaemons.py
4001
4007
4002 #endif
4008 #endif
General Comments 0
You need to be logged in to leave comments. Login now