##// END OF EJS Templates
fancyopts: fix rendering of customopt defaults in help text...
Daniel Ploch -
r37109:979c8ce9 default
parent child Browse files
Show More
@@ -1,685 +1,689 b''
1 # help.py - help data for mercurial
1 # help.py - help data for mercurial
2 #
2 #
3 # Copyright 2006 Matt Mackall <mpm@selenic.com>
3 # Copyright 2006 Matt Mackall <mpm@selenic.com>
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
6 # GNU General Public License version 2 or any later version.
7
7
8 from __future__ import absolute_import
8 from __future__ import absolute_import
9
9
10 import itertools
10 import itertools
11 import os
11 import os
12 import textwrap
12 import textwrap
13
13
14 from .i18n import (
14 from .i18n import (
15 _,
15 _,
16 gettext,
16 gettext,
17 )
17 )
18 from . import (
18 from . import (
19 cmdutil,
19 cmdutil,
20 encoding,
20 encoding,
21 error,
21 error,
22 extensions,
22 extensions,
23 fancyopts,
23 filemerge,
24 filemerge,
24 fileset,
25 fileset,
25 minirst,
26 minirst,
26 pycompat,
27 pycompat,
27 revset,
28 revset,
28 templatefilters,
29 templatefilters,
29 templatefuncs,
30 templatefuncs,
30 templatekw,
31 templatekw,
31 util,
32 util,
32 )
33 )
33 from .hgweb import (
34 from .hgweb import (
34 webcommands,
35 webcommands,
35 )
36 )
36
37
37 _exclkeywords = {
38 _exclkeywords = {
38 "(ADVANCED)",
39 "(ADVANCED)",
39 "(DEPRECATED)",
40 "(DEPRECATED)",
40 "(EXPERIMENTAL)",
41 "(EXPERIMENTAL)",
41 # i18n: "(ADVANCED)" is a keyword, must be translated consistently
42 # i18n: "(ADVANCED)" is a keyword, must be translated consistently
42 _("(ADVANCED)"),
43 _("(ADVANCED)"),
43 # i18n: "(DEPRECATED)" is a keyword, must be translated consistently
44 # i18n: "(DEPRECATED)" is a keyword, must be translated consistently
44 _("(DEPRECATED)"),
45 _("(DEPRECATED)"),
45 # i18n: "(EXPERIMENTAL)" is a keyword, must be translated consistently
46 # i18n: "(EXPERIMENTAL)" is a keyword, must be translated consistently
46 _("(EXPERIMENTAL)"),
47 _("(EXPERIMENTAL)"),
47 }
48 }
48
49
49 def listexts(header, exts, indent=1, showdeprecated=False):
50 def listexts(header, exts, indent=1, showdeprecated=False):
50 '''return a text listing of the given extensions'''
51 '''return a text listing of the given extensions'''
51 rst = []
52 rst = []
52 if exts:
53 if exts:
53 for name, desc in sorted(exts.iteritems()):
54 for name, desc in sorted(exts.iteritems()):
54 if not showdeprecated and any(w in desc for w in _exclkeywords):
55 if not showdeprecated and any(w in desc for w in _exclkeywords):
55 continue
56 continue
56 rst.append('%s:%s: %s\n' % (' ' * indent, name, desc))
57 rst.append('%s:%s: %s\n' % (' ' * indent, name, desc))
57 if rst:
58 if rst:
58 rst.insert(0, '\n%s\n\n' % header)
59 rst.insert(0, '\n%s\n\n' % header)
59 return rst
60 return rst
60
61
61 def extshelp(ui):
62 def extshelp(ui):
62 rst = loaddoc('extensions')(ui).splitlines(True)
63 rst = loaddoc('extensions')(ui).splitlines(True)
63 rst.extend(listexts(
64 rst.extend(listexts(
64 _('enabled extensions:'), extensions.enabled(), showdeprecated=True))
65 _('enabled extensions:'), extensions.enabled(), showdeprecated=True))
65 rst.extend(listexts(_('disabled extensions:'), extensions.disabled(),
66 rst.extend(listexts(_('disabled extensions:'), extensions.disabled(),
66 showdeprecated=ui.verbose))
67 showdeprecated=ui.verbose))
67 doc = ''.join(rst)
68 doc = ''.join(rst)
68 return doc
69 return doc
69
70
70 def optrst(header, options, verbose):
71 def optrst(header, options, verbose):
71 data = []
72 data = []
72 multioccur = False
73 multioccur = False
73 for option in options:
74 for option in options:
74 if len(option) == 5:
75 if len(option) == 5:
75 shortopt, longopt, default, desc, optlabel = option
76 shortopt, longopt, default, desc, optlabel = option
76 else:
77 else:
77 shortopt, longopt, default, desc = option
78 shortopt, longopt, default, desc = option
78 optlabel = _("VALUE") # default label
79 optlabel = _("VALUE") # default label
79
80
80 if not verbose and any(w in desc for w in _exclkeywords):
81 if not verbose and any(w in desc for w in _exclkeywords):
81 continue
82 continue
82
83
83 so = ''
84 so = ''
84 if shortopt:
85 if shortopt:
85 so = '-' + shortopt
86 so = '-' + shortopt
86 lo = '--' + longopt
87 lo = '--' + longopt
87 if default:
88
89 if isinstance(default, fancyopts.customopt):
90 default = default.defaultvalue
91 if default and not callable(default):
88 # default is of unknown type, and in Python 2 we abused
92 # default is of unknown type, and in Python 2 we abused
89 # the %s-shows-repr property to handle integers etc. To
93 # the %s-shows-repr property to handle integers etc. To
90 # match that behavior on Python 3, we do str(default) and
94 # match that behavior on Python 3, we do str(default) and
91 # then convert it to bytes.
95 # then convert it to bytes.
92 desc += _(" (default: %s)") % pycompat.bytestr(default)
96 desc += _(" (default: %s)") % pycompat.bytestr(default)
93
97
94 if isinstance(default, list):
98 if isinstance(default, list):
95 lo += " %s [+]" % optlabel
99 lo += " %s [+]" % optlabel
96 multioccur = True
100 multioccur = True
97 elif (default is not None) and not isinstance(default, bool):
101 elif (default is not None) and not isinstance(default, bool):
98 lo += " %s" % optlabel
102 lo += " %s" % optlabel
99
103
100 data.append((so, lo, desc))
104 data.append((so, lo, desc))
101
105
102 if multioccur:
106 if multioccur:
103 header += (_(" ([+] can be repeated)"))
107 header += (_(" ([+] can be repeated)"))
104
108
105 rst = ['\n%s:\n\n' % header]
109 rst = ['\n%s:\n\n' % header]
106 rst.extend(minirst.maketable(data, 1))
110 rst.extend(minirst.maketable(data, 1))
107
111
108 return ''.join(rst)
112 return ''.join(rst)
109
113
110 def indicateomitted(rst, omitted, notomitted=None):
114 def indicateomitted(rst, omitted, notomitted=None):
111 rst.append('\n\n.. container:: omitted\n\n %s\n\n' % omitted)
115 rst.append('\n\n.. container:: omitted\n\n %s\n\n' % omitted)
112 if notomitted:
116 if notomitted:
113 rst.append('\n\n.. container:: notomitted\n\n %s\n\n' % notomitted)
117 rst.append('\n\n.. container:: notomitted\n\n %s\n\n' % notomitted)
114
118
115 def filtercmd(ui, cmd, kw, doc):
119 def filtercmd(ui, cmd, kw, doc):
116 if not ui.debugflag and cmd.startswith("debug") and kw != "debug":
120 if not ui.debugflag and cmd.startswith("debug") and kw != "debug":
117 return True
121 return True
118 if not ui.verbose and doc and any(w in doc for w in _exclkeywords):
122 if not ui.verbose and doc and any(w in doc for w in _exclkeywords):
119 return True
123 return True
120 return False
124 return False
121
125
122 def topicmatch(ui, commands, kw):
126 def topicmatch(ui, commands, kw):
123 """Return help topics matching kw.
127 """Return help topics matching kw.
124
128
125 Returns {'section': [(name, summary), ...], ...} where section is
129 Returns {'section': [(name, summary), ...], ...} where section is
126 one of topics, commands, extensions, or extensioncommands.
130 one of topics, commands, extensions, or extensioncommands.
127 """
131 """
128 kw = encoding.lower(kw)
132 kw = encoding.lower(kw)
129 def lowercontains(container):
133 def lowercontains(container):
130 return kw in encoding.lower(container) # translated in helptable
134 return kw in encoding.lower(container) # translated in helptable
131 results = {'topics': [],
135 results = {'topics': [],
132 'commands': [],
136 'commands': [],
133 'extensions': [],
137 'extensions': [],
134 'extensioncommands': [],
138 'extensioncommands': [],
135 }
139 }
136 for names, header, doc in helptable:
140 for names, header, doc in helptable:
137 # Old extensions may use a str as doc.
141 # Old extensions may use a str as doc.
138 if (sum(map(lowercontains, names))
142 if (sum(map(lowercontains, names))
139 or lowercontains(header)
143 or lowercontains(header)
140 or (callable(doc) and lowercontains(doc(ui)))):
144 or (callable(doc) and lowercontains(doc(ui)))):
141 results['topics'].append((names[0], header))
145 results['topics'].append((names[0], header))
142 for cmd, entry in commands.table.iteritems():
146 for cmd, entry in commands.table.iteritems():
143 if len(entry) == 3:
147 if len(entry) == 3:
144 summary = entry[2]
148 summary = entry[2]
145 else:
149 else:
146 summary = ''
150 summary = ''
147 # translate docs *before* searching there
151 # translate docs *before* searching there
148 docs = _(pycompat.getdoc(entry[0])) or ''
152 docs = _(pycompat.getdoc(entry[0])) or ''
149 if kw in cmd or lowercontains(summary) or lowercontains(docs):
153 if kw in cmd or lowercontains(summary) or lowercontains(docs):
150 doclines = docs.splitlines()
154 doclines = docs.splitlines()
151 if doclines:
155 if doclines:
152 summary = doclines[0]
156 summary = doclines[0]
153 cmdname = cmdutil.parsealiases(cmd)[0]
157 cmdname = cmdutil.parsealiases(cmd)[0]
154 if filtercmd(ui, cmdname, kw, docs):
158 if filtercmd(ui, cmdname, kw, docs):
155 continue
159 continue
156 results['commands'].append((cmdname, summary))
160 results['commands'].append((cmdname, summary))
157 for name, docs in itertools.chain(
161 for name, docs in itertools.chain(
158 extensions.enabled(False).iteritems(),
162 extensions.enabled(False).iteritems(),
159 extensions.disabled().iteritems()):
163 extensions.disabled().iteritems()):
160 if not docs:
164 if not docs:
161 continue
165 continue
162 name = name.rpartition('.')[-1]
166 name = name.rpartition('.')[-1]
163 if lowercontains(name) or lowercontains(docs):
167 if lowercontains(name) or lowercontains(docs):
164 # extension docs are already translated
168 # extension docs are already translated
165 results['extensions'].append((name, docs.splitlines()[0]))
169 results['extensions'].append((name, docs.splitlines()[0]))
166 try:
170 try:
167 mod = extensions.load(ui, name, '')
171 mod = extensions.load(ui, name, '')
168 except ImportError:
172 except ImportError:
169 # debug message would be printed in extensions.load()
173 # debug message would be printed in extensions.load()
170 continue
174 continue
171 for cmd, entry in getattr(mod, 'cmdtable', {}).iteritems():
175 for cmd, entry in getattr(mod, 'cmdtable', {}).iteritems():
172 if kw in cmd or (len(entry) > 2 and lowercontains(entry[2])):
176 if kw in cmd or (len(entry) > 2 and lowercontains(entry[2])):
173 cmdname = cmdutil.parsealiases(cmd)[0]
177 cmdname = cmdutil.parsealiases(cmd)[0]
174 cmddoc = pycompat.getdoc(entry[0])
178 cmddoc = pycompat.getdoc(entry[0])
175 if cmddoc:
179 if cmddoc:
176 cmddoc = gettext(cmddoc).splitlines()[0]
180 cmddoc = gettext(cmddoc).splitlines()[0]
177 else:
181 else:
178 cmddoc = _('(no help text available)')
182 cmddoc = _('(no help text available)')
179 if filtercmd(ui, cmdname, kw, cmddoc):
183 if filtercmd(ui, cmdname, kw, cmddoc):
180 continue
184 continue
181 results['extensioncommands'].append((cmdname, cmddoc))
185 results['extensioncommands'].append((cmdname, cmddoc))
182 return results
186 return results
183
187
184 def loaddoc(topic, subdir=None):
188 def loaddoc(topic, subdir=None):
185 """Return a delayed loader for help/topic.txt."""
189 """Return a delayed loader for help/topic.txt."""
186
190
187 def loader(ui):
191 def loader(ui):
188 docdir = os.path.join(util.datapath, 'help')
192 docdir = os.path.join(util.datapath, 'help')
189 if subdir:
193 if subdir:
190 docdir = os.path.join(docdir, subdir)
194 docdir = os.path.join(docdir, subdir)
191 path = os.path.join(docdir, topic + ".txt")
195 path = os.path.join(docdir, topic + ".txt")
192 doc = gettext(util.readfile(path))
196 doc = gettext(util.readfile(path))
193 for rewriter in helphooks.get(topic, []):
197 for rewriter in helphooks.get(topic, []):
194 doc = rewriter(ui, topic, doc)
198 doc = rewriter(ui, topic, doc)
195 return doc
199 return doc
196
200
197 return loader
201 return loader
198
202
199 internalstable = sorted([
203 internalstable = sorted([
200 (['bundle2'], _('Bundle2'),
204 (['bundle2'], _('Bundle2'),
201 loaddoc('bundle2', subdir='internals')),
205 loaddoc('bundle2', subdir='internals')),
202 (['bundles'], _('Bundles'),
206 (['bundles'], _('Bundles'),
203 loaddoc('bundles', subdir='internals')),
207 loaddoc('bundles', subdir='internals')),
204 (['censor'], _('Censor'),
208 (['censor'], _('Censor'),
205 loaddoc('censor', subdir='internals')),
209 loaddoc('censor', subdir='internals')),
206 (['changegroups'], _('Changegroups'),
210 (['changegroups'], _('Changegroups'),
207 loaddoc('changegroups', subdir='internals')),
211 loaddoc('changegroups', subdir='internals')),
208 (['config'], _('Config Registrar'),
212 (['config'], _('Config Registrar'),
209 loaddoc('config', subdir='internals')),
213 loaddoc('config', subdir='internals')),
210 (['requirements'], _('Repository Requirements'),
214 (['requirements'], _('Repository Requirements'),
211 loaddoc('requirements', subdir='internals')),
215 loaddoc('requirements', subdir='internals')),
212 (['revlogs'], _('Revision Logs'),
216 (['revlogs'], _('Revision Logs'),
213 loaddoc('revlogs', subdir='internals')),
217 loaddoc('revlogs', subdir='internals')),
214 (['wireprotocol'], _('Wire Protocol'),
218 (['wireprotocol'], _('Wire Protocol'),
215 loaddoc('wireprotocol', subdir='internals')),
219 loaddoc('wireprotocol', subdir='internals')),
216 ])
220 ])
217
221
218 def internalshelp(ui):
222 def internalshelp(ui):
219 """Generate the index for the "internals" topic."""
223 """Generate the index for the "internals" topic."""
220 lines = ['To access a subtopic, use "hg help internals.{subtopic-name}"\n',
224 lines = ['To access a subtopic, use "hg help internals.{subtopic-name}"\n',
221 '\n']
225 '\n']
222 for names, header, doc in internalstable:
226 for names, header, doc in internalstable:
223 lines.append(' :%s: %s\n' % (names[0], header))
227 lines.append(' :%s: %s\n' % (names[0], header))
224
228
225 return ''.join(lines)
229 return ''.join(lines)
226
230
227 helptable = sorted([
231 helptable = sorted([
228 (['bundlespec'], _("Bundle File Formats"), loaddoc('bundlespec')),
232 (['bundlespec'], _("Bundle File Formats"), loaddoc('bundlespec')),
229 (['color'], _("Colorizing Outputs"), loaddoc('color')),
233 (['color'], _("Colorizing Outputs"), loaddoc('color')),
230 (["config", "hgrc"], _("Configuration Files"), loaddoc('config')),
234 (["config", "hgrc"], _("Configuration Files"), loaddoc('config')),
231 (["dates"], _("Date Formats"), loaddoc('dates')),
235 (["dates"], _("Date Formats"), loaddoc('dates')),
232 (["flags"], _("Command-line flags"), loaddoc('flags')),
236 (["flags"], _("Command-line flags"), loaddoc('flags')),
233 (["patterns"], _("File Name Patterns"), loaddoc('patterns')),
237 (["patterns"], _("File Name Patterns"), loaddoc('patterns')),
234 (['environment', 'env'], _('Environment Variables'),
238 (['environment', 'env'], _('Environment Variables'),
235 loaddoc('environment')),
239 loaddoc('environment')),
236 (['revisions', 'revs', 'revsets', 'revset', 'multirevs', 'mrevs'],
240 (['revisions', 'revs', 'revsets', 'revset', 'multirevs', 'mrevs'],
237 _('Specifying Revisions'), loaddoc('revisions')),
241 _('Specifying Revisions'), loaddoc('revisions')),
238 (['filesets', 'fileset'], _("Specifying File Sets"), loaddoc('filesets')),
242 (['filesets', 'fileset'], _("Specifying File Sets"), loaddoc('filesets')),
239 (['diffs'], _('Diff Formats'), loaddoc('diffs')),
243 (['diffs'], _('Diff Formats'), loaddoc('diffs')),
240 (['merge-tools', 'mergetools', 'mergetool'], _('Merge Tools'),
244 (['merge-tools', 'mergetools', 'mergetool'], _('Merge Tools'),
241 loaddoc('merge-tools')),
245 loaddoc('merge-tools')),
242 (['templating', 'templates', 'template', 'style'], _('Template Usage'),
246 (['templating', 'templates', 'template', 'style'], _('Template Usage'),
243 loaddoc('templates')),
247 loaddoc('templates')),
244 (['urls'], _('URL Paths'), loaddoc('urls')),
248 (['urls'], _('URL Paths'), loaddoc('urls')),
245 (["extensions"], _("Using Additional Features"), extshelp),
249 (["extensions"], _("Using Additional Features"), extshelp),
246 (["subrepos", "subrepo"], _("Subrepositories"), loaddoc('subrepos')),
250 (["subrepos", "subrepo"], _("Subrepositories"), loaddoc('subrepos')),
247 (["hgweb"], _("Configuring hgweb"), loaddoc('hgweb')),
251 (["hgweb"], _("Configuring hgweb"), loaddoc('hgweb')),
248 (["glossary"], _("Glossary"), loaddoc('glossary')),
252 (["glossary"], _("Glossary"), loaddoc('glossary')),
249 (["hgignore", "ignore"], _("Syntax for Mercurial Ignore Files"),
253 (["hgignore", "ignore"], _("Syntax for Mercurial Ignore Files"),
250 loaddoc('hgignore')),
254 loaddoc('hgignore')),
251 (["phases"], _("Working with Phases"), loaddoc('phases')),
255 (["phases"], _("Working with Phases"), loaddoc('phases')),
252 (['scripting'], _('Using Mercurial from scripts and automation'),
256 (['scripting'], _('Using Mercurial from scripts and automation'),
253 loaddoc('scripting')),
257 loaddoc('scripting')),
254 (['internals'], _("Technical implementation topics"),
258 (['internals'], _("Technical implementation topics"),
255 internalshelp),
259 internalshelp),
256 (['pager'], _("Pager Support"), loaddoc('pager')),
260 (['pager'], _("Pager Support"), loaddoc('pager')),
257 ])
261 ])
258
262
259 # Maps topics with sub-topics to a list of their sub-topics.
263 # Maps topics with sub-topics to a list of their sub-topics.
260 subtopics = {
264 subtopics = {
261 'internals': internalstable,
265 'internals': internalstable,
262 }
266 }
263
267
264 # Map topics to lists of callable taking the current topic help and
268 # Map topics to lists of callable taking the current topic help and
265 # returning the updated version
269 # returning the updated version
266 helphooks = {}
270 helphooks = {}
267
271
268 def addtopichook(topic, rewriter):
272 def addtopichook(topic, rewriter):
269 helphooks.setdefault(topic, []).append(rewriter)
273 helphooks.setdefault(topic, []).append(rewriter)
270
274
271 def makeitemsdoc(ui, topic, doc, marker, items, dedent=False):
275 def makeitemsdoc(ui, topic, doc, marker, items, dedent=False):
272 """Extract docstring from the items key to function mapping, build a
276 """Extract docstring from the items key to function mapping, build a
273 single documentation block and use it to overwrite the marker in doc.
277 single documentation block and use it to overwrite the marker in doc.
274 """
278 """
275 entries = []
279 entries = []
276 for name in sorted(items):
280 for name in sorted(items):
277 text = (pycompat.getdoc(items[name]) or '').rstrip()
281 text = (pycompat.getdoc(items[name]) or '').rstrip()
278 if (not text
282 if (not text
279 or not ui.verbose and any(w in text for w in _exclkeywords)):
283 or not ui.verbose and any(w in text for w in _exclkeywords)):
280 continue
284 continue
281 text = gettext(text)
285 text = gettext(text)
282 if dedent:
286 if dedent:
283 # Abuse latin1 to use textwrap.dedent() on bytes.
287 # Abuse latin1 to use textwrap.dedent() on bytes.
284 text = textwrap.dedent(text.decode('latin1')).encode('latin1')
288 text = textwrap.dedent(text.decode('latin1')).encode('latin1')
285 lines = text.splitlines()
289 lines = text.splitlines()
286 doclines = [(lines[0])]
290 doclines = [(lines[0])]
287 for l in lines[1:]:
291 for l in lines[1:]:
288 # Stop once we find some Python doctest
292 # Stop once we find some Python doctest
289 if l.strip().startswith('>>>'):
293 if l.strip().startswith('>>>'):
290 break
294 break
291 if dedent:
295 if dedent:
292 doclines.append(l.rstrip())
296 doclines.append(l.rstrip())
293 else:
297 else:
294 doclines.append(' ' + l.strip())
298 doclines.append(' ' + l.strip())
295 entries.append('\n'.join(doclines))
299 entries.append('\n'.join(doclines))
296 entries = '\n\n'.join(entries)
300 entries = '\n\n'.join(entries)
297 return doc.replace(marker, entries)
301 return doc.replace(marker, entries)
298
302
299 def addtopicsymbols(topic, marker, symbols, dedent=False):
303 def addtopicsymbols(topic, marker, symbols, dedent=False):
300 def add(ui, topic, doc):
304 def add(ui, topic, doc):
301 return makeitemsdoc(ui, topic, doc, marker, symbols, dedent=dedent)
305 return makeitemsdoc(ui, topic, doc, marker, symbols, dedent=dedent)
302 addtopichook(topic, add)
306 addtopichook(topic, add)
303
307
304 addtopicsymbols('bundlespec', '.. bundlecompressionmarker',
308 addtopicsymbols('bundlespec', '.. bundlecompressionmarker',
305 util.bundlecompressiontopics())
309 util.bundlecompressiontopics())
306 addtopicsymbols('filesets', '.. predicatesmarker', fileset.symbols)
310 addtopicsymbols('filesets', '.. predicatesmarker', fileset.symbols)
307 addtopicsymbols('merge-tools', '.. internaltoolsmarker',
311 addtopicsymbols('merge-tools', '.. internaltoolsmarker',
308 filemerge.internalsdoc)
312 filemerge.internalsdoc)
309 addtopicsymbols('revisions', '.. predicatesmarker', revset.symbols)
313 addtopicsymbols('revisions', '.. predicatesmarker', revset.symbols)
310 addtopicsymbols('templates', '.. keywordsmarker', templatekw.keywords)
314 addtopicsymbols('templates', '.. keywordsmarker', templatekw.keywords)
311 addtopicsymbols('templates', '.. filtersmarker', templatefilters.filters)
315 addtopicsymbols('templates', '.. filtersmarker', templatefilters.filters)
312 addtopicsymbols('templates', '.. functionsmarker', templatefuncs.funcs)
316 addtopicsymbols('templates', '.. functionsmarker', templatefuncs.funcs)
313 addtopicsymbols('hgweb', '.. webcommandsmarker', webcommands.commands,
317 addtopicsymbols('hgweb', '.. webcommandsmarker', webcommands.commands,
314 dedent=True)
318 dedent=True)
315
319
316 def help_(ui, commands, name, unknowncmd=False, full=True, subtopic=None,
320 def help_(ui, commands, name, unknowncmd=False, full=True, subtopic=None,
317 **opts):
321 **opts):
318 '''
322 '''
319 Generate the help for 'name' as unformatted restructured text. If
323 Generate the help for 'name' as unformatted restructured text. If
320 'name' is None, describe the commands available.
324 'name' is None, describe the commands available.
321 '''
325 '''
322
326
323 opts = pycompat.byteskwargs(opts)
327 opts = pycompat.byteskwargs(opts)
324
328
325 def helpcmd(name, subtopic=None):
329 def helpcmd(name, subtopic=None):
326 try:
330 try:
327 aliases, entry = cmdutil.findcmd(name, commands.table,
331 aliases, entry = cmdutil.findcmd(name, commands.table,
328 strict=unknowncmd)
332 strict=unknowncmd)
329 except error.AmbiguousCommand as inst:
333 except error.AmbiguousCommand as inst:
330 # py3k fix: except vars can't be used outside the scope of the
334 # py3k fix: except vars can't be used outside the scope of the
331 # except block, nor can be used inside a lambda. python issue4617
335 # except block, nor can be used inside a lambda. python issue4617
332 prefix = inst.args[0]
336 prefix = inst.args[0]
333 select = lambda c: cmdutil.parsealiases(c)[0].startswith(prefix)
337 select = lambda c: cmdutil.parsealiases(c)[0].startswith(prefix)
334 rst = helplist(select)
338 rst = helplist(select)
335 return rst
339 return rst
336
340
337 rst = []
341 rst = []
338
342
339 # check if it's an invalid alias and display its error if it is
343 # check if it's an invalid alias and display its error if it is
340 if getattr(entry[0], 'badalias', None):
344 if getattr(entry[0], 'badalias', None):
341 rst.append(entry[0].badalias + '\n')
345 rst.append(entry[0].badalias + '\n')
342 if entry[0].unknowncmd:
346 if entry[0].unknowncmd:
343 try:
347 try:
344 rst.extend(helpextcmd(entry[0].cmdname))
348 rst.extend(helpextcmd(entry[0].cmdname))
345 except error.UnknownCommand:
349 except error.UnknownCommand:
346 pass
350 pass
347 return rst
351 return rst
348
352
349 # synopsis
353 # synopsis
350 if len(entry) > 2:
354 if len(entry) > 2:
351 if entry[2].startswith('hg'):
355 if entry[2].startswith('hg'):
352 rst.append("%s\n" % entry[2])
356 rst.append("%s\n" % entry[2])
353 else:
357 else:
354 rst.append('hg %s %s\n' % (aliases[0], entry[2]))
358 rst.append('hg %s %s\n' % (aliases[0], entry[2]))
355 else:
359 else:
356 rst.append('hg %s\n' % aliases[0])
360 rst.append('hg %s\n' % aliases[0])
357 # aliases
361 # aliases
358 if full and not ui.quiet and len(aliases) > 1:
362 if full and not ui.quiet and len(aliases) > 1:
359 rst.append(_("\naliases: %s\n") % ', '.join(aliases[1:]))
363 rst.append(_("\naliases: %s\n") % ', '.join(aliases[1:]))
360 rst.append('\n')
364 rst.append('\n')
361
365
362 # description
366 # description
363 doc = gettext(pycompat.getdoc(entry[0]))
367 doc = gettext(pycompat.getdoc(entry[0]))
364 if not doc:
368 if not doc:
365 doc = _("(no help text available)")
369 doc = _("(no help text available)")
366 if util.safehasattr(entry[0], 'definition'): # aliased command
370 if util.safehasattr(entry[0], 'definition'): # aliased command
367 source = entry[0].source
371 source = entry[0].source
368 if entry[0].definition.startswith('!'): # shell alias
372 if entry[0].definition.startswith('!'): # shell alias
369 doc = (_('shell alias for::\n\n %s\n\ndefined by: %s\n') %
373 doc = (_('shell alias for::\n\n %s\n\ndefined by: %s\n') %
370 (entry[0].definition[1:], source))
374 (entry[0].definition[1:], source))
371 else:
375 else:
372 doc = (_('alias for: hg %s\n\n%s\n\ndefined by: %s\n') %
376 doc = (_('alias for: hg %s\n\n%s\n\ndefined by: %s\n') %
373 (entry[0].definition, doc, source))
377 (entry[0].definition, doc, source))
374 doc = doc.splitlines(True)
378 doc = doc.splitlines(True)
375 if ui.quiet or not full:
379 if ui.quiet or not full:
376 rst.append(doc[0])
380 rst.append(doc[0])
377 else:
381 else:
378 rst.extend(doc)
382 rst.extend(doc)
379 rst.append('\n')
383 rst.append('\n')
380
384
381 # check if this command shadows a non-trivial (multi-line)
385 # check if this command shadows a non-trivial (multi-line)
382 # extension help text
386 # extension help text
383 try:
387 try:
384 mod = extensions.find(name)
388 mod = extensions.find(name)
385 doc = gettext(pycompat.getdoc(mod)) or ''
389 doc = gettext(pycompat.getdoc(mod)) or ''
386 if '\n' in doc.strip():
390 if '\n' in doc.strip():
387 msg = _("(use 'hg help -e %s' to show help for "
391 msg = _("(use 'hg help -e %s' to show help for "
388 "the %s extension)") % (name, name)
392 "the %s extension)") % (name, name)
389 rst.append('\n%s\n' % msg)
393 rst.append('\n%s\n' % msg)
390 except KeyError:
394 except KeyError:
391 pass
395 pass
392
396
393 # options
397 # options
394 if not ui.quiet and entry[1]:
398 if not ui.quiet and entry[1]:
395 rst.append(optrst(_("options"), entry[1], ui.verbose))
399 rst.append(optrst(_("options"), entry[1], ui.verbose))
396
400
397 if ui.verbose:
401 if ui.verbose:
398 rst.append(optrst(_("global options"),
402 rst.append(optrst(_("global options"),
399 commands.globalopts, ui.verbose))
403 commands.globalopts, ui.verbose))
400
404
401 if not ui.verbose:
405 if not ui.verbose:
402 if not full:
406 if not full:
403 rst.append(_("\n(use 'hg %s -h' to show more help)\n")
407 rst.append(_("\n(use 'hg %s -h' to show more help)\n")
404 % name)
408 % name)
405 elif not ui.quiet:
409 elif not ui.quiet:
406 rst.append(_('\n(some details hidden, use --verbose '
410 rst.append(_('\n(some details hidden, use --verbose '
407 'to show complete help)'))
411 'to show complete help)'))
408
412
409 return rst
413 return rst
410
414
411
415
412 def helplist(select=None, **opts):
416 def helplist(select=None, **opts):
413 # list of commands
417 # list of commands
414 if name == "shortlist":
418 if name == "shortlist":
415 header = _('basic commands:\n\n')
419 header = _('basic commands:\n\n')
416 elif name == "debug":
420 elif name == "debug":
417 header = _('debug commands (internal and unsupported):\n\n')
421 header = _('debug commands (internal and unsupported):\n\n')
418 else:
422 else:
419 header = _('list of commands:\n\n')
423 header = _('list of commands:\n\n')
420
424
421 h = {}
425 h = {}
422 cmds = {}
426 cmds = {}
423 for c, e in commands.table.iteritems():
427 for c, e in commands.table.iteritems():
424 fs = cmdutil.parsealiases(c)
428 fs = cmdutil.parsealiases(c)
425 f = fs[0]
429 f = fs[0]
426 p = ''
430 p = ''
427 if c.startswith("^"):
431 if c.startswith("^"):
428 p = '^'
432 p = '^'
429 if select and not select(p + f):
433 if select and not select(p + f):
430 continue
434 continue
431 if (not select and name != 'shortlist' and
435 if (not select and name != 'shortlist' and
432 e[0].__module__ != commands.__name__):
436 e[0].__module__ != commands.__name__):
433 continue
437 continue
434 if name == "shortlist" and not p:
438 if name == "shortlist" and not p:
435 continue
439 continue
436 doc = pycompat.getdoc(e[0])
440 doc = pycompat.getdoc(e[0])
437 if filtercmd(ui, f, name, doc):
441 if filtercmd(ui, f, name, doc):
438 continue
442 continue
439 doc = gettext(doc)
443 doc = gettext(doc)
440 if not doc:
444 if not doc:
441 doc = _("(no help text available)")
445 doc = _("(no help text available)")
442 h[f] = doc.splitlines()[0].rstrip()
446 h[f] = doc.splitlines()[0].rstrip()
443 cmds[f] = '|'.join(fs)
447 cmds[f] = '|'.join(fs)
444
448
445 rst = []
449 rst = []
446 if not h:
450 if not h:
447 if not ui.quiet:
451 if not ui.quiet:
448 rst.append(_('no commands defined\n'))
452 rst.append(_('no commands defined\n'))
449 return rst
453 return rst
450
454
451 if not ui.quiet:
455 if not ui.quiet:
452 rst.append(header)
456 rst.append(header)
453 fns = sorted(h)
457 fns = sorted(h)
454 for f in fns:
458 for f in fns:
455 if ui.verbose:
459 if ui.verbose:
456 commacmds = cmds[f].replace("|",", ")
460 commacmds = cmds[f].replace("|",", ")
457 rst.append(" :%s: %s\n" % (commacmds, h[f]))
461 rst.append(" :%s: %s\n" % (commacmds, h[f]))
458 else:
462 else:
459 rst.append(' :%s: %s\n' % (f, h[f]))
463 rst.append(' :%s: %s\n' % (f, h[f]))
460
464
461 ex = opts.get
465 ex = opts.get
462 anyopts = (ex(r'keyword') or not (ex(r'command') or ex(r'extension')))
466 anyopts = (ex(r'keyword') or not (ex(r'command') or ex(r'extension')))
463 if not name and anyopts:
467 if not name and anyopts:
464 exts = listexts(_('enabled extensions:'), extensions.enabled())
468 exts = listexts(_('enabled extensions:'), extensions.enabled())
465 if exts:
469 if exts:
466 rst.append('\n')
470 rst.append('\n')
467 rst.extend(exts)
471 rst.extend(exts)
468
472
469 rst.append(_("\nadditional help topics:\n\n"))
473 rst.append(_("\nadditional help topics:\n\n"))
470 topics = []
474 topics = []
471 for names, header, doc in helptable:
475 for names, header, doc in helptable:
472 topics.append((names[0], header))
476 topics.append((names[0], header))
473 for t, desc in topics:
477 for t, desc in topics:
474 rst.append(" :%s: %s\n" % (t, desc))
478 rst.append(" :%s: %s\n" % (t, desc))
475
479
476 if ui.quiet:
480 if ui.quiet:
477 pass
481 pass
478 elif ui.verbose:
482 elif ui.verbose:
479 rst.append('\n%s\n' % optrst(_("global options"),
483 rst.append('\n%s\n' % optrst(_("global options"),
480 commands.globalopts, ui.verbose))
484 commands.globalopts, ui.verbose))
481 if name == 'shortlist':
485 if name == 'shortlist':
482 rst.append(_("\n(use 'hg help' for the full list "
486 rst.append(_("\n(use 'hg help' for the full list "
483 "of commands)\n"))
487 "of commands)\n"))
484 else:
488 else:
485 if name == 'shortlist':
489 if name == 'shortlist':
486 rst.append(_("\n(use 'hg help' for the full list of commands "
490 rst.append(_("\n(use 'hg help' for the full list of commands "
487 "or 'hg -v' for details)\n"))
491 "or 'hg -v' for details)\n"))
488 elif name and not full:
492 elif name and not full:
489 rst.append(_("\n(use 'hg help %s' to show the full help "
493 rst.append(_("\n(use 'hg help %s' to show the full help "
490 "text)\n") % name)
494 "text)\n") % name)
491 elif name and cmds and name in cmds.keys():
495 elif name and cmds and name in cmds.keys():
492 rst.append(_("\n(use 'hg help -v -e %s' to show built-in "
496 rst.append(_("\n(use 'hg help -v -e %s' to show built-in "
493 "aliases and global options)\n") % name)
497 "aliases and global options)\n") % name)
494 else:
498 else:
495 rst.append(_("\n(use 'hg help -v%s' to show built-in aliases "
499 rst.append(_("\n(use 'hg help -v%s' to show built-in aliases "
496 "and global options)\n")
500 "and global options)\n")
497 % (name and " " + name or ""))
501 % (name and " " + name or ""))
498 return rst
502 return rst
499
503
500 def helptopic(name, subtopic=None):
504 def helptopic(name, subtopic=None):
501 # Look for sub-topic entry first.
505 # Look for sub-topic entry first.
502 header, doc = None, None
506 header, doc = None, None
503 if subtopic and name in subtopics:
507 if subtopic and name in subtopics:
504 for names, header, doc in subtopics[name]:
508 for names, header, doc in subtopics[name]:
505 if subtopic in names:
509 if subtopic in names:
506 break
510 break
507
511
508 if not header:
512 if not header:
509 for names, header, doc in helptable:
513 for names, header, doc in helptable:
510 if name in names:
514 if name in names:
511 break
515 break
512 else:
516 else:
513 raise error.UnknownCommand(name)
517 raise error.UnknownCommand(name)
514
518
515 rst = [minirst.section(header)]
519 rst = [minirst.section(header)]
516
520
517 # description
521 # description
518 if not doc:
522 if not doc:
519 rst.append(" %s\n" % _("(no help text available)"))
523 rst.append(" %s\n" % _("(no help text available)"))
520 if callable(doc):
524 if callable(doc):
521 rst += [" %s\n" % l for l in doc(ui).splitlines()]
525 rst += [" %s\n" % l for l in doc(ui).splitlines()]
522
526
523 if not ui.verbose:
527 if not ui.verbose:
524 omitted = _('(some details hidden, use --verbose'
528 omitted = _('(some details hidden, use --verbose'
525 ' to show complete help)')
529 ' to show complete help)')
526 indicateomitted(rst, omitted)
530 indicateomitted(rst, omitted)
527
531
528 try:
532 try:
529 cmdutil.findcmd(name, commands.table)
533 cmdutil.findcmd(name, commands.table)
530 rst.append(_("\nuse 'hg help -c %s' to see help for "
534 rst.append(_("\nuse 'hg help -c %s' to see help for "
531 "the %s command\n") % (name, name))
535 "the %s command\n") % (name, name))
532 except error.UnknownCommand:
536 except error.UnknownCommand:
533 pass
537 pass
534 return rst
538 return rst
535
539
536 def helpext(name, subtopic=None):
540 def helpext(name, subtopic=None):
537 try:
541 try:
538 mod = extensions.find(name)
542 mod = extensions.find(name)
539 doc = gettext(pycompat.getdoc(mod)) or _('no help text available')
543 doc = gettext(pycompat.getdoc(mod)) or _('no help text available')
540 except KeyError:
544 except KeyError:
541 mod = None
545 mod = None
542 doc = extensions.disabledext(name)
546 doc = extensions.disabledext(name)
543 if not doc:
547 if not doc:
544 raise error.UnknownCommand(name)
548 raise error.UnknownCommand(name)
545
549
546 if '\n' not in doc:
550 if '\n' not in doc:
547 head, tail = doc, ""
551 head, tail = doc, ""
548 else:
552 else:
549 head, tail = doc.split('\n', 1)
553 head, tail = doc.split('\n', 1)
550 rst = [_('%s extension - %s\n\n') % (name.rpartition('.')[-1], head)]
554 rst = [_('%s extension - %s\n\n') % (name.rpartition('.')[-1], head)]
551 if tail:
555 if tail:
552 rst.extend(tail.splitlines(True))
556 rst.extend(tail.splitlines(True))
553 rst.append('\n')
557 rst.append('\n')
554
558
555 if not ui.verbose:
559 if not ui.verbose:
556 omitted = _('(some details hidden, use --verbose'
560 omitted = _('(some details hidden, use --verbose'
557 ' to show complete help)')
561 ' to show complete help)')
558 indicateomitted(rst, omitted)
562 indicateomitted(rst, omitted)
559
563
560 if mod:
564 if mod:
561 try:
565 try:
562 ct = mod.cmdtable
566 ct = mod.cmdtable
563 except AttributeError:
567 except AttributeError:
564 ct = {}
568 ct = {}
565 modcmds = set([c.partition('|')[0] for c in ct])
569 modcmds = set([c.partition('|')[0] for c in ct])
566 rst.extend(helplist(modcmds.__contains__))
570 rst.extend(helplist(modcmds.__contains__))
567 else:
571 else:
568 rst.append(_("(use 'hg help extensions' for information on enabling"
572 rst.append(_("(use 'hg help extensions' for information on enabling"
569 " extensions)\n"))
573 " extensions)\n"))
570 return rst
574 return rst
571
575
572 def helpextcmd(name, subtopic=None):
576 def helpextcmd(name, subtopic=None):
573 cmd, ext, mod = extensions.disabledcmd(ui, name,
577 cmd, ext, mod = extensions.disabledcmd(ui, name,
574 ui.configbool('ui', 'strict'))
578 ui.configbool('ui', 'strict'))
575 doc = gettext(pycompat.getdoc(mod)).splitlines()[0]
579 doc = gettext(pycompat.getdoc(mod)).splitlines()[0]
576
580
577 rst = listexts(_("'%s' is provided by the following "
581 rst = listexts(_("'%s' is provided by the following "
578 "extension:") % cmd, {ext: doc}, indent=4,
582 "extension:") % cmd, {ext: doc}, indent=4,
579 showdeprecated=True)
583 showdeprecated=True)
580 rst.append('\n')
584 rst.append('\n')
581 rst.append(_("(use 'hg help extensions' for information on enabling "
585 rst.append(_("(use 'hg help extensions' for information on enabling "
582 "extensions)\n"))
586 "extensions)\n"))
583 return rst
587 return rst
584
588
585
589
586 rst = []
590 rst = []
587 kw = opts.get('keyword')
591 kw = opts.get('keyword')
588 if kw or name is None and any(opts[o] for o in opts):
592 if kw or name is None and any(opts[o] for o in opts):
589 matches = topicmatch(ui, commands, name or '')
593 matches = topicmatch(ui, commands, name or '')
590 helpareas = []
594 helpareas = []
591 if opts.get('extension'):
595 if opts.get('extension'):
592 helpareas += [('extensions', _('Extensions'))]
596 helpareas += [('extensions', _('Extensions'))]
593 if opts.get('command'):
597 if opts.get('command'):
594 helpareas += [('commands', _('Commands'))]
598 helpareas += [('commands', _('Commands'))]
595 if not helpareas:
599 if not helpareas:
596 helpareas = [('topics', _('Topics')),
600 helpareas = [('topics', _('Topics')),
597 ('commands', _('Commands')),
601 ('commands', _('Commands')),
598 ('extensions', _('Extensions')),
602 ('extensions', _('Extensions')),
599 ('extensioncommands', _('Extension Commands'))]
603 ('extensioncommands', _('Extension Commands'))]
600 for t, title in helpareas:
604 for t, title in helpareas:
601 if matches[t]:
605 if matches[t]:
602 rst.append('%s:\n\n' % title)
606 rst.append('%s:\n\n' % title)
603 rst.extend(minirst.maketable(sorted(matches[t]), 1))
607 rst.extend(minirst.maketable(sorted(matches[t]), 1))
604 rst.append('\n')
608 rst.append('\n')
605 if not rst:
609 if not rst:
606 msg = _('no matches')
610 msg = _('no matches')
607 hint = _("try 'hg help' for a list of topics")
611 hint = _("try 'hg help' for a list of topics")
608 raise error.Abort(msg, hint=hint)
612 raise error.Abort(msg, hint=hint)
609 elif name and name != 'shortlist':
613 elif name and name != 'shortlist':
610 queries = []
614 queries = []
611 if unknowncmd:
615 if unknowncmd:
612 queries += [helpextcmd]
616 queries += [helpextcmd]
613 if opts.get('extension'):
617 if opts.get('extension'):
614 queries += [helpext]
618 queries += [helpext]
615 if opts.get('command'):
619 if opts.get('command'):
616 queries += [helpcmd]
620 queries += [helpcmd]
617 if not queries:
621 if not queries:
618 queries = (helptopic, helpcmd, helpext, helpextcmd)
622 queries = (helptopic, helpcmd, helpext, helpextcmd)
619 for f in queries:
623 for f in queries:
620 try:
624 try:
621 rst = f(name, subtopic)
625 rst = f(name, subtopic)
622 break
626 break
623 except error.UnknownCommand:
627 except error.UnknownCommand:
624 pass
628 pass
625 else:
629 else:
626 if unknowncmd:
630 if unknowncmd:
627 raise error.UnknownCommand(name)
631 raise error.UnknownCommand(name)
628 else:
632 else:
629 msg = _('no such help topic: %s') % name
633 msg = _('no such help topic: %s') % name
630 hint = _("try 'hg help --keyword %s'") % name
634 hint = _("try 'hg help --keyword %s'") % name
631 raise error.Abort(msg, hint=hint)
635 raise error.Abort(msg, hint=hint)
632 else:
636 else:
633 # program name
637 # program name
634 if not ui.quiet:
638 if not ui.quiet:
635 rst = [_("Mercurial Distributed SCM\n"), '\n']
639 rst = [_("Mercurial Distributed SCM\n"), '\n']
636 rst.extend(helplist(None, **pycompat.strkwargs(opts)))
640 rst.extend(helplist(None, **pycompat.strkwargs(opts)))
637
641
638 return ''.join(rst)
642 return ''.join(rst)
639
643
640 def formattedhelp(ui, commands, name, keep=None, unknowncmd=False, full=True,
644 def formattedhelp(ui, commands, name, keep=None, unknowncmd=False, full=True,
641 **opts):
645 **opts):
642 """get help for a given topic (as a dotted name) as rendered rst
646 """get help for a given topic (as a dotted name) as rendered rst
643
647
644 Either returns the rendered help text or raises an exception.
648 Either returns the rendered help text or raises an exception.
645 """
649 """
646 if keep is None:
650 if keep is None:
647 keep = []
651 keep = []
648 else:
652 else:
649 keep = list(keep) # make a copy so we can mutate this later
653 keep = list(keep) # make a copy so we can mutate this later
650 fullname = name
654 fullname = name
651 section = None
655 section = None
652 subtopic = None
656 subtopic = None
653 if name and '.' in name:
657 if name and '.' in name:
654 name, remaining = name.split('.', 1)
658 name, remaining = name.split('.', 1)
655 remaining = encoding.lower(remaining)
659 remaining = encoding.lower(remaining)
656 if '.' in remaining:
660 if '.' in remaining:
657 subtopic, section = remaining.split('.', 1)
661 subtopic, section = remaining.split('.', 1)
658 else:
662 else:
659 if name in subtopics:
663 if name in subtopics:
660 subtopic = remaining
664 subtopic = remaining
661 else:
665 else:
662 section = remaining
666 section = remaining
663 textwidth = ui.configint('ui', 'textwidth')
667 textwidth = ui.configint('ui', 'textwidth')
664 termwidth = ui.termwidth() - 2
668 termwidth = ui.termwidth() - 2
665 if textwidth <= 0 or termwidth < textwidth:
669 if textwidth <= 0 or termwidth < textwidth:
666 textwidth = termwidth
670 textwidth = termwidth
667 text = help_(ui, commands, name,
671 text = help_(ui, commands, name,
668 subtopic=subtopic, unknowncmd=unknowncmd, full=full, **opts)
672 subtopic=subtopic, unknowncmd=unknowncmd, full=full, **opts)
669
673
670 formatted, pruned = minirst.format(text, textwidth, keep=keep,
674 formatted, pruned = minirst.format(text, textwidth, keep=keep,
671 section=section)
675 section=section)
672
676
673 # We could have been given a weird ".foo" section without a name
677 # We could have been given a weird ".foo" section without a name
674 # to look for, or we could have simply failed to found "foo.bar"
678 # to look for, or we could have simply failed to found "foo.bar"
675 # because bar isn't a section of foo
679 # because bar isn't a section of foo
676 if section and not (formatted and name):
680 if section and not (formatted and name):
677 raise error.Abort(_("help section not found: %s") % fullname)
681 raise error.Abort(_("help section not found: %s") % fullname)
678
682
679 if 'verbose' in pruned:
683 if 'verbose' in pruned:
680 keep.append('omitted')
684 keep.append('omitted')
681 else:
685 else:
682 keep.append('notomitted')
686 keep.append('notomitted')
683 formatted, pruned = minirst.format(text, textwidth, keep=keep,
687 formatted, pruned = minirst.format(text, textwidth, keep=keep,
684 section=section)
688 section=section)
685 return formatted
689 return formatted
@@ -1,3482 +1,3494 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 $ hg help
47 $ hg help
48 Mercurial Distributed SCM
48 Mercurial Distributed SCM
49
49
50 list of commands:
50 list of commands:
51
51
52 add add the specified files on the next commit
52 add add the specified files on the next commit
53 addremove add all new files, delete all missing files
53 addremove add all new files, delete all missing files
54 annotate show changeset information by line for each file
54 annotate show changeset information by line for each file
55 archive create an unversioned archive of a repository revision
55 archive create an unversioned archive of a repository revision
56 backout reverse effect of earlier changeset
56 backout reverse effect of earlier changeset
57 bisect subdivision search of changesets
57 bisect subdivision search of changesets
58 bookmarks create a new bookmark or list existing bookmarks
58 bookmarks create a new bookmark or list existing bookmarks
59 branch set or show the current branch name
59 branch set or show the current branch name
60 branches list repository named branches
60 branches list repository named branches
61 bundle create a bundle file
61 bundle create a bundle file
62 cat output the current or given revision of files
62 cat output the current or given revision of files
63 clone make a copy of an existing repository
63 clone make a copy of an existing repository
64 commit commit the specified files or all outstanding changes
64 commit commit the specified files or all outstanding changes
65 config show combined config settings from all hgrc files
65 config show combined config settings from all hgrc files
66 copy mark files as copied for the next commit
66 copy mark files as copied for the next commit
67 diff diff repository (or selected files)
67 diff diff repository (or selected files)
68 export dump the header and diffs for one or more changesets
68 export dump the header and diffs for one or more changesets
69 files list tracked files
69 files list tracked files
70 forget forget the specified files on the next commit
70 forget forget the specified files on the next commit
71 graft copy changes from other branches onto the current branch
71 graft copy changes from other branches onto the current branch
72 grep search revision history for a pattern in specified files
72 grep search revision history for a pattern in specified files
73 heads show branch heads
73 heads show branch heads
74 help show help for a given topic or a help overview
74 help show help for a given topic or a help overview
75 identify identify the working directory or specified revision
75 identify identify the working directory or specified revision
76 import import an ordered set of patches
76 import import an ordered set of patches
77 incoming show new changesets found in source
77 incoming show new changesets found in source
78 init create a new repository in the given directory
78 init create a new repository in the given directory
79 log show revision history of entire repository or files
79 log show revision history of entire repository or files
80 manifest output the current or given revision of the project manifest
80 manifest output the current or given revision of the project manifest
81 merge merge another revision into working directory
81 merge merge another revision into working directory
82 outgoing show changesets not found in the destination
82 outgoing show changesets not found in the destination
83 paths show aliases for remote repositories
83 paths show aliases for remote repositories
84 phase set or show the current phase name
84 phase set or show the current phase name
85 pull pull changes from the specified source
85 pull pull changes from the specified source
86 push push changes to the specified destination
86 push push changes to the specified destination
87 recover roll back an interrupted transaction
87 recover roll back an interrupted transaction
88 remove remove the specified files on the next commit
88 remove remove the specified files on the next commit
89 rename rename files; equivalent of copy + remove
89 rename rename files; equivalent of copy + remove
90 resolve redo merges or set/view the merge status of files
90 resolve redo merges or set/view the merge status of files
91 revert restore files to their checkout state
91 revert restore files to their checkout state
92 root print the root (top) of the current working directory
92 root print the root (top) of the current working directory
93 serve start stand-alone webserver
93 serve start stand-alone webserver
94 status show changed files in the working directory
94 status show changed files in the working directory
95 summary summarize working directory state
95 summary summarize working directory state
96 tag add one or more tags for the current or given revision
96 tag add one or more tags for the current or given revision
97 tags list repository tags
97 tags list repository tags
98 unbundle apply one or more bundle files
98 unbundle apply one or more bundle files
99 update update working directory (or switch revisions)
99 update update working directory (or switch revisions)
100 verify verify the integrity of the repository
100 verify verify the integrity of the repository
101 version output version and copyright information
101 version output version and copyright information
102
102
103 additional help topics:
103 additional help topics:
104
104
105 bundlespec Bundle File Formats
105 bundlespec Bundle File Formats
106 color Colorizing Outputs
106 color Colorizing Outputs
107 config Configuration Files
107 config Configuration Files
108 dates Date Formats
108 dates Date Formats
109 diffs Diff Formats
109 diffs Diff Formats
110 environment Environment Variables
110 environment Environment Variables
111 extensions Using Additional Features
111 extensions Using Additional Features
112 filesets Specifying File Sets
112 filesets Specifying File Sets
113 flags Command-line flags
113 flags Command-line flags
114 glossary Glossary
114 glossary Glossary
115 hgignore Syntax for Mercurial Ignore Files
115 hgignore Syntax for Mercurial Ignore Files
116 hgweb Configuring hgweb
116 hgweb Configuring hgweb
117 internals Technical implementation topics
117 internals Technical implementation topics
118 merge-tools Merge Tools
118 merge-tools Merge Tools
119 pager Pager Support
119 pager Pager Support
120 patterns File Name Patterns
120 patterns File Name Patterns
121 phases Working with Phases
121 phases Working with Phases
122 revisions Specifying Revisions
122 revisions Specifying Revisions
123 scripting Using Mercurial from scripts and automation
123 scripting Using Mercurial from scripts and automation
124 subrepos Subrepositories
124 subrepos Subrepositories
125 templating Template Usage
125 templating Template Usage
126 urls URL Paths
126 urls URL Paths
127
127
128 (use 'hg help -v' to show built-in aliases and global options)
128 (use 'hg help -v' to show built-in aliases and global options)
129
129
130 $ hg -q help
130 $ hg -q help
131 add add the specified files on the next commit
131 add add the specified files on the next commit
132 addremove add all new files, delete all missing files
132 addremove add all new files, delete all missing files
133 annotate show changeset information by line for each file
133 annotate show changeset information by line for each file
134 archive create an unversioned archive of a repository revision
134 archive create an unversioned archive of a repository revision
135 backout reverse effect of earlier changeset
135 backout reverse effect of earlier changeset
136 bisect subdivision search of changesets
136 bisect subdivision search of changesets
137 bookmarks create a new bookmark or list existing bookmarks
137 bookmarks create a new bookmark or list existing bookmarks
138 branch set or show the current branch name
138 branch set or show the current branch name
139 branches list repository named branches
139 branches list repository named branches
140 bundle create a bundle file
140 bundle create a bundle file
141 cat output the current or given revision of files
141 cat output the current or given revision of files
142 clone make a copy of an existing repository
142 clone make a copy of an existing repository
143 commit commit the specified files or all outstanding changes
143 commit commit the specified files or all outstanding changes
144 config show combined config settings from all hgrc files
144 config show combined config settings from all hgrc files
145 copy mark files as copied for the next commit
145 copy mark files as copied for the next commit
146 diff diff repository (or selected files)
146 diff diff repository (or selected files)
147 export dump the header and diffs for one or more changesets
147 export dump the header and diffs for one or more changesets
148 files list tracked files
148 files list tracked files
149 forget forget the specified files on the next commit
149 forget forget the specified files on the next commit
150 graft copy changes from other branches onto the current branch
150 graft copy changes from other branches onto the current branch
151 grep search revision history for a pattern in specified files
151 grep search revision history for a pattern in specified files
152 heads show branch heads
152 heads show branch heads
153 help show help for a given topic or a help overview
153 help show help for a given topic or a help overview
154 identify identify the working directory or specified revision
154 identify identify the working directory or specified revision
155 import import an ordered set of patches
155 import import an ordered set of patches
156 incoming show new changesets found in source
156 incoming show new changesets found in source
157 init create a new repository in the given directory
157 init create a new repository in the given directory
158 log show revision history of entire repository or files
158 log show revision history of entire repository or files
159 manifest output the current or given revision of the project manifest
159 manifest output the current or given revision of the project manifest
160 merge merge another revision into working directory
160 merge merge another revision into working directory
161 outgoing show changesets not found in the destination
161 outgoing show changesets not found in the destination
162 paths show aliases for remote repositories
162 paths show aliases for remote repositories
163 phase set or show the current phase name
163 phase set or show the current phase name
164 pull pull changes from the specified source
164 pull pull changes from the specified source
165 push push changes to the specified destination
165 push push changes to the specified destination
166 recover roll back an interrupted transaction
166 recover roll back an interrupted transaction
167 remove remove the specified files on the next commit
167 remove remove the specified files on the next commit
168 rename rename files; equivalent of copy + remove
168 rename rename files; equivalent of copy + remove
169 resolve redo merges or set/view the merge status of files
169 resolve redo merges or set/view the merge status of files
170 revert restore files to their checkout state
170 revert restore files to their checkout state
171 root print the root (top) of the current working directory
171 root print the root (top) of the current working directory
172 serve start stand-alone webserver
172 serve start stand-alone webserver
173 status show changed files in the working directory
173 status show changed files in the working directory
174 summary summarize working directory state
174 summary summarize working directory state
175 tag add one or more tags for the current or given revision
175 tag add one or more tags for the current or given revision
176 tags list repository tags
176 tags list repository tags
177 unbundle apply one or more bundle files
177 unbundle apply one or more bundle files
178 update update working directory (or switch revisions)
178 update update working directory (or switch revisions)
179 verify verify the integrity of the repository
179 verify verify the integrity of the repository
180 version output version and copyright information
180 version output version and copyright information
181
181
182 additional help topics:
182 additional help topics:
183
183
184 bundlespec Bundle File Formats
184 bundlespec Bundle File Formats
185 color Colorizing Outputs
185 color Colorizing Outputs
186 config Configuration Files
186 config Configuration Files
187 dates Date Formats
187 dates Date Formats
188 diffs Diff Formats
188 diffs Diff Formats
189 environment Environment Variables
189 environment Environment Variables
190 extensions Using Additional Features
190 extensions Using Additional Features
191 filesets Specifying File Sets
191 filesets Specifying File Sets
192 flags Command-line flags
192 flags Command-line flags
193 glossary Glossary
193 glossary Glossary
194 hgignore Syntax for Mercurial Ignore Files
194 hgignore Syntax for Mercurial Ignore Files
195 hgweb Configuring hgweb
195 hgweb Configuring hgweb
196 internals Technical implementation topics
196 internals Technical implementation topics
197 merge-tools Merge Tools
197 merge-tools Merge Tools
198 pager Pager Support
198 pager Pager Support
199 patterns File Name Patterns
199 patterns File Name Patterns
200 phases Working with Phases
200 phases Working with Phases
201 revisions Specifying Revisions
201 revisions Specifying Revisions
202 scripting Using Mercurial from scripts and automation
202 scripting Using Mercurial from scripts and automation
203 subrepos Subrepositories
203 subrepos Subrepositories
204 templating Template Usage
204 templating Template Usage
205 urls URL Paths
205 urls URL Paths
206
206
207 Test extension help:
207 Test extension help:
208 $ hg help extensions --config extensions.rebase= --config extensions.children=
208 $ hg help extensions --config extensions.rebase= --config extensions.children=
209 Using Additional Features
209 Using Additional Features
210 """""""""""""""""""""""""
210 """""""""""""""""""""""""
211
211
212 Mercurial has the ability to add new features through the use of
212 Mercurial has the ability to add new features through the use of
213 extensions. Extensions may add new commands, add options to existing
213 extensions. Extensions may add new commands, add options to existing
214 commands, change the default behavior of commands, or implement hooks.
214 commands, change the default behavior of commands, or implement hooks.
215
215
216 To enable the "foo" extension, either shipped with Mercurial or in the
216 To enable the "foo" extension, either shipped with Mercurial or in the
217 Python search path, create an entry for it in your configuration file,
217 Python search path, create an entry for it in your configuration file,
218 like this:
218 like this:
219
219
220 [extensions]
220 [extensions]
221 foo =
221 foo =
222
222
223 You may also specify the full path to an extension:
223 You may also specify the full path to an extension:
224
224
225 [extensions]
225 [extensions]
226 myfeature = ~/.hgext/myfeature.py
226 myfeature = ~/.hgext/myfeature.py
227
227
228 See 'hg help config' for more information on configuration files.
228 See 'hg help config' for more information on configuration files.
229
229
230 Extensions are not loaded by default for a variety of reasons: they can
230 Extensions are not loaded by default for a variety of reasons: they can
231 increase startup overhead; they may be meant for advanced usage only; they
231 increase startup overhead; they may be meant for advanced usage only; they
232 may provide potentially dangerous abilities (such as letting you destroy
232 may provide potentially dangerous abilities (such as letting you destroy
233 or modify history); they might not be ready for prime time; or they may
233 or modify history); they might not be ready for prime time; or they may
234 alter some usual behaviors of stock Mercurial. It is thus up to the user
234 alter some usual behaviors of stock Mercurial. It is thus up to the user
235 to activate extensions as needed.
235 to activate extensions as needed.
236
236
237 To explicitly disable an extension enabled in a configuration file of
237 To explicitly disable an extension enabled in a configuration file of
238 broader scope, prepend its path with !:
238 broader scope, prepend its path with !:
239
239
240 [extensions]
240 [extensions]
241 # disabling extension bar residing in /path/to/extension/bar.py
241 # disabling extension bar residing in /path/to/extension/bar.py
242 bar = !/path/to/extension/bar.py
242 bar = !/path/to/extension/bar.py
243 # ditto, but no path was supplied for extension baz
243 # ditto, but no path was supplied for extension baz
244 baz = !
244 baz = !
245
245
246 enabled extensions:
246 enabled extensions:
247
247
248 children command to display child changesets (DEPRECATED)
248 children command to display child changesets (DEPRECATED)
249 rebase command to move sets of revisions to a different ancestor
249 rebase command to move sets of revisions to a different ancestor
250
250
251 disabled extensions:
251 disabled extensions:
252
252
253 acl hooks for controlling repository access
253 acl hooks for controlling repository access
254 blackbox log repository events to a blackbox for debugging
254 blackbox log repository events to a blackbox for debugging
255 bugzilla hooks for integrating with the Bugzilla bug tracker
255 bugzilla hooks for integrating with the Bugzilla bug tracker
256 censor erase file content at a given revision
256 censor erase file content at a given revision
257 churn command to display statistics about repository history
257 churn command to display statistics about repository history
258 clonebundles advertise pre-generated bundles to seed clones
258 clonebundles advertise pre-generated bundles to seed clones
259 convert import revisions from foreign VCS repositories into
259 convert import revisions from foreign VCS repositories into
260 Mercurial
260 Mercurial
261 eol automatically manage newlines in repository files
261 eol automatically manage newlines in repository files
262 extdiff command to allow external programs to compare revisions
262 extdiff command to allow external programs to compare revisions
263 factotum http authentication with factotum
263 factotum http authentication with factotum
264 githelp try mapping git commands to Mercurial commands
264 githelp try mapping git commands to Mercurial commands
265 gpg commands to sign and verify changesets
265 gpg commands to sign and verify changesets
266 hgk browse the repository in a graphical way
266 hgk browse the repository in a graphical way
267 highlight syntax highlighting for hgweb (requires Pygments)
267 highlight syntax highlighting for hgweb (requires Pygments)
268 histedit interactive history editing
268 histedit interactive history editing
269 keyword expand keywords in tracked files
269 keyword expand keywords in tracked files
270 largefiles track large binary files
270 largefiles track large binary files
271 mq manage a stack of patches
271 mq manage a stack of patches
272 notify hooks for sending email push notifications
272 notify hooks for sending email push notifications
273 patchbomb command to send changesets as (a series of) patch emails
273 patchbomb command to send changesets as (a series of) patch emails
274 purge command to delete untracked files from the working
274 purge command to delete untracked files from the working
275 directory
275 directory
276 relink recreates hardlinks between repository clones
276 relink recreates hardlinks between repository clones
277 remotenames showing remotebookmarks and remotebranches in UI
277 remotenames showing remotebookmarks and remotebranches in UI
278 schemes extend schemes with shortcuts to repository swarms
278 schemes extend schemes with shortcuts to repository swarms
279 share share a common history between several working directories
279 share share a common history between several working directories
280 shelve save and restore changes to the working directory
280 shelve save and restore changes to the working directory
281 strip strip changesets and their descendants from history
281 strip strip changesets and their descendants from history
282 transplant command to transplant changesets from another branch
282 transplant command to transplant changesets from another branch
283 win32mbcs allow the use of MBCS paths with problematic encodings
283 win32mbcs allow the use of MBCS paths with problematic encodings
284 zeroconf discover and advertise repositories on the local network
284 zeroconf discover and advertise repositories on the local network
285
285
286 Verify that deprecated extensions are included if --verbose:
286 Verify that deprecated extensions are included if --verbose:
287
287
288 $ hg -v help extensions | grep children
288 $ hg -v help extensions | grep children
289 children command to display child changesets (DEPRECATED)
289 children command to display child changesets (DEPRECATED)
290
290
291 Verify that extension keywords appear in help templates
291 Verify that extension keywords appear in help templates
292
292
293 $ hg help --config extensions.transplant= templating|grep transplant > /dev/null
293 $ hg help --config extensions.transplant= templating|grep transplant > /dev/null
294
294
295 Test short command list with verbose option
295 Test short command list with verbose option
296
296
297 $ hg -v help shortlist
297 $ hg -v help shortlist
298 Mercurial Distributed SCM
298 Mercurial Distributed SCM
299
299
300 basic commands:
300 basic commands:
301
301
302 add add the specified files on the next commit
302 add add the specified files on the next commit
303 annotate, blame
303 annotate, blame
304 show changeset information by line for each file
304 show changeset information by line for each file
305 clone make a copy of an existing repository
305 clone make a copy of an existing repository
306 commit, ci commit the specified files or all outstanding changes
306 commit, ci commit the specified files or all outstanding changes
307 diff diff repository (or selected files)
307 diff diff repository (or selected files)
308 export dump the header and diffs for one or more changesets
308 export dump the header and diffs for one or more changesets
309 forget forget the specified files on the next commit
309 forget forget the specified files on the next commit
310 init create a new repository in the given directory
310 init create a new repository in the given directory
311 log, history show revision history of entire repository or files
311 log, history show revision history of entire repository or files
312 merge merge another revision into working directory
312 merge merge another revision into working directory
313 pull pull changes from the specified source
313 pull pull changes from the specified source
314 push push changes to the specified destination
314 push push changes to the specified destination
315 remove, rm remove the specified files on the next commit
315 remove, rm remove the specified files on the next commit
316 serve start stand-alone webserver
316 serve start stand-alone webserver
317 status, st show changed files in the working directory
317 status, st show changed files in the working directory
318 summary, sum summarize working directory state
318 summary, sum summarize working directory state
319 update, up, checkout, co
319 update, up, checkout, co
320 update working directory (or switch revisions)
320 update working directory (or switch revisions)
321
321
322 global options ([+] can be repeated):
322 global options ([+] can be repeated):
323
323
324 -R --repository REPO repository root directory or name of overlay bundle
324 -R --repository REPO repository root directory or name of overlay bundle
325 file
325 file
326 --cwd DIR change working directory
326 --cwd DIR change working directory
327 -y --noninteractive do not prompt, automatically pick the first choice for
327 -y --noninteractive do not prompt, automatically pick the first choice for
328 all prompts
328 all prompts
329 -q --quiet suppress output
329 -q --quiet suppress output
330 -v --verbose enable additional output
330 -v --verbose enable additional output
331 --color TYPE when to colorize (boolean, always, auto, never, or
331 --color TYPE when to colorize (boolean, always, auto, never, or
332 debug)
332 debug)
333 --config CONFIG [+] set/override config option (use 'section.name=value')
333 --config CONFIG [+] set/override config option (use 'section.name=value')
334 --debug enable debugging output
334 --debug enable debugging output
335 --debugger start debugger
335 --debugger start debugger
336 --encoding ENCODE set the charset encoding (default: ascii)
336 --encoding ENCODE set the charset encoding (default: ascii)
337 --encodingmode MODE set the charset encoding mode (default: strict)
337 --encodingmode MODE set the charset encoding mode (default: strict)
338 --traceback always print a traceback on exception
338 --traceback always print a traceback on exception
339 --time time how long the command takes
339 --time time how long the command takes
340 --profile print command execution profile
340 --profile print command execution profile
341 --version output version information and exit
341 --version output version information and exit
342 -h --help display help and exit
342 -h --help display help and exit
343 --hidden consider hidden changesets
343 --hidden consider hidden changesets
344 --pager TYPE when to paginate (boolean, always, auto, or never)
344 --pager TYPE when to paginate (boolean, always, auto, or never)
345 (default: auto)
345 (default: auto)
346
346
347 (use 'hg help' for the full list of commands)
347 (use 'hg help' for the full list of commands)
348
348
349 $ hg add -h
349 $ hg add -h
350 hg add [OPTION]... [FILE]...
350 hg add [OPTION]... [FILE]...
351
351
352 add the specified files on the next commit
352 add the specified files on the next commit
353
353
354 Schedule files to be version controlled and added to the repository.
354 Schedule files to be version controlled and added to the repository.
355
355
356 The files will be added to the repository at the next commit. To undo an
356 The files will be added to the repository at the next commit. To undo an
357 add before that, see 'hg forget'.
357 add before that, see 'hg forget'.
358
358
359 If no names are given, add all files to the repository (except files
359 If no names are given, add all files to the repository (except files
360 matching ".hgignore").
360 matching ".hgignore").
361
361
362 Returns 0 if all files are successfully added.
362 Returns 0 if all files are successfully added.
363
363
364 options ([+] can be repeated):
364 options ([+] can be repeated):
365
365
366 -I --include PATTERN [+] include names matching the given patterns
366 -I --include PATTERN [+] include names matching the given patterns
367 -X --exclude PATTERN [+] exclude names matching the given patterns
367 -X --exclude PATTERN [+] exclude names matching the given patterns
368 -S --subrepos recurse into subrepositories
368 -S --subrepos recurse into subrepositories
369 -n --dry-run do not perform actions, just print output
369 -n --dry-run do not perform actions, just print output
370
370
371 (some details hidden, use --verbose to show complete help)
371 (some details hidden, use --verbose to show complete help)
372
372
373 Verbose help for add
373 Verbose help for add
374
374
375 $ hg add -hv
375 $ hg add -hv
376 hg add [OPTION]... [FILE]...
376 hg add [OPTION]... [FILE]...
377
377
378 add the specified files on the next commit
378 add the specified files on the next commit
379
379
380 Schedule files to be version controlled and added to the repository.
380 Schedule files to be version controlled and added to the repository.
381
381
382 The files will be added to the repository at the next commit. To undo an
382 The files will be added to the repository at the next commit. To undo an
383 add before that, see 'hg forget'.
383 add before that, see 'hg forget'.
384
384
385 If no names are given, add all files to the repository (except files
385 If no names are given, add all files to the repository (except files
386 matching ".hgignore").
386 matching ".hgignore").
387
387
388 Examples:
388 Examples:
389
389
390 - New (unknown) files are added automatically by 'hg add':
390 - New (unknown) files are added automatically by 'hg add':
391
391
392 $ ls
392 $ ls
393 foo.c
393 foo.c
394 $ hg status
394 $ hg status
395 ? foo.c
395 ? foo.c
396 $ hg add
396 $ hg add
397 adding foo.c
397 adding foo.c
398 $ hg status
398 $ hg status
399 A foo.c
399 A foo.c
400
400
401 - Specific files to be added can be specified:
401 - Specific files to be added can be specified:
402
402
403 $ ls
403 $ ls
404 bar.c foo.c
404 bar.c foo.c
405 $ hg status
405 $ hg status
406 ? bar.c
406 ? bar.c
407 ? foo.c
407 ? foo.c
408 $ hg add bar.c
408 $ hg add bar.c
409 $ hg status
409 $ hg status
410 A bar.c
410 A bar.c
411 ? foo.c
411 ? foo.c
412
412
413 Returns 0 if all files are successfully added.
413 Returns 0 if all files are successfully added.
414
414
415 options ([+] can be repeated):
415 options ([+] can be repeated):
416
416
417 -I --include PATTERN [+] include names matching the given patterns
417 -I --include PATTERN [+] include names matching the given patterns
418 -X --exclude PATTERN [+] exclude names matching the given patterns
418 -X --exclude PATTERN [+] exclude names matching the given patterns
419 -S --subrepos recurse into subrepositories
419 -S --subrepos recurse into subrepositories
420 -n --dry-run do not perform actions, just print output
420 -n --dry-run do not perform actions, just print output
421
421
422 global options ([+] can be repeated):
422 global options ([+] can be repeated):
423
423
424 -R --repository REPO repository root directory or name of overlay bundle
424 -R --repository REPO repository root directory or name of overlay bundle
425 file
425 file
426 --cwd DIR change working directory
426 --cwd DIR change working directory
427 -y --noninteractive do not prompt, automatically pick the first choice for
427 -y --noninteractive do not prompt, automatically pick the first choice for
428 all prompts
428 all prompts
429 -q --quiet suppress output
429 -q --quiet suppress output
430 -v --verbose enable additional output
430 -v --verbose enable additional output
431 --color TYPE when to colorize (boolean, always, auto, never, or
431 --color TYPE when to colorize (boolean, always, auto, never, or
432 debug)
432 debug)
433 --config CONFIG [+] set/override config option (use 'section.name=value')
433 --config CONFIG [+] set/override config option (use 'section.name=value')
434 --debug enable debugging output
434 --debug enable debugging output
435 --debugger start debugger
435 --debugger start debugger
436 --encoding ENCODE set the charset encoding (default: ascii)
436 --encoding ENCODE set the charset encoding (default: ascii)
437 --encodingmode MODE set the charset encoding mode (default: strict)
437 --encodingmode MODE set the charset encoding mode (default: strict)
438 --traceback always print a traceback on exception
438 --traceback always print a traceback on exception
439 --time time how long the command takes
439 --time time how long the command takes
440 --profile print command execution profile
440 --profile print command execution profile
441 --version output version information and exit
441 --version output version information and exit
442 -h --help display help and exit
442 -h --help display help and exit
443 --hidden consider hidden changesets
443 --hidden consider hidden changesets
444 --pager TYPE when to paginate (boolean, always, auto, or never)
444 --pager TYPE when to paginate (boolean, always, auto, or never)
445 (default: auto)
445 (default: auto)
446
446
447 Test the textwidth config option
447 Test the textwidth config option
448
448
449 $ hg root -h --config ui.textwidth=50
449 $ hg root -h --config ui.textwidth=50
450 hg root
450 hg root
451
451
452 print the root (top) of the current working
452 print the root (top) of the current working
453 directory
453 directory
454
454
455 Print the root directory of the current
455 Print the root directory of the current
456 repository.
456 repository.
457
457
458 Returns 0 on success.
458 Returns 0 on success.
459
459
460 (some details hidden, use --verbose to show
460 (some details hidden, use --verbose to show
461 complete help)
461 complete help)
462
462
463 Test help option with version option
463 Test help option with version option
464
464
465 $ hg add -h --version
465 $ hg add -h --version
466 Mercurial Distributed SCM (version *) (glob)
466 Mercurial Distributed SCM (version *) (glob)
467 (see https://mercurial-scm.org for more information)
467 (see https://mercurial-scm.org for more information)
468
468
469 Copyright (C) 2005-* Matt Mackall and others (glob)
469 Copyright (C) 2005-* Matt Mackall and others (glob)
470 This is free software; see the source for copying conditions. There is NO
470 This is free software; see the source for copying conditions. There is NO
471 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
471 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
472
472
473 $ hg add --skjdfks
473 $ hg add --skjdfks
474 hg add: option --skjdfks not recognized
474 hg add: option --skjdfks not recognized
475 hg add [OPTION]... [FILE]...
475 hg add [OPTION]... [FILE]...
476
476
477 add the specified files on the next commit
477 add the specified files on the next commit
478
478
479 options ([+] can be repeated):
479 options ([+] can be repeated):
480
480
481 -I --include PATTERN [+] include names matching the given patterns
481 -I --include PATTERN [+] include names matching the given patterns
482 -X --exclude PATTERN [+] exclude names matching the given patterns
482 -X --exclude PATTERN [+] exclude names matching the given patterns
483 -S --subrepos recurse into subrepositories
483 -S --subrepos recurse into subrepositories
484 -n --dry-run do not perform actions, just print output
484 -n --dry-run do not perform actions, just print output
485
485
486 (use 'hg add -h' to show more help)
486 (use 'hg add -h' to show more help)
487 [255]
487 [255]
488
488
489 Test ambiguous command help
489 Test ambiguous command help
490
490
491 $ hg help ad
491 $ hg help ad
492 list of commands:
492 list of commands:
493
493
494 add add the specified files on the next commit
494 add add the specified files on the next commit
495 addremove add all new files, delete all missing files
495 addremove add all new files, delete all missing files
496
496
497 (use 'hg help -v ad' to show built-in aliases and global options)
497 (use 'hg help -v ad' to show built-in aliases and global options)
498
498
499 Test command without options
499 Test command without options
500
500
501 $ hg help verify
501 $ hg help verify
502 hg verify
502 hg verify
503
503
504 verify the integrity of the repository
504 verify the integrity of the repository
505
505
506 Verify the integrity of the current repository.
506 Verify the integrity of the current repository.
507
507
508 This will perform an extensive check of the repository's integrity,
508 This will perform an extensive check of the repository's integrity,
509 validating the hashes and checksums of each entry in the changelog,
509 validating the hashes and checksums of each entry in the changelog,
510 manifest, and tracked files, as well as the integrity of their crosslinks
510 manifest, and tracked files, as well as the integrity of their crosslinks
511 and indices.
511 and indices.
512
512
513 Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
513 Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
514 information about recovery from corruption of the repository.
514 information about recovery from corruption of the repository.
515
515
516 Returns 0 on success, 1 if errors are encountered.
516 Returns 0 on success, 1 if errors are encountered.
517
517
518 (some details hidden, use --verbose to show complete help)
518 (some details hidden, use --verbose to show complete help)
519
519
520 $ hg help diff
520 $ hg help diff
521 hg diff [OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...
521 hg diff [OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...
522
522
523 diff repository (or selected files)
523 diff repository (or selected files)
524
524
525 Show differences between revisions for the specified files.
525 Show differences between revisions for the specified files.
526
526
527 Differences between files are shown using the unified diff format.
527 Differences between files are shown using the unified diff format.
528
528
529 Note:
529 Note:
530 'hg diff' may generate unexpected results for merges, as it will
530 'hg diff' may generate unexpected results for merges, as it will
531 default to comparing against the working directory's first parent
531 default to comparing against the working directory's first parent
532 changeset if no revisions are specified.
532 changeset if no revisions are specified.
533
533
534 When two revision arguments are given, then changes are shown between
534 When two revision arguments are given, then changes are shown between
535 those revisions. If only one revision is specified then that revision is
535 those revisions. If only one revision is specified then that revision is
536 compared to the working directory, and, when no revisions are specified,
536 compared to the working directory, and, when no revisions are specified,
537 the working directory files are compared to its first parent.
537 the working directory files are compared to its first parent.
538
538
539 Alternatively you can specify -c/--change with a revision to see the
539 Alternatively you can specify -c/--change with a revision to see the
540 changes in that changeset relative to its first parent.
540 changes in that changeset relative to its first parent.
541
541
542 Without the -a/--text option, diff will avoid generating diffs of files it
542 Without the -a/--text option, diff will avoid generating diffs of files it
543 detects as binary. With -a, diff will generate a diff anyway, probably
543 detects as binary. With -a, diff will generate a diff anyway, probably
544 with undesirable results.
544 with undesirable results.
545
545
546 Use the -g/--git option to generate diffs in the git extended diff format.
546 Use the -g/--git option to generate diffs in the git extended diff format.
547 For more information, read 'hg help diffs'.
547 For more information, read 'hg help diffs'.
548
548
549 Returns 0 on success.
549 Returns 0 on success.
550
550
551 options ([+] can be repeated):
551 options ([+] can be repeated):
552
552
553 -r --rev REV [+] revision
553 -r --rev REV [+] revision
554 -c --change REV change made by revision
554 -c --change REV change made by revision
555 -a --text treat all files as text
555 -a --text treat all files as text
556 -g --git use git extended diff format
556 -g --git use git extended diff format
557 --binary generate binary diffs in git mode (default)
557 --binary generate binary diffs in git mode (default)
558 --nodates omit dates from diff headers
558 --nodates omit dates from diff headers
559 --noprefix omit a/ and b/ prefixes from filenames
559 --noprefix omit a/ and b/ prefixes from filenames
560 -p --show-function show which function each change is in
560 -p --show-function show which function each change is in
561 --reverse produce a diff that undoes the changes
561 --reverse produce a diff that undoes the changes
562 -w --ignore-all-space ignore white space when comparing lines
562 -w --ignore-all-space ignore white space when comparing lines
563 -b --ignore-space-change ignore changes in the amount of white space
563 -b --ignore-space-change ignore changes in the amount of white space
564 -B --ignore-blank-lines ignore changes whose lines are all blank
564 -B --ignore-blank-lines ignore changes whose lines are all blank
565 -Z --ignore-space-at-eol ignore changes in whitespace at EOL
565 -Z --ignore-space-at-eol ignore changes in whitespace at EOL
566 -U --unified NUM number of lines of context to show
566 -U --unified NUM number of lines of context to show
567 --stat output diffstat-style summary of changes
567 --stat output diffstat-style summary of changes
568 --root DIR produce diffs relative to subdirectory
568 --root DIR produce diffs relative to subdirectory
569 -I --include PATTERN [+] include names matching the given patterns
569 -I --include PATTERN [+] include names matching the given patterns
570 -X --exclude PATTERN [+] exclude names matching the given patterns
570 -X --exclude PATTERN [+] exclude names matching the given patterns
571 -S --subrepos recurse into subrepositories
571 -S --subrepos recurse into subrepositories
572
572
573 (some details hidden, use --verbose to show complete help)
573 (some details hidden, use --verbose to show complete help)
574
574
575 $ hg help status
575 $ hg help status
576 hg status [OPTION]... [FILE]...
576 hg status [OPTION]... [FILE]...
577
577
578 aliases: st
578 aliases: st
579
579
580 show changed files in the working directory
580 show changed files in the working directory
581
581
582 Show status of files in the repository. If names are given, only files
582 Show status of files in the repository. If names are given, only files
583 that match are shown. Files that are clean or ignored or the source of a
583 that match are shown. Files that are clean or ignored or the source of a
584 copy/move operation, are not listed unless -c/--clean, -i/--ignored,
584 copy/move operation, are not listed unless -c/--clean, -i/--ignored,
585 -C/--copies or -A/--all are given. Unless options described with "show
585 -C/--copies or -A/--all are given. Unless options described with "show
586 only ..." are given, the options -mardu are used.
586 only ..." are given, the options -mardu are used.
587
587
588 Option -q/--quiet hides untracked (unknown and ignored) files unless
588 Option -q/--quiet hides untracked (unknown and ignored) files unless
589 explicitly requested with -u/--unknown or -i/--ignored.
589 explicitly requested with -u/--unknown or -i/--ignored.
590
590
591 Note:
591 Note:
592 'hg status' may appear to disagree with diff if permissions have
592 'hg status' may appear to disagree with diff if permissions have
593 changed or a merge has occurred. The standard diff format does not
593 changed or a merge has occurred. The standard diff format does not
594 report permission changes and diff only reports changes relative to one
594 report permission changes and diff only reports changes relative to one
595 merge parent.
595 merge parent.
596
596
597 If one revision is given, it is used as the base revision. If two
597 If one revision is given, it is used as the base revision. If two
598 revisions are given, the differences between them are shown. The --change
598 revisions are given, the differences between them are shown. The --change
599 option can also be used as a shortcut to list the changed files of a
599 option can also be used as a shortcut to list the changed files of a
600 revision from its first parent.
600 revision from its first parent.
601
601
602 The codes used to show the status of files are:
602 The codes used to show the status of files are:
603
603
604 M = modified
604 M = modified
605 A = added
605 A = added
606 R = removed
606 R = removed
607 C = clean
607 C = clean
608 ! = missing (deleted by non-hg command, but still tracked)
608 ! = missing (deleted by non-hg command, but still tracked)
609 ? = not tracked
609 ? = not tracked
610 I = ignored
610 I = ignored
611 = origin of the previous file (with --copies)
611 = origin of the previous file (with --copies)
612
612
613 Returns 0 on success.
613 Returns 0 on success.
614
614
615 options ([+] can be repeated):
615 options ([+] can be repeated):
616
616
617 -A --all show status of all files
617 -A --all show status of all files
618 -m --modified show only modified files
618 -m --modified show only modified files
619 -a --added show only added files
619 -a --added show only added files
620 -r --removed show only removed files
620 -r --removed show only removed files
621 -d --deleted show only deleted (but tracked) files
621 -d --deleted show only deleted (but tracked) files
622 -c --clean show only files without changes
622 -c --clean show only files without changes
623 -u --unknown show only unknown (not tracked) files
623 -u --unknown show only unknown (not tracked) files
624 -i --ignored show only ignored files
624 -i --ignored show only ignored files
625 -n --no-status hide status prefix
625 -n --no-status hide status prefix
626 -C --copies show source of copied files
626 -C --copies show source of copied files
627 -0 --print0 end filenames with NUL, for use with xargs
627 -0 --print0 end filenames with NUL, for use with xargs
628 --rev REV [+] show difference from revision
628 --rev REV [+] show difference from revision
629 --change REV list the changed files of a revision
629 --change REV list the changed files of a revision
630 -I --include PATTERN [+] include names matching the given patterns
630 -I --include PATTERN [+] include names matching the given patterns
631 -X --exclude PATTERN [+] exclude names matching the given patterns
631 -X --exclude PATTERN [+] exclude names matching the given patterns
632 -S --subrepos recurse into subrepositories
632 -S --subrepos recurse into subrepositories
633
633
634 (some details hidden, use --verbose to show complete help)
634 (some details hidden, use --verbose to show complete help)
635
635
636 $ hg -q help status
636 $ hg -q help status
637 hg status [OPTION]... [FILE]...
637 hg status [OPTION]... [FILE]...
638
638
639 show changed files in the working directory
639 show changed files in the working directory
640
640
641 $ hg help foo
641 $ hg help foo
642 abort: no such help topic: foo
642 abort: no such help topic: foo
643 (try 'hg help --keyword foo')
643 (try 'hg help --keyword foo')
644 [255]
644 [255]
645
645
646 $ hg skjdfks
646 $ hg skjdfks
647 hg: unknown command 'skjdfks'
647 hg: unknown command 'skjdfks'
648 Mercurial Distributed SCM
648 Mercurial Distributed SCM
649
649
650 basic commands:
650 basic commands:
651
651
652 add add the specified files on the next commit
652 add add the specified files on the next commit
653 annotate show changeset information by line for each file
653 annotate show changeset information by line for each file
654 clone make a copy of an existing repository
654 clone make a copy of an existing repository
655 commit commit the specified files or all outstanding changes
655 commit commit the specified files or all outstanding changes
656 diff diff repository (or selected files)
656 diff diff repository (or selected files)
657 export dump the header and diffs for one or more changesets
657 export dump the header and diffs for one or more changesets
658 forget forget the specified files on the next commit
658 forget forget the specified files on the next commit
659 init create a new repository in the given directory
659 init create a new repository in the given directory
660 log show revision history of entire repository or files
660 log show revision history of entire repository or files
661 merge merge another revision into working directory
661 merge merge another revision into working directory
662 pull pull changes from the specified source
662 pull pull changes from the specified source
663 push push changes to the specified destination
663 push push changes to the specified destination
664 remove remove the specified files on the next commit
664 remove remove the specified files on the next commit
665 serve start stand-alone webserver
665 serve start stand-alone webserver
666 status show changed files in the working directory
666 status show changed files in the working directory
667 summary summarize working directory state
667 summary summarize working directory state
668 update update working directory (or switch revisions)
668 update update working directory (or switch revisions)
669
669
670 (use 'hg help' for the full list of commands or 'hg -v' for details)
670 (use 'hg help' for the full list of commands or 'hg -v' for details)
671 [255]
671 [255]
672
672
673 Typoed command gives suggestion
673 Typoed command gives suggestion
674 $ hg puls
674 $ hg puls
675 hg: unknown command 'puls'
675 hg: unknown command 'puls'
676 (did you mean one of pull, push?)
676 (did you mean one of pull, push?)
677 [255]
677 [255]
678
678
679 Not enabled extension gets suggested
679 Not enabled extension gets suggested
680
680
681 $ hg rebase
681 $ hg rebase
682 hg: unknown command 'rebase'
682 hg: unknown command 'rebase'
683 'rebase' is provided by the following extension:
683 'rebase' is provided by the following extension:
684
684
685 rebase command to move sets of revisions to a different ancestor
685 rebase command to move sets of revisions to a different ancestor
686
686
687 (use 'hg help extensions' for information on enabling extensions)
687 (use 'hg help extensions' for information on enabling extensions)
688 [255]
688 [255]
689
689
690 Disabled extension gets suggested
690 Disabled extension gets suggested
691 $ hg --config extensions.rebase=! rebase
691 $ hg --config extensions.rebase=! rebase
692 hg: unknown command 'rebase'
692 hg: unknown command 'rebase'
693 'rebase' is provided by the following extension:
693 'rebase' is provided by the following extension:
694
694
695 rebase command to move sets of revisions to a different ancestor
695 rebase command to move sets of revisions to a different ancestor
696
696
697 (use 'hg help extensions' for information on enabling extensions)
697 (use 'hg help extensions' for information on enabling extensions)
698 [255]
698 [255]
699
699
700 Make sure that we don't run afoul of the help system thinking that
700 Make sure that we don't run afoul of the help system thinking that
701 this is a section and erroring out weirdly.
701 this is a section and erroring out weirdly.
702
702
703 $ hg .log
703 $ hg .log
704 hg: unknown command '.log'
704 hg: unknown command '.log'
705 (did you mean log?)
705 (did you mean log?)
706 [255]
706 [255]
707
707
708 $ hg log.
708 $ hg log.
709 hg: unknown command 'log.'
709 hg: unknown command 'log.'
710 (did you mean log?)
710 (did you mean log?)
711 [255]
711 [255]
712 $ hg pu.lh
712 $ hg pu.lh
713 hg: unknown command 'pu.lh'
713 hg: unknown command 'pu.lh'
714 (did you mean one of pull, push?)
714 (did you mean one of pull, push?)
715 [255]
715 [255]
716
716
717 $ cat > helpext.py <<EOF
717 $ cat > helpext.py <<EOF
718 > import os
718 > import os
719 > from mercurial import commands, registrar
719 > from mercurial import commands, fancyopts, registrar
720 >
720 >
721 > def func(arg):
722 > return '%sfoo' % arg
723 > class customopt(fancyopts.customopt):
724 > def newstate(self, oldstate, newparam, abort):
725 > return '%sbar' % oldstate
721 > cmdtable = {}
726 > cmdtable = {}
722 > command = registrar.command(cmdtable)
727 > command = registrar.command(cmdtable)
723 >
728 >
724 > @command(b'nohelp',
729 > @command(b'nohelp',
725 > [(b'', b'longdesc', 3, b'x'*90),
730 > [(b'', b'longdesc', 3, b'x'*67),
726 > (b'n', b'', None, b'normal desc'),
731 > (b'n', b'', None, b'normal desc'),
727 > (b'', b'newline', b'', b'line1\nline2')],
732 > (b'', b'newline', b'', b'line1\nline2'),
733 > (b'', b'callableopt', func, b'adds foo'),
734 > (b'', b'customopt', customopt(''), b'adds bar'),
735 > (b'', b'customopt-withdefault', customopt('foo'), b'adds bar')],
728 > b'hg nohelp',
736 > b'hg nohelp',
729 > norepo=True)
737 > norepo=True)
730 > @command(b'debugoptADV', [(b'', b'aopt', None, b'option is (ADVANCED)')])
738 > @command(b'debugoptADV', [(b'', b'aopt', None, b'option is (ADVANCED)')])
731 > @command(b'debugoptDEP', [(b'', b'dopt', None, b'option is (DEPRECATED)')])
739 > @command(b'debugoptDEP', [(b'', b'dopt', None, b'option is (DEPRECATED)')])
732 > @command(b'debugoptEXP', [(b'', b'eopt', None, b'option is (EXPERIMENTAL)')])
740 > @command(b'debugoptEXP', [(b'', b'eopt', None, b'option is (EXPERIMENTAL)')])
733 > def nohelp(ui, *args, **kwargs):
741 > def nohelp(ui, *args, **kwargs):
734 > pass
742 > pass
735 >
743 >
736 > def uisetup(ui):
744 > def uisetup(ui):
737 > ui.setconfig(b'alias', b'shellalias', b'!echo hi', b'helpext')
745 > ui.setconfig(b'alias', b'shellalias', b'!echo hi', b'helpext')
738 > ui.setconfig(b'alias', b'hgalias', b'summary', b'helpext')
746 > ui.setconfig(b'alias', b'hgalias', b'summary', b'helpext')
739 >
747 >
740 > EOF
748 > EOF
741 $ echo '[extensions]' >> $HGRCPATH
749 $ echo '[extensions]' >> $HGRCPATH
742 $ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
750 $ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
743
751
744 Test for aliases
752 Test for aliases
745
753
746 $ hg help hgalias
754 $ hg help hgalias
747 hg hgalias [--remote]
755 hg hgalias [--remote]
748
756
749 alias for: hg summary
757 alias for: hg summary
750
758
751 summarize working directory state
759 summarize working directory state
752
760
753 This generates a brief summary of the working directory state, including
761 This generates a brief summary of the working directory state, including
754 parents, branch, commit status, phase and available updates.
762 parents, branch, commit status, phase and available updates.
755
763
756 With the --remote option, this will check the default paths for incoming
764 With the --remote option, this will check the default paths for incoming
757 and outgoing changes. This can be time-consuming.
765 and outgoing changes. This can be time-consuming.
758
766
759 Returns 0 on success.
767 Returns 0 on success.
760
768
761 defined by: helpext
769 defined by: helpext
762
770
763 options:
771 options:
764
772
765 --remote check for push and pull
773 --remote check for push and pull
766
774
767 (some details hidden, use --verbose to show complete help)
775 (some details hidden, use --verbose to show complete help)
768
776
769 $ hg help shellalias
777 $ hg help shellalias
770 hg shellalias
778 hg shellalias
771
779
772 shell alias for:
780 shell alias for:
773
781
774 echo hi
782 echo hi
775
783
776 defined by: helpext
784 defined by: helpext
777
785
778 (some details hidden, use --verbose to show complete help)
786 (some details hidden, use --verbose to show complete help)
779
787
780 Test command with no help text
788 Test command with no help text
781
789
782 $ hg help nohelp
790 $ hg help nohelp
783 hg nohelp
791 hg nohelp
784
792
785 (no help text available)
793 (no help text available)
786
794
787 options:
795 options:
788
796
789 --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
797 --longdesc VALUE
790 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (default: 3)
798 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
791 -n -- normal desc
799 xxxxxxxxxxxxxxxxxxxxxxx (default: 3)
792 --newline VALUE line1 line2
800 -n -- normal desc
801 --newline VALUE line1 line2
802 --callableopt VALUE adds foo
803 --customopt VALUE adds bar
804 --customopt-withdefault VALUE adds bar (default: foo)
793
805
794 (some details hidden, use --verbose to show complete help)
806 (some details hidden, use --verbose to show complete help)
795
807
796 $ hg help -k nohelp
808 $ hg help -k nohelp
797 Commands:
809 Commands:
798
810
799 nohelp hg nohelp
811 nohelp hg nohelp
800
812
801 Extension Commands:
813 Extension Commands:
802
814
803 nohelp (no help text available)
815 nohelp (no help text available)
804
816
805 Test that default list of commands omits extension commands
817 Test that default list of commands omits extension commands
806
818
807 $ hg help
819 $ hg help
808 Mercurial Distributed SCM
820 Mercurial Distributed SCM
809
821
810 list of commands:
822 list of commands:
811
823
812 add add the specified files on the next commit
824 add add the specified files on the next commit
813 addremove add all new files, delete all missing files
825 addremove add all new files, delete all missing files
814 annotate show changeset information by line for each file
826 annotate show changeset information by line for each file
815 archive create an unversioned archive of a repository revision
827 archive create an unversioned archive of a repository revision
816 backout reverse effect of earlier changeset
828 backout reverse effect of earlier changeset
817 bisect subdivision search of changesets
829 bisect subdivision search of changesets
818 bookmarks create a new bookmark or list existing bookmarks
830 bookmarks create a new bookmark or list existing bookmarks
819 branch set or show the current branch name
831 branch set or show the current branch name
820 branches list repository named branches
832 branches list repository named branches
821 bundle create a bundle file
833 bundle create a bundle file
822 cat output the current or given revision of files
834 cat output the current or given revision of files
823 clone make a copy of an existing repository
835 clone make a copy of an existing repository
824 commit commit the specified files or all outstanding changes
836 commit commit the specified files or all outstanding changes
825 config show combined config settings from all hgrc files
837 config show combined config settings from all hgrc files
826 copy mark files as copied for the next commit
838 copy mark files as copied for the next commit
827 diff diff repository (or selected files)
839 diff diff repository (or selected files)
828 export dump the header and diffs for one or more changesets
840 export dump the header and diffs for one or more changesets
829 files list tracked files
841 files list tracked files
830 forget forget the specified files on the next commit
842 forget forget the specified files on the next commit
831 graft copy changes from other branches onto the current branch
843 graft copy changes from other branches onto the current branch
832 grep search revision history for a pattern in specified files
844 grep search revision history for a pattern in specified files
833 heads show branch heads
845 heads show branch heads
834 help show help for a given topic or a help overview
846 help show help for a given topic or a help overview
835 identify identify the working directory or specified revision
847 identify identify the working directory or specified revision
836 import import an ordered set of patches
848 import import an ordered set of patches
837 incoming show new changesets found in source
849 incoming show new changesets found in source
838 init create a new repository in the given directory
850 init create a new repository in the given directory
839 log show revision history of entire repository or files
851 log show revision history of entire repository or files
840 manifest output the current or given revision of the project manifest
852 manifest output the current or given revision of the project manifest
841 merge merge another revision into working directory
853 merge merge another revision into working directory
842 outgoing show changesets not found in the destination
854 outgoing show changesets not found in the destination
843 paths show aliases for remote repositories
855 paths show aliases for remote repositories
844 phase set or show the current phase name
856 phase set or show the current phase name
845 pull pull changes from the specified source
857 pull pull changes from the specified source
846 push push changes to the specified destination
858 push push changes to the specified destination
847 recover roll back an interrupted transaction
859 recover roll back an interrupted transaction
848 remove remove the specified files on the next commit
860 remove remove the specified files on the next commit
849 rename rename files; equivalent of copy + remove
861 rename rename files; equivalent of copy + remove
850 resolve redo merges or set/view the merge status of files
862 resolve redo merges or set/view the merge status of files
851 revert restore files to their checkout state
863 revert restore files to their checkout state
852 root print the root (top) of the current working directory
864 root print the root (top) of the current working directory
853 serve start stand-alone webserver
865 serve start stand-alone webserver
854 status show changed files in the working directory
866 status show changed files in the working directory
855 summary summarize working directory state
867 summary summarize working directory state
856 tag add one or more tags for the current or given revision
868 tag add one or more tags for the current or given revision
857 tags list repository tags
869 tags list repository tags
858 unbundle apply one or more bundle files
870 unbundle apply one or more bundle files
859 update update working directory (or switch revisions)
871 update update working directory (or switch revisions)
860 verify verify the integrity of the repository
872 verify verify the integrity of the repository
861 version output version and copyright information
873 version output version and copyright information
862
874
863 enabled extensions:
875 enabled extensions:
864
876
865 helpext (no help text available)
877 helpext (no help text available)
866
878
867 additional help topics:
879 additional help topics:
868
880
869 bundlespec Bundle File Formats
881 bundlespec Bundle File Formats
870 color Colorizing Outputs
882 color Colorizing Outputs
871 config Configuration Files
883 config Configuration Files
872 dates Date Formats
884 dates Date Formats
873 diffs Diff Formats
885 diffs Diff Formats
874 environment Environment Variables
886 environment Environment Variables
875 extensions Using Additional Features
887 extensions Using Additional Features
876 filesets Specifying File Sets
888 filesets Specifying File Sets
877 flags Command-line flags
889 flags Command-line flags
878 glossary Glossary
890 glossary Glossary
879 hgignore Syntax for Mercurial Ignore Files
891 hgignore Syntax for Mercurial Ignore Files
880 hgweb Configuring hgweb
892 hgweb Configuring hgweb
881 internals Technical implementation topics
893 internals Technical implementation topics
882 merge-tools Merge Tools
894 merge-tools Merge Tools
883 pager Pager Support
895 pager Pager Support
884 patterns File Name Patterns
896 patterns File Name Patterns
885 phases Working with Phases
897 phases Working with Phases
886 revisions Specifying Revisions
898 revisions Specifying Revisions
887 scripting Using Mercurial from scripts and automation
899 scripting Using Mercurial from scripts and automation
888 subrepos Subrepositories
900 subrepos Subrepositories
889 templating Template Usage
901 templating Template Usage
890 urls URL Paths
902 urls URL Paths
891
903
892 (use 'hg help -v' to show built-in aliases and global options)
904 (use 'hg help -v' to show built-in aliases and global options)
893
905
894
906
895 Test list of internal help commands
907 Test list of internal help commands
896
908
897 $ hg help debug
909 $ hg help debug
898 debug commands (internal and unsupported):
910 debug commands (internal and unsupported):
899
911
900 debugancestor
912 debugancestor
901 find the ancestor revision of two revisions in a given index
913 find the ancestor revision of two revisions in a given index
902 debugapplystreamclonebundle
914 debugapplystreamclonebundle
903 apply a stream clone bundle file
915 apply a stream clone bundle file
904 debugbuilddag
916 debugbuilddag
905 builds a repo with a given DAG from scratch in the current
917 builds a repo with a given DAG from scratch in the current
906 empty repo
918 empty repo
907 debugbundle lists the contents of a bundle
919 debugbundle lists the contents of a bundle
908 debugcapabilities
920 debugcapabilities
909 lists the capabilities of a remote peer
921 lists the capabilities of a remote peer
910 debugcheckstate
922 debugcheckstate
911 validate the correctness of the current dirstate
923 validate the correctness of the current dirstate
912 debugcolor show available color, effects or style
924 debugcolor show available color, effects or style
913 debugcommands
925 debugcommands
914 list all available commands and options
926 list all available commands and options
915 debugcomplete
927 debugcomplete
916 returns the completion list associated with the given command
928 returns the completion list associated with the given command
917 debugcreatestreamclonebundle
929 debugcreatestreamclonebundle
918 create a stream clone bundle file
930 create a stream clone bundle file
919 debugdag format the changelog or an index DAG as a concise textual
931 debugdag format the changelog or an index DAG as a concise textual
920 description
932 description
921 debugdata dump the contents of a data file revision
933 debugdata dump the contents of a data file revision
922 debugdate parse and display a date
934 debugdate parse and display a date
923 debugdeltachain
935 debugdeltachain
924 dump information about delta chains in a revlog
936 dump information about delta chains in a revlog
925 debugdirstate
937 debugdirstate
926 show the contents of the current dirstate
938 show the contents of the current dirstate
927 debugdiscovery
939 debugdiscovery
928 runs the changeset discovery protocol in isolation
940 runs the changeset discovery protocol in isolation
929 debugdownload
941 debugdownload
930 download a resource using Mercurial logic and config
942 download a resource using Mercurial logic and config
931 debugextensions
943 debugextensions
932 show information about active extensions
944 show information about active extensions
933 debugfileset parse and apply a fileset specification
945 debugfileset parse and apply a fileset specification
934 debugformat display format information about the current repository
946 debugformat display format information about the current repository
935 debugfsinfo show information detected about current filesystem
947 debugfsinfo show information detected about current filesystem
936 debuggetbundle
948 debuggetbundle
937 retrieves a bundle from a repo
949 retrieves a bundle from a repo
938 debugignore display the combined ignore pattern and information about
950 debugignore display the combined ignore pattern and information about
939 ignored files
951 ignored files
940 debugindex dump the contents of an index file
952 debugindex dump the contents of an index file
941 debugindexdot
953 debugindexdot
942 dump an index DAG as a graphviz dot file
954 dump an index DAG as a graphviz dot file
943 debuginstall test Mercurial installation
955 debuginstall test Mercurial installation
944 debugknown test whether node ids are known to a repo
956 debugknown test whether node ids are known to a repo
945 debuglocks show or modify state of locks
957 debuglocks show or modify state of locks
946 debugmergestate
958 debugmergestate
947 print merge state
959 print merge state
948 debugnamecomplete
960 debugnamecomplete
949 complete "names" - tags, open branch names, bookmark names
961 complete "names" - tags, open branch names, bookmark names
950 debugobsolete
962 debugobsolete
951 create arbitrary obsolete marker
963 create arbitrary obsolete marker
952 debugoptADV (no help text available)
964 debugoptADV (no help text available)
953 debugoptDEP (no help text available)
965 debugoptDEP (no help text available)
954 debugoptEXP (no help text available)
966 debugoptEXP (no help text available)
955 debugpathcomplete
967 debugpathcomplete
956 complete part or all of a tracked path
968 complete part or all of a tracked path
957 debugpeer establish a connection to a peer repository
969 debugpeer establish a connection to a peer repository
958 debugpickmergetool
970 debugpickmergetool
959 examine which merge tool is chosen for specified file
971 examine which merge tool is chosen for specified file
960 debugpushkey access the pushkey key/value protocol
972 debugpushkey access the pushkey key/value protocol
961 debugpvec (no help text available)
973 debugpvec (no help text available)
962 debugrebuilddirstate
974 debugrebuilddirstate
963 rebuild the dirstate as it would look like for the given
975 rebuild the dirstate as it would look like for the given
964 revision
976 revision
965 debugrebuildfncache
977 debugrebuildfncache
966 rebuild the fncache file
978 rebuild the fncache file
967 debugrename dump rename information
979 debugrename dump rename information
968 debugrevlog show data and statistics about a revlog
980 debugrevlog show data and statistics about a revlog
969 debugrevspec parse and apply a revision specification
981 debugrevspec parse and apply a revision specification
970 debugserve run a server with advanced settings
982 debugserve run a server with advanced settings
971 debugsetparents
983 debugsetparents
972 manually set the parents of the current working directory
984 manually set the parents of the current working directory
973 debugssl test a secure connection to a server
985 debugssl test a secure connection to a server
974 debugsub (no help text available)
986 debugsub (no help text available)
975 debugsuccessorssets
987 debugsuccessorssets
976 show set of successors for revision
988 show set of successors for revision
977 debugtemplate
989 debugtemplate
978 parse and apply a template
990 parse and apply a template
979 debuguigetpass
991 debuguigetpass
980 show prompt to type password
992 show prompt to type password
981 debuguiprompt
993 debuguiprompt
982 show plain prompt
994 show plain prompt
983 debugupdatecaches
995 debugupdatecaches
984 warm all known caches in the repository
996 warm all known caches in the repository
985 debugupgraderepo
997 debugupgraderepo
986 upgrade a repository to use different features
998 upgrade a repository to use different features
987 debugwalk show how files match on given patterns
999 debugwalk show how files match on given patterns
988 debugwhyunstable
1000 debugwhyunstable
989 explain instabilities of a changeset
1001 explain instabilities of a changeset
990 debugwireargs
1002 debugwireargs
991 (no help text available)
1003 (no help text available)
992 debugwireproto
1004 debugwireproto
993 send wire protocol commands to a server
1005 send wire protocol commands to a server
994
1006
995 (use 'hg help -v debug' to show built-in aliases and global options)
1007 (use 'hg help -v debug' to show built-in aliases and global options)
996
1008
997 internals topic renders index of available sub-topics
1009 internals topic renders index of available sub-topics
998
1010
999 $ hg help internals
1011 $ hg help internals
1000 Technical implementation topics
1012 Technical implementation topics
1001 """""""""""""""""""""""""""""""
1013 """""""""""""""""""""""""""""""
1002
1014
1003 To access a subtopic, use "hg help internals.{subtopic-name}"
1015 To access a subtopic, use "hg help internals.{subtopic-name}"
1004
1016
1005 bundle2 Bundle2
1017 bundle2 Bundle2
1006 bundles Bundles
1018 bundles Bundles
1007 censor Censor
1019 censor Censor
1008 changegroups Changegroups
1020 changegroups Changegroups
1009 config Config Registrar
1021 config Config Registrar
1010 requirements Repository Requirements
1022 requirements Repository Requirements
1011 revlogs Revision Logs
1023 revlogs Revision Logs
1012 wireprotocol Wire Protocol
1024 wireprotocol Wire Protocol
1013
1025
1014 sub-topics can be accessed
1026 sub-topics can be accessed
1015
1027
1016 $ hg help internals.changegroups
1028 $ hg help internals.changegroups
1017 Changegroups
1029 Changegroups
1018 """"""""""""
1030 """"""""""""
1019
1031
1020 Changegroups are representations of repository revlog data, specifically
1032 Changegroups are representations of repository revlog data, specifically
1021 the changelog data, root/flat manifest data, treemanifest data, and
1033 the changelog data, root/flat manifest data, treemanifest data, and
1022 filelogs.
1034 filelogs.
1023
1035
1024 There are 3 versions of changegroups: "1", "2", and "3". From a high-
1036 There are 3 versions of changegroups: "1", "2", and "3". From a high-
1025 level, versions "1" and "2" are almost exactly the same, with the only
1037 level, versions "1" and "2" are almost exactly the same, with the only
1026 difference being an additional item in the *delta header*. Version "3"
1038 difference being an additional item in the *delta header*. Version "3"
1027 adds support for revlog flags in the *delta header* and optionally
1039 adds support for revlog flags in the *delta header* and optionally
1028 exchanging treemanifests (enabled by setting an option on the
1040 exchanging treemanifests (enabled by setting an option on the
1029 "changegroup" part in the bundle2).
1041 "changegroup" part in the bundle2).
1030
1042
1031 Changegroups when not exchanging treemanifests consist of 3 logical
1043 Changegroups when not exchanging treemanifests consist of 3 logical
1032 segments:
1044 segments:
1033
1045
1034 +---------------------------------+
1046 +---------------------------------+
1035 | | | |
1047 | | | |
1036 | changeset | manifest | filelogs |
1048 | changeset | manifest | filelogs |
1037 | | | |
1049 | | | |
1038 | | | |
1050 | | | |
1039 +---------------------------------+
1051 +---------------------------------+
1040
1052
1041 When exchanging treemanifests, there are 4 logical segments:
1053 When exchanging treemanifests, there are 4 logical segments:
1042
1054
1043 +-------------------------------------------------+
1055 +-------------------------------------------------+
1044 | | | | |
1056 | | | | |
1045 | changeset | root | treemanifests | filelogs |
1057 | changeset | root | treemanifests | filelogs |
1046 | | manifest | | |
1058 | | manifest | | |
1047 | | | | |
1059 | | | | |
1048 +-------------------------------------------------+
1060 +-------------------------------------------------+
1049
1061
1050 The principle building block of each segment is a *chunk*. A *chunk* is a
1062 The principle building block of each segment is a *chunk*. A *chunk* is a
1051 framed piece of data:
1063 framed piece of data:
1052
1064
1053 +---------------------------------------+
1065 +---------------------------------------+
1054 | | |
1066 | | |
1055 | length | data |
1067 | length | data |
1056 | (4 bytes) | (<length - 4> bytes) |
1068 | (4 bytes) | (<length - 4> bytes) |
1057 | | |
1069 | | |
1058 +---------------------------------------+
1070 +---------------------------------------+
1059
1071
1060 All integers are big-endian signed integers. Each chunk starts with a
1072 All integers are big-endian signed integers. Each chunk starts with a
1061 32-bit integer indicating the length of the entire chunk (including the
1073 32-bit integer indicating the length of the entire chunk (including the
1062 length field itself).
1074 length field itself).
1063
1075
1064 There is a special case chunk that has a value of 0 for the length
1076 There is a special case chunk that has a value of 0 for the length
1065 ("0x00000000"). We call this an *empty chunk*.
1077 ("0x00000000"). We call this an *empty chunk*.
1066
1078
1067 Delta Groups
1079 Delta Groups
1068 ============
1080 ============
1069
1081
1070 A *delta group* expresses the content of a revlog as a series of deltas,
1082 A *delta group* expresses the content of a revlog as a series of deltas,
1071 or patches against previous revisions.
1083 or patches against previous revisions.
1072
1084
1073 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
1085 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
1074 to signal the end of the delta group:
1086 to signal the end of the delta group:
1075
1087
1076 +------------------------------------------------------------------------+
1088 +------------------------------------------------------------------------+
1077 | | | | | |
1089 | | | | | |
1078 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
1090 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
1079 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
1091 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
1080 | | | | | |
1092 | | | | | |
1081 +------------------------------------------------------------------------+
1093 +------------------------------------------------------------------------+
1082
1094
1083 Each *chunk*'s data consists of the following:
1095 Each *chunk*'s data consists of the following:
1084
1096
1085 +---------------------------------------+
1097 +---------------------------------------+
1086 | | |
1098 | | |
1087 | delta header | delta data |
1099 | delta header | delta data |
1088 | (various by version) | (various) |
1100 | (various by version) | (various) |
1089 | | |
1101 | | |
1090 +---------------------------------------+
1102 +---------------------------------------+
1091
1103
1092 The *delta data* is a series of *delta*s that describe a diff from an
1104 The *delta data* is a series of *delta*s that describe a diff from an
1093 existing entry (either that the recipient already has, or previously
1105 existing entry (either that the recipient already has, or previously
1094 specified in the bundle/changegroup).
1106 specified in the bundle/changegroup).
1095
1107
1096 The *delta header* is different between versions "1", "2", and "3" of the
1108 The *delta header* is different between versions "1", "2", and "3" of the
1097 changegroup format.
1109 changegroup format.
1098
1110
1099 Version 1 (headerlen=80):
1111 Version 1 (headerlen=80):
1100
1112
1101 +------------------------------------------------------+
1113 +------------------------------------------------------+
1102 | | | | |
1114 | | | | |
1103 | node | p1 node | p2 node | link node |
1115 | node | p1 node | p2 node | link node |
1104 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1116 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1105 | | | | |
1117 | | | | |
1106 +------------------------------------------------------+
1118 +------------------------------------------------------+
1107
1119
1108 Version 2 (headerlen=100):
1120 Version 2 (headerlen=100):
1109
1121
1110 +------------------------------------------------------------------+
1122 +------------------------------------------------------------------+
1111 | | | | | |
1123 | | | | | |
1112 | node | p1 node | p2 node | base node | link node |
1124 | node | p1 node | p2 node | base node | link node |
1113 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1125 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
1114 | | | | | |
1126 | | | | | |
1115 +------------------------------------------------------------------+
1127 +------------------------------------------------------------------+
1116
1128
1117 Version 3 (headerlen=102):
1129 Version 3 (headerlen=102):
1118
1130
1119 +------------------------------------------------------------------------------+
1131 +------------------------------------------------------------------------------+
1120 | | | | | | |
1132 | | | | | | |
1121 | node | p1 node | p2 node | base node | link node | flags |
1133 | node | p1 node | p2 node | base node | link node | flags |
1122 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
1134 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
1123 | | | | | | |
1135 | | | | | | |
1124 +------------------------------------------------------------------------------+
1136 +------------------------------------------------------------------------------+
1125
1137
1126 The *delta data* consists of "chunklen - 4 - headerlen" bytes, which
1138 The *delta data* consists of "chunklen - 4 - headerlen" bytes, which
1127 contain a series of *delta*s, densely packed (no separators). These deltas
1139 contain a series of *delta*s, densely packed (no separators). These deltas
1128 describe a diff from an existing entry (either that the recipient already
1140 describe a diff from an existing entry (either that the recipient already
1129 has, or previously specified in the bundle/changegroup). The format is
1141 has, or previously specified in the bundle/changegroup). The format is
1130 described more fully in "hg help internals.bdiff", but briefly:
1142 described more fully in "hg help internals.bdiff", but briefly:
1131
1143
1132 +---------------------------------------------------------------+
1144 +---------------------------------------------------------------+
1133 | | | | |
1145 | | | | |
1134 | start offset | end offset | new length | content |
1146 | start offset | end offset | new length | content |
1135 | (4 bytes) | (4 bytes) | (4 bytes) | (<new length> bytes) |
1147 | (4 bytes) | (4 bytes) | (4 bytes) | (<new length> bytes) |
1136 | | | | |
1148 | | | | |
1137 +---------------------------------------------------------------+
1149 +---------------------------------------------------------------+
1138
1150
1139 Please note that the length field in the delta data does *not* include
1151 Please note that the length field in the delta data does *not* include
1140 itself.
1152 itself.
1141
1153
1142 In version 1, the delta is always applied against the previous node from
1154 In version 1, the delta is always applied against the previous node from
1143 the changegroup or the first parent if this is the first entry in the
1155 the changegroup or the first parent if this is the first entry in the
1144 changegroup.
1156 changegroup.
1145
1157
1146 In version 2 and up, the delta base node is encoded in the entry in the
1158 In version 2 and up, the delta base node is encoded in the entry in the
1147 changegroup. This allows the delta to be expressed against any parent,
1159 changegroup. This allows the delta to be expressed against any parent,
1148 which can result in smaller deltas and more efficient encoding of data.
1160 which can result in smaller deltas and more efficient encoding of data.
1149
1161
1150 Changeset Segment
1162 Changeset Segment
1151 =================
1163 =================
1152
1164
1153 The *changeset segment* consists of a single *delta group* holding
1165 The *changeset segment* consists of a single *delta group* holding
1154 changelog data. The *empty chunk* at the end of the *delta group* denotes
1166 changelog data. The *empty chunk* at the end of the *delta group* denotes
1155 the boundary to the *manifest segment*.
1167 the boundary to the *manifest segment*.
1156
1168
1157 Manifest Segment
1169 Manifest Segment
1158 ================
1170 ================
1159
1171
1160 The *manifest segment* consists of a single *delta group* holding manifest
1172 The *manifest segment* consists of a single *delta group* holding manifest
1161 data. If treemanifests are in use, it contains only the manifest for the
1173 data. If treemanifests are in use, it contains only the manifest for the
1162 root directory of the repository. Otherwise, it contains the entire
1174 root directory of the repository. Otherwise, it contains the entire
1163 manifest data. The *empty chunk* at the end of the *delta group* denotes
1175 manifest data. The *empty chunk* at the end of the *delta group* denotes
1164 the boundary to the next segment (either the *treemanifests segment* or
1176 the boundary to the next segment (either the *treemanifests segment* or
1165 the *filelogs segment*, depending on version and the request options).
1177 the *filelogs segment*, depending on version and the request options).
1166
1178
1167 Treemanifests Segment
1179 Treemanifests Segment
1168 ---------------------
1180 ---------------------
1169
1181
1170 The *treemanifests segment* only exists in changegroup version "3", and
1182 The *treemanifests segment* only exists in changegroup version "3", and
1171 only if the 'treemanifest' param is part of the bundle2 changegroup part
1183 only if the 'treemanifest' param is part of the bundle2 changegroup part
1172 (it is not possible to use changegroup version 3 outside of bundle2).
1184 (it is not possible to use changegroup version 3 outside of bundle2).
1173 Aside from the filenames in the *treemanifests segment* containing a
1185 Aside from the filenames in the *treemanifests segment* containing a
1174 trailing "/" character, it behaves identically to the *filelogs segment*
1186 trailing "/" character, it behaves identically to the *filelogs segment*
1175 (see below). The final sub-segment is followed by an *empty chunk*
1187 (see below). The final sub-segment is followed by an *empty chunk*
1176 (logically, a sub-segment with filename size 0). This denotes the boundary
1188 (logically, a sub-segment with filename size 0). This denotes the boundary
1177 to the *filelogs segment*.
1189 to the *filelogs segment*.
1178
1190
1179 Filelogs Segment
1191 Filelogs Segment
1180 ================
1192 ================
1181
1193
1182 The *filelogs segment* consists of multiple sub-segments, each
1194 The *filelogs segment* consists of multiple sub-segments, each
1183 corresponding to an individual file whose data is being described:
1195 corresponding to an individual file whose data is being described:
1184
1196
1185 +--------------------------------------------------+
1197 +--------------------------------------------------+
1186 | | | | | |
1198 | | | | | |
1187 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
1199 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
1188 | | | | | (4 bytes) |
1200 | | | | | (4 bytes) |
1189 | | | | | |
1201 | | | | | |
1190 +--------------------------------------------------+
1202 +--------------------------------------------------+
1191
1203
1192 The final filelog sub-segment is followed by an *empty chunk* (logically,
1204 The final filelog sub-segment is followed by an *empty chunk* (logically,
1193 a sub-segment with filename size 0). This denotes the end of the segment
1205 a sub-segment with filename size 0). This denotes the end of the segment
1194 and of the overall changegroup.
1206 and of the overall changegroup.
1195
1207
1196 Each filelog sub-segment consists of the following:
1208 Each filelog sub-segment consists of the following:
1197
1209
1198 +------------------------------------------------------+
1210 +------------------------------------------------------+
1199 | | | |
1211 | | | |
1200 | filename length | filename | delta group |
1212 | filename length | filename | delta group |
1201 | (4 bytes) | (<length - 4> bytes) | (various) |
1213 | (4 bytes) | (<length - 4> bytes) | (various) |
1202 | | | |
1214 | | | |
1203 +------------------------------------------------------+
1215 +------------------------------------------------------+
1204
1216
1205 That is, a *chunk* consisting of the filename (not terminated or padded)
1217 That is, a *chunk* consisting of the filename (not terminated or padded)
1206 followed by N chunks constituting the *delta group* for this file. The
1218 followed by N chunks constituting the *delta group* for this file. The
1207 *empty chunk* at the end of each *delta group* denotes the boundary to the
1219 *empty chunk* at the end of each *delta group* denotes the boundary to the
1208 next filelog sub-segment.
1220 next filelog sub-segment.
1209
1221
1210 Test list of commands with command with no help text
1222 Test list of commands with command with no help text
1211
1223
1212 $ hg help helpext
1224 $ hg help helpext
1213 helpext extension - no help text available
1225 helpext extension - no help text available
1214
1226
1215 list of commands:
1227 list of commands:
1216
1228
1217 nohelp (no help text available)
1229 nohelp (no help text available)
1218
1230
1219 (use 'hg help -v helpext' to show built-in aliases and global options)
1231 (use 'hg help -v helpext' to show built-in aliases and global options)
1220
1232
1221
1233
1222 test advanced, deprecated and experimental options are hidden in command help
1234 test advanced, deprecated and experimental options are hidden in command help
1223 $ hg help debugoptADV
1235 $ hg help debugoptADV
1224 hg debugoptADV
1236 hg debugoptADV
1225
1237
1226 (no help text available)
1238 (no help text available)
1227
1239
1228 options:
1240 options:
1229
1241
1230 (some details hidden, use --verbose to show complete help)
1242 (some details hidden, use --verbose to show complete help)
1231 $ hg help debugoptDEP
1243 $ hg help debugoptDEP
1232 hg debugoptDEP
1244 hg debugoptDEP
1233
1245
1234 (no help text available)
1246 (no help text available)
1235
1247
1236 options:
1248 options:
1237
1249
1238 (some details hidden, use --verbose to show complete help)
1250 (some details hidden, use --verbose to show complete help)
1239
1251
1240 $ hg help debugoptEXP
1252 $ hg help debugoptEXP
1241 hg debugoptEXP
1253 hg debugoptEXP
1242
1254
1243 (no help text available)
1255 (no help text available)
1244
1256
1245 options:
1257 options:
1246
1258
1247 (some details hidden, use --verbose to show complete help)
1259 (some details hidden, use --verbose to show complete help)
1248
1260
1249 test advanced, deprecated and experimental options are shown with -v
1261 test advanced, deprecated and experimental options are shown with -v
1250 $ hg help -v debugoptADV | grep aopt
1262 $ hg help -v debugoptADV | grep aopt
1251 --aopt option is (ADVANCED)
1263 --aopt option is (ADVANCED)
1252 $ hg help -v debugoptDEP | grep dopt
1264 $ hg help -v debugoptDEP | grep dopt
1253 --dopt option is (DEPRECATED)
1265 --dopt option is (DEPRECATED)
1254 $ hg help -v debugoptEXP | grep eopt
1266 $ hg help -v debugoptEXP | grep eopt
1255 --eopt option is (EXPERIMENTAL)
1267 --eopt option is (EXPERIMENTAL)
1256
1268
1257 #if gettext
1269 #if gettext
1258 test deprecated option is hidden with translation with untranslated description
1270 test deprecated option is hidden with translation with untranslated description
1259 (use many globy for not failing on changed transaction)
1271 (use many globy for not failing on changed transaction)
1260 $ LANGUAGE=sv hg help debugoptDEP
1272 $ LANGUAGE=sv hg help debugoptDEP
1261 hg debugoptDEP
1273 hg debugoptDEP
1262
1274
1263 (*) (glob)
1275 (*) (glob)
1264
1276
1265 options:
1277 options:
1266
1278
1267 (some details hidden, use --verbose to show complete help)
1279 (some details hidden, use --verbose to show complete help)
1268 #endif
1280 #endif
1269
1281
1270 Test commands that collide with topics (issue4240)
1282 Test commands that collide with topics (issue4240)
1271
1283
1272 $ hg config -hq
1284 $ hg config -hq
1273 hg config [-u] [NAME]...
1285 hg config [-u] [NAME]...
1274
1286
1275 show combined config settings from all hgrc files
1287 show combined config settings from all hgrc files
1276 $ hg showconfig -hq
1288 $ hg showconfig -hq
1277 hg config [-u] [NAME]...
1289 hg config [-u] [NAME]...
1278
1290
1279 show combined config settings from all hgrc files
1291 show combined config settings from all hgrc files
1280
1292
1281 Test a help topic
1293 Test a help topic
1282
1294
1283 $ hg help dates
1295 $ hg help dates
1284 Date Formats
1296 Date Formats
1285 """"""""""""
1297 """"""""""""
1286
1298
1287 Some commands allow the user to specify a date, e.g.:
1299 Some commands allow the user to specify a date, e.g.:
1288
1300
1289 - backout, commit, import, tag: Specify the commit date.
1301 - backout, commit, import, tag: Specify the commit date.
1290 - log, revert, update: Select revision(s) by date.
1302 - log, revert, update: Select revision(s) by date.
1291
1303
1292 Many date formats are valid. Here are some examples:
1304 Many date formats are valid. Here are some examples:
1293
1305
1294 - "Wed Dec 6 13:18:29 2006" (local timezone assumed)
1306 - "Wed Dec 6 13:18:29 2006" (local timezone assumed)
1295 - "Dec 6 13:18 -0600" (year assumed, time offset provided)
1307 - "Dec 6 13:18 -0600" (year assumed, time offset provided)
1296 - "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
1308 - "Dec 6 13:18 UTC" (UTC and GMT are aliases for +0000)
1297 - "Dec 6" (midnight)
1309 - "Dec 6" (midnight)
1298 - "13:18" (today assumed)
1310 - "13:18" (today assumed)
1299 - "3:39" (3:39AM assumed)
1311 - "3:39" (3:39AM assumed)
1300 - "3:39pm" (15:39)
1312 - "3:39pm" (15:39)
1301 - "2006-12-06 13:18:29" (ISO 8601 format)
1313 - "2006-12-06 13:18:29" (ISO 8601 format)
1302 - "2006-12-6 13:18"
1314 - "2006-12-6 13:18"
1303 - "2006-12-6"
1315 - "2006-12-6"
1304 - "12-6"
1316 - "12-6"
1305 - "12/6"
1317 - "12/6"
1306 - "12/6/6" (Dec 6 2006)
1318 - "12/6/6" (Dec 6 2006)
1307 - "today" (midnight)
1319 - "today" (midnight)
1308 - "yesterday" (midnight)
1320 - "yesterday" (midnight)
1309 - "now" - right now
1321 - "now" - right now
1310
1322
1311 Lastly, there is Mercurial's internal format:
1323 Lastly, there is Mercurial's internal format:
1312
1324
1313 - "1165411109 0" (Wed Dec 6 13:18:29 2006 UTC)
1325 - "1165411109 0" (Wed Dec 6 13:18:29 2006 UTC)
1314
1326
1315 This is the internal representation format for dates. The first number is
1327 This is the internal representation format for dates. The first number is
1316 the number of seconds since the epoch (1970-01-01 00:00 UTC). The second
1328 the number of seconds since the epoch (1970-01-01 00:00 UTC). The second
1317 is the offset of the local timezone, in seconds west of UTC (negative if
1329 is the offset of the local timezone, in seconds west of UTC (negative if
1318 the timezone is east of UTC).
1330 the timezone is east of UTC).
1319
1331
1320 The log command also accepts date ranges:
1332 The log command also accepts date ranges:
1321
1333
1322 - "<DATE" - at or before a given date/time
1334 - "<DATE" - at or before a given date/time
1323 - ">DATE" - on or after a given date/time
1335 - ">DATE" - on or after a given date/time
1324 - "DATE to DATE" - a date range, inclusive
1336 - "DATE to DATE" - a date range, inclusive
1325 - "-DAYS" - within a given number of days of today
1337 - "-DAYS" - within a given number of days of today
1326
1338
1327 Test repeated config section name
1339 Test repeated config section name
1328
1340
1329 $ hg help config.host
1341 $ hg help config.host
1330 "http_proxy.host"
1342 "http_proxy.host"
1331 Host name and (optional) port of the proxy server, for example
1343 Host name and (optional) port of the proxy server, for example
1332 "myproxy:8000".
1344 "myproxy:8000".
1333
1345
1334 "smtp.host"
1346 "smtp.host"
1335 Host name of mail server, e.g. "mail.example.com".
1347 Host name of mail server, e.g. "mail.example.com".
1336
1348
1337 Unrelated trailing paragraphs shouldn't be included
1349 Unrelated trailing paragraphs shouldn't be included
1338
1350
1339 $ hg help config.extramsg | grep '^$'
1351 $ hg help config.extramsg | grep '^$'
1340
1352
1341
1353
1342 Test capitalized section name
1354 Test capitalized section name
1343
1355
1344 $ hg help scripting.HGPLAIN > /dev/null
1356 $ hg help scripting.HGPLAIN > /dev/null
1345
1357
1346 Help subsection:
1358 Help subsection:
1347
1359
1348 $ hg help config.charsets |grep "Email example:" > /dev/null
1360 $ hg help config.charsets |grep "Email example:" > /dev/null
1349 [1]
1361 [1]
1350
1362
1351 Show nested definitions
1363 Show nested definitions
1352 ("profiling.type"[break]"ls"[break]"stat"[break])
1364 ("profiling.type"[break]"ls"[break]"stat"[break])
1353
1365
1354 $ hg help config.type | egrep '^$'|wc -l
1366 $ hg help config.type | egrep '^$'|wc -l
1355 \s*3 (re)
1367 \s*3 (re)
1356
1368
1357 Separate sections from subsections
1369 Separate sections from subsections
1358
1370
1359 $ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq
1371 $ hg help config.format | egrep '^ ("|-)|^\s*$' | uniq
1360 "format"
1372 "format"
1361 --------
1373 --------
1362
1374
1363 "usegeneraldelta"
1375 "usegeneraldelta"
1364
1376
1365 "dotencode"
1377 "dotencode"
1366
1378
1367 "usefncache"
1379 "usefncache"
1368
1380
1369 "usestore"
1381 "usestore"
1370
1382
1371 "profiling"
1383 "profiling"
1372 -----------
1384 -----------
1373
1385
1374 "format"
1386 "format"
1375
1387
1376 "progress"
1388 "progress"
1377 ----------
1389 ----------
1378
1390
1379 "format"
1391 "format"
1380
1392
1381
1393
1382 Last item in help config.*:
1394 Last item in help config.*:
1383
1395
1384 $ hg help config.`hg help config|grep '^ "'| \
1396 $ hg help config.`hg help config|grep '^ "'| \
1385 > tail -1|sed 's![ "]*!!g'`| \
1397 > tail -1|sed 's![ "]*!!g'`| \
1386 > grep 'hg help -c config' > /dev/null
1398 > grep 'hg help -c config' > /dev/null
1387 [1]
1399 [1]
1388
1400
1389 note to use help -c for general hg help config:
1401 note to use help -c for general hg help config:
1390
1402
1391 $ hg help config |grep 'hg help -c config' > /dev/null
1403 $ hg help config |grep 'hg help -c config' > /dev/null
1392
1404
1393 Test templating help
1405 Test templating help
1394
1406
1395 $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
1407 $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
1396 desc String. The text of the changeset description.
1408 desc String. The text of the changeset description.
1397 diffstat String. Statistics of changes with the following format:
1409 diffstat String. Statistics of changes with the following format:
1398 firstline Any text. Returns the first line of text.
1410 firstline Any text. Returns the first line of text.
1399 nonempty Any text. Returns '(none)' if the string is empty.
1411 nonempty Any text. Returns '(none)' if the string is empty.
1400
1412
1401 Test deprecated items
1413 Test deprecated items
1402
1414
1403 $ hg help -v templating | grep currentbookmark
1415 $ hg help -v templating | grep currentbookmark
1404 currentbookmark
1416 currentbookmark
1405 $ hg help templating | (grep currentbookmark || true)
1417 $ hg help templating | (grep currentbookmark || true)
1406
1418
1407 Test help hooks
1419 Test help hooks
1408
1420
1409 $ cat > helphook1.py <<EOF
1421 $ cat > helphook1.py <<EOF
1410 > from mercurial import help
1422 > from mercurial import help
1411 >
1423 >
1412 > def rewrite(ui, topic, doc):
1424 > def rewrite(ui, topic, doc):
1413 > return doc + '\nhelphook1\n'
1425 > return doc + '\nhelphook1\n'
1414 >
1426 >
1415 > def extsetup(ui):
1427 > def extsetup(ui):
1416 > help.addtopichook('revisions', rewrite)
1428 > help.addtopichook('revisions', rewrite)
1417 > EOF
1429 > EOF
1418 $ cat > helphook2.py <<EOF
1430 $ cat > helphook2.py <<EOF
1419 > from mercurial import help
1431 > from mercurial import help
1420 >
1432 >
1421 > def rewrite(ui, topic, doc):
1433 > def rewrite(ui, topic, doc):
1422 > return doc + '\nhelphook2\n'
1434 > return doc + '\nhelphook2\n'
1423 >
1435 >
1424 > def extsetup(ui):
1436 > def extsetup(ui):
1425 > help.addtopichook('revisions', rewrite)
1437 > help.addtopichook('revisions', rewrite)
1426 > EOF
1438 > EOF
1427 $ echo '[extensions]' >> $HGRCPATH
1439 $ echo '[extensions]' >> $HGRCPATH
1428 $ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
1440 $ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
1429 $ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
1441 $ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
1430 $ hg help revsets | grep helphook
1442 $ hg help revsets | grep helphook
1431 helphook1
1443 helphook1
1432 helphook2
1444 helphook2
1433
1445
1434 help -c should only show debug --debug
1446 help -c should only show debug --debug
1435
1447
1436 $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
1448 $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
1437 [1]
1449 [1]
1438
1450
1439 help -c should only show deprecated for -v
1451 help -c should only show deprecated for -v
1440
1452
1441 $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
1453 $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
1442 [1]
1454 [1]
1443
1455
1444 Test -s / --system
1456 Test -s / --system
1445
1457
1446 $ hg help config.files -s windows |grep 'etc/mercurial' | \
1458 $ hg help config.files -s windows |grep 'etc/mercurial' | \
1447 > wc -l | sed -e 's/ //g'
1459 > wc -l | sed -e 's/ //g'
1448 0
1460 0
1449 $ hg help config.files --system unix | grep 'USER' | \
1461 $ hg help config.files --system unix | grep 'USER' | \
1450 > wc -l | sed -e 's/ //g'
1462 > wc -l | sed -e 's/ //g'
1451 0
1463 0
1452
1464
1453 Test -e / -c / -k combinations
1465 Test -e / -c / -k combinations
1454
1466
1455 $ hg help -c|egrep '^[A-Z].*:|^ debug'
1467 $ hg help -c|egrep '^[A-Z].*:|^ debug'
1456 Commands:
1468 Commands:
1457 $ hg help -e|egrep '^[A-Z].*:|^ debug'
1469 $ hg help -e|egrep '^[A-Z].*:|^ debug'
1458 Extensions:
1470 Extensions:
1459 $ hg help -k|egrep '^[A-Z].*:|^ debug'
1471 $ hg help -k|egrep '^[A-Z].*:|^ debug'
1460 Topics:
1472 Topics:
1461 Commands:
1473 Commands:
1462 Extensions:
1474 Extensions:
1463 Extension Commands:
1475 Extension Commands:
1464 $ hg help -c schemes
1476 $ hg help -c schemes
1465 abort: no such help topic: schemes
1477 abort: no such help topic: schemes
1466 (try 'hg help --keyword schemes')
1478 (try 'hg help --keyword schemes')
1467 [255]
1479 [255]
1468 $ hg help -e schemes |head -1
1480 $ hg help -e schemes |head -1
1469 schemes extension - extend schemes with shortcuts to repository swarms
1481 schemes extension - extend schemes with shortcuts to repository swarms
1470 $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
1482 $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
1471 Commands:
1483 Commands:
1472 $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
1484 $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
1473 Extensions:
1485 Extensions:
1474 $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
1486 $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
1475 Extensions:
1487 Extensions:
1476 Commands:
1488 Commands:
1477 $ hg help -c commit > /dev/null
1489 $ hg help -c commit > /dev/null
1478 $ hg help -e -c commit > /dev/null
1490 $ hg help -e -c commit > /dev/null
1479 $ hg help -e commit > /dev/null
1491 $ hg help -e commit > /dev/null
1480 abort: no such help topic: commit
1492 abort: no such help topic: commit
1481 (try 'hg help --keyword commit')
1493 (try 'hg help --keyword commit')
1482 [255]
1494 [255]
1483
1495
1484 Test keyword search help
1496 Test keyword search help
1485
1497
1486 $ cat > prefixedname.py <<EOF
1498 $ cat > prefixedname.py <<EOF
1487 > '''matched against word "clone"
1499 > '''matched against word "clone"
1488 > '''
1500 > '''
1489 > EOF
1501 > EOF
1490 $ echo '[extensions]' >> $HGRCPATH
1502 $ echo '[extensions]' >> $HGRCPATH
1491 $ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
1503 $ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
1492 $ hg help -k clone
1504 $ hg help -k clone
1493 Topics:
1505 Topics:
1494
1506
1495 config Configuration Files
1507 config Configuration Files
1496 extensions Using Additional Features
1508 extensions Using Additional Features
1497 glossary Glossary
1509 glossary Glossary
1498 phases Working with Phases
1510 phases Working with Phases
1499 subrepos Subrepositories
1511 subrepos Subrepositories
1500 urls URL Paths
1512 urls URL Paths
1501
1513
1502 Commands:
1514 Commands:
1503
1515
1504 bookmarks create a new bookmark or list existing bookmarks
1516 bookmarks create a new bookmark or list existing bookmarks
1505 clone make a copy of an existing repository
1517 clone make a copy of an existing repository
1506 paths show aliases for remote repositories
1518 paths show aliases for remote repositories
1507 update update working directory (or switch revisions)
1519 update update working directory (or switch revisions)
1508
1520
1509 Extensions:
1521 Extensions:
1510
1522
1511 clonebundles advertise pre-generated bundles to seed clones
1523 clonebundles advertise pre-generated bundles to seed clones
1512 narrow create clones which fetch history data for subset of files
1524 narrow create clones which fetch history data for subset of files
1513 (EXPERIMENTAL)
1525 (EXPERIMENTAL)
1514 prefixedname matched against word "clone"
1526 prefixedname matched against word "clone"
1515 relink recreates hardlinks between repository clones
1527 relink recreates hardlinks between repository clones
1516
1528
1517 Extension Commands:
1529 Extension Commands:
1518
1530
1519 qclone clone main and patch repository at same time
1531 qclone clone main and patch repository at same time
1520
1532
1521 Test unfound topic
1533 Test unfound topic
1522
1534
1523 $ hg help nonexistingtopicthatwillneverexisteverever
1535 $ hg help nonexistingtopicthatwillneverexisteverever
1524 abort: no such help topic: nonexistingtopicthatwillneverexisteverever
1536 abort: no such help topic: nonexistingtopicthatwillneverexisteverever
1525 (try 'hg help --keyword nonexistingtopicthatwillneverexisteverever')
1537 (try 'hg help --keyword nonexistingtopicthatwillneverexisteverever')
1526 [255]
1538 [255]
1527
1539
1528 Test unfound keyword
1540 Test unfound keyword
1529
1541
1530 $ hg help --keyword nonexistingwordthatwillneverexisteverever
1542 $ hg help --keyword nonexistingwordthatwillneverexisteverever
1531 abort: no matches
1543 abort: no matches
1532 (try 'hg help' for a list of topics)
1544 (try 'hg help' for a list of topics)
1533 [255]
1545 [255]
1534
1546
1535 Test omit indicating for help
1547 Test omit indicating for help
1536
1548
1537 $ cat > addverboseitems.py <<EOF
1549 $ cat > addverboseitems.py <<EOF
1538 > '''extension to test omit indicating.
1550 > '''extension to test omit indicating.
1539 >
1551 >
1540 > This paragraph is never omitted (for extension)
1552 > This paragraph is never omitted (for extension)
1541 >
1553 >
1542 > .. container:: verbose
1554 > .. container:: verbose
1543 >
1555 >
1544 > This paragraph is omitted,
1556 > This paragraph is omitted,
1545 > if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
1557 > if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
1546 >
1558 >
1547 > This paragraph is never omitted, too (for extension)
1559 > This paragraph is never omitted, too (for extension)
1548 > '''
1560 > '''
1549 > from __future__ import absolute_import
1561 > from __future__ import absolute_import
1550 > from mercurial import commands, help
1562 > from mercurial import commands, help
1551 > testtopic = """This paragraph is never omitted (for topic).
1563 > testtopic = """This paragraph is never omitted (for topic).
1552 >
1564 >
1553 > .. container:: verbose
1565 > .. container:: verbose
1554 >
1566 >
1555 > This paragraph is omitted,
1567 > This paragraph is omitted,
1556 > if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
1568 > if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
1557 >
1569 >
1558 > This paragraph is never omitted, too (for topic)
1570 > This paragraph is never omitted, too (for topic)
1559 > """
1571 > """
1560 > def extsetup(ui):
1572 > def extsetup(ui):
1561 > help.helptable.append((["topic-containing-verbose"],
1573 > help.helptable.append((["topic-containing-verbose"],
1562 > "This is the topic to test omit indicating.",
1574 > "This is the topic to test omit indicating.",
1563 > lambda ui: testtopic))
1575 > lambda ui: testtopic))
1564 > EOF
1576 > EOF
1565 $ echo '[extensions]' >> $HGRCPATH
1577 $ echo '[extensions]' >> $HGRCPATH
1566 $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
1578 $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
1567 $ hg help addverboseitems
1579 $ hg help addverboseitems
1568 addverboseitems extension - extension to test omit indicating.
1580 addverboseitems extension - extension to test omit indicating.
1569
1581
1570 This paragraph is never omitted (for extension)
1582 This paragraph is never omitted (for extension)
1571
1583
1572 This paragraph is never omitted, too (for extension)
1584 This paragraph is never omitted, too (for extension)
1573
1585
1574 (some details hidden, use --verbose to show complete help)
1586 (some details hidden, use --verbose to show complete help)
1575
1587
1576 no commands defined
1588 no commands defined
1577 $ hg help -v addverboseitems
1589 $ hg help -v addverboseitems
1578 addverboseitems extension - extension to test omit indicating.
1590 addverboseitems extension - extension to test omit indicating.
1579
1591
1580 This paragraph is never omitted (for extension)
1592 This paragraph is never omitted (for extension)
1581
1593
1582 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1594 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1583 extension)
1595 extension)
1584
1596
1585 This paragraph is never omitted, too (for extension)
1597 This paragraph is never omitted, too (for extension)
1586
1598
1587 no commands defined
1599 no commands defined
1588 $ hg help topic-containing-verbose
1600 $ hg help topic-containing-verbose
1589 This is the topic to test omit indicating.
1601 This is the topic to test omit indicating.
1590 """"""""""""""""""""""""""""""""""""""""""
1602 """"""""""""""""""""""""""""""""""""""""""
1591
1603
1592 This paragraph is never omitted (for topic).
1604 This paragraph is never omitted (for topic).
1593
1605
1594 This paragraph is never omitted, too (for topic)
1606 This paragraph is never omitted, too (for topic)
1595
1607
1596 (some details hidden, use --verbose to show complete help)
1608 (some details hidden, use --verbose to show complete help)
1597 $ hg help -v topic-containing-verbose
1609 $ hg help -v topic-containing-verbose
1598 This is the topic to test omit indicating.
1610 This is the topic to test omit indicating.
1599 """"""""""""""""""""""""""""""""""""""""""
1611 """"""""""""""""""""""""""""""""""""""""""
1600
1612
1601 This paragraph is never omitted (for topic).
1613 This paragraph is never omitted (for topic).
1602
1614
1603 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1615 This paragraph is omitted, if 'hg help' is invoked without "-v" (for
1604 topic)
1616 topic)
1605
1617
1606 This paragraph is never omitted, too (for topic)
1618 This paragraph is never omitted, too (for topic)
1607
1619
1608 Test section lookup
1620 Test section lookup
1609
1621
1610 $ hg help revset.merge
1622 $ hg help revset.merge
1611 "merge()"
1623 "merge()"
1612 Changeset is a merge changeset.
1624 Changeset is a merge changeset.
1613
1625
1614 $ hg help glossary.dag
1626 $ hg help glossary.dag
1615 DAG
1627 DAG
1616 The repository of changesets of a distributed version control system
1628 The repository of changesets of a distributed version control system
1617 (DVCS) can be described as a directed acyclic graph (DAG), consisting
1629 (DVCS) can be described as a directed acyclic graph (DAG), consisting
1618 of nodes and edges, where nodes correspond to changesets and edges
1630 of nodes and edges, where nodes correspond to changesets and edges
1619 imply a parent -> child relation. This graph can be visualized by
1631 imply a parent -> child relation. This graph can be visualized by
1620 graphical tools such as 'hg log --graph'. In Mercurial, the DAG is
1632 graphical tools such as 'hg log --graph'. In Mercurial, the DAG is
1621 limited by the requirement for children to have at most two parents.
1633 limited by the requirement for children to have at most two parents.
1622
1634
1623
1635
1624 $ hg help hgrc.paths
1636 $ hg help hgrc.paths
1625 "paths"
1637 "paths"
1626 -------
1638 -------
1627
1639
1628 Assigns symbolic names and behavior to repositories.
1640 Assigns symbolic names and behavior to repositories.
1629
1641
1630 Options are symbolic names defining the URL or directory that is the
1642 Options are symbolic names defining the URL or directory that is the
1631 location of the repository. Example:
1643 location of the repository. Example:
1632
1644
1633 [paths]
1645 [paths]
1634 my_server = https://example.com/my_repo
1646 my_server = https://example.com/my_repo
1635 local_path = /home/me/repo
1647 local_path = /home/me/repo
1636
1648
1637 These symbolic names can be used from the command line. To pull from
1649 These symbolic names can be used from the command line. To pull from
1638 "my_server": 'hg pull my_server'. To push to "local_path": 'hg push
1650 "my_server": 'hg pull my_server'. To push to "local_path": 'hg push
1639 local_path'.
1651 local_path'.
1640
1652
1641 Options containing colons (":") denote sub-options that can influence
1653 Options containing colons (":") denote sub-options that can influence
1642 behavior for that specific path. Example:
1654 behavior for that specific path. Example:
1643
1655
1644 [paths]
1656 [paths]
1645 my_server = https://example.com/my_path
1657 my_server = https://example.com/my_path
1646 my_server:pushurl = ssh://example.com/my_path
1658 my_server:pushurl = ssh://example.com/my_path
1647
1659
1648 The following sub-options can be defined:
1660 The following sub-options can be defined:
1649
1661
1650 "pushurl"
1662 "pushurl"
1651 The URL to use for push operations. If not defined, the location
1663 The URL to use for push operations. If not defined, the location
1652 defined by the path's main entry is used.
1664 defined by the path's main entry is used.
1653
1665
1654 "pushrev"
1666 "pushrev"
1655 A revset defining which revisions to push by default.
1667 A revset defining which revisions to push by default.
1656
1668
1657 When 'hg push' is executed without a "-r" argument, the revset defined
1669 When 'hg push' is executed without a "-r" argument, the revset defined
1658 by this sub-option is evaluated to determine what to push.
1670 by this sub-option is evaluated to determine what to push.
1659
1671
1660 For example, a value of "." will push the working directory's revision
1672 For example, a value of "." will push the working directory's revision
1661 by default.
1673 by default.
1662
1674
1663 Revsets specifying bookmarks will not result in the bookmark being
1675 Revsets specifying bookmarks will not result in the bookmark being
1664 pushed.
1676 pushed.
1665
1677
1666 The following special named paths exist:
1678 The following special named paths exist:
1667
1679
1668 "default"
1680 "default"
1669 The URL or directory to use when no source or remote is specified.
1681 The URL or directory to use when no source or remote is specified.
1670
1682
1671 'hg clone' will automatically define this path to the location the
1683 'hg clone' will automatically define this path to the location the
1672 repository was cloned from.
1684 repository was cloned from.
1673
1685
1674 "default-push"
1686 "default-push"
1675 (deprecated) The URL or directory for the default 'hg push' location.
1687 (deprecated) The URL or directory for the default 'hg push' location.
1676 "default:pushurl" should be used instead.
1688 "default:pushurl" should be used instead.
1677
1689
1678 $ hg help glossary.mcguffin
1690 $ hg help glossary.mcguffin
1679 abort: help section not found: glossary.mcguffin
1691 abort: help section not found: glossary.mcguffin
1680 [255]
1692 [255]
1681
1693
1682 $ hg help glossary.mc.guffin
1694 $ hg help glossary.mc.guffin
1683 abort: help section not found: glossary.mc.guffin
1695 abort: help section not found: glossary.mc.guffin
1684 [255]
1696 [255]
1685
1697
1686 $ hg help template.files
1698 $ hg help template.files
1687 files List of strings. All files modified, added, or removed by
1699 files List of strings. All files modified, added, or removed by
1688 this changeset.
1700 this changeset.
1689 files(pattern)
1701 files(pattern)
1690 All files of the current changeset matching the pattern. See
1702 All files of the current changeset matching the pattern. See
1691 'hg help patterns'.
1703 'hg help patterns'.
1692
1704
1693 Test section lookup by translated message
1705 Test section lookup by translated message
1694
1706
1695 str.lower() instead of encoding.lower(str) on translated message might
1707 str.lower() instead of encoding.lower(str) on translated message might
1696 make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
1708 make message meaningless, because some encoding uses 0x41(A) - 0x5a(Z)
1697 as the second or later byte of multi-byte character.
1709 as the second or later byte of multi-byte character.
1698
1710
1699 For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
1711 For example, "\x8bL\x98^" (translation of "record" in ja_JP.cp932)
1700 contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
1712 contains 0x4c (L). str.lower() replaces 0x4c(L) by 0x6c(l) and this
1701 replacement makes message meaningless.
1713 replacement makes message meaningless.
1702
1714
1703 This tests that section lookup by translated string isn't broken by
1715 This tests that section lookup by translated string isn't broken by
1704 such str.lower().
1716 such str.lower().
1705
1717
1706 $ $PYTHON <<EOF
1718 $ $PYTHON <<EOF
1707 > def escape(s):
1719 > def escape(s):
1708 > return ''.join('\u%x' % ord(uc) for uc in s.decode('cp932'))
1720 > return ''.join('\u%x' % ord(uc) for uc in s.decode('cp932'))
1709 > # translation of "record" in ja_JP.cp932
1721 > # translation of "record" in ja_JP.cp932
1710 > upper = "\x8bL\x98^"
1722 > upper = "\x8bL\x98^"
1711 > # str.lower()-ed section name should be treated as different one
1723 > # str.lower()-ed section name should be treated as different one
1712 > lower = "\x8bl\x98^"
1724 > lower = "\x8bl\x98^"
1713 > with open('ambiguous.py', 'w') as fp:
1725 > with open('ambiguous.py', 'w') as fp:
1714 > fp.write("""# ambiguous section names in ja_JP.cp932
1726 > fp.write("""# ambiguous section names in ja_JP.cp932
1715 > u'''summary of extension
1727 > u'''summary of extension
1716 >
1728 >
1717 > %s
1729 > %s
1718 > ----
1730 > ----
1719 >
1731 >
1720 > Upper name should show only this message
1732 > Upper name should show only this message
1721 >
1733 >
1722 > %s
1734 > %s
1723 > ----
1735 > ----
1724 >
1736 >
1725 > Lower name should show only this message
1737 > Lower name should show only this message
1726 >
1738 >
1727 > subsequent section
1739 > subsequent section
1728 > ------------------
1740 > ------------------
1729 >
1741 >
1730 > This should be hidden at 'hg help ambiguous' with section name.
1742 > This should be hidden at 'hg help ambiguous' with section name.
1731 > '''
1743 > '''
1732 > """ % (escape(upper), escape(lower)))
1744 > """ % (escape(upper), escape(lower)))
1733 > EOF
1745 > EOF
1734
1746
1735 $ cat >> $HGRCPATH <<EOF
1747 $ cat >> $HGRCPATH <<EOF
1736 > [extensions]
1748 > [extensions]
1737 > ambiguous = ./ambiguous.py
1749 > ambiguous = ./ambiguous.py
1738 > EOF
1750 > EOF
1739
1751
1740 $ $PYTHON <<EOF | sh
1752 $ $PYTHON <<EOF | sh
1741 > upper = "\x8bL\x98^"
1753 > upper = "\x8bL\x98^"
1742 > print("hg --encoding cp932 help -e ambiguous.%s" % upper)
1754 > print("hg --encoding cp932 help -e ambiguous.%s" % upper)
1743 > EOF
1755 > EOF
1744 \x8bL\x98^ (esc)
1756 \x8bL\x98^ (esc)
1745 ----
1757 ----
1746
1758
1747 Upper name should show only this message
1759 Upper name should show only this message
1748
1760
1749
1761
1750 $ $PYTHON <<EOF | sh
1762 $ $PYTHON <<EOF | sh
1751 > lower = "\x8bl\x98^"
1763 > lower = "\x8bl\x98^"
1752 > print("hg --encoding cp932 help -e ambiguous.%s" % lower)
1764 > print("hg --encoding cp932 help -e ambiguous.%s" % lower)
1753 > EOF
1765 > EOF
1754 \x8bl\x98^ (esc)
1766 \x8bl\x98^ (esc)
1755 ----
1767 ----
1756
1768
1757 Lower name should show only this message
1769 Lower name should show only this message
1758
1770
1759
1771
1760 $ cat >> $HGRCPATH <<EOF
1772 $ cat >> $HGRCPATH <<EOF
1761 > [extensions]
1773 > [extensions]
1762 > ambiguous = !
1774 > ambiguous = !
1763 > EOF
1775 > EOF
1764
1776
1765 Show help content of disabled extensions
1777 Show help content of disabled extensions
1766
1778
1767 $ cat >> $HGRCPATH <<EOF
1779 $ cat >> $HGRCPATH <<EOF
1768 > [extensions]
1780 > [extensions]
1769 > ambiguous = !./ambiguous.py
1781 > ambiguous = !./ambiguous.py
1770 > EOF
1782 > EOF
1771 $ hg help -e ambiguous
1783 $ hg help -e ambiguous
1772 ambiguous extension - (no help text available)
1784 ambiguous extension - (no help text available)
1773
1785
1774 (use 'hg help extensions' for information on enabling extensions)
1786 (use 'hg help extensions' for information on enabling extensions)
1775
1787
1776 Test dynamic list of merge tools only shows up once
1788 Test dynamic list of merge tools only shows up once
1777 $ hg help merge-tools
1789 $ hg help merge-tools
1778 Merge Tools
1790 Merge Tools
1779 """""""""""
1791 """""""""""
1780
1792
1781 To merge files Mercurial uses merge tools.
1793 To merge files Mercurial uses merge tools.
1782
1794
1783 A merge tool combines two different versions of a file into a merged file.
1795 A merge tool combines two different versions of a file into a merged file.
1784 Merge tools are given the two files and the greatest common ancestor of
1796 Merge tools are given the two files and the greatest common ancestor of
1785 the two file versions, so they can determine the changes made on both
1797 the two file versions, so they can determine the changes made on both
1786 branches.
1798 branches.
1787
1799
1788 Merge tools are used both for 'hg resolve', 'hg merge', 'hg update', 'hg
1800 Merge tools are used both for 'hg resolve', 'hg merge', 'hg update', 'hg
1789 backout' and in several extensions.
1801 backout' and in several extensions.
1790
1802
1791 Usually, the merge tool tries to automatically reconcile the files by
1803 Usually, the merge tool tries to automatically reconcile the files by
1792 combining all non-overlapping changes that occurred separately in the two
1804 combining all non-overlapping changes that occurred separately in the two
1793 different evolutions of the same initial base file. Furthermore, some
1805 different evolutions of the same initial base file. Furthermore, some
1794 interactive merge programs make it easier to manually resolve conflicting
1806 interactive merge programs make it easier to manually resolve conflicting
1795 merges, either in a graphical way, or by inserting some conflict markers.
1807 merges, either in a graphical way, or by inserting some conflict markers.
1796 Mercurial does not include any interactive merge programs but relies on
1808 Mercurial does not include any interactive merge programs but relies on
1797 external tools for that.
1809 external tools for that.
1798
1810
1799 Available merge tools
1811 Available merge tools
1800 =====================
1812 =====================
1801
1813
1802 External merge tools and their properties are configured in the merge-
1814 External merge tools and their properties are configured in the merge-
1803 tools configuration section - see hgrc(5) - but they can often just be
1815 tools configuration section - see hgrc(5) - but they can often just be
1804 named by their executable.
1816 named by their executable.
1805
1817
1806 A merge tool is generally usable if its executable can be found on the
1818 A merge tool is generally usable if its executable can be found on the
1807 system and if it can handle the merge. The executable is found if it is an
1819 system and if it can handle the merge. The executable is found if it is an
1808 absolute or relative executable path or the name of an application in the
1820 absolute or relative executable path or the name of an application in the
1809 executable search path. The tool is assumed to be able to handle the merge
1821 executable search path. The tool is assumed to be able to handle the merge
1810 if it can handle symlinks if the file is a symlink, if it can handle
1822 if it can handle symlinks if the file is a symlink, if it can handle
1811 binary files if the file is binary, and if a GUI is available if the tool
1823 binary files if the file is binary, and if a GUI is available if the tool
1812 requires a GUI.
1824 requires a GUI.
1813
1825
1814 There are some internal merge tools which can be used. The internal merge
1826 There are some internal merge tools which can be used. The internal merge
1815 tools are:
1827 tools are:
1816
1828
1817 ":dump"
1829 ":dump"
1818 Creates three versions of the files to merge, containing the contents of
1830 Creates three versions of the files to merge, containing the contents of
1819 local, other and base. These files can then be used to perform a merge
1831 local, other and base. These files can then be used to perform a merge
1820 manually. If the file to be merged is named "a.txt", these files will
1832 manually. If the file to be merged is named "a.txt", these files will
1821 accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
1833 accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
1822 they will be placed in the same directory as "a.txt".
1834 they will be placed in the same directory as "a.txt".
1823
1835
1824 This implies premerge. Therefore, files aren't dumped, if premerge runs
1836 This implies premerge. Therefore, files aren't dumped, if premerge runs
1825 successfully. Use :forcedump to forcibly write files out.
1837 successfully. Use :forcedump to forcibly write files out.
1826
1838
1827 ":fail"
1839 ":fail"
1828 Rather than attempting to merge files that were modified on both
1840 Rather than attempting to merge files that were modified on both
1829 branches, it marks them as unresolved. The resolve command must be used
1841 branches, it marks them as unresolved. The resolve command must be used
1830 to resolve these conflicts.
1842 to resolve these conflicts.
1831
1843
1832 ":forcedump"
1844 ":forcedump"
1833 Creates three versions of the files as same as :dump, but omits
1845 Creates three versions of the files as same as :dump, but omits
1834 premerge.
1846 premerge.
1835
1847
1836 ":local"
1848 ":local"
1837 Uses the local 'p1()' version of files as the merged version.
1849 Uses the local 'p1()' version of files as the merged version.
1838
1850
1839 ":merge"
1851 ":merge"
1840 Uses the internal non-interactive simple merge algorithm for merging
1852 Uses the internal non-interactive simple merge algorithm for merging
1841 files. It will fail if there are any conflicts and leave markers in the
1853 files. It will fail if there are any conflicts and leave markers in the
1842 partially merged file. Markers will have two sections, one for each side
1854 partially merged file. Markers will have two sections, one for each side
1843 of merge.
1855 of merge.
1844
1856
1845 ":merge-local"
1857 ":merge-local"
1846 Like :merge, but resolve all conflicts non-interactively in favor of the
1858 Like :merge, but resolve all conflicts non-interactively in favor of the
1847 local 'p1()' changes.
1859 local 'p1()' changes.
1848
1860
1849 ":merge-other"
1861 ":merge-other"
1850 Like :merge, but resolve all conflicts non-interactively in favor of the
1862 Like :merge, but resolve all conflicts non-interactively in favor of the
1851 other 'p2()' changes.
1863 other 'p2()' changes.
1852
1864
1853 ":merge3"
1865 ":merge3"
1854 Uses the internal non-interactive simple merge algorithm for merging
1866 Uses the internal non-interactive simple merge algorithm for merging
1855 files. It will fail if there are any conflicts and leave markers in the
1867 files. It will fail if there are any conflicts and leave markers in the
1856 partially merged file. Marker will have three sections, one from each
1868 partially merged file. Marker will have three sections, one from each
1857 side of the merge and one for the base content.
1869 side of the merge and one for the base content.
1858
1870
1859 ":other"
1871 ":other"
1860 Uses the other 'p2()' version of files as the merged version.
1872 Uses the other 'p2()' version of files as the merged version.
1861
1873
1862 ":prompt"
1874 ":prompt"
1863 Asks the user which of the local 'p1()' or the other 'p2()' version to
1875 Asks the user which of the local 'p1()' or the other 'p2()' version to
1864 keep as the merged version.
1876 keep as the merged version.
1865
1877
1866 ":tagmerge"
1878 ":tagmerge"
1867 Uses the internal tag merge algorithm (experimental).
1879 Uses the internal tag merge algorithm (experimental).
1868
1880
1869 ":union"
1881 ":union"
1870 Uses the internal non-interactive simple merge algorithm for merging
1882 Uses the internal non-interactive simple merge algorithm for merging
1871 files. It will use both left and right sides for conflict regions. No
1883 files. It will use both left and right sides for conflict regions. No
1872 markers are inserted.
1884 markers are inserted.
1873
1885
1874 Internal tools are always available and do not require a GUI but will by
1886 Internal tools are always available and do not require a GUI but will by
1875 default not handle symlinks or binary files.
1887 default not handle symlinks or binary files.
1876
1888
1877 Choosing a merge tool
1889 Choosing a merge tool
1878 =====================
1890 =====================
1879
1891
1880 Mercurial uses these rules when deciding which merge tool to use:
1892 Mercurial uses these rules when deciding which merge tool to use:
1881
1893
1882 1. If a tool has been specified with the --tool option to merge or
1894 1. If a tool has been specified with the --tool option to merge or
1883 resolve, it is used. If it is the name of a tool in the merge-tools
1895 resolve, it is used. If it is the name of a tool in the merge-tools
1884 configuration, its configuration is used. Otherwise the specified tool
1896 configuration, its configuration is used. Otherwise the specified tool
1885 must be executable by the shell.
1897 must be executable by the shell.
1886 2. If the "HGMERGE" environment variable is present, its value is used and
1898 2. If the "HGMERGE" environment variable is present, its value is used and
1887 must be executable by the shell.
1899 must be executable by the shell.
1888 3. If the filename of the file to be merged matches any of the patterns in
1900 3. If the filename of the file to be merged matches any of the patterns in
1889 the merge-patterns configuration section, the first usable merge tool
1901 the merge-patterns configuration section, the first usable merge tool
1890 corresponding to a matching pattern is used. Here, binary capabilities
1902 corresponding to a matching pattern is used. Here, binary capabilities
1891 of the merge tool are not considered.
1903 of the merge tool are not considered.
1892 4. If ui.merge is set it will be considered next. If the value is not the
1904 4. If ui.merge is set it will be considered next. If the value is not the
1893 name of a configured tool, the specified value is used and must be
1905 name of a configured tool, the specified value is used and must be
1894 executable by the shell. Otherwise the named tool is used if it is
1906 executable by the shell. Otherwise the named tool is used if it is
1895 usable.
1907 usable.
1896 5. If any usable merge tools are present in the merge-tools configuration
1908 5. If any usable merge tools are present in the merge-tools configuration
1897 section, the one with the highest priority is used.
1909 section, the one with the highest priority is used.
1898 6. If a program named "hgmerge" can be found on the system, it is used -
1910 6. If a program named "hgmerge" can be found on the system, it is used -
1899 but it will by default not be used for symlinks and binary files.
1911 but it will by default not be used for symlinks and binary files.
1900 7. If the file to be merged is not binary and is not a symlink, then
1912 7. If the file to be merged is not binary and is not a symlink, then
1901 internal ":merge" is used.
1913 internal ":merge" is used.
1902 8. Otherwise, ":prompt" is used.
1914 8. Otherwise, ":prompt" is used.
1903
1915
1904 Note:
1916 Note:
1905 After selecting a merge program, Mercurial will by default attempt to
1917 After selecting a merge program, Mercurial will by default attempt to
1906 merge the files using a simple merge algorithm first. Only if it
1918 merge the files using a simple merge algorithm first. Only if it
1907 doesn't succeed because of conflicting changes will Mercurial actually
1919 doesn't succeed because of conflicting changes will Mercurial actually
1908 execute the merge program. Whether to use the simple merge algorithm
1920 execute the merge program. Whether to use the simple merge algorithm
1909 first can be controlled by the premerge setting of the merge tool.
1921 first can be controlled by the premerge setting of the merge tool.
1910 Premerge is enabled by default unless the file is binary or a symlink.
1922 Premerge is enabled by default unless the file is binary or a symlink.
1911
1923
1912 See the merge-tools and ui sections of hgrc(5) for details on the
1924 See the merge-tools and ui sections of hgrc(5) for details on the
1913 configuration of merge tools.
1925 configuration of merge tools.
1914
1926
1915 Compression engines listed in `hg help bundlespec`
1927 Compression engines listed in `hg help bundlespec`
1916
1928
1917 $ hg help bundlespec | grep gzip
1929 $ hg help bundlespec | grep gzip
1918 "v1" bundles can only use the "gzip", "bzip2", and "none" compression
1930 "v1" bundles can only use the "gzip", "bzip2", and "none" compression
1919 An algorithm that produces smaller bundles than "gzip".
1931 An algorithm that produces smaller bundles than "gzip".
1920 This engine will likely produce smaller bundles than "gzip" but will be
1932 This engine will likely produce smaller bundles than "gzip" but will be
1921 "gzip"
1933 "gzip"
1922 better compression than "gzip". It also frequently yields better (?)
1934 better compression than "gzip". It also frequently yields better (?)
1923
1935
1924 Test usage of section marks in help documents
1936 Test usage of section marks in help documents
1925
1937
1926 $ cd "$TESTDIR"/../doc
1938 $ cd "$TESTDIR"/../doc
1927 $ $PYTHON check-seclevel.py
1939 $ $PYTHON check-seclevel.py
1928 $ cd $TESTTMP
1940 $ cd $TESTTMP
1929
1941
1930 #if serve
1942 #if serve
1931
1943
1932 Test the help pages in hgweb.
1944 Test the help pages in hgweb.
1933
1945
1934 Dish up an empty repo; serve it cold.
1946 Dish up an empty repo; serve it cold.
1935
1947
1936 $ hg init "$TESTTMP/test"
1948 $ hg init "$TESTTMP/test"
1937 $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
1949 $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
1938 $ cat hg.pid >> $DAEMON_PIDS
1950 $ cat hg.pid >> $DAEMON_PIDS
1939
1951
1940 $ get-with-headers.py $LOCALIP:$HGPORT "help"
1952 $ get-with-headers.py $LOCALIP:$HGPORT "help"
1941 200 Script output follows
1953 200 Script output follows
1942
1954
1943 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1955 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1944 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
1956 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
1945 <head>
1957 <head>
1946 <link rel="icon" href="/static/hgicon.png" type="image/png" />
1958 <link rel="icon" href="/static/hgicon.png" type="image/png" />
1947 <meta name="robots" content="index, nofollow" />
1959 <meta name="robots" content="index, nofollow" />
1948 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
1960 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
1949 <script type="text/javascript" src="/static/mercurial.js"></script>
1961 <script type="text/javascript" src="/static/mercurial.js"></script>
1950
1962
1951 <title>Help: Index</title>
1963 <title>Help: Index</title>
1952 </head>
1964 </head>
1953 <body>
1965 <body>
1954
1966
1955 <div class="container">
1967 <div class="container">
1956 <div class="menu">
1968 <div class="menu">
1957 <div class="logo">
1969 <div class="logo">
1958 <a href="https://mercurial-scm.org/">
1970 <a href="https://mercurial-scm.org/">
1959 <img src="/static/hglogo.png" alt="mercurial" /></a>
1971 <img src="/static/hglogo.png" alt="mercurial" /></a>
1960 </div>
1972 </div>
1961 <ul>
1973 <ul>
1962 <li><a href="/shortlog">log</a></li>
1974 <li><a href="/shortlog">log</a></li>
1963 <li><a href="/graph">graph</a></li>
1975 <li><a href="/graph">graph</a></li>
1964 <li><a href="/tags">tags</a></li>
1976 <li><a href="/tags">tags</a></li>
1965 <li><a href="/bookmarks">bookmarks</a></li>
1977 <li><a href="/bookmarks">bookmarks</a></li>
1966 <li><a href="/branches">branches</a></li>
1978 <li><a href="/branches">branches</a></li>
1967 </ul>
1979 </ul>
1968 <ul>
1980 <ul>
1969 <li class="active">help</li>
1981 <li class="active">help</li>
1970 </ul>
1982 </ul>
1971 </div>
1983 </div>
1972
1984
1973 <div class="main">
1985 <div class="main">
1974 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
1986 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
1975
1987
1976 <form class="search" action="/log">
1988 <form class="search" action="/log">
1977
1989
1978 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
1990 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
1979 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
1991 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
1980 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
1992 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
1981 </form>
1993 </form>
1982 <table class="bigtable">
1994 <table class="bigtable">
1983 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
1995 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
1984
1996
1985 <tr><td>
1997 <tr><td>
1986 <a href="/help/bundlespec">
1998 <a href="/help/bundlespec">
1987 bundlespec
1999 bundlespec
1988 </a>
2000 </a>
1989 </td><td>
2001 </td><td>
1990 Bundle File Formats
2002 Bundle File Formats
1991 </td></tr>
2003 </td></tr>
1992 <tr><td>
2004 <tr><td>
1993 <a href="/help/color">
2005 <a href="/help/color">
1994 color
2006 color
1995 </a>
2007 </a>
1996 </td><td>
2008 </td><td>
1997 Colorizing Outputs
2009 Colorizing Outputs
1998 </td></tr>
2010 </td></tr>
1999 <tr><td>
2011 <tr><td>
2000 <a href="/help/config">
2012 <a href="/help/config">
2001 config
2013 config
2002 </a>
2014 </a>
2003 </td><td>
2015 </td><td>
2004 Configuration Files
2016 Configuration Files
2005 </td></tr>
2017 </td></tr>
2006 <tr><td>
2018 <tr><td>
2007 <a href="/help/dates">
2019 <a href="/help/dates">
2008 dates
2020 dates
2009 </a>
2021 </a>
2010 </td><td>
2022 </td><td>
2011 Date Formats
2023 Date Formats
2012 </td></tr>
2024 </td></tr>
2013 <tr><td>
2025 <tr><td>
2014 <a href="/help/diffs">
2026 <a href="/help/diffs">
2015 diffs
2027 diffs
2016 </a>
2028 </a>
2017 </td><td>
2029 </td><td>
2018 Diff Formats
2030 Diff Formats
2019 </td></tr>
2031 </td></tr>
2020 <tr><td>
2032 <tr><td>
2021 <a href="/help/environment">
2033 <a href="/help/environment">
2022 environment
2034 environment
2023 </a>
2035 </a>
2024 </td><td>
2036 </td><td>
2025 Environment Variables
2037 Environment Variables
2026 </td></tr>
2038 </td></tr>
2027 <tr><td>
2039 <tr><td>
2028 <a href="/help/extensions">
2040 <a href="/help/extensions">
2029 extensions
2041 extensions
2030 </a>
2042 </a>
2031 </td><td>
2043 </td><td>
2032 Using Additional Features
2044 Using Additional Features
2033 </td></tr>
2045 </td></tr>
2034 <tr><td>
2046 <tr><td>
2035 <a href="/help/filesets">
2047 <a href="/help/filesets">
2036 filesets
2048 filesets
2037 </a>
2049 </a>
2038 </td><td>
2050 </td><td>
2039 Specifying File Sets
2051 Specifying File Sets
2040 </td></tr>
2052 </td></tr>
2041 <tr><td>
2053 <tr><td>
2042 <a href="/help/flags">
2054 <a href="/help/flags">
2043 flags
2055 flags
2044 </a>
2056 </a>
2045 </td><td>
2057 </td><td>
2046 Command-line flags
2058 Command-line flags
2047 </td></tr>
2059 </td></tr>
2048 <tr><td>
2060 <tr><td>
2049 <a href="/help/glossary">
2061 <a href="/help/glossary">
2050 glossary
2062 glossary
2051 </a>
2063 </a>
2052 </td><td>
2064 </td><td>
2053 Glossary
2065 Glossary
2054 </td></tr>
2066 </td></tr>
2055 <tr><td>
2067 <tr><td>
2056 <a href="/help/hgignore">
2068 <a href="/help/hgignore">
2057 hgignore
2069 hgignore
2058 </a>
2070 </a>
2059 </td><td>
2071 </td><td>
2060 Syntax for Mercurial Ignore Files
2072 Syntax for Mercurial Ignore Files
2061 </td></tr>
2073 </td></tr>
2062 <tr><td>
2074 <tr><td>
2063 <a href="/help/hgweb">
2075 <a href="/help/hgweb">
2064 hgweb
2076 hgweb
2065 </a>
2077 </a>
2066 </td><td>
2078 </td><td>
2067 Configuring hgweb
2079 Configuring hgweb
2068 </td></tr>
2080 </td></tr>
2069 <tr><td>
2081 <tr><td>
2070 <a href="/help/internals">
2082 <a href="/help/internals">
2071 internals
2083 internals
2072 </a>
2084 </a>
2073 </td><td>
2085 </td><td>
2074 Technical implementation topics
2086 Technical implementation topics
2075 </td></tr>
2087 </td></tr>
2076 <tr><td>
2088 <tr><td>
2077 <a href="/help/merge-tools">
2089 <a href="/help/merge-tools">
2078 merge-tools
2090 merge-tools
2079 </a>
2091 </a>
2080 </td><td>
2092 </td><td>
2081 Merge Tools
2093 Merge Tools
2082 </td></tr>
2094 </td></tr>
2083 <tr><td>
2095 <tr><td>
2084 <a href="/help/pager">
2096 <a href="/help/pager">
2085 pager
2097 pager
2086 </a>
2098 </a>
2087 </td><td>
2099 </td><td>
2088 Pager Support
2100 Pager Support
2089 </td></tr>
2101 </td></tr>
2090 <tr><td>
2102 <tr><td>
2091 <a href="/help/patterns">
2103 <a href="/help/patterns">
2092 patterns
2104 patterns
2093 </a>
2105 </a>
2094 </td><td>
2106 </td><td>
2095 File Name Patterns
2107 File Name Patterns
2096 </td></tr>
2108 </td></tr>
2097 <tr><td>
2109 <tr><td>
2098 <a href="/help/phases">
2110 <a href="/help/phases">
2099 phases
2111 phases
2100 </a>
2112 </a>
2101 </td><td>
2113 </td><td>
2102 Working with Phases
2114 Working with Phases
2103 </td></tr>
2115 </td></tr>
2104 <tr><td>
2116 <tr><td>
2105 <a href="/help/revisions">
2117 <a href="/help/revisions">
2106 revisions
2118 revisions
2107 </a>
2119 </a>
2108 </td><td>
2120 </td><td>
2109 Specifying Revisions
2121 Specifying Revisions
2110 </td></tr>
2122 </td></tr>
2111 <tr><td>
2123 <tr><td>
2112 <a href="/help/scripting">
2124 <a href="/help/scripting">
2113 scripting
2125 scripting
2114 </a>
2126 </a>
2115 </td><td>
2127 </td><td>
2116 Using Mercurial from scripts and automation
2128 Using Mercurial from scripts and automation
2117 </td></tr>
2129 </td></tr>
2118 <tr><td>
2130 <tr><td>
2119 <a href="/help/subrepos">
2131 <a href="/help/subrepos">
2120 subrepos
2132 subrepos
2121 </a>
2133 </a>
2122 </td><td>
2134 </td><td>
2123 Subrepositories
2135 Subrepositories
2124 </td></tr>
2136 </td></tr>
2125 <tr><td>
2137 <tr><td>
2126 <a href="/help/templating">
2138 <a href="/help/templating">
2127 templating
2139 templating
2128 </a>
2140 </a>
2129 </td><td>
2141 </td><td>
2130 Template Usage
2142 Template Usage
2131 </td></tr>
2143 </td></tr>
2132 <tr><td>
2144 <tr><td>
2133 <a href="/help/urls">
2145 <a href="/help/urls">
2134 urls
2146 urls
2135 </a>
2147 </a>
2136 </td><td>
2148 </td><td>
2137 URL Paths
2149 URL Paths
2138 </td></tr>
2150 </td></tr>
2139 <tr><td>
2151 <tr><td>
2140 <a href="/help/topic-containing-verbose">
2152 <a href="/help/topic-containing-verbose">
2141 topic-containing-verbose
2153 topic-containing-verbose
2142 </a>
2154 </a>
2143 </td><td>
2155 </td><td>
2144 This is the topic to test omit indicating.
2156 This is the topic to test omit indicating.
2145 </td></tr>
2157 </td></tr>
2146
2158
2147
2159
2148 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
2160 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
2149
2161
2150 <tr><td>
2162 <tr><td>
2151 <a href="/help/add">
2163 <a href="/help/add">
2152 add
2164 add
2153 </a>
2165 </a>
2154 </td><td>
2166 </td><td>
2155 add the specified files on the next commit
2167 add the specified files on the next commit
2156 </td></tr>
2168 </td></tr>
2157 <tr><td>
2169 <tr><td>
2158 <a href="/help/annotate">
2170 <a href="/help/annotate">
2159 annotate
2171 annotate
2160 </a>
2172 </a>
2161 </td><td>
2173 </td><td>
2162 show changeset information by line for each file
2174 show changeset information by line for each file
2163 </td></tr>
2175 </td></tr>
2164 <tr><td>
2176 <tr><td>
2165 <a href="/help/clone">
2177 <a href="/help/clone">
2166 clone
2178 clone
2167 </a>
2179 </a>
2168 </td><td>
2180 </td><td>
2169 make a copy of an existing repository
2181 make a copy of an existing repository
2170 </td></tr>
2182 </td></tr>
2171 <tr><td>
2183 <tr><td>
2172 <a href="/help/commit">
2184 <a href="/help/commit">
2173 commit
2185 commit
2174 </a>
2186 </a>
2175 </td><td>
2187 </td><td>
2176 commit the specified files or all outstanding changes
2188 commit the specified files or all outstanding changes
2177 </td></tr>
2189 </td></tr>
2178 <tr><td>
2190 <tr><td>
2179 <a href="/help/diff">
2191 <a href="/help/diff">
2180 diff
2192 diff
2181 </a>
2193 </a>
2182 </td><td>
2194 </td><td>
2183 diff repository (or selected files)
2195 diff repository (or selected files)
2184 </td></tr>
2196 </td></tr>
2185 <tr><td>
2197 <tr><td>
2186 <a href="/help/export">
2198 <a href="/help/export">
2187 export
2199 export
2188 </a>
2200 </a>
2189 </td><td>
2201 </td><td>
2190 dump the header and diffs for one or more changesets
2202 dump the header and diffs for one or more changesets
2191 </td></tr>
2203 </td></tr>
2192 <tr><td>
2204 <tr><td>
2193 <a href="/help/forget">
2205 <a href="/help/forget">
2194 forget
2206 forget
2195 </a>
2207 </a>
2196 </td><td>
2208 </td><td>
2197 forget the specified files on the next commit
2209 forget the specified files on the next commit
2198 </td></tr>
2210 </td></tr>
2199 <tr><td>
2211 <tr><td>
2200 <a href="/help/init">
2212 <a href="/help/init">
2201 init
2213 init
2202 </a>
2214 </a>
2203 </td><td>
2215 </td><td>
2204 create a new repository in the given directory
2216 create a new repository in the given directory
2205 </td></tr>
2217 </td></tr>
2206 <tr><td>
2218 <tr><td>
2207 <a href="/help/log">
2219 <a href="/help/log">
2208 log
2220 log
2209 </a>
2221 </a>
2210 </td><td>
2222 </td><td>
2211 show revision history of entire repository or files
2223 show revision history of entire repository or files
2212 </td></tr>
2224 </td></tr>
2213 <tr><td>
2225 <tr><td>
2214 <a href="/help/merge">
2226 <a href="/help/merge">
2215 merge
2227 merge
2216 </a>
2228 </a>
2217 </td><td>
2229 </td><td>
2218 merge another revision into working directory
2230 merge another revision into working directory
2219 </td></tr>
2231 </td></tr>
2220 <tr><td>
2232 <tr><td>
2221 <a href="/help/pull">
2233 <a href="/help/pull">
2222 pull
2234 pull
2223 </a>
2235 </a>
2224 </td><td>
2236 </td><td>
2225 pull changes from the specified source
2237 pull changes from the specified source
2226 </td></tr>
2238 </td></tr>
2227 <tr><td>
2239 <tr><td>
2228 <a href="/help/push">
2240 <a href="/help/push">
2229 push
2241 push
2230 </a>
2242 </a>
2231 </td><td>
2243 </td><td>
2232 push changes to the specified destination
2244 push changes to the specified destination
2233 </td></tr>
2245 </td></tr>
2234 <tr><td>
2246 <tr><td>
2235 <a href="/help/remove">
2247 <a href="/help/remove">
2236 remove
2248 remove
2237 </a>
2249 </a>
2238 </td><td>
2250 </td><td>
2239 remove the specified files on the next commit
2251 remove the specified files on the next commit
2240 </td></tr>
2252 </td></tr>
2241 <tr><td>
2253 <tr><td>
2242 <a href="/help/serve">
2254 <a href="/help/serve">
2243 serve
2255 serve
2244 </a>
2256 </a>
2245 </td><td>
2257 </td><td>
2246 start stand-alone webserver
2258 start stand-alone webserver
2247 </td></tr>
2259 </td></tr>
2248 <tr><td>
2260 <tr><td>
2249 <a href="/help/status">
2261 <a href="/help/status">
2250 status
2262 status
2251 </a>
2263 </a>
2252 </td><td>
2264 </td><td>
2253 show changed files in the working directory
2265 show changed files in the working directory
2254 </td></tr>
2266 </td></tr>
2255 <tr><td>
2267 <tr><td>
2256 <a href="/help/summary">
2268 <a href="/help/summary">
2257 summary
2269 summary
2258 </a>
2270 </a>
2259 </td><td>
2271 </td><td>
2260 summarize working directory state
2272 summarize working directory state
2261 </td></tr>
2273 </td></tr>
2262 <tr><td>
2274 <tr><td>
2263 <a href="/help/update">
2275 <a href="/help/update">
2264 update
2276 update
2265 </a>
2277 </a>
2266 </td><td>
2278 </td><td>
2267 update working directory (or switch revisions)
2279 update working directory (or switch revisions)
2268 </td></tr>
2280 </td></tr>
2269
2281
2270
2282
2271
2283
2272 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
2284 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
2273
2285
2274 <tr><td>
2286 <tr><td>
2275 <a href="/help/addremove">
2287 <a href="/help/addremove">
2276 addremove
2288 addremove
2277 </a>
2289 </a>
2278 </td><td>
2290 </td><td>
2279 add all new files, delete all missing files
2291 add all new files, delete all missing files
2280 </td></tr>
2292 </td></tr>
2281 <tr><td>
2293 <tr><td>
2282 <a href="/help/archive">
2294 <a href="/help/archive">
2283 archive
2295 archive
2284 </a>
2296 </a>
2285 </td><td>
2297 </td><td>
2286 create an unversioned archive of a repository revision
2298 create an unversioned archive of a repository revision
2287 </td></tr>
2299 </td></tr>
2288 <tr><td>
2300 <tr><td>
2289 <a href="/help/backout">
2301 <a href="/help/backout">
2290 backout
2302 backout
2291 </a>
2303 </a>
2292 </td><td>
2304 </td><td>
2293 reverse effect of earlier changeset
2305 reverse effect of earlier changeset
2294 </td></tr>
2306 </td></tr>
2295 <tr><td>
2307 <tr><td>
2296 <a href="/help/bisect">
2308 <a href="/help/bisect">
2297 bisect
2309 bisect
2298 </a>
2310 </a>
2299 </td><td>
2311 </td><td>
2300 subdivision search of changesets
2312 subdivision search of changesets
2301 </td></tr>
2313 </td></tr>
2302 <tr><td>
2314 <tr><td>
2303 <a href="/help/bookmarks">
2315 <a href="/help/bookmarks">
2304 bookmarks
2316 bookmarks
2305 </a>
2317 </a>
2306 </td><td>
2318 </td><td>
2307 create a new bookmark or list existing bookmarks
2319 create a new bookmark or list existing bookmarks
2308 </td></tr>
2320 </td></tr>
2309 <tr><td>
2321 <tr><td>
2310 <a href="/help/branch">
2322 <a href="/help/branch">
2311 branch
2323 branch
2312 </a>
2324 </a>
2313 </td><td>
2325 </td><td>
2314 set or show the current branch name
2326 set or show the current branch name
2315 </td></tr>
2327 </td></tr>
2316 <tr><td>
2328 <tr><td>
2317 <a href="/help/branches">
2329 <a href="/help/branches">
2318 branches
2330 branches
2319 </a>
2331 </a>
2320 </td><td>
2332 </td><td>
2321 list repository named branches
2333 list repository named branches
2322 </td></tr>
2334 </td></tr>
2323 <tr><td>
2335 <tr><td>
2324 <a href="/help/bundle">
2336 <a href="/help/bundle">
2325 bundle
2337 bundle
2326 </a>
2338 </a>
2327 </td><td>
2339 </td><td>
2328 create a bundle file
2340 create a bundle file
2329 </td></tr>
2341 </td></tr>
2330 <tr><td>
2342 <tr><td>
2331 <a href="/help/cat">
2343 <a href="/help/cat">
2332 cat
2344 cat
2333 </a>
2345 </a>
2334 </td><td>
2346 </td><td>
2335 output the current or given revision of files
2347 output the current or given revision of files
2336 </td></tr>
2348 </td></tr>
2337 <tr><td>
2349 <tr><td>
2338 <a href="/help/config">
2350 <a href="/help/config">
2339 config
2351 config
2340 </a>
2352 </a>
2341 </td><td>
2353 </td><td>
2342 show combined config settings from all hgrc files
2354 show combined config settings from all hgrc files
2343 </td></tr>
2355 </td></tr>
2344 <tr><td>
2356 <tr><td>
2345 <a href="/help/copy">
2357 <a href="/help/copy">
2346 copy
2358 copy
2347 </a>
2359 </a>
2348 </td><td>
2360 </td><td>
2349 mark files as copied for the next commit
2361 mark files as copied for the next commit
2350 </td></tr>
2362 </td></tr>
2351 <tr><td>
2363 <tr><td>
2352 <a href="/help/files">
2364 <a href="/help/files">
2353 files
2365 files
2354 </a>
2366 </a>
2355 </td><td>
2367 </td><td>
2356 list tracked files
2368 list tracked files
2357 </td></tr>
2369 </td></tr>
2358 <tr><td>
2370 <tr><td>
2359 <a href="/help/graft">
2371 <a href="/help/graft">
2360 graft
2372 graft
2361 </a>
2373 </a>
2362 </td><td>
2374 </td><td>
2363 copy changes from other branches onto the current branch
2375 copy changes from other branches onto the current branch
2364 </td></tr>
2376 </td></tr>
2365 <tr><td>
2377 <tr><td>
2366 <a href="/help/grep">
2378 <a href="/help/grep">
2367 grep
2379 grep
2368 </a>
2380 </a>
2369 </td><td>
2381 </td><td>
2370 search revision history for a pattern in specified files
2382 search revision history for a pattern in specified files
2371 </td></tr>
2383 </td></tr>
2372 <tr><td>
2384 <tr><td>
2373 <a href="/help/heads">
2385 <a href="/help/heads">
2374 heads
2386 heads
2375 </a>
2387 </a>
2376 </td><td>
2388 </td><td>
2377 show branch heads
2389 show branch heads
2378 </td></tr>
2390 </td></tr>
2379 <tr><td>
2391 <tr><td>
2380 <a href="/help/help">
2392 <a href="/help/help">
2381 help
2393 help
2382 </a>
2394 </a>
2383 </td><td>
2395 </td><td>
2384 show help for a given topic or a help overview
2396 show help for a given topic or a help overview
2385 </td></tr>
2397 </td></tr>
2386 <tr><td>
2398 <tr><td>
2387 <a href="/help/hgalias">
2399 <a href="/help/hgalias">
2388 hgalias
2400 hgalias
2389 </a>
2401 </a>
2390 </td><td>
2402 </td><td>
2391 summarize working directory state
2403 summarize working directory state
2392 </td></tr>
2404 </td></tr>
2393 <tr><td>
2405 <tr><td>
2394 <a href="/help/identify">
2406 <a href="/help/identify">
2395 identify
2407 identify
2396 </a>
2408 </a>
2397 </td><td>
2409 </td><td>
2398 identify the working directory or specified revision
2410 identify the working directory or specified revision
2399 </td></tr>
2411 </td></tr>
2400 <tr><td>
2412 <tr><td>
2401 <a href="/help/import">
2413 <a href="/help/import">
2402 import
2414 import
2403 </a>
2415 </a>
2404 </td><td>
2416 </td><td>
2405 import an ordered set of patches
2417 import an ordered set of patches
2406 </td></tr>
2418 </td></tr>
2407 <tr><td>
2419 <tr><td>
2408 <a href="/help/incoming">
2420 <a href="/help/incoming">
2409 incoming
2421 incoming
2410 </a>
2422 </a>
2411 </td><td>
2423 </td><td>
2412 show new changesets found in source
2424 show new changesets found in source
2413 </td></tr>
2425 </td></tr>
2414 <tr><td>
2426 <tr><td>
2415 <a href="/help/manifest">
2427 <a href="/help/manifest">
2416 manifest
2428 manifest
2417 </a>
2429 </a>
2418 </td><td>
2430 </td><td>
2419 output the current or given revision of the project manifest
2431 output the current or given revision of the project manifest
2420 </td></tr>
2432 </td></tr>
2421 <tr><td>
2433 <tr><td>
2422 <a href="/help/nohelp">
2434 <a href="/help/nohelp">
2423 nohelp
2435 nohelp
2424 </a>
2436 </a>
2425 </td><td>
2437 </td><td>
2426 (no help text available)
2438 (no help text available)
2427 </td></tr>
2439 </td></tr>
2428 <tr><td>
2440 <tr><td>
2429 <a href="/help/outgoing">
2441 <a href="/help/outgoing">
2430 outgoing
2442 outgoing
2431 </a>
2443 </a>
2432 </td><td>
2444 </td><td>
2433 show changesets not found in the destination
2445 show changesets not found in the destination
2434 </td></tr>
2446 </td></tr>
2435 <tr><td>
2447 <tr><td>
2436 <a href="/help/paths">
2448 <a href="/help/paths">
2437 paths
2449 paths
2438 </a>
2450 </a>
2439 </td><td>
2451 </td><td>
2440 show aliases for remote repositories
2452 show aliases for remote repositories
2441 </td></tr>
2453 </td></tr>
2442 <tr><td>
2454 <tr><td>
2443 <a href="/help/phase">
2455 <a href="/help/phase">
2444 phase
2456 phase
2445 </a>
2457 </a>
2446 </td><td>
2458 </td><td>
2447 set or show the current phase name
2459 set or show the current phase name
2448 </td></tr>
2460 </td></tr>
2449 <tr><td>
2461 <tr><td>
2450 <a href="/help/recover">
2462 <a href="/help/recover">
2451 recover
2463 recover
2452 </a>
2464 </a>
2453 </td><td>
2465 </td><td>
2454 roll back an interrupted transaction
2466 roll back an interrupted transaction
2455 </td></tr>
2467 </td></tr>
2456 <tr><td>
2468 <tr><td>
2457 <a href="/help/rename">
2469 <a href="/help/rename">
2458 rename
2470 rename
2459 </a>
2471 </a>
2460 </td><td>
2472 </td><td>
2461 rename files; equivalent of copy + remove
2473 rename files; equivalent of copy + remove
2462 </td></tr>
2474 </td></tr>
2463 <tr><td>
2475 <tr><td>
2464 <a href="/help/resolve">
2476 <a href="/help/resolve">
2465 resolve
2477 resolve
2466 </a>
2478 </a>
2467 </td><td>
2479 </td><td>
2468 redo merges or set/view the merge status of files
2480 redo merges or set/view the merge status of files
2469 </td></tr>
2481 </td></tr>
2470 <tr><td>
2482 <tr><td>
2471 <a href="/help/revert">
2483 <a href="/help/revert">
2472 revert
2484 revert
2473 </a>
2485 </a>
2474 </td><td>
2486 </td><td>
2475 restore files to their checkout state
2487 restore files to their checkout state
2476 </td></tr>
2488 </td></tr>
2477 <tr><td>
2489 <tr><td>
2478 <a href="/help/root">
2490 <a href="/help/root">
2479 root
2491 root
2480 </a>
2492 </a>
2481 </td><td>
2493 </td><td>
2482 print the root (top) of the current working directory
2494 print the root (top) of the current working directory
2483 </td></tr>
2495 </td></tr>
2484 <tr><td>
2496 <tr><td>
2485 <a href="/help/shellalias">
2497 <a href="/help/shellalias">
2486 shellalias
2498 shellalias
2487 </a>
2499 </a>
2488 </td><td>
2500 </td><td>
2489 (no help text available)
2501 (no help text available)
2490 </td></tr>
2502 </td></tr>
2491 <tr><td>
2503 <tr><td>
2492 <a href="/help/tag">
2504 <a href="/help/tag">
2493 tag
2505 tag
2494 </a>
2506 </a>
2495 </td><td>
2507 </td><td>
2496 add one or more tags for the current or given revision
2508 add one or more tags for the current or given revision
2497 </td></tr>
2509 </td></tr>
2498 <tr><td>
2510 <tr><td>
2499 <a href="/help/tags">
2511 <a href="/help/tags">
2500 tags
2512 tags
2501 </a>
2513 </a>
2502 </td><td>
2514 </td><td>
2503 list repository tags
2515 list repository tags
2504 </td></tr>
2516 </td></tr>
2505 <tr><td>
2517 <tr><td>
2506 <a href="/help/unbundle">
2518 <a href="/help/unbundle">
2507 unbundle
2519 unbundle
2508 </a>
2520 </a>
2509 </td><td>
2521 </td><td>
2510 apply one or more bundle files
2522 apply one or more bundle files
2511 </td></tr>
2523 </td></tr>
2512 <tr><td>
2524 <tr><td>
2513 <a href="/help/verify">
2525 <a href="/help/verify">
2514 verify
2526 verify
2515 </a>
2527 </a>
2516 </td><td>
2528 </td><td>
2517 verify the integrity of the repository
2529 verify the integrity of the repository
2518 </td></tr>
2530 </td></tr>
2519 <tr><td>
2531 <tr><td>
2520 <a href="/help/version">
2532 <a href="/help/version">
2521 version
2533 version
2522 </a>
2534 </a>
2523 </td><td>
2535 </td><td>
2524 output version and copyright information
2536 output version and copyright information
2525 </td></tr>
2537 </td></tr>
2526
2538
2527
2539
2528 </table>
2540 </table>
2529 </div>
2541 </div>
2530 </div>
2542 </div>
2531
2543
2532
2544
2533
2545
2534 </body>
2546 </body>
2535 </html>
2547 </html>
2536
2548
2537
2549
2538 $ get-with-headers.py $LOCALIP:$HGPORT "help/add"
2550 $ get-with-headers.py $LOCALIP:$HGPORT "help/add"
2539 200 Script output follows
2551 200 Script output follows
2540
2552
2541 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2553 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2542 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2554 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2543 <head>
2555 <head>
2544 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2556 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2545 <meta name="robots" content="index, nofollow" />
2557 <meta name="robots" content="index, nofollow" />
2546 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2558 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2547 <script type="text/javascript" src="/static/mercurial.js"></script>
2559 <script type="text/javascript" src="/static/mercurial.js"></script>
2548
2560
2549 <title>Help: add</title>
2561 <title>Help: add</title>
2550 </head>
2562 </head>
2551 <body>
2563 <body>
2552
2564
2553 <div class="container">
2565 <div class="container">
2554 <div class="menu">
2566 <div class="menu">
2555 <div class="logo">
2567 <div class="logo">
2556 <a href="https://mercurial-scm.org/">
2568 <a href="https://mercurial-scm.org/">
2557 <img src="/static/hglogo.png" alt="mercurial" /></a>
2569 <img src="/static/hglogo.png" alt="mercurial" /></a>
2558 </div>
2570 </div>
2559 <ul>
2571 <ul>
2560 <li><a href="/shortlog">log</a></li>
2572 <li><a href="/shortlog">log</a></li>
2561 <li><a href="/graph">graph</a></li>
2573 <li><a href="/graph">graph</a></li>
2562 <li><a href="/tags">tags</a></li>
2574 <li><a href="/tags">tags</a></li>
2563 <li><a href="/bookmarks">bookmarks</a></li>
2575 <li><a href="/bookmarks">bookmarks</a></li>
2564 <li><a href="/branches">branches</a></li>
2576 <li><a href="/branches">branches</a></li>
2565 </ul>
2577 </ul>
2566 <ul>
2578 <ul>
2567 <li class="active"><a href="/help">help</a></li>
2579 <li class="active"><a href="/help">help</a></li>
2568 </ul>
2580 </ul>
2569 </div>
2581 </div>
2570
2582
2571 <div class="main">
2583 <div class="main">
2572 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2584 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2573 <h3>Help: add</h3>
2585 <h3>Help: add</h3>
2574
2586
2575 <form class="search" action="/log">
2587 <form class="search" action="/log">
2576
2588
2577 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2589 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2578 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2590 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2579 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2591 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2580 </form>
2592 </form>
2581 <div id="doc">
2593 <div id="doc">
2582 <p>
2594 <p>
2583 hg add [OPTION]... [FILE]...
2595 hg add [OPTION]... [FILE]...
2584 </p>
2596 </p>
2585 <p>
2597 <p>
2586 add the specified files on the next commit
2598 add the specified files on the next commit
2587 </p>
2599 </p>
2588 <p>
2600 <p>
2589 Schedule files to be version controlled and added to the
2601 Schedule files to be version controlled and added to the
2590 repository.
2602 repository.
2591 </p>
2603 </p>
2592 <p>
2604 <p>
2593 The files will be added to the repository at the next commit. To
2605 The files will be added to the repository at the next commit. To
2594 undo an add before that, see 'hg forget'.
2606 undo an add before that, see 'hg forget'.
2595 </p>
2607 </p>
2596 <p>
2608 <p>
2597 If no names are given, add all files to the repository (except
2609 If no names are given, add all files to the repository (except
2598 files matching &quot;.hgignore&quot;).
2610 files matching &quot;.hgignore&quot;).
2599 </p>
2611 </p>
2600 <p>
2612 <p>
2601 Examples:
2613 Examples:
2602 </p>
2614 </p>
2603 <ul>
2615 <ul>
2604 <li> New (unknown) files are added automatically by 'hg add':
2616 <li> New (unknown) files are added automatically by 'hg add':
2605 <pre>
2617 <pre>
2606 \$ ls (re)
2618 \$ ls (re)
2607 foo.c
2619 foo.c
2608 \$ hg status (re)
2620 \$ hg status (re)
2609 ? foo.c
2621 ? foo.c
2610 \$ hg add (re)
2622 \$ hg add (re)
2611 adding foo.c
2623 adding foo.c
2612 \$ hg status (re)
2624 \$ hg status (re)
2613 A foo.c
2625 A foo.c
2614 </pre>
2626 </pre>
2615 <li> Specific files to be added can be specified:
2627 <li> Specific files to be added can be specified:
2616 <pre>
2628 <pre>
2617 \$ ls (re)
2629 \$ ls (re)
2618 bar.c foo.c
2630 bar.c foo.c
2619 \$ hg status (re)
2631 \$ hg status (re)
2620 ? bar.c
2632 ? bar.c
2621 ? foo.c
2633 ? foo.c
2622 \$ hg add bar.c (re)
2634 \$ hg add bar.c (re)
2623 \$ hg status (re)
2635 \$ hg status (re)
2624 A bar.c
2636 A bar.c
2625 ? foo.c
2637 ? foo.c
2626 </pre>
2638 </pre>
2627 </ul>
2639 </ul>
2628 <p>
2640 <p>
2629 Returns 0 if all files are successfully added.
2641 Returns 0 if all files are successfully added.
2630 </p>
2642 </p>
2631 <p>
2643 <p>
2632 options ([+] can be repeated):
2644 options ([+] can be repeated):
2633 </p>
2645 </p>
2634 <table>
2646 <table>
2635 <tr><td>-I</td>
2647 <tr><td>-I</td>
2636 <td>--include PATTERN [+]</td>
2648 <td>--include PATTERN [+]</td>
2637 <td>include names matching the given patterns</td></tr>
2649 <td>include names matching the given patterns</td></tr>
2638 <tr><td>-X</td>
2650 <tr><td>-X</td>
2639 <td>--exclude PATTERN [+]</td>
2651 <td>--exclude PATTERN [+]</td>
2640 <td>exclude names matching the given patterns</td></tr>
2652 <td>exclude names matching the given patterns</td></tr>
2641 <tr><td>-S</td>
2653 <tr><td>-S</td>
2642 <td>--subrepos</td>
2654 <td>--subrepos</td>
2643 <td>recurse into subrepositories</td></tr>
2655 <td>recurse into subrepositories</td></tr>
2644 <tr><td>-n</td>
2656 <tr><td>-n</td>
2645 <td>--dry-run</td>
2657 <td>--dry-run</td>
2646 <td>do not perform actions, just print output</td></tr>
2658 <td>do not perform actions, just print output</td></tr>
2647 </table>
2659 </table>
2648 <p>
2660 <p>
2649 global options ([+] can be repeated):
2661 global options ([+] can be repeated):
2650 </p>
2662 </p>
2651 <table>
2663 <table>
2652 <tr><td>-R</td>
2664 <tr><td>-R</td>
2653 <td>--repository REPO</td>
2665 <td>--repository REPO</td>
2654 <td>repository root directory or name of overlay bundle file</td></tr>
2666 <td>repository root directory or name of overlay bundle file</td></tr>
2655 <tr><td></td>
2667 <tr><td></td>
2656 <td>--cwd DIR</td>
2668 <td>--cwd DIR</td>
2657 <td>change working directory</td></tr>
2669 <td>change working directory</td></tr>
2658 <tr><td>-y</td>
2670 <tr><td>-y</td>
2659 <td>--noninteractive</td>
2671 <td>--noninteractive</td>
2660 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2672 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2661 <tr><td>-q</td>
2673 <tr><td>-q</td>
2662 <td>--quiet</td>
2674 <td>--quiet</td>
2663 <td>suppress output</td></tr>
2675 <td>suppress output</td></tr>
2664 <tr><td>-v</td>
2676 <tr><td>-v</td>
2665 <td>--verbose</td>
2677 <td>--verbose</td>
2666 <td>enable additional output</td></tr>
2678 <td>enable additional output</td></tr>
2667 <tr><td></td>
2679 <tr><td></td>
2668 <td>--color TYPE</td>
2680 <td>--color TYPE</td>
2669 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
2681 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
2670 <tr><td></td>
2682 <tr><td></td>
2671 <td>--config CONFIG [+]</td>
2683 <td>--config CONFIG [+]</td>
2672 <td>set/override config option (use 'section.name=value')</td></tr>
2684 <td>set/override config option (use 'section.name=value')</td></tr>
2673 <tr><td></td>
2685 <tr><td></td>
2674 <td>--debug</td>
2686 <td>--debug</td>
2675 <td>enable debugging output</td></tr>
2687 <td>enable debugging output</td></tr>
2676 <tr><td></td>
2688 <tr><td></td>
2677 <td>--debugger</td>
2689 <td>--debugger</td>
2678 <td>start debugger</td></tr>
2690 <td>start debugger</td></tr>
2679 <tr><td></td>
2691 <tr><td></td>
2680 <td>--encoding ENCODE</td>
2692 <td>--encoding ENCODE</td>
2681 <td>set the charset encoding (default: ascii)</td></tr>
2693 <td>set the charset encoding (default: ascii)</td></tr>
2682 <tr><td></td>
2694 <tr><td></td>
2683 <td>--encodingmode MODE</td>
2695 <td>--encodingmode MODE</td>
2684 <td>set the charset encoding mode (default: strict)</td></tr>
2696 <td>set the charset encoding mode (default: strict)</td></tr>
2685 <tr><td></td>
2697 <tr><td></td>
2686 <td>--traceback</td>
2698 <td>--traceback</td>
2687 <td>always print a traceback on exception</td></tr>
2699 <td>always print a traceback on exception</td></tr>
2688 <tr><td></td>
2700 <tr><td></td>
2689 <td>--time</td>
2701 <td>--time</td>
2690 <td>time how long the command takes</td></tr>
2702 <td>time how long the command takes</td></tr>
2691 <tr><td></td>
2703 <tr><td></td>
2692 <td>--profile</td>
2704 <td>--profile</td>
2693 <td>print command execution profile</td></tr>
2705 <td>print command execution profile</td></tr>
2694 <tr><td></td>
2706 <tr><td></td>
2695 <td>--version</td>
2707 <td>--version</td>
2696 <td>output version information and exit</td></tr>
2708 <td>output version information and exit</td></tr>
2697 <tr><td>-h</td>
2709 <tr><td>-h</td>
2698 <td>--help</td>
2710 <td>--help</td>
2699 <td>display help and exit</td></tr>
2711 <td>display help and exit</td></tr>
2700 <tr><td></td>
2712 <tr><td></td>
2701 <td>--hidden</td>
2713 <td>--hidden</td>
2702 <td>consider hidden changesets</td></tr>
2714 <td>consider hidden changesets</td></tr>
2703 <tr><td></td>
2715 <tr><td></td>
2704 <td>--pager TYPE</td>
2716 <td>--pager TYPE</td>
2705 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
2717 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
2706 </table>
2718 </table>
2707
2719
2708 </div>
2720 </div>
2709 </div>
2721 </div>
2710 </div>
2722 </div>
2711
2723
2712
2724
2713
2725
2714 </body>
2726 </body>
2715 </html>
2727 </html>
2716
2728
2717
2729
2718 $ get-with-headers.py $LOCALIP:$HGPORT "help/remove"
2730 $ get-with-headers.py $LOCALIP:$HGPORT "help/remove"
2719 200 Script output follows
2731 200 Script output follows
2720
2732
2721 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2733 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2722 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2734 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2723 <head>
2735 <head>
2724 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2736 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2725 <meta name="robots" content="index, nofollow" />
2737 <meta name="robots" content="index, nofollow" />
2726 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2738 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2727 <script type="text/javascript" src="/static/mercurial.js"></script>
2739 <script type="text/javascript" src="/static/mercurial.js"></script>
2728
2740
2729 <title>Help: remove</title>
2741 <title>Help: remove</title>
2730 </head>
2742 </head>
2731 <body>
2743 <body>
2732
2744
2733 <div class="container">
2745 <div class="container">
2734 <div class="menu">
2746 <div class="menu">
2735 <div class="logo">
2747 <div class="logo">
2736 <a href="https://mercurial-scm.org/">
2748 <a href="https://mercurial-scm.org/">
2737 <img src="/static/hglogo.png" alt="mercurial" /></a>
2749 <img src="/static/hglogo.png" alt="mercurial" /></a>
2738 </div>
2750 </div>
2739 <ul>
2751 <ul>
2740 <li><a href="/shortlog">log</a></li>
2752 <li><a href="/shortlog">log</a></li>
2741 <li><a href="/graph">graph</a></li>
2753 <li><a href="/graph">graph</a></li>
2742 <li><a href="/tags">tags</a></li>
2754 <li><a href="/tags">tags</a></li>
2743 <li><a href="/bookmarks">bookmarks</a></li>
2755 <li><a href="/bookmarks">bookmarks</a></li>
2744 <li><a href="/branches">branches</a></li>
2756 <li><a href="/branches">branches</a></li>
2745 </ul>
2757 </ul>
2746 <ul>
2758 <ul>
2747 <li class="active"><a href="/help">help</a></li>
2759 <li class="active"><a href="/help">help</a></li>
2748 </ul>
2760 </ul>
2749 </div>
2761 </div>
2750
2762
2751 <div class="main">
2763 <div class="main">
2752 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2764 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2753 <h3>Help: remove</h3>
2765 <h3>Help: remove</h3>
2754
2766
2755 <form class="search" action="/log">
2767 <form class="search" action="/log">
2756
2768
2757 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2769 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2758 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2770 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2759 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2771 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2760 </form>
2772 </form>
2761 <div id="doc">
2773 <div id="doc">
2762 <p>
2774 <p>
2763 hg remove [OPTION]... FILE...
2775 hg remove [OPTION]... FILE...
2764 </p>
2776 </p>
2765 <p>
2777 <p>
2766 aliases: rm
2778 aliases: rm
2767 </p>
2779 </p>
2768 <p>
2780 <p>
2769 remove the specified files on the next commit
2781 remove the specified files on the next commit
2770 </p>
2782 </p>
2771 <p>
2783 <p>
2772 Schedule the indicated files for removal from the current branch.
2784 Schedule the indicated files for removal from the current branch.
2773 </p>
2785 </p>
2774 <p>
2786 <p>
2775 This command schedules the files to be removed at the next commit.
2787 This command schedules the files to be removed at the next commit.
2776 To undo a remove before that, see 'hg revert'. To undo added
2788 To undo a remove before that, see 'hg revert'. To undo added
2777 files, see 'hg forget'.
2789 files, see 'hg forget'.
2778 </p>
2790 </p>
2779 <p>
2791 <p>
2780 -A/--after can be used to remove only files that have already
2792 -A/--after can be used to remove only files that have already
2781 been deleted, -f/--force can be used to force deletion, and -Af
2793 been deleted, -f/--force can be used to force deletion, and -Af
2782 can be used to remove files from the next revision without
2794 can be used to remove files from the next revision without
2783 deleting them from the working directory.
2795 deleting them from the working directory.
2784 </p>
2796 </p>
2785 <p>
2797 <p>
2786 The following table details the behavior of remove for different
2798 The following table details the behavior of remove for different
2787 file states (columns) and option combinations (rows). The file
2799 file states (columns) and option combinations (rows). The file
2788 states are Added [A], Clean [C], Modified [M] and Missing [!]
2800 states are Added [A], Clean [C], Modified [M] and Missing [!]
2789 (as reported by 'hg status'). The actions are Warn, Remove
2801 (as reported by 'hg status'). The actions are Warn, Remove
2790 (from branch) and Delete (from disk):
2802 (from branch) and Delete (from disk):
2791 </p>
2803 </p>
2792 <table>
2804 <table>
2793 <tr><td>opt/state</td>
2805 <tr><td>opt/state</td>
2794 <td>A</td>
2806 <td>A</td>
2795 <td>C</td>
2807 <td>C</td>
2796 <td>M</td>
2808 <td>M</td>
2797 <td>!</td></tr>
2809 <td>!</td></tr>
2798 <tr><td>none</td>
2810 <tr><td>none</td>
2799 <td>W</td>
2811 <td>W</td>
2800 <td>RD</td>
2812 <td>RD</td>
2801 <td>W</td>
2813 <td>W</td>
2802 <td>R</td></tr>
2814 <td>R</td></tr>
2803 <tr><td>-f</td>
2815 <tr><td>-f</td>
2804 <td>R</td>
2816 <td>R</td>
2805 <td>RD</td>
2817 <td>RD</td>
2806 <td>RD</td>
2818 <td>RD</td>
2807 <td>R</td></tr>
2819 <td>R</td></tr>
2808 <tr><td>-A</td>
2820 <tr><td>-A</td>
2809 <td>W</td>
2821 <td>W</td>
2810 <td>W</td>
2822 <td>W</td>
2811 <td>W</td>
2823 <td>W</td>
2812 <td>R</td></tr>
2824 <td>R</td></tr>
2813 <tr><td>-Af</td>
2825 <tr><td>-Af</td>
2814 <td>R</td>
2826 <td>R</td>
2815 <td>R</td>
2827 <td>R</td>
2816 <td>R</td>
2828 <td>R</td>
2817 <td>R</td></tr>
2829 <td>R</td></tr>
2818 </table>
2830 </table>
2819 <p>
2831 <p>
2820 <b>Note:</b>
2832 <b>Note:</b>
2821 </p>
2833 </p>
2822 <p>
2834 <p>
2823 'hg remove' never deletes files in Added [A] state from the
2835 'hg remove' never deletes files in Added [A] state from the
2824 working directory, not even if &quot;--force&quot; is specified.
2836 working directory, not even if &quot;--force&quot; is specified.
2825 </p>
2837 </p>
2826 <p>
2838 <p>
2827 Returns 0 on success, 1 if any warnings encountered.
2839 Returns 0 on success, 1 if any warnings encountered.
2828 </p>
2840 </p>
2829 <p>
2841 <p>
2830 options ([+] can be repeated):
2842 options ([+] can be repeated):
2831 </p>
2843 </p>
2832 <table>
2844 <table>
2833 <tr><td>-A</td>
2845 <tr><td>-A</td>
2834 <td>--after</td>
2846 <td>--after</td>
2835 <td>record delete for missing files</td></tr>
2847 <td>record delete for missing files</td></tr>
2836 <tr><td>-f</td>
2848 <tr><td>-f</td>
2837 <td>--force</td>
2849 <td>--force</td>
2838 <td>forget added files, delete modified files</td></tr>
2850 <td>forget added files, delete modified files</td></tr>
2839 <tr><td>-S</td>
2851 <tr><td>-S</td>
2840 <td>--subrepos</td>
2852 <td>--subrepos</td>
2841 <td>recurse into subrepositories</td></tr>
2853 <td>recurse into subrepositories</td></tr>
2842 <tr><td>-I</td>
2854 <tr><td>-I</td>
2843 <td>--include PATTERN [+]</td>
2855 <td>--include PATTERN [+]</td>
2844 <td>include names matching the given patterns</td></tr>
2856 <td>include names matching the given patterns</td></tr>
2845 <tr><td>-X</td>
2857 <tr><td>-X</td>
2846 <td>--exclude PATTERN [+]</td>
2858 <td>--exclude PATTERN [+]</td>
2847 <td>exclude names matching the given patterns</td></tr>
2859 <td>exclude names matching the given patterns</td></tr>
2848 </table>
2860 </table>
2849 <p>
2861 <p>
2850 global options ([+] can be repeated):
2862 global options ([+] can be repeated):
2851 </p>
2863 </p>
2852 <table>
2864 <table>
2853 <tr><td>-R</td>
2865 <tr><td>-R</td>
2854 <td>--repository REPO</td>
2866 <td>--repository REPO</td>
2855 <td>repository root directory or name of overlay bundle file</td></tr>
2867 <td>repository root directory or name of overlay bundle file</td></tr>
2856 <tr><td></td>
2868 <tr><td></td>
2857 <td>--cwd DIR</td>
2869 <td>--cwd DIR</td>
2858 <td>change working directory</td></tr>
2870 <td>change working directory</td></tr>
2859 <tr><td>-y</td>
2871 <tr><td>-y</td>
2860 <td>--noninteractive</td>
2872 <td>--noninteractive</td>
2861 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2873 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2862 <tr><td>-q</td>
2874 <tr><td>-q</td>
2863 <td>--quiet</td>
2875 <td>--quiet</td>
2864 <td>suppress output</td></tr>
2876 <td>suppress output</td></tr>
2865 <tr><td>-v</td>
2877 <tr><td>-v</td>
2866 <td>--verbose</td>
2878 <td>--verbose</td>
2867 <td>enable additional output</td></tr>
2879 <td>enable additional output</td></tr>
2868 <tr><td></td>
2880 <tr><td></td>
2869 <td>--color TYPE</td>
2881 <td>--color TYPE</td>
2870 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
2882 <td>when to colorize (boolean, always, auto, never, or debug)</td></tr>
2871 <tr><td></td>
2883 <tr><td></td>
2872 <td>--config CONFIG [+]</td>
2884 <td>--config CONFIG [+]</td>
2873 <td>set/override config option (use 'section.name=value')</td></tr>
2885 <td>set/override config option (use 'section.name=value')</td></tr>
2874 <tr><td></td>
2886 <tr><td></td>
2875 <td>--debug</td>
2887 <td>--debug</td>
2876 <td>enable debugging output</td></tr>
2888 <td>enable debugging output</td></tr>
2877 <tr><td></td>
2889 <tr><td></td>
2878 <td>--debugger</td>
2890 <td>--debugger</td>
2879 <td>start debugger</td></tr>
2891 <td>start debugger</td></tr>
2880 <tr><td></td>
2892 <tr><td></td>
2881 <td>--encoding ENCODE</td>
2893 <td>--encoding ENCODE</td>
2882 <td>set the charset encoding (default: ascii)</td></tr>
2894 <td>set the charset encoding (default: ascii)</td></tr>
2883 <tr><td></td>
2895 <tr><td></td>
2884 <td>--encodingmode MODE</td>
2896 <td>--encodingmode MODE</td>
2885 <td>set the charset encoding mode (default: strict)</td></tr>
2897 <td>set the charset encoding mode (default: strict)</td></tr>
2886 <tr><td></td>
2898 <tr><td></td>
2887 <td>--traceback</td>
2899 <td>--traceback</td>
2888 <td>always print a traceback on exception</td></tr>
2900 <td>always print a traceback on exception</td></tr>
2889 <tr><td></td>
2901 <tr><td></td>
2890 <td>--time</td>
2902 <td>--time</td>
2891 <td>time how long the command takes</td></tr>
2903 <td>time how long the command takes</td></tr>
2892 <tr><td></td>
2904 <tr><td></td>
2893 <td>--profile</td>
2905 <td>--profile</td>
2894 <td>print command execution profile</td></tr>
2906 <td>print command execution profile</td></tr>
2895 <tr><td></td>
2907 <tr><td></td>
2896 <td>--version</td>
2908 <td>--version</td>
2897 <td>output version information and exit</td></tr>
2909 <td>output version information and exit</td></tr>
2898 <tr><td>-h</td>
2910 <tr><td>-h</td>
2899 <td>--help</td>
2911 <td>--help</td>
2900 <td>display help and exit</td></tr>
2912 <td>display help and exit</td></tr>
2901 <tr><td></td>
2913 <tr><td></td>
2902 <td>--hidden</td>
2914 <td>--hidden</td>
2903 <td>consider hidden changesets</td></tr>
2915 <td>consider hidden changesets</td></tr>
2904 <tr><td></td>
2916 <tr><td></td>
2905 <td>--pager TYPE</td>
2917 <td>--pager TYPE</td>
2906 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
2918 <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
2907 </table>
2919 </table>
2908
2920
2909 </div>
2921 </div>
2910 </div>
2922 </div>
2911 </div>
2923 </div>
2912
2924
2913
2925
2914
2926
2915 </body>
2927 </body>
2916 </html>
2928 </html>
2917
2929
2918
2930
2919 $ get-with-headers.py $LOCALIP:$HGPORT "help/dates"
2931 $ get-with-headers.py $LOCALIP:$HGPORT "help/dates"
2920 200 Script output follows
2932 200 Script output follows
2921
2933
2922 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2934 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2923 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2935 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2924 <head>
2936 <head>
2925 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2937 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2926 <meta name="robots" content="index, nofollow" />
2938 <meta name="robots" content="index, nofollow" />
2927 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2939 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2928 <script type="text/javascript" src="/static/mercurial.js"></script>
2940 <script type="text/javascript" src="/static/mercurial.js"></script>
2929
2941
2930 <title>Help: dates</title>
2942 <title>Help: dates</title>
2931 </head>
2943 </head>
2932 <body>
2944 <body>
2933
2945
2934 <div class="container">
2946 <div class="container">
2935 <div class="menu">
2947 <div class="menu">
2936 <div class="logo">
2948 <div class="logo">
2937 <a href="https://mercurial-scm.org/">
2949 <a href="https://mercurial-scm.org/">
2938 <img src="/static/hglogo.png" alt="mercurial" /></a>
2950 <img src="/static/hglogo.png" alt="mercurial" /></a>
2939 </div>
2951 </div>
2940 <ul>
2952 <ul>
2941 <li><a href="/shortlog">log</a></li>
2953 <li><a href="/shortlog">log</a></li>
2942 <li><a href="/graph">graph</a></li>
2954 <li><a href="/graph">graph</a></li>
2943 <li><a href="/tags">tags</a></li>
2955 <li><a href="/tags">tags</a></li>
2944 <li><a href="/bookmarks">bookmarks</a></li>
2956 <li><a href="/bookmarks">bookmarks</a></li>
2945 <li><a href="/branches">branches</a></li>
2957 <li><a href="/branches">branches</a></li>
2946 </ul>
2958 </ul>
2947 <ul>
2959 <ul>
2948 <li class="active"><a href="/help">help</a></li>
2960 <li class="active"><a href="/help">help</a></li>
2949 </ul>
2961 </ul>
2950 </div>
2962 </div>
2951
2963
2952 <div class="main">
2964 <div class="main">
2953 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2965 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2954 <h3>Help: dates</h3>
2966 <h3>Help: dates</h3>
2955
2967
2956 <form class="search" action="/log">
2968 <form class="search" action="/log">
2957
2969
2958 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2970 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
2959 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2971 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2960 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2972 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2961 </form>
2973 </form>
2962 <div id="doc">
2974 <div id="doc">
2963 <h1>Date Formats</h1>
2975 <h1>Date Formats</h1>
2964 <p>
2976 <p>
2965 Some commands allow the user to specify a date, e.g.:
2977 Some commands allow the user to specify a date, e.g.:
2966 </p>
2978 </p>
2967 <ul>
2979 <ul>
2968 <li> backout, commit, import, tag: Specify the commit date.
2980 <li> backout, commit, import, tag: Specify the commit date.
2969 <li> log, revert, update: Select revision(s) by date.
2981 <li> log, revert, update: Select revision(s) by date.
2970 </ul>
2982 </ul>
2971 <p>
2983 <p>
2972 Many date formats are valid. Here are some examples:
2984 Many date formats are valid. Here are some examples:
2973 </p>
2985 </p>
2974 <ul>
2986 <ul>
2975 <li> &quot;Wed Dec 6 13:18:29 2006&quot; (local timezone assumed)
2987 <li> &quot;Wed Dec 6 13:18:29 2006&quot; (local timezone assumed)
2976 <li> &quot;Dec 6 13:18 -0600&quot; (year assumed, time offset provided)
2988 <li> &quot;Dec 6 13:18 -0600&quot; (year assumed, time offset provided)
2977 <li> &quot;Dec 6 13:18 UTC&quot; (UTC and GMT are aliases for +0000)
2989 <li> &quot;Dec 6 13:18 UTC&quot; (UTC and GMT are aliases for +0000)
2978 <li> &quot;Dec 6&quot; (midnight)
2990 <li> &quot;Dec 6&quot; (midnight)
2979 <li> &quot;13:18&quot; (today assumed)
2991 <li> &quot;13:18&quot; (today assumed)
2980 <li> &quot;3:39&quot; (3:39AM assumed)
2992 <li> &quot;3:39&quot; (3:39AM assumed)
2981 <li> &quot;3:39pm&quot; (15:39)
2993 <li> &quot;3:39pm&quot; (15:39)
2982 <li> &quot;2006-12-06 13:18:29&quot; (ISO 8601 format)
2994 <li> &quot;2006-12-06 13:18:29&quot; (ISO 8601 format)
2983 <li> &quot;2006-12-6 13:18&quot;
2995 <li> &quot;2006-12-6 13:18&quot;
2984 <li> &quot;2006-12-6&quot;
2996 <li> &quot;2006-12-6&quot;
2985 <li> &quot;12-6&quot;
2997 <li> &quot;12-6&quot;
2986 <li> &quot;12/6&quot;
2998 <li> &quot;12/6&quot;
2987 <li> &quot;12/6/6&quot; (Dec 6 2006)
2999 <li> &quot;12/6/6&quot; (Dec 6 2006)
2988 <li> &quot;today&quot; (midnight)
3000 <li> &quot;today&quot; (midnight)
2989 <li> &quot;yesterday&quot; (midnight)
3001 <li> &quot;yesterday&quot; (midnight)
2990 <li> &quot;now&quot; - right now
3002 <li> &quot;now&quot; - right now
2991 </ul>
3003 </ul>
2992 <p>
3004 <p>
2993 Lastly, there is Mercurial's internal format:
3005 Lastly, there is Mercurial's internal format:
2994 </p>
3006 </p>
2995 <ul>
3007 <ul>
2996 <li> &quot;1165411109 0&quot; (Wed Dec 6 13:18:29 2006 UTC)
3008 <li> &quot;1165411109 0&quot; (Wed Dec 6 13:18:29 2006 UTC)
2997 </ul>
3009 </ul>
2998 <p>
3010 <p>
2999 This is the internal representation format for dates. The first number
3011 This is the internal representation format for dates. The first number
3000 is the number of seconds since the epoch (1970-01-01 00:00 UTC). The
3012 is the number of seconds since the epoch (1970-01-01 00:00 UTC). The
3001 second is the offset of the local timezone, in seconds west of UTC
3013 second is the offset of the local timezone, in seconds west of UTC
3002 (negative if the timezone is east of UTC).
3014 (negative if the timezone is east of UTC).
3003 </p>
3015 </p>
3004 <p>
3016 <p>
3005 The log command also accepts date ranges:
3017 The log command also accepts date ranges:
3006 </p>
3018 </p>
3007 <ul>
3019 <ul>
3008 <li> &quot;&lt;DATE&quot; - at or before a given date/time
3020 <li> &quot;&lt;DATE&quot; - at or before a given date/time
3009 <li> &quot;&gt;DATE&quot; - on or after a given date/time
3021 <li> &quot;&gt;DATE&quot; - on or after a given date/time
3010 <li> &quot;DATE to DATE&quot; - a date range, inclusive
3022 <li> &quot;DATE to DATE&quot; - a date range, inclusive
3011 <li> &quot;-DAYS&quot; - within a given number of days of today
3023 <li> &quot;-DAYS&quot; - within a given number of days of today
3012 </ul>
3024 </ul>
3013
3025
3014 </div>
3026 </div>
3015 </div>
3027 </div>
3016 </div>
3028 </div>
3017
3029
3018
3030
3019
3031
3020 </body>
3032 </body>
3021 </html>
3033 </html>
3022
3034
3023
3035
3024 Sub-topic indexes rendered properly
3036 Sub-topic indexes rendered properly
3025
3037
3026 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals"
3038 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals"
3027 200 Script output follows
3039 200 Script output follows
3028
3040
3029 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3041 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3030 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3042 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3031 <head>
3043 <head>
3032 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3044 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3033 <meta name="robots" content="index, nofollow" />
3045 <meta name="robots" content="index, nofollow" />
3034 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3046 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3035 <script type="text/javascript" src="/static/mercurial.js"></script>
3047 <script type="text/javascript" src="/static/mercurial.js"></script>
3036
3048
3037 <title>Help: internals</title>
3049 <title>Help: internals</title>
3038 </head>
3050 </head>
3039 <body>
3051 <body>
3040
3052
3041 <div class="container">
3053 <div class="container">
3042 <div class="menu">
3054 <div class="menu">
3043 <div class="logo">
3055 <div class="logo">
3044 <a href="https://mercurial-scm.org/">
3056 <a href="https://mercurial-scm.org/">
3045 <img src="/static/hglogo.png" alt="mercurial" /></a>
3057 <img src="/static/hglogo.png" alt="mercurial" /></a>
3046 </div>
3058 </div>
3047 <ul>
3059 <ul>
3048 <li><a href="/shortlog">log</a></li>
3060 <li><a href="/shortlog">log</a></li>
3049 <li><a href="/graph">graph</a></li>
3061 <li><a href="/graph">graph</a></li>
3050 <li><a href="/tags">tags</a></li>
3062 <li><a href="/tags">tags</a></li>
3051 <li><a href="/bookmarks">bookmarks</a></li>
3063 <li><a href="/bookmarks">bookmarks</a></li>
3052 <li><a href="/branches">branches</a></li>
3064 <li><a href="/branches">branches</a></li>
3053 </ul>
3065 </ul>
3054 <ul>
3066 <ul>
3055 <li><a href="/help">help</a></li>
3067 <li><a href="/help">help</a></li>
3056 </ul>
3068 </ul>
3057 </div>
3069 </div>
3058
3070
3059 <div class="main">
3071 <div class="main">
3060 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3072 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3061
3073
3062 <form class="search" action="/log">
3074 <form class="search" action="/log">
3063
3075
3064 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3076 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3065 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3077 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3066 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3078 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3067 </form>
3079 </form>
3068 <table class="bigtable">
3080 <table class="bigtable">
3069 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
3081 <tr><td colspan="2"><h2><a name="topics" href="#topics">Topics</a></h2></td></tr>
3070
3082
3071 <tr><td>
3083 <tr><td>
3072 <a href="/help/internals.bundle2">
3084 <a href="/help/internals.bundle2">
3073 bundle2
3085 bundle2
3074 </a>
3086 </a>
3075 </td><td>
3087 </td><td>
3076 Bundle2
3088 Bundle2
3077 </td></tr>
3089 </td></tr>
3078 <tr><td>
3090 <tr><td>
3079 <a href="/help/internals.bundles">
3091 <a href="/help/internals.bundles">
3080 bundles
3092 bundles
3081 </a>
3093 </a>
3082 </td><td>
3094 </td><td>
3083 Bundles
3095 Bundles
3084 </td></tr>
3096 </td></tr>
3085 <tr><td>
3097 <tr><td>
3086 <a href="/help/internals.censor">
3098 <a href="/help/internals.censor">
3087 censor
3099 censor
3088 </a>
3100 </a>
3089 </td><td>
3101 </td><td>
3090 Censor
3102 Censor
3091 </td></tr>
3103 </td></tr>
3092 <tr><td>
3104 <tr><td>
3093 <a href="/help/internals.changegroups">
3105 <a href="/help/internals.changegroups">
3094 changegroups
3106 changegroups
3095 </a>
3107 </a>
3096 </td><td>
3108 </td><td>
3097 Changegroups
3109 Changegroups
3098 </td></tr>
3110 </td></tr>
3099 <tr><td>
3111 <tr><td>
3100 <a href="/help/internals.config">
3112 <a href="/help/internals.config">
3101 config
3113 config
3102 </a>
3114 </a>
3103 </td><td>
3115 </td><td>
3104 Config Registrar
3116 Config Registrar
3105 </td></tr>
3117 </td></tr>
3106 <tr><td>
3118 <tr><td>
3107 <a href="/help/internals.requirements">
3119 <a href="/help/internals.requirements">
3108 requirements
3120 requirements
3109 </a>
3121 </a>
3110 </td><td>
3122 </td><td>
3111 Repository Requirements
3123 Repository Requirements
3112 </td></tr>
3124 </td></tr>
3113 <tr><td>
3125 <tr><td>
3114 <a href="/help/internals.revlogs">
3126 <a href="/help/internals.revlogs">
3115 revlogs
3127 revlogs
3116 </a>
3128 </a>
3117 </td><td>
3129 </td><td>
3118 Revision Logs
3130 Revision Logs
3119 </td></tr>
3131 </td></tr>
3120 <tr><td>
3132 <tr><td>
3121 <a href="/help/internals.wireprotocol">
3133 <a href="/help/internals.wireprotocol">
3122 wireprotocol
3134 wireprotocol
3123 </a>
3135 </a>
3124 </td><td>
3136 </td><td>
3125 Wire Protocol
3137 Wire Protocol
3126 </td></tr>
3138 </td></tr>
3127
3139
3128
3140
3129
3141
3130
3142
3131
3143
3132 </table>
3144 </table>
3133 </div>
3145 </div>
3134 </div>
3146 </div>
3135
3147
3136
3148
3137
3149
3138 </body>
3150 </body>
3139 </html>
3151 </html>
3140
3152
3141
3153
3142 Sub-topic topics rendered properly
3154 Sub-topic topics rendered properly
3143
3155
3144 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals.changegroups"
3156 $ get-with-headers.py $LOCALIP:$HGPORT "help/internals.changegroups"
3145 200 Script output follows
3157 200 Script output follows
3146
3158
3147 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3159 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3148 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3160 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3149 <head>
3161 <head>
3150 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3162 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3151 <meta name="robots" content="index, nofollow" />
3163 <meta name="robots" content="index, nofollow" />
3152 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3164 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3153 <script type="text/javascript" src="/static/mercurial.js"></script>
3165 <script type="text/javascript" src="/static/mercurial.js"></script>
3154
3166
3155 <title>Help: internals.changegroups</title>
3167 <title>Help: internals.changegroups</title>
3156 </head>
3168 </head>
3157 <body>
3169 <body>
3158
3170
3159 <div class="container">
3171 <div class="container">
3160 <div class="menu">
3172 <div class="menu">
3161 <div class="logo">
3173 <div class="logo">
3162 <a href="https://mercurial-scm.org/">
3174 <a href="https://mercurial-scm.org/">
3163 <img src="/static/hglogo.png" alt="mercurial" /></a>
3175 <img src="/static/hglogo.png" alt="mercurial" /></a>
3164 </div>
3176 </div>
3165 <ul>
3177 <ul>
3166 <li><a href="/shortlog">log</a></li>
3178 <li><a href="/shortlog">log</a></li>
3167 <li><a href="/graph">graph</a></li>
3179 <li><a href="/graph">graph</a></li>
3168 <li><a href="/tags">tags</a></li>
3180 <li><a href="/tags">tags</a></li>
3169 <li><a href="/bookmarks">bookmarks</a></li>
3181 <li><a href="/bookmarks">bookmarks</a></li>
3170 <li><a href="/branches">branches</a></li>
3182 <li><a href="/branches">branches</a></li>
3171 </ul>
3183 </ul>
3172 <ul>
3184 <ul>
3173 <li class="active"><a href="/help">help</a></li>
3185 <li class="active"><a href="/help">help</a></li>
3174 </ul>
3186 </ul>
3175 </div>
3187 </div>
3176
3188
3177 <div class="main">
3189 <div class="main">
3178 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3190 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3179 <h3>Help: internals.changegroups</h3>
3191 <h3>Help: internals.changegroups</h3>
3180
3192
3181 <form class="search" action="/log">
3193 <form class="search" action="/log">
3182
3194
3183 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3195 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3184 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3196 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3185 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3197 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3186 </form>
3198 </form>
3187 <div id="doc">
3199 <div id="doc">
3188 <h1>Changegroups</h1>
3200 <h1>Changegroups</h1>
3189 <p>
3201 <p>
3190 Changegroups are representations of repository revlog data, specifically
3202 Changegroups are representations of repository revlog data, specifically
3191 the changelog data, root/flat manifest data, treemanifest data, and
3203 the changelog data, root/flat manifest data, treemanifest data, and
3192 filelogs.
3204 filelogs.
3193 </p>
3205 </p>
3194 <p>
3206 <p>
3195 There are 3 versions of changegroups: &quot;1&quot;, &quot;2&quot;, and &quot;3&quot;. From a
3207 There are 3 versions of changegroups: &quot;1&quot;, &quot;2&quot;, and &quot;3&quot;. From a
3196 high-level, versions &quot;1&quot; and &quot;2&quot; are almost exactly the same, with the
3208 high-level, versions &quot;1&quot; and &quot;2&quot; are almost exactly the same, with the
3197 only difference being an additional item in the *delta header*. Version
3209 only difference being an additional item in the *delta header*. Version
3198 &quot;3&quot; adds support for revlog flags in the *delta header* and optionally
3210 &quot;3&quot; adds support for revlog flags in the *delta header* and optionally
3199 exchanging treemanifests (enabled by setting an option on the
3211 exchanging treemanifests (enabled by setting an option on the
3200 &quot;changegroup&quot; part in the bundle2).
3212 &quot;changegroup&quot; part in the bundle2).
3201 </p>
3213 </p>
3202 <p>
3214 <p>
3203 Changegroups when not exchanging treemanifests consist of 3 logical
3215 Changegroups when not exchanging treemanifests consist of 3 logical
3204 segments:
3216 segments:
3205 </p>
3217 </p>
3206 <pre>
3218 <pre>
3207 +---------------------------------+
3219 +---------------------------------+
3208 | | | |
3220 | | | |
3209 | changeset | manifest | filelogs |
3221 | changeset | manifest | filelogs |
3210 | | | |
3222 | | | |
3211 | | | |
3223 | | | |
3212 +---------------------------------+
3224 +---------------------------------+
3213 </pre>
3225 </pre>
3214 <p>
3226 <p>
3215 When exchanging treemanifests, there are 4 logical segments:
3227 When exchanging treemanifests, there are 4 logical segments:
3216 </p>
3228 </p>
3217 <pre>
3229 <pre>
3218 +-------------------------------------------------+
3230 +-------------------------------------------------+
3219 | | | | |
3231 | | | | |
3220 | changeset | root | treemanifests | filelogs |
3232 | changeset | root | treemanifests | filelogs |
3221 | | manifest | | |
3233 | | manifest | | |
3222 | | | | |
3234 | | | | |
3223 +-------------------------------------------------+
3235 +-------------------------------------------------+
3224 </pre>
3236 </pre>
3225 <p>
3237 <p>
3226 The principle building block of each segment is a *chunk*. A *chunk*
3238 The principle building block of each segment is a *chunk*. A *chunk*
3227 is a framed piece of data:
3239 is a framed piece of data:
3228 </p>
3240 </p>
3229 <pre>
3241 <pre>
3230 +---------------------------------------+
3242 +---------------------------------------+
3231 | | |
3243 | | |
3232 | length | data |
3244 | length | data |
3233 | (4 bytes) | (&lt;length - 4&gt; bytes) |
3245 | (4 bytes) | (&lt;length - 4&gt; bytes) |
3234 | | |
3246 | | |
3235 +---------------------------------------+
3247 +---------------------------------------+
3236 </pre>
3248 </pre>
3237 <p>
3249 <p>
3238 All integers are big-endian signed integers. Each chunk starts with a 32-bit
3250 All integers are big-endian signed integers. Each chunk starts with a 32-bit
3239 integer indicating the length of the entire chunk (including the length field
3251 integer indicating the length of the entire chunk (including the length field
3240 itself).
3252 itself).
3241 </p>
3253 </p>
3242 <p>
3254 <p>
3243 There is a special case chunk that has a value of 0 for the length
3255 There is a special case chunk that has a value of 0 for the length
3244 (&quot;0x00000000&quot;). We call this an *empty chunk*.
3256 (&quot;0x00000000&quot;). We call this an *empty chunk*.
3245 </p>
3257 </p>
3246 <h2>Delta Groups</h2>
3258 <h2>Delta Groups</h2>
3247 <p>
3259 <p>
3248 A *delta group* expresses the content of a revlog as a series of deltas,
3260 A *delta group* expresses the content of a revlog as a series of deltas,
3249 or patches against previous revisions.
3261 or patches against previous revisions.
3250 </p>
3262 </p>
3251 <p>
3263 <p>
3252 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
3264 Delta groups consist of 0 or more *chunks* followed by the *empty chunk*
3253 to signal the end of the delta group:
3265 to signal the end of the delta group:
3254 </p>
3266 </p>
3255 <pre>
3267 <pre>
3256 +------------------------------------------------------------------------+
3268 +------------------------------------------------------------------------+
3257 | | | | | |
3269 | | | | | |
3258 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
3270 | chunk0 length | chunk0 data | chunk1 length | chunk1 data | 0x0 |
3259 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
3271 | (4 bytes) | (various) | (4 bytes) | (various) | (4 bytes) |
3260 | | | | | |
3272 | | | | | |
3261 +------------------------------------------------------------------------+
3273 +------------------------------------------------------------------------+
3262 </pre>
3274 </pre>
3263 <p>
3275 <p>
3264 Each *chunk*'s data consists of the following:
3276 Each *chunk*'s data consists of the following:
3265 </p>
3277 </p>
3266 <pre>
3278 <pre>
3267 +---------------------------------------+
3279 +---------------------------------------+
3268 | | |
3280 | | |
3269 | delta header | delta data |
3281 | delta header | delta data |
3270 | (various by version) | (various) |
3282 | (various by version) | (various) |
3271 | | |
3283 | | |
3272 +---------------------------------------+
3284 +---------------------------------------+
3273 </pre>
3285 </pre>
3274 <p>
3286 <p>
3275 The *delta data* is a series of *delta*s that describe a diff from an existing
3287 The *delta data* is a series of *delta*s that describe a diff from an existing
3276 entry (either that the recipient already has, or previously specified in the
3288 entry (either that the recipient already has, or previously specified in the
3277 bundle/changegroup).
3289 bundle/changegroup).
3278 </p>
3290 </p>
3279 <p>
3291 <p>
3280 The *delta header* is different between versions &quot;1&quot;, &quot;2&quot;, and
3292 The *delta header* is different between versions &quot;1&quot;, &quot;2&quot;, and
3281 &quot;3&quot; of the changegroup format.
3293 &quot;3&quot; of the changegroup format.
3282 </p>
3294 </p>
3283 <p>
3295 <p>
3284 Version 1 (headerlen=80):
3296 Version 1 (headerlen=80):
3285 </p>
3297 </p>
3286 <pre>
3298 <pre>
3287 +------------------------------------------------------+
3299 +------------------------------------------------------+
3288 | | | | |
3300 | | | | |
3289 | node | p1 node | p2 node | link node |
3301 | node | p1 node | p2 node | link node |
3290 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3302 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3291 | | | | |
3303 | | | | |
3292 +------------------------------------------------------+
3304 +------------------------------------------------------+
3293 </pre>
3305 </pre>
3294 <p>
3306 <p>
3295 Version 2 (headerlen=100):
3307 Version 2 (headerlen=100):
3296 </p>
3308 </p>
3297 <pre>
3309 <pre>
3298 +------------------------------------------------------------------+
3310 +------------------------------------------------------------------+
3299 | | | | | |
3311 | | | | | |
3300 | node | p1 node | p2 node | base node | link node |
3312 | node | p1 node | p2 node | base node | link node |
3301 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3313 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) |
3302 | | | | | |
3314 | | | | | |
3303 +------------------------------------------------------------------+
3315 +------------------------------------------------------------------+
3304 </pre>
3316 </pre>
3305 <p>
3317 <p>
3306 Version 3 (headerlen=102):
3318 Version 3 (headerlen=102):
3307 </p>
3319 </p>
3308 <pre>
3320 <pre>
3309 +------------------------------------------------------------------------------+
3321 +------------------------------------------------------------------------------+
3310 | | | | | | |
3322 | | | | | | |
3311 | node | p1 node | p2 node | base node | link node | flags |
3323 | node | p1 node | p2 node | base node | link node | flags |
3312 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
3324 | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (20 bytes) | (2 bytes) |
3313 | | | | | | |
3325 | | | | | | |
3314 +------------------------------------------------------------------------------+
3326 +------------------------------------------------------------------------------+
3315 </pre>
3327 </pre>
3316 <p>
3328 <p>
3317 The *delta data* consists of &quot;chunklen - 4 - headerlen&quot; bytes, which contain a
3329 The *delta data* consists of &quot;chunklen - 4 - headerlen&quot; bytes, which contain a
3318 series of *delta*s, densely packed (no separators). These deltas describe a diff
3330 series of *delta*s, densely packed (no separators). These deltas describe a diff
3319 from an existing entry (either that the recipient already has, or previously
3331 from an existing entry (either that the recipient already has, or previously
3320 specified in the bundle/changegroup). The format is described more fully in
3332 specified in the bundle/changegroup). The format is described more fully in
3321 &quot;hg help internals.bdiff&quot;, but briefly:
3333 &quot;hg help internals.bdiff&quot;, but briefly:
3322 </p>
3334 </p>
3323 <pre>
3335 <pre>
3324 +---------------------------------------------------------------+
3336 +---------------------------------------------------------------+
3325 | | | | |
3337 | | | | |
3326 | start offset | end offset | new length | content |
3338 | start offset | end offset | new length | content |
3327 | (4 bytes) | (4 bytes) | (4 bytes) | (&lt;new length&gt; bytes) |
3339 | (4 bytes) | (4 bytes) | (4 bytes) | (&lt;new length&gt; bytes) |
3328 | | | | |
3340 | | | | |
3329 +---------------------------------------------------------------+
3341 +---------------------------------------------------------------+
3330 </pre>
3342 </pre>
3331 <p>
3343 <p>
3332 Please note that the length field in the delta data does *not* include itself.
3344 Please note that the length field in the delta data does *not* include itself.
3333 </p>
3345 </p>
3334 <p>
3346 <p>
3335 In version 1, the delta is always applied against the previous node from
3347 In version 1, the delta is always applied against the previous node from
3336 the changegroup or the first parent if this is the first entry in the
3348 the changegroup or the first parent if this is the first entry in the
3337 changegroup.
3349 changegroup.
3338 </p>
3350 </p>
3339 <p>
3351 <p>
3340 In version 2 and up, the delta base node is encoded in the entry in the
3352 In version 2 and up, the delta base node is encoded in the entry in the
3341 changegroup. This allows the delta to be expressed against any parent,
3353 changegroup. This allows the delta to be expressed against any parent,
3342 which can result in smaller deltas and more efficient encoding of data.
3354 which can result in smaller deltas and more efficient encoding of data.
3343 </p>
3355 </p>
3344 <h2>Changeset Segment</h2>
3356 <h2>Changeset Segment</h2>
3345 <p>
3357 <p>
3346 The *changeset segment* consists of a single *delta group* holding
3358 The *changeset segment* consists of a single *delta group* holding
3347 changelog data. The *empty chunk* at the end of the *delta group* denotes
3359 changelog data. The *empty chunk* at the end of the *delta group* denotes
3348 the boundary to the *manifest segment*.
3360 the boundary to the *manifest segment*.
3349 </p>
3361 </p>
3350 <h2>Manifest Segment</h2>
3362 <h2>Manifest Segment</h2>
3351 <p>
3363 <p>
3352 The *manifest segment* consists of a single *delta group* holding manifest
3364 The *manifest segment* consists of a single *delta group* holding manifest
3353 data. If treemanifests are in use, it contains only the manifest for the
3365 data. If treemanifests are in use, it contains only the manifest for the
3354 root directory of the repository. Otherwise, it contains the entire
3366 root directory of the repository. Otherwise, it contains the entire
3355 manifest data. The *empty chunk* at the end of the *delta group* denotes
3367 manifest data. The *empty chunk* at the end of the *delta group* denotes
3356 the boundary to the next segment (either the *treemanifests segment* or the
3368 the boundary to the next segment (either the *treemanifests segment* or the
3357 *filelogs segment*, depending on version and the request options).
3369 *filelogs segment*, depending on version and the request options).
3358 </p>
3370 </p>
3359 <h3>Treemanifests Segment</h3>
3371 <h3>Treemanifests Segment</h3>
3360 <p>
3372 <p>
3361 The *treemanifests segment* only exists in changegroup version &quot;3&quot;, and
3373 The *treemanifests segment* only exists in changegroup version &quot;3&quot;, and
3362 only if the 'treemanifest' param is part of the bundle2 changegroup part
3374 only if the 'treemanifest' param is part of the bundle2 changegroup part
3363 (it is not possible to use changegroup version 3 outside of bundle2).
3375 (it is not possible to use changegroup version 3 outside of bundle2).
3364 Aside from the filenames in the *treemanifests segment* containing a
3376 Aside from the filenames in the *treemanifests segment* containing a
3365 trailing &quot;/&quot; character, it behaves identically to the *filelogs segment*
3377 trailing &quot;/&quot; character, it behaves identically to the *filelogs segment*
3366 (see below). The final sub-segment is followed by an *empty chunk* (logically,
3378 (see below). The final sub-segment is followed by an *empty chunk* (logically,
3367 a sub-segment with filename size 0). This denotes the boundary to the
3379 a sub-segment with filename size 0). This denotes the boundary to the
3368 *filelogs segment*.
3380 *filelogs segment*.
3369 </p>
3381 </p>
3370 <h2>Filelogs Segment</h2>
3382 <h2>Filelogs Segment</h2>
3371 <p>
3383 <p>
3372 The *filelogs segment* consists of multiple sub-segments, each
3384 The *filelogs segment* consists of multiple sub-segments, each
3373 corresponding to an individual file whose data is being described:
3385 corresponding to an individual file whose data is being described:
3374 </p>
3386 </p>
3375 <pre>
3387 <pre>
3376 +--------------------------------------------------+
3388 +--------------------------------------------------+
3377 | | | | | |
3389 | | | | | |
3378 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
3390 | filelog0 | filelog1 | filelog2 | ... | 0x0 |
3379 | | | | | (4 bytes) |
3391 | | | | | (4 bytes) |
3380 | | | | | |
3392 | | | | | |
3381 +--------------------------------------------------+
3393 +--------------------------------------------------+
3382 </pre>
3394 </pre>
3383 <p>
3395 <p>
3384 The final filelog sub-segment is followed by an *empty chunk* (logically,
3396 The final filelog sub-segment is followed by an *empty chunk* (logically,
3385 a sub-segment with filename size 0). This denotes the end of the segment
3397 a sub-segment with filename size 0). This denotes the end of the segment
3386 and of the overall changegroup.
3398 and of the overall changegroup.
3387 </p>
3399 </p>
3388 <p>
3400 <p>
3389 Each filelog sub-segment consists of the following:
3401 Each filelog sub-segment consists of the following:
3390 </p>
3402 </p>
3391 <pre>
3403 <pre>
3392 +------------------------------------------------------+
3404 +------------------------------------------------------+
3393 | | | |
3405 | | | |
3394 | filename length | filename | delta group |
3406 | filename length | filename | delta group |
3395 | (4 bytes) | (&lt;length - 4&gt; bytes) | (various) |
3407 | (4 bytes) | (&lt;length - 4&gt; bytes) | (various) |
3396 | | | |
3408 | | | |
3397 +------------------------------------------------------+
3409 +------------------------------------------------------+
3398 </pre>
3410 </pre>
3399 <p>
3411 <p>
3400 That is, a *chunk* consisting of the filename (not terminated or padded)
3412 That is, a *chunk* consisting of the filename (not terminated or padded)
3401 followed by N chunks constituting the *delta group* for this file. The
3413 followed by N chunks constituting the *delta group* for this file. The
3402 *empty chunk* at the end of each *delta group* denotes the boundary to the
3414 *empty chunk* at the end of each *delta group* denotes the boundary to the
3403 next filelog sub-segment.
3415 next filelog sub-segment.
3404 </p>
3416 </p>
3405
3417
3406 </div>
3418 </div>
3407 </div>
3419 </div>
3408 </div>
3420 </div>
3409
3421
3410
3422
3411
3423
3412 </body>
3424 </body>
3413 </html>
3425 </html>
3414
3426
3415
3427
3416 $ get-with-headers.py 127.0.0.1:$HGPORT "help/unknowntopic"
3428 $ get-with-headers.py 127.0.0.1:$HGPORT "help/unknowntopic"
3417 404 Not Found
3429 404 Not Found
3418
3430
3419 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3431 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3420 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3432 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
3421 <head>
3433 <head>
3422 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3434 <link rel="icon" href="/static/hgicon.png" type="image/png" />
3423 <meta name="robots" content="index, nofollow" />
3435 <meta name="robots" content="index, nofollow" />
3424 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3436 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
3425 <script type="text/javascript" src="/static/mercurial.js"></script>
3437 <script type="text/javascript" src="/static/mercurial.js"></script>
3426
3438
3427 <title>test: error</title>
3439 <title>test: error</title>
3428 </head>
3440 </head>
3429 <body>
3441 <body>
3430
3442
3431 <div class="container">
3443 <div class="container">
3432 <div class="menu">
3444 <div class="menu">
3433 <div class="logo">
3445 <div class="logo">
3434 <a href="https://mercurial-scm.org/">
3446 <a href="https://mercurial-scm.org/">
3435 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
3447 <img src="/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
3436 </div>
3448 </div>
3437 <ul>
3449 <ul>
3438 <li><a href="/shortlog">log</a></li>
3450 <li><a href="/shortlog">log</a></li>
3439 <li><a href="/graph">graph</a></li>
3451 <li><a href="/graph">graph</a></li>
3440 <li><a href="/tags">tags</a></li>
3452 <li><a href="/tags">tags</a></li>
3441 <li><a href="/bookmarks">bookmarks</a></li>
3453 <li><a href="/bookmarks">bookmarks</a></li>
3442 <li><a href="/branches">branches</a></li>
3454 <li><a href="/branches">branches</a></li>
3443 </ul>
3455 </ul>
3444 <ul>
3456 <ul>
3445 <li><a href="/help">help</a></li>
3457 <li><a href="/help">help</a></li>
3446 </ul>
3458 </ul>
3447 </div>
3459 </div>
3448
3460
3449 <div class="main">
3461 <div class="main">
3450
3462
3451 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3463 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
3452 <h3>error</h3>
3464 <h3>error</h3>
3453
3465
3454
3466
3455 <form class="search" action="/log">
3467 <form class="search" action="/log">
3456
3468
3457 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3469 <p><input name="rev" id="search1" type="text" size="30" value="" /></p>
3458 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3470 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
3459 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3471 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
3460 </form>
3472 </form>
3461
3473
3462 <div class="description">
3474 <div class="description">
3463 <p>
3475 <p>
3464 An error occurred while processing your request:
3476 An error occurred while processing your request:
3465 </p>
3477 </p>
3466 <p>
3478 <p>
3467 Not Found
3479 Not Found
3468 </p>
3480 </p>
3469 </div>
3481 </div>
3470 </div>
3482 </div>
3471 </div>
3483 </div>
3472
3484
3473
3485
3474
3486
3475 </body>
3487 </body>
3476 </html>
3488 </html>
3477
3489
3478 [1]
3490 [1]
3479
3491
3480 $ killdaemons.py
3492 $ killdaemons.py
3481
3493
3482 #endif
3494 #endif
General Comments 0
You need to be logged in to leave comments. Login now