##// END OF EJS Templates
help: add "internals" topic...
Gregory Szorc -
r27376:fc810d95 default
parent child Browse files
Show More
@@ -1,548 +1,565 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 i18n import gettext, _
8 from i18n import gettext, _
9 import itertools, os, textwrap
9 import itertools, os, textwrap
10 import error
10 import error
11 import extensions, revset, fileset, templatekw, templatefilters, filemerge
11 import extensions, revset, fileset, templatekw, templatefilters, filemerge
12 import templater
12 import templater
13 import encoding, util, minirst
13 import encoding, util, minirst
14 import cmdutil
14 import cmdutil
15 import hgweb.webcommands as webcommands
15 import hgweb.webcommands as webcommands
16
16
17 _exclkeywords = [
17 _exclkeywords = [
18 "(DEPRECATED)",
18 "(DEPRECATED)",
19 "(EXPERIMENTAL)",
19 "(EXPERIMENTAL)",
20 # i18n: "(DEPRECATED)" is a keyword, must be translated consistently
20 # i18n: "(DEPRECATED)" is a keyword, must be translated consistently
21 _("(DEPRECATED)"),
21 _("(DEPRECATED)"),
22 # i18n: "(EXPERIMENTAL)" is a keyword, must be translated consistently
22 # i18n: "(EXPERIMENTAL)" is a keyword, must be translated consistently
23 _("(EXPERIMENTAL)"),
23 _("(EXPERIMENTAL)"),
24 ]
24 ]
25
25
26 def listexts(header, exts, indent=1, showdeprecated=False):
26 def listexts(header, exts, indent=1, showdeprecated=False):
27 '''return a text listing of the given extensions'''
27 '''return a text listing of the given extensions'''
28 rst = []
28 rst = []
29 if exts:
29 if exts:
30 for name, desc in sorted(exts.iteritems()):
30 for name, desc in sorted(exts.iteritems()):
31 if not showdeprecated and any(w in desc for w in _exclkeywords):
31 if not showdeprecated and any(w in desc for w in _exclkeywords):
32 continue
32 continue
33 rst.append('%s:%s: %s\n' % (' ' * indent, name, desc))
33 rst.append('%s:%s: %s\n' % (' ' * indent, name, desc))
34 if rst:
34 if rst:
35 rst.insert(0, '\n%s\n\n' % header)
35 rst.insert(0, '\n%s\n\n' % header)
36 return rst
36 return rst
37
37
38 def extshelp(ui):
38 def extshelp(ui):
39 rst = loaddoc('extensions')(ui).splitlines(True)
39 rst = loaddoc('extensions')(ui).splitlines(True)
40 rst.extend(listexts(
40 rst.extend(listexts(
41 _('enabled extensions:'), extensions.enabled(), showdeprecated=True))
41 _('enabled extensions:'), extensions.enabled(), showdeprecated=True))
42 rst.extend(listexts(_('disabled extensions:'), extensions.disabled()))
42 rst.extend(listexts(_('disabled extensions:'), extensions.disabled()))
43 doc = ''.join(rst)
43 doc = ''.join(rst)
44 return doc
44 return doc
45
45
46 def optrst(header, options, verbose):
46 def optrst(header, options, verbose):
47 data = []
47 data = []
48 multioccur = False
48 multioccur = False
49 for option in options:
49 for option in options:
50 if len(option) == 5:
50 if len(option) == 5:
51 shortopt, longopt, default, desc, optlabel = option
51 shortopt, longopt, default, desc, optlabel = option
52 else:
52 else:
53 shortopt, longopt, default, desc = option
53 shortopt, longopt, default, desc = option
54 optlabel = _("VALUE") # default label
54 optlabel = _("VALUE") # default label
55
55
56 if not verbose and any(w in desc for w in _exclkeywords):
56 if not verbose and any(w in desc for w in _exclkeywords):
57 continue
57 continue
58
58
59 so = ''
59 so = ''
60 if shortopt:
60 if shortopt:
61 so = '-' + shortopt
61 so = '-' + shortopt
62 lo = '--' + longopt
62 lo = '--' + longopt
63 if default:
63 if default:
64 desc += _(" (default: %s)") % default
64 desc += _(" (default: %s)") % default
65
65
66 if isinstance(default, list):
66 if isinstance(default, list):
67 lo += " %s [+]" % optlabel
67 lo += " %s [+]" % optlabel
68 multioccur = True
68 multioccur = True
69 elif (default is not None) and not isinstance(default, bool):
69 elif (default is not None) and not isinstance(default, bool):
70 lo += " %s" % optlabel
70 lo += " %s" % optlabel
71
71
72 data.append((so, lo, desc))
72 data.append((so, lo, desc))
73
73
74 if multioccur:
74 if multioccur:
75 header += (_(" ([+] can be repeated)"))
75 header += (_(" ([+] can be repeated)"))
76
76
77 rst = ['\n%s:\n\n' % header]
77 rst = ['\n%s:\n\n' % header]
78 rst.extend(minirst.maketable(data, 1))
78 rst.extend(minirst.maketable(data, 1))
79
79
80 return ''.join(rst)
80 return ''.join(rst)
81
81
82 def indicateomitted(rst, omitted, notomitted=None):
82 def indicateomitted(rst, omitted, notomitted=None):
83 rst.append('\n\n.. container:: omitted\n\n %s\n\n' % omitted)
83 rst.append('\n\n.. container:: omitted\n\n %s\n\n' % omitted)
84 if notomitted:
84 if notomitted:
85 rst.append('\n\n.. container:: notomitted\n\n %s\n\n' % notomitted)
85 rst.append('\n\n.. container:: notomitted\n\n %s\n\n' % notomitted)
86
86
87 def filtercmd(ui, cmd, kw, doc):
87 def filtercmd(ui, cmd, kw, doc):
88 if not ui.debugflag and cmd.startswith("debug") and kw != "debug":
88 if not ui.debugflag and cmd.startswith("debug") and kw != "debug":
89 return True
89 return True
90 if not ui.verbose and doc and any(w in doc for w in _exclkeywords):
90 if not ui.verbose and doc and any(w in doc for w in _exclkeywords):
91 return True
91 return True
92 return False
92 return False
93
93
94 def topicmatch(ui, kw):
94 def topicmatch(ui, kw):
95 """Return help topics matching kw.
95 """Return help topics matching kw.
96
96
97 Returns {'section': [(name, summary), ...], ...} where section is
97 Returns {'section': [(name, summary), ...], ...} where section is
98 one of topics, commands, extensions, or extensioncommands.
98 one of topics, commands, extensions, or extensioncommands.
99 """
99 """
100 kw = encoding.lower(kw)
100 kw = encoding.lower(kw)
101 def lowercontains(container):
101 def lowercontains(container):
102 return kw in encoding.lower(container) # translated in helptable
102 return kw in encoding.lower(container) # translated in helptable
103 results = {'topics': [],
103 results = {'topics': [],
104 'commands': [],
104 'commands': [],
105 'extensions': [],
105 'extensions': [],
106 'extensioncommands': [],
106 'extensioncommands': [],
107 }
107 }
108 for names, header, doc in helptable:
108 for names, header, doc in helptable:
109 # Old extensions may use a str as doc.
109 # Old extensions may use a str as doc.
110 if (sum(map(lowercontains, names))
110 if (sum(map(lowercontains, names))
111 or lowercontains(header)
111 or lowercontains(header)
112 or (callable(doc) and lowercontains(doc(ui)))):
112 or (callable(doc) and lowercontains(doc(ui)))):
113 results['topics'].append((names[0], header))
113 results['topics'].append((names[0], header))
114 import commands # avoid cycle
114 import commands # avoid cycle
115 for cmd, entry in commands.table.iteritems():
115 for cmd, entry in commands.table.iteritems():
116 if len(entry) == 3:
116 if len(entry) == 3:
117 summary = entry[2]
117 summary = entry[2]
118 else:
118 else:
119 summary = ''
119 summary = ''
120 # translate docs *before* searching there
120 # translate docs *before* searching there
121 docs = _(getattr(entry[0], '__doc__', None)) or ''
121 docs = _(getattr(entry[0], '__doc__', None)) or ''
122 if kw in cmd or lowercontains(summary) or lowercontains(docs):
122 if kw in cmd or lowercontains(summary) or lowercontains(docs):
123 doclines = docs.splitlines()
123 doclines = docs.splitlines()
124 if doclines:
124 if doclines:
125 summary = doclines[0]
125 summary = doclines[0]
126 cmdname = cmd.partition('|')[0].lstrip('^')
126 cmdname = cmd.partition('|')[0].lstrip('^')
127 if filtercmd(ui, cmdname, kw, docs):
127 if filtercmd(ui, cmdname, kw, docs):
128 continue
128 continue
129 results['commands'].append((cmdname, summary))
129 results['commands'].append((cmdname, summary))
130 for name, docs in itertools.chain(
130 for name, docs in itertools.chain(
131 extensions.enabled(False).iteritems(),
131 extensions.enabled(False).iteritems(),
132 extensions.disabled().iteritems()):
132 extensions.disabled().iteritems()):
133 # extensions.load ignores the UI argument
133 # extensions.load ignores the UI argument
134 mod = extensions.load(None, name, '')
134 mod = extensions.load(None, name, '')
135 name = name.rpartition('.')[-1]
135 name = name.rpartition('.')[-1]
136 if lowercontains(name) or lowercontains(docs):
136 if lowercontains(name) or lowercontains(docs):
137 # extension docs are already translated
137 # extension docs are already translated
138 results['extensions'].append((name, docs.splitlines()[0]))
138 results['extensions'].append((name, docs.splitlines()[0]))
139 for cmd, entry in getattr(mod, 'cmdtable', {}).iteritems():
139 for cmd, entry in getattr(mod, 'cmdtable', {}).iteritems():
140 if kw in cmd or (len(entry) > 2 and lowercontains(entry[2])):
140 if kw in cmd or (len(entry) > 2 and lowercontains(entry[2])):
141 cmdname = cmd.partition('|')[0].lstrip('^')
141 cmdname = cmd.partition('|')[0].lstrip('^')
142 if entry[0].__doc__:
142 if entry[0].__doc__:
143 cmddoc = gettext(entry[0].__doc__).splitlines()[0]
143 cmddoc = gettext(entry[0].__doc__).splitlines()[0]
144 else:
144 else:
145 cmddoc = _('(no help text available)')
145 cmddoc = _('(no help text available)')
146 results['extensioncommands'].append((cmdname, cmddoc))
146 results['extensioncommands'].append((cmdname, cmddoc))
147 return results
147 return results
148
148
149 def loaddoc(topic, subdir=None):
149 def loaddoc(topic, subdir=None):
150 """Return a delayed loader for help/topic.txt."""
150 """Return a delayed loader for help/topic.txt."""
151
151
152 def loader(ui):
152 def loader(ui):
153 docdir = os.path.join(util.datapath, 'help')
153 docdir = os.path.join(util.datapath, 'help')
154 if subdir:
154 if subdir:
155 docdir = os.path.join(docdir, subdir)
155 docdir = os.path.join(docdir, subdir)
156 path = os.path.join(docdir, topic + ".txt")
156 path = os.path.join(docdir, topic + ".txt")
157 doc = gettext(util.readfile(path))
157 doc = gettext(util.readfile(path))
158 for rewriter in helphooks.get(topic, []):
158 for rewriter in helphooks.get(topic, []):
159 doc = rewriter(ui, topic, doc)
159 doc = rewriter(ui, topic, doc)
160 return doc
160 return doc
161
161
162 return loader
162 return loader
163
163
164 internalstable = sorted([
165 (['bundles'], _('container for exchange of repository data'),
166 loaddoc('bundles', subdir='internals')),
167 (['changegroups'], _('representation of revlog data'),
168 loaddoc('changegroups', subdir='internals')),
169 ])
170
171 def internalshelp(ui):
172 """Generate the index for the "internals" topic."""
173 lines = []
174 for names, header, doc in internalstable:
175 lines.append(' :%s: %s' % (names[0], header))
176
177 return '\n'.join(lines)
178
164 helptable = sorted([
179 helptable = sorted([
165 (["config", "hgrc"], _("Configuration Files"), loaddoc('config')),
180 (["config", "hgrc"], _("Configuration Files"), loaddoc('config')),
166 (["dates"], _("Date Formats"), loaddoc('dates')),
181 (["dates"], _("Date Formats"), loaddoc('dates')),
167 (["patterns"], _("File Name Patterns"), loaddoc('patterns')),
182 (["patterns"], _("File Name Patterns"), loaddoc('patterns')),
168 (['environment', 'env'], _('Environment Variables'),
183 (['environment', 'env'], _('Environment Variables'),
169 loaddoc('environment')),
184 loaddoc('environment')),
170 (['revisions', 'revs'], _('Specifying Single Revisions'),
185 (['revisions', 'revs'], _('Specifying Single Revisions'),
171 loaddoc('revisions')),
186 loaddoc('revisions')),
172 (['multirevs', 'mrevs'], _('Specifying Multiple Revisions'),
187 (['multirevs', 'mrevs'], _('Specifying Multiple Revisions'),
173 loaddoc('multirevs')),
188 loaddoc('multirevs')),
174 (['revsets', 'revset'], _("Specifying Revision Sets"), loaddoc('revsets')),
189 (['revsets', 'revset'], _("Specifying Revision Sets"), loaddoc('revsets')),
175 (['filesets', 'fileset'], _("Specifying File Sets"), loaddoc('filesets')),
190 (['filesets', 'fileset'], _("Specifying File Sets"), loaddoc('filesets')),
176 (['diffs'], _('Diff Formats'), loaddoc('diffs')),
191 (['diffs'], _('Diff Formats'), loaddoc('diffs')),
177 (['merge-tools', 'mergetools'], _('Merge Tools'), loaddoc('merge-tools')),
192 (['merge-tools', 'mergetools'], _('Merge Tools'), loaddoc('merge-tools')),
178 (['templating', 'templates', 'template', 'style'], _('Template Usage'),
193 (['templating', 'templates', 'template', 'style'], _('Template Usage'),
179 loaddoc('templates')),
194 loaddoc('templates')),
180 (['urls'], _('URL Paths'), loaddoc('urls')),
195 (['urls'], _('URL Paths'), loaddoc('urls')),
181 (["extensions"], _("Using Additional Features"), extshelp),
196 (["extensions"], _("Using Additional Features"), extshelp),
182 (["subrepos", "subrepo"], _("Subrepositories"), loaddoc('subrepos')),
197 (["subrepos", "subrepo"], _("Subrepositories"), loaddoc('subrepos')),
183 (["hgweb"], _("Configuring hgweb"), loaddoc('hgweb')),
198 (["hgweb"], _("Configuring hgweb"), loaddoc('hgweb')),
184 (["glossary"], _("Glossary"), loaddoc('glossary')),
199 (["glossary"], _("Glossary"), loaddoc('glossary')),
185 (["hgignore", "ignore"], _("Syntax for Mercurial Ignore Files"),
200 (["hgignore", "ignore"], _("Syntax for Mercurial Ignore Files"),
186 loaddoc('hgignore')),
201 loaddoc('hgignore')),
187 (["phases"], _("Working with Phases"), loaddoc('phases')),
202 (["phases"], _("Working with Phases"), loaddoc('phases')),
188 (['scripting'], _('Using Mercurial from scripts and automation'),
203 (['scripting'], _('Using Mercurial from scripts and automation'),
189 loaddoc('scripting')),
204 loaddoc('scripting')),
205 (['internals'], _("Technical implementation topics"),
206 internalshelp),
190 ])
207 ])
191
208
192 # Map topics to lists of callable taking the current topic help and
209 # Map topics to lists of callable taking the current topic help and
193 # returning the updated version
210 # returning the updated version
194 helphooks = {}
211 helphooks = {}
195
212
196 def addtopichook(topic, rewriter):
213 def addtopichook(topic, rewriter):
197 helphooks.setdefault(topic, []).append(rewriter)
214 helphooks.setdefault(topic, []).append(rewriter)
198
215
199 def makeitemsdoc(ui, topic, doc, marker, items, dedent=False):
216 def makeitemsdoc(ui, topic, doc, marker, items, dedent=False):
200 """Extract docstring from the items key to function mapping, build a
217 """Extract docstring from the items key to function mapping, build a
201 single documentation block and use it to overwrite the marker in doc.
218 single documentation block and use it to overwrite the marker in doc.
202 """
219 """
203 entries = []
220 entries = []
204 for name in sorted(items):
221 for name in sorted(items):
205 text = (items[name].__doc__ or '').rstrip()
222 text = (items[name].__doc__ or '').rstrip()
206 if (not text
223 if (not text
207 or not ui.verbose and any(w in text for w in _exclkeywords)):
224 or not ui.verbose and any(w in text for w in _exclkeywords)):
208 continue
225 continue
209 text = gettext(text)
226 text = gettext(text)
210 if dedent:
227 if dedent:
211 text = textwrap.dedent(text)
228 text = textwrap.dedent(text)
212 lines = text.splitlines()
229 lines = text.splitlines()
213 doclines = [(lines[0])]
230 doclines = [(lines[0])]
214 for l in lines[1:]:
231 for l in lines[1:]:
215 # Stop once we find some Python doctest
232 # Stop once we find some Python doctest
216 if l.strip().startswith('>>>'):
233 if l.strip().startswith('>>>'):
217 break
234 break
218 if dedent:
235 if dedent:
219 doclines.append(l.rstrip())
236 doclines.append(l.rstrip())
220 else:
237 else:
221 doclines.append(' ' + l.strip())
238 doclines.append(' ' + l.strip())
222 entries.append('\n'.join(doclines))
239 entries.append('\n'.join(doclines))
223 entries = '\n\n'.join(entries)
240 entries = '\n\n'.join(entries)
224 return doc.replace(marker, entries)
241 return doc.replace(marker, entries)
225
242
226 def addtopicsymbols(topic, marker, symbols, dedent=False):
243 def addtopicsymbols(topic, marker, symbols, dedent=False):
227 def add(ui, topic, doc):
244 def add(ui, topic, doc):
228 return makeitemsdoc(ui, topic, doc, marker, symbols, dedent=dedent)
245 return makeitemsdoc(ui, topic, doc, marker, symbols, dedent=dedent)
229 addtopichook(topic, add)
246 addtopichook(topic, add)
230
247
231 addtopicsymbols('filesets', '.. predicatesmarker', fileset.symbols)
248 addtopicsymbols('filesets', '.. predicatesmarker', fileset.symbols)
232 addtopicsymbols('merge-tools', '.. internaltoolsmarker',
249 addtopicsymbols('merge-tools', '.. internaltoolsmarker',
233 filemerge.internalsdoc)
250 filemerge.internalsdoc)
234 addtopicsymbols('revsets', '.. predicatesmarker', revset.symbols)
251 addtopicsymbols('revsets', '.. predicatesmarker', revset.symbols)
235 addtopicsymbols('templates', '.. keywordsmarker', templatekw.keywords)
252 addtopicsymbols('templates', '.. keywordsmarker', templatekw.keywords)
236 addtopicsymbols('templates', '.. filtersmarker', templatefilters.filters)
253 addtopicsymbols('templates', '.. filtersmarker', templatefilters.filters)
237 addtopicsymbols('templates', '.. functionsmarker', templater.funcs)
254 addtopicsymbols('templates', '.. functionsmarker', templater.funcs)
238 addtopicsymbols('hgweb', '.. webcommandsmarker', webcommands.commands,
255 addtopicsymbols('hgweb', '.. webcommandsmarker', webcommands.commands,
239 dedent=True)
256 dedent=True)
240
257
241 def help_(ui, name, unknowncmd=False, full=True, **opts):
258 def help_(ui, name, unknowncmd=False, full=True, **opts):
242 '''
259 '''
243 Generate the help for 'name' as unformatted restructured text. If
260 Generate the help for 'name' as unformatted restructured text. If
244 'name' is None, describe the commands available.
261 'name' is None, describe the commands available.
245 '''
262 '''
246
263
247 import commands # avoid cycle
264 import commands # avoid cycle
248
265
249 def helpcmd(name):
266 def helpcmd(name):
250 try:
267 try:
251 aliases, entry = cmdutil.findcmd(name, commands.table,
268 aliases, entry = cmdutil.findcmd(name, commands.table,
252 strict=unknowncmd)
269 strict=unknowncmd)
253 except error.AmbiguousCommand as inst:
270 except error.AmbiguousCommand as inst:
254 # py3k fix: except vars can't be used outside the scope of the
271 # py3k fix: except vars can't be used outside the scope of the
255 # except block, nor can be used inside a lambda. python issue4617
272 # except block, nor can be used inside a lambda. python issue4617
256 prefix = inst.args[0]
273 prefix = inst.args[0]
257 select = lambda c: c.lstrip('^').startswith(prefix)
274 select = lambda c: c.lstrip('^').startswith(prefix)
258 rst = helplist(select)
275 rst = helplist(select)
259 return rst
276 return rst
260
277
261 rst = []
278 rst = []
262
279
263 # check if it's an invalid alias and display its error if it is
280 # check if it's an invalid alias and display its error if it is
264 if getattr(entry[0], 'badalias', None):
281 if getattr(entry[0], 'badalias', None):
265 rst.append(entry[0].badalias + '\n')
282 rst.append(entry[0].badalias + '\n')
266 if entry[0].unknowncmd:
283 if entry[0].unknowncmd:
267 try:
284 try:
268 rst.extend(helpextcmd(entry[0].cmdname))
285 rst.extend(helpextcmd(entry[0].cmdname))
269 except error.UnknownCommand:
286 except error.UnknownCommand:
270 pass
287 pass
271 return rst
288 return rst
272
289
273 # synopsis
290 # synopsis
274 if len(entry) > 2:
291 if len(entry) > 2:
275 if entry[2].startswith('hg'):
292 if entry[2].startswith('hg'):
276 rst.append("%s\n" % entry[2])
293 rst.append("%s\n" % entry[2])
277 else:
294 else:
278 rst.append('hg %s %s\n' % (aliases[0], entry[2]))
295 rst.append('hg %s %s\n' % (aliases[0], entry[2]))
279 else:
296 else:
280 rst.append('hg %s\n' % aliases[0])
297 rst.append('hg %s\n' % aliases[0])
281 # aliases
298 # aliases
282 if full and not ui.quiet and len(aliases) > 1:
299 if full and not ui.quiet and len(aliases) > 1:
283 rst.append(_("\naliases: %s\n") % ', '.join(aliases[1:]))
300 rst.append(_("\naliases: %s\n") % ', '.join(aliases[1:]))
284 rst.append('\n')
301 rst.append('\n')
285
302
286 # description
303 # description
287 doc = gettext(entry[0].__doc__)
304 doc = gettext(entry[0].__doc__)
288 if not doc:
305 if not doc:
289 doc = _("(no help text available)")
306 doc = _("(no help text available)")
290 if util.safehasattr(entry[0], 'definition'): # aliased command
307 if util.safehasattr(entry[0], 'definition'): # aliased command
291 if entry[0].definition.startswith('!'): # shell alias
308 if entry[0].definition.startswith('!'): # shell alias
292 doc = _('shell alias for::\n\n %s') % entry[0].definition[1:]
309 doc = _('shell alias for::\n\n %s') % entry[0].definition[1:]
293 else:
310 else:
294 doc = _('alias for: hg %s\n\n%s') % (entry[0].definition, doc)
311 doc = _('alias for: hg %s\n\n%s') % (entry[0].definition, doc)
295 doc = doc.splitlines(True)
312 doc = doc.splitlines(True)
296 if ui.quiet or not full:
313 if ui.quiet or not full:
297 rst.append(doc[0])
314 rst.append(doc[0])
298 else:
315 else:
299 rst.extend(doc)
316 rst.extend(doc)
300 rst.append('\n')
317 rst.append('\n')
301
318
302 # check if this command shadows a non-trivial (multi-line)
319 # check if this command shadows a non-trivial (multi-line)
303 # extension help text
320 # extension help text
304 try:
321 try:
305 mod = extensions.find(name)
322 mod = extensions.find(name)
306 doc = gettext(mod.__doc__) or ''
323 doc = gettext(mod.__doc__) or ''
307 if '\n' in doc.strip():
324 if '\n' in doc.strip():
308 msg = _('(use "hg help -e %s" to show help for '
325 msg = _('(use "hg help -e %s" to show help for '
309 'the %s extension)') % (name, name)
326 'the %s extension)') % (name, name)
310 rst.append('\n%s\n' % msg)
327 rst.append('\n%s\n' % msg)
311 except KeyError:
328 except KeyError:
312 pass
329 pass
313
330
314 # options
331 # options
315 if not ui.quiet and entry[1]:
332 if not ui.quiet and entry[1]:
316 rst.append(optrst(_("options"), entry[1], ui.verbose))
333 rst.append(optrst(_("options"), entry[1], ui.verbose))
317
334
318 if ui.verbose:
335 if ui.verbose:
319 rst.append(optrst(_("global options"),
336 rst.append(optrst(_("global options"),
320 commands.globalopts, ui.verbose))
337 commands.globalopts, ui.verbose))
321
338
322 if not ui.verbose:
339 if not ui.verbose:
323 if not full:
340 if not full:
324 rst.append(_('\n(use "hg %s -h" to show more help)\n')
341 rst.append(_('\n(use "hg %s -h" to show more help)\n')
325 % name)
342 % name)
326 elif not ui.quiet:
343 elif not ui.quiet:
327 rst.append(_('\n(some details hidden, use --verbose '
344 rst.append(_('\n(some details hidden, use --verbose '
328 'to show complete help)'))
345 'to show complete help)'))
329
346
330 return rst
347 return rst
331
348
332
349
333 def helplist(select=None, **opts):
350 def helplist(select=None, **opts):
334 # list of commands
351 # list of commands
335 if name == "shortlist":
352 if name == "shortlist":
336 header = _('basic commands:\n\n')
353 header = _('basic commands:\n\n')
337 elif name == "debug":
354 elif name == "debug":
338 header = _('debug commands (internal and unsupported):\n\n')
355 header = _('debug commands (internal and unsupported):\n\n')
339 else:
356 else:
340 header = _('list of commands:\n\n')
357 header = _('list of commands:\n\n')
341
358
342 h = {}
359 h = {}
343 cmds = {}
360 cmds = {}
344 for c, e in commands.table.iteritems():
361 for c, e in commands.table.iteritems():
345 f = c.partition("|")[0]
362 f = c.partition("|")[0]
346 if select and not select(f):
363 if select and not select(f):
347 continue
364 continue
348 if (not select and name != 'shortlist' and
365 if (not select and name != 'shortlist' and
349 e[0].__module__ != commands.__name__):
366 e[0].__module__ != commands.__name__):
350 continue
367 continue
351 if name == "shortlist" and not f.startswith("^"):
368 if name == "shortlist" and not f.startswith("^"):
352 continue
369 continue
353 f = f.lstrip("^")
370 f = f.lstrip("^")
354 doc = e[0].__doc__
371 doc = e[0].__doc__
355 if filtercmd(ui, f, name, doc):
372 if filtercmd(ui, f, name, doc):
356 continue
373 continue
357 doc = gettext(doc)
374 doc = gettext(doc)
358 if not doc:
375 if not doc:
359 doc = _("(no help text available)")
376 doc = _("(no help text available)")
360 h[f] = doc.splitlines()[0].rstrip()
377 h[f] = doc.splitlines()[0].rstrip()
361 cmds[f] = c.lstrip("^")
378 cmds[f] = c.lstrip("^")
362
379
363 rst = []
380 rst = []
364 if not h:
381 if not h:
365 if not ui.quiet:
382 if not ui.quiet:
366 rst.append(_('no commands defined\n'))
383 rst.append(_('no commands defined\n'))
367 return rst
384 return rst
368
385
369 if not ui.quiet:
386 if not ui.quiet:
370 rst.append(header)
387 rst.append(header)
371 fns = sorted(h)
388 fns = sorted(h)
372 for f in fns:
389 for f in fns:
373 if ui.verbose:
390 if ui.verbose:
374 commacmds = cmds[f].replace("|",", ")
391 commacmds = cmds[f].replace("|",", ")
375 rst.append(" :%s: %s\n" % (commacmds, h[f]))
392 rst.append(" :%s: %s\n" % (commacmds, h[f]))
376 else:
393 else:
377 rst.append(' :%s: %s\n' % (f, h[f]))
394 rst.append(' :%s: %s\n' % (f, h[f]))
378
395
379 ex = opts.get
396 ex = opts.get
380 anyopts = (ex('keyword') or not (ex('command') or ex('extension')))
397 anyopts = (ex('keyword') or not (ex('command') or ex('extension')))
381 if not name and anyopts:
398 if not name and anyopts:
382 exts = listexts(_('enabled extensions:'), extensions.enabled())
399 exts = listexts(_('enabled extensions:'), extensions.enabled())
383 if exts:
400 if exts:
384 rst.append('\n')
401 rst.append('\n')
385 rst.extend(exts)
402 rst.extend(exts)
386
403
387 rst.append(_("\nadditional help topics:\n\n"))
404 rst.append(_("\nadditional help topics:\n\n"))
388 topics = []
405 topics = []
389 for names, header, doc in helptable:
406 for names, header, doc in helptable:
390 topics.append((names[0], header))
407 topics.append((names[0], header))
391 for t, desc in topics:
408 for t, desc in topics:
392 rst.append(" :%s: %s\n" % (t, desc))
409 rst.append(" :%s: %s\n" % (t, desc))
393
410
394 if ui.quiet:
411 if ui.quiet:
395 pass
412 pass
396 elif ui.verbose:
413 elif ui.verbose:
397 rst.append('\n%s\n' % optrst(_("global options"),
414 rst.append('\n%s\n' % optrst(_("global options"),
398 commands.globalopts, ui.verbose))
415 commands.globalopts, ui.verbose))
399 if name == 'shortlist':
416 if name == 'shortlist':
400 rst.append(_('\n(use "hg help" for the full list '
417 rst.append(_('\n(use "hg help" for the full list '
401 'of commands)\n'))
418 'of commands)\n'))
402 else:
419 else:
403 if name == 'shortlist':
420 if name == 'shortlist':
404 rst.append(_('\n(use "hg help" for the full list of commands '
421 rst.append(_('\n(use "hg help" for the full list of commands '
405 'or "hg -v" for details)\n'))
422 'or "hg -v" for details)\n'))
406 elif name and not full:
423 elif name and not full:
407 rst.append(_('\n(use "hg help %s" to show the full help '
424 rst.append(_('\n(use "hg help %s" to show the full help '
408 'text)\n') % name)
425 'text)\n') % name)
409 elif name and cmds and name in cmds.keys():
426 elif name and cmds and name in cmds.keys():
410 rst.append(_('\n(use "hg help -v -e %s" to show built-in '
427 rst.append(_('\n(use "hg help -v -e %s" to show built-in '
411 'aliases and global options)\n') % name)
428 'aliases and global options)\n') % name)
412 else:
429 else:
413 rst.append(_('\n(use "hg help -v%s" to show built-in aliases '
430 rst.append(_('\n(use "hg help -v%s" to show built-in aliases '
414 'and global options)\n')
431 'and global options)\n')
415 % (name and " " + name or ""))
432 % (name and " " + name or ""))
416 return rst
433 return rst
417
434
418 def helptopic(name):
435 def helptopic(name):
419 for names, header, doc in helptable:
436 for names, header, doc in helptable:
420 if name in names:
437 if name in names:
421 break
438 break
422 else:
439 else:
423 raise error.UnknownCommand(name)
440 raise error.UnknownCommand(name)
424
441
425 rst = [minirst.section(header)]
442 rst = [minirst.section(header)]
426
443
427 # description
444 # description
428 if not doc:
445 if not doc:
429 rst.append(" %s\n" % _("(no help text available)"))
446 rst.append(" %s\n" % _("(no help text available)"))
430 if callable(doc):
447 if callable(doc):
431 rst += [" %s\n" % l for l in doc(ui).splitlines()]
448 rst += [" %s\n" % l for l in doc(ui).splitlines()]
432
449
433 if not ui.verbose:
450 if not ui.verbose:
434 omitted = _('(some details hidden, use --verbose'
451 omitted = _('(some details hidden, use --verbose'
435 ' to show complete help)')
452 ' to show complete help)')
436 indicateomitted(rst, omitted)
453 indicateomitted(rst, omitted)
437
454
438 try:
455 try:
439 cmdutil.findcmd(name, commands.table)
456 cmdutil.findcmd(name, commands.table)
440 rst.append(_('\nuse "hg help -c %s" to see help for '
457 rst.append(_('\nuse "hg help -c %s" to see help for '
441 'the %s command\n') % (name, name))
458 'the %s command\n') % (name, name))
442 except error.UnknownCommand:
459 except error.UnknownCommand:
443 pass
460 pass
444 return rst
461 return rst
445
462
446 def helpext(name):
463 def helpext(name):
447 try:
464 try:
448 mod = extensions.find(name)
465 mod = extensions.find(name)
449 doc = gettext(mod.__doc__) or _('no help text available')
466 doc = gettext(mod.__doc__) or _('no help text available')
450 except KeyError:
467 except KeyError:
451 mod = None
468 mod = None
452 doc = extensions.disabledext(name)
469 doc = extensions.disabledext(name)
453 if not doc:
470 if not doc:
454 raise error.UnknownCommand(name)
471 raise error.UnknownCommand(name)
455
472
456 if '\n' not in doc:
473 if '\n' not in doc:
457 head, tail = doc, ""
474 head, tail = doc, ""
458 else:
475 else:
459 head, tail = doc.split('\n', 1)
476 head, tail = doc.split('\n', 1)
460 rst = [_('%s extension - %s\n\n') % (name.rpartition('.')[-1], head)]
477 rst = [_('%s extension - %s\n\n') % (name.rpartition('.')[-1], head)]
461 if tail:
478 if tail:
462 rst.extend(tail.splitlines(True))
479 rst.extend(tail.splitlines(True))
463 rst.append('\n')
480 rst.append('\n')
464
481
465 if not ui.verbose:
482 if not ui.verbose:
466 omitted = _('(some details hidden, use --verbose'
483 omitted = _('(some details hidden, use --verbose'
467 ' to show complete help)')
484 ' to show complete help)')
468 indicateomitted(rst, omitted)
485 indicateomitted(rst, omitted)
469
486
470 if mod:
487 if mod:
471 try:
488 try:
472 ct = mod.cmdtable
489 ct = mod.cmdtable
473 except AttributeError:
490 except AttributeError:
474 ct = {}
491 ct = {}
475 modcmds = set([c.partition('|')[0] for c in ct])
492 modcmds = set([c.partition('|')[0] for c in ct])
476 rst.extend(helplist(modcmds.__contains__))
493 rst.extend(helplist(modcmds.__contains__))
477 else:
494 else:
478 rst.append(_('(use "hg help extensions" for information on enabling'
495 rst.append(_('(use "hg help extensions" for information on enabling'
479 ' extensions)\n'))
496 ' extensions)\n'))
480 return rst
497 return rst
481
498
482 def helpextcmd(name):
499 def helpextcmd(name):
483 cmd, ext, mod = extensions.disabledcmd(ui, name,
500 cmd, ext, mod = extensions.disabledcmd(ui, name,
484 ui.configbool('ui', 'strict'))
501 ui.configbool('ui', 'strict'))
485 doc = gettext(mod.__doc__).splitlines()[0]
502 doc = gettext(mod.__doc__).splitlines()[0]
486
503
487 rst = listexts(_("'%s' is provided by the following "
504 rst = listexts(_("'%s' is provided by the following "
488 "extension:") % cmd, {ext: doc}, indent=4,
505 "extension:") % cmd, {ext: doc}, indent=4,
489 showdeprecated=True)
506 showdeprecated=True)
490 rst.append('\n')
507 rst.append('\n')
491 rst.append(_('(use "hg help extensions" for information on enabling '
508 rst.append(_('(use "hg help extensions" for information on enabling '
492 'extensions)\n'))
509 'extensions)\n'))
493 return rst
510 return rst
494
511
495
512
496 rst = []
513 rst = []
497 kw = opts.get('keyword')
514 kw = opts.get('keyword')
498 if kw or name is None and any(opts[o] for o in opts):
515 if kw or name is None and any(opts[o] for o in opts):
499 matches = topicmatch(ui, name or '')
516 matches = topicmatch(ui, name or '')
500 helpareas = []
517 helpareas = []
501 if opts.get('extension'):
518 if opts.get('extension'):
502 helpareas += [('extensions', _('Extensions'))]
519 helpareas += [('extensions', _('Extensions'))]
503 if opts.get('command'):
520 if opts.get('command'):
504 helpareas += [('commands', _('Commands'))]
521 helpareas += [('commands', _('Commands'))]
505 if not helpareas:
522 if not helpareas:
506 helpareas = [('topics', _('Topics')),
523 helpareas = [('topics', _('Topics')),
507 ('commands', _('Commands')),
524 ('commands', _('Commands')),
508 ('extensions', _('Extensions')),
525 ('extensions', _('Extensions')),
509 ('extensioncommands', _('Extension Commands'))]
526 ('extensioncommands', _('Extension Commands'))]
510 for t, title in helpareas:
527 for t, title in helpareas:
511 if matches[t]:
528 if matches[t]:
512 rst.append('%s:\n\n' % title)
529 rst.append('%s:\n\n' % title)
513 rst.extend(minirst.maketable(sorted(matches[t]), 1))
530 rst.extend(minirst.maketable(sorted(matches[t]), 1))
514 rst.append('\n')
531 rst.append('\n')
515 if not rst:
532 if not rst:
516 msg = _('no matches')
533 msg = _('no matches')
517 hint = _('try "hg help" for a list of topics')
534 hint = _('try "hg help" for a list of topics')
518 raise error.Abort(msg, hint=hint)
535 raise error.Abort(msg, hint=hint)
519 elif name and name != 'shortlist':
536 elif name and name != 'shortlist':
520 queries = []
537 queries = []
521 if unknowncmd:
538 if unknowncmd:
522 queries += [helpextcmd]
539 queries += [helpextcmd]
523 if opts.get('extension'):
540 if opts.get('extension'):
524 queries += [helpext]
541 queries += [helpext]
525 if opts.get('command'):
542 if opts.get('command'):
526 queries += [helpcmd]
543 queries += [helpcmd]
527 if not queries:
544 if not queries:
528 queries = (helptopic, helpcmd, helpext, helpextcmd)
545 queries = (helptopic, helpcmd, helpext, helpextcmd)
529 for f in queries:
546 for f in queries:
530 try:
547 try:
531 rst = f(name)
548 rst = f(name)
532 break
549 break
533 except error.UnknownCommand:
550 except error.UnknownCommand:
534 pass
551 pass
535 else:
552 else:
536 if unknowncmd:
553 if unknowncmd:
537 raise error.UnknownCommand(name)
554 raise error.UnknownCommand(name)
538 else:
555 else:
539 msg = _('no such help topic: %s') % name
556 msg = _('no such help topic: %s') % name
540 hint = _('try "hg help --keyword %s"') % name
557 hint = _('try "hg help --keyword %s"') % name
541 raise error.Abort(msg, hint=hint)
558 raise error.Abort(msg, hint=hint)
542 else:
559 else:
543 # program name
560 # program name
544 if not ui.quiet:
561 if not ui.quiet:
545 rst = [_("Mercurial Distributed SCM\n"), '\n']
562 rst = [_("Mercurial Distributed SCM\n"), '\n']
546 rst.extend(helplist(None, **opts))
563 rst.extend(helplist(None, **opts))
547
564
548 return ''.join(rst)
565 return ''.join(rst)
@@ -1,448 +1,450 b''
1 $ hg init a
1 $ hg init a
2 $ cd a
2 $ cd a
3 $ echo a > a
3 $ echo a > a
4 $ hg ci -A -d'1 0' -m a
4 $ hg ci -A -d'1 0' -m a
5 adding a
5 adding a
6
6
7 $ cd ..
7 $ cd ..
8
8
9 $ hg init b
9 $ hg init b
10 $ cd b
10 $ cd b
11 $ echo b > b
11 $ echo b > b
12 $ hg ci -A -d'1 0' -m b
12 $ hg ci -A -d'1 0' -m b
13 adding b
13 adding b
14
14
15 $ cd ..
15 $ cd ..
16
16
17 $ hg clone a c
17 $ hg clone a c
18 updating to branch default
18 updating to branch default
19 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
19 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
20 $ cd c
20 $ cd c
21 $ cat >> .hg/hgrc <<EOF
21 $ cat >> .hg/hgrc <<EOF
22 > [paths]
22 > [paths]
23 > relative = ../a
23 > relative = ../a
24 > EOF
24 > EOF
25 $ hg pull -f ../b
25 $ hg pull -f ../b
26 pulling from ../b
26 pulling from ../b
27 searching for changes
27 searching for changes
28 warning: repository is unrelated
28 warning: repository is unrelated
29 requesting all changes
29 requesting all changes
30 adding changesets
30 adding changesets
31 adding manifests
31 adding manifests
32 adding file changes
32 adding file changes
33 added 1 changesets with 1 changes to 1 files (+1 heads)
33 added 1 changesets with 1 changes to 1 files (+1 heads)
34 (run 'hg heads' to see heads, 'hg merge' to merge)
34 (run 'hg heads' to see heads, 'hg merge' to merge)
35 $ hg merge
35 $ hg merge
36 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
36 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
37 (branch merge, don't forget to commit)
37 (branch merge, don't forget to commit)
38
38
39 $ cd ..
39 $ cd ..
40
40
41 Testing -R/--repository:
41 Testing -R/--repository:
42
42
43 $ hg -R a tip
43 $ hg -R a tip
44 changeset: 0:8580ff50825a
44 changeset: 0:8580ff50825a
45 tag: tip
45 tag: tip
46 user: test
46 user: test
47 date: Thu Jan 01 00:00:01 1970 +0000
47 date: Thu Jan 01 00:00:01 1970 +0000
48 summary: a
48 summary: a
49
49
50 $ hg --repository b tip
50 $ hg --repository b tip
51 changeset: 0:b6c483daf290
51 changeset: 0:b6c483daf290
52 tag: tip
52 tag: tip
53 user: test
53 user: test
54 date: Thu Jan 01 00:00:01 1970 +0000
54 date: Thu Jan 01 00:00:01 1970 +0000
55 summary: b
55 summary: b
56
56
57
57
58 -R with a URL:
58 -R with a URL:
59
59
60 $ hg -R file:a identify
60 $ hg -R file:a identify
61 8580ff50825a tip
61 8580ff50825a tip
62 $ hg -R file://localhost/`pwd`/a/ identify
62 $ hg -R file://localhost/`pwd`/a/ identify
63 8580ff50825a tip
63 8580ff50825a tip
64
64
65 -R with path aliases:
65 -R with path aliases:
66
66
67 $ cd c
67 $ cd c
68 $ hg -R default identify
68 $ hg -R default identify
69 8580ff50825a tip
69 8580ff50825a tip
70 $ hg -R relative identify
70 $ hg -R relative identify
71 8580ff50825a tip
71 8580ff50825a tip
72 $ echo '[paths]' >> $HGRCPATH
72 $ echo '[paths]' >> $HGRCPATH
73 $ echo 'relativetohome = a' >> $HGRCPATH
73 $ echo 'relativetohome = a' >> $HGRCPATH
74 $ HOME=`pwd`/../ hg -R relativetohome identify
74 $ HOME=`pwd`/../ hg -R relativetohome identify
75 8580ff50825a tip
75 8580ff50825a tip
76 $ cd ..
76 $ cd ..
77
77
78 #if no-outer-repo
78 #if no-outer-repo
79
79
80 Implicit -R:
80 Implicit -R:
81
81
82 $ hg ann a/a
82 $ hg ann a/a
83 0: a
83 0: a
84 $ hg ann a/a a/a
84 $ hg ann a/a a/a
85 0: a
85 0: a
86 $ hg ann a/a b/b
86 $ hg ann a/a b/b
87 abort: no repository found in '$TESTTMP' (.hg not found)!
87 abort: no repository found in '$TESTTMP' (.hg not found)!
88 [255]
88 [255]
89 $ hg -R b ann a/a
89 $ hg -R b ann a/a
90 abort: a/a not under root '$TESTTMP/b' (glob)
90 abort: a/a not under root '$TESTTMP/b' (glob)
91 (consider using '--cwd b')
91 (consider using '--cwd b')
92 [255]
92 [255]
93 $ hg log
93 $ hg log
94 abort: no repository found in '$TESTTMP' (.hg not found)!
94 abort: no repository found in '$TESTTMP' (.hg not found)!
95 [255]
95 [255]
96
96
97 #endif
97 #endif
98
98
99 Abbreviation of long option:
99 Abbreviation of long option:
100
100
101 $ hg --repo c tip
101 $ hg --repo c tip
102 changeset: 1:b6c483daf290
102 changeset: 1:b6c483daf290
103 tag: tip
103 tag: tip
104 parent: -1:000000000000
104 parent: -1:000000000000
105 user: test
105 user: test
106 date: Thu Jan 01 00:00:01 1970 +0000
106 date: Thu Jan 01 00:00:01 1970 +0000
107 summary: b
107 summary: b
108
108
109
109
110 earlygetopt with duplicate options (36d23de02da1):
110 earlygetopt with duplicate options (36d23de02da1):
111
111
112 $ hg --cwd a --cwd b --cwd c tip
112 $ hg --cwd a --cwd b --cwd c tip
113 changeset: 1:b6c483daf290
113 changeset: 1:b6c483daf290
114 tag: tip
114 tag: tip
115 parent: -1:000000000000
115 parent: -1:000000000000
116 user: test
116 user: test
117 date: Thu Jan 01 00:00:01 1970 +0000
117 date: Thu Jan 01 00:00:01 1970 +0000
118 summary: b
118 summary: b
119
119
120 $ hg --repo c --repository b -R a tip
120 $ hg --repo c --repository b -R a tip
121 changeset: 0:8580ff50825a
121 changeset: 0:8580ff50825a
122 tag: tip
122 tag: tip
123 user: test
123 user: test
124 date: Thu Jan 01 00:00:01 1970 +0000
124 date: Thu Jan 01 00:00:01 1970 +0000
125 summary: a
125 summary: a
126
126
127
127
128 earlygetopt short option without following space:
128 earlygetopt short option without following space:
129
129
130 $ hg -q -Rb tip
130 $ hg -q -Rb tip
131 0:b6c483daf290
131 0:b6c483daf290
132
132
133 earlygetopt with illegal abbreviations:
133 earlygetopt with illegal abbreviations:
134
134
135 $ hg --confi "foo.bar=baz"
135 $ hg --confi "foo.bar=baz"
136 abort: option --config may not be abbreviated!
136 abort: option --config may not be abbreviated!
137 [255]
137 [255]
138 $ hg --cw a tip
138 $ hg --cw a tip
139 abort: option --cwd may not be abbreviated!
139 abort: option --cwd may not be abbreviated!
140 [255]
140 [255]
141 $ hg --rep a tip
141 $ hg --rep a tip
142 abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
142 abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
143 [255]
143 [255]
144 $ hg --repositor a tip
144 $ hg --repositor a tip
145 abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
145 abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
146 [255]
146 [255]
147 $ hg -qR a tip
147 $ hg -qR a tip
148 abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
148 abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
149 [255]
149 [255]
150 $ hg -qRa tip
150 $ hg -qRa tip
151 abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
151 abort: option -R has to be separated from other options (e.g. not -qR) and --repository may only be abbreviated as --repo!
152 [255]
152 [255]
153
153
154 Testing --cwd:
154 Testing --cwd:
155
155
156 $ hg --cwd a parents
156 $ hg --cwd a parents
157 changeset: 0:8580ff50825a
157 changeset: 0:8580ff50825a
158 tag: tip
158 tag: tip
159 user: test
159 user: test
160 date: Thu Jan 01 00:00:01 1970 +0000
160 date: Thu Jan 01 00:00:01 1970 +0000
161 summary: a
161 summary: a
162
162
163
163
164 Testing -y/--noninteractive - just be sure it is parsed:
164 Testing -y/--noninteractive - just be sure it is parsed:
165
165
166 $ hg --cwd a tip -q --noninteractive
166 $ hg --cwd a tip -q --noninteractive
167 0:8580ff50825a
167 0:8580ff50825a
168 $ hg --cwd a tip -q -y
168 $ hg --cwd a tip -q -y
169 0:8580ff50825a
169 0:8580ff50825a
170
170
171 Testing -q/--quiet:
171 Testing -q/--quiet:
172
172
173 $ hg -R a -q tip
173 $ hg -R a -q tip
174 0:8580ff50825a
174 0:8580ff50825a
175 $ hg -R b -q tip
175 $ hg -R b -q tip
176 0:b6c483daf290
176 0:b6c483daf290
177 $ hg -R c --quiet parents
177 $ hg -R c --quiet parents
178 0:8580ff50825a
178 0:8580ff50825a
179 1:b6c483daf290
179 1:b6c483daf290
180
180
181 Testing -v/--verbose:
181 Testing -v/--verbose:
182
182
183 $ hg --cwd c head -v
183 $ hg --cwd c head -v
184 changeset: 1:b6c483daf290
184 changeset: 1:b6c483daf290
185 tag: tip
185 tag: tip
186 parent: -1:000000000000
186 parent: -1:000000000000
187 user: test
187 user: test
188 date: Thu Jan 01 00:00:01 1970 +0000
188 date: Thu Jan 01 00:00:01 1970 +0000
189 files: b
189 files: b
190 description:
190 description:
191 b
191 b
192
192
193
193
194 changeset: 0:8580ff50825a
194 changeset: 0:8580ff50825a
195 user: test
195 user: test
196 date: Thu Jan 01 00:00:01 1970 +0000
196 date: Thu Jan 01 00:00:01 1970 +0000
197 files: a
197 files: a
198 description:
198 description:
199 a
199 a
200
200
201
201
202 $ hg --cwd b tip --verbose
202 $ hg --cwd b tip --verbose
203 changeset: 0:b6c483daf290
203 changeset: 0:b6c483daf290
204 tag: tip
204 tag: tip
205 user: test
205 user: test
206 date: Thu Jan 01 00:00:01 1970 +0000
206 date: Thu Jan 01 00:00:01 1970 +0000
207 files: b
207 files: b
208 description:
208 description:
209 b
209 b
210
210
211
211
212
212
213 Testing --config:
213 Testing --config:
214
214
215 $ hg --cwd c --config paths.quuxfoo=bar paths | grep quuxfoo > /dev/null && echo quuxfoo
215 $ hg --cwd c --config paths.quuxfoo=bar paths | grep quuxfoo > /dev/null && echo quuxfoo
216 quuxfoo
216 quuxfoo
217 $ hg --cwd c --config '' tip -q
217 $ hg --cwd c --config '' tip -q
218 abort: malformed --config option: '' (use --config section.name=value)
218 abort: malformed --config option: '' (use --config section.name=value)
219 [255]
219 [255]
220 $ hg --cwd c --config a.b tip -q
220 $ hg --cwd c --config a.b tip -q
221 abort: malformed --config option: 'a.b' (use --config section.name=value)
221 abort: malformed --config option: 'a.b' (use --config section.name=value)
222 [255]
222 [255]
223 $ hg --cwd c --config a tip -q
223 $ hg --cwd c --config a tip -q
224 abort: malformed --config option: 'a' (use --config section.name=value)
224 abort: malformed --config option: 'a' (use --config section.name=value)
225 [255]
225 [255]
226 $ hg --cwd c --config a.= tip -q
226 $ hg --cwd c --config a.= tip -q
227 abort: malformed --config option: 'a.=' (use --config section.name=value)
227 abort: malformed --config option: 'a.=' (use --config section.name=value)
228 [255]
228 [255]
229 $ hg --cwd c --config .b= tip -q
229 $ hg --cwd c --config .b= tip -q
230 abort: malformed --config option: '.b=' (use --config section.name=value)
230 abort: malformed --config option: '.b=' (use --config section.name=value)
231 [255]
231 [255]
232
232
233 Testing --debug:
233 Testing --debug:
234
234
235 $ hg --cwd c log --debug
235 $ hg --cwd c log --debug
236 changeset: 1:b6c483daf2907ce5825c0bb50f5716226281cc1a
236 changeset: 1:b6c483daf2907ce5825c0bb50f5716226281cc1a
237 tag: tip
237 tag: tip
238 phase: public
238 phase: public
239 parent: -1:0000000000000000000000000000000000000000
239 parent: -1:0000000000000000000000000000000000000000
240 parent: -1:0000000000000000000000000000000000000000
240 parent: -1:0000000000000000000000000000000000000000
241 manifest: 1:23226e7a252cacdc2d99e4fbdc3653441056de49
241 manifest: 1:23226e7a252cacdc2d99e4fbdc3653441056de49
242 user: test
242 user: test
243 date: Thu Jan 01 00:00:01 1970 +0000
243 date: Thu Jan 01 00:00:01 1970 +0000
244 files+: b
244 files+: b
245 extra: branch=default
245 extra: branch=default
246 description:
246 description:
247 b
247 b
248
248
249
249
250 changeset: 0:8580ff50825a50c8f716709acdf8de0deddcd6ab
250 changeset: 0:8580ff50825a50c8f716709acdf8de0deddcd6ab
251 phase: public
251 phase: public
252 parent: -1:0000000000000000000000000000000000000000
252 parent: -1:0000000000000000000000000000000000000000
253 parent: -1:0000000000000000000000000000000000000000
253 parent: -1:0000000000000000000000000000000000000000
254 manifest: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0
254 manifest: 0:a0c8bcbbb45c63b90b70ad007bf38961f64f2af0
255 user: test
255 user: test
256 date: Thu Jan 01 00:00:01 1970 +0000
256 date: Thu Jan 01 00:00:01 1970 +0000
257 files+: a
257 files+: a
258 extra: branch=default
258 extra: branch=default
259 description:
259 description:
260 a
260 a
261
261
262
262
263
263
264 Testing --traceback:
264 Testing --traceback:
265
265
266 $ hg --cwd c --config x --traceback id 2>&1 | grep -i 'traceback'
266 $ hg --cwd c --config x --traceback id 2>&1 | grep -i 'traceback'
267 Traceback (most recent call last):
267 Traceback (most recent call last):
268
268
269 Testing --time:
269 Testing --time:
270
270
271 $ hg --cwd a --time id
271 $ hg --cwd a --time id
272 8580ff50825a tip
272 8580ff50825a tip
273 time: real * (glob)
273 time: real * (glob)
274
274
275 Testing --version:
275 Testing --version:
276
276
277 $ hg --version -q
277 $ hg --version -q
278 Mercurial Distributed SCM * (glob)
278 Mercurial Distributed SCM * (glob)
279
279
280 hide outer repo
280 hide outer repo
281 $ hg init
281 $ hg init
282
282
283 Testing -h/--help:
283 Testing -h/--help:
284
284
285 $ hg -h
285 $ hg -h
286 Mercurial Distributed SCM
286 Mercurial Distributed SCM
287
287
288 list of commands:
288 list of commands:
289
289
290 add add the specified files on the next commit
290 add add the specified files on the next commit
291 addremove add all new files, delete all missing files
291 addremove add all new files, delete all missing files
292 annotate show changeset information by line for each file
292 annotate show changeset information by line for each file
293 archive create an unversioned archive of a repository revision
293 archive create an unversioned archive of a repository revision
294 backout reverse effect of earlier changeset
294 backout reverse effect of earlier changeset
295 bisect subdivision search of changesets
295 bisect subdivision search of changesets
296 bookmarks create a new bookmark or list existing bookmarks
296 bookmarks create a new bookmark or list existing bookmarks
297 branch set or show the current branch name
297 branch set or show the current branch name
298 branches list repository named branches
298 branches list repository named branches
299 bundle create a changegroup file
299 bundle create a changegroup file
300 cat output the current or given revision of files
300 cat output the current or given revision of files
301 clone make a copy of an existing repository
301 clone make a copy of an existing repository
302 commit commit the specified files or all outstanding changes
302 commit commit the specified files or all outstanding changes
303 config show combined config settings from all hgrc files
303 config show combined config settings from all hgrc files
304 copy mark files as copied for the next commit
304 copy mark files as copied for the next commit
305 diff diff repository (or selected files)
305 diff diff repository (or selected files)
306 export dump the header and diffs for one or more changesets
306 export dump the header and diffs for one or more changesets
307 files list tracked files
307 files list tracked files
308 forget forget the specified files on the next commit
308 forget forget the specified files on the next commit
309 graft copy changes from other branches onto the current branch
309 graft copy changes from other branches onto the current branch
310 grep search for a pattern in specified files and revisions
310 grep search for a pattern in specified files and revisions
311 heads show branch heads
311 heads show branch heads
312 help show help for a given topic or a help overview
312 help show help for a given topic or a help overview
313 identify identify the working directory or specified revision
313 identify identify the working directory or specified revision
314 import import an ordered set of patches
314 import import an ordered set of patches
315 incoming show new changesets found in source
315 incoming show new changesets found in source
316 init create a new repository in the given directory
316 init create a new repository in the given directory
317 log show revision history of entire repository or files
317 log show revision history of entire repository or files
318 manifest output the current or given revision of the project manifest
318 manifest output the current or given revision of the project manifest
319 merge merge another revision into working directory
319 merge merge another revision into working directory
320 outgoing show changesets not found in the destination
320 outgoing show changesets not found in the destination
321 paths show aliases for remote repositories
321 paths show aliases for remote repositories
322 phase set or show the current phase name
322 phase set or show the current phase name
323 pull pull changes from the specified source
323 pull pull changes from the specified source
324 push push changes to the specified destination
324 push push changes to the specified destination
325 recover roll back an interrupted transaction
325 recover roll back an interrupted transaction
326 remove remove the specified files on the next commit
326 remove remove the specified files on the next commit
327 rename rename files; equivalent of copy + remove
327 rename rename files; equivalent of copy + remove
328 resolve redo merges or set/view the merge status of files
328 resolve redo merges or set/view the merge status of files
329 revert restore files to their checkout state
329 revert restore files to their checkout state
330 root print the root (top) of the current working directory
330 root print the root (top) of the current working directory
331 serve start stand-alone webserver
331 serve start stand-alone webserver
332 status show changed files in the working directory
332 status show changed files in the working directory
333 summary summarize working directory state
333 summary summarize working directory state
334 tag add one or more tags for the current or given revision
334 tag add one or more tags for the current or given revision
335 tags list repository tags
335 tags list repository tags
336 unbundle apply one or more changegroup files
336 unbundle apply one or more changegroup files
337 update update working directory (or switch revisions)
337 update update working directory (or switch revisions)
338 verify verify the integrity of the repository
338 verify verify the integrity of the repository
339 version output version and copyright information
339 version output version and copyright information
340
340
341 additional help topics:
341 additional help topics:
342
342
343 config Configuration Files
343 config Configuration Files
344 dates Date Formats
344 dates Date Formats
345 diffs Diff Formats
345 diffs Diff Formats
346 environment Environment Variables
346 environment Environment Variables
347 extensions Using Additional Features
347 extensions Using Additional Features
348 filesets Specifying File Sets
348 filesets Specifying File Sets
349 glossary Glossary
349 glossary Glossary
350 hgignore Syntax for Mercurial Ignore Files
350 hgignore Syntax for Mercurial Ignore Files
351 hgweb Configuring hgweb
351 hgweb Configuring hgweb
352 internals Technical implementation topics
352 merge-tools Merge Tools
353 merge-tools Merge Tools
353 multirevs Specifying Multiple Revisions
354 multirevs Specifying Multiple Revisions
354 patterns File Name Patterns
355 patterns File Name Patterns
355 phases Working with Phases
356 phases Working with Phases
356 revisions Specifying Single Revisions
357 revisions Specifying Single Revisions
357 revsets Specifying Revision Sets
358 revsets Specifying Revision Sets
358 scripting Using Mercurial from scripts and automation
359 scripting Using Mercurial from scripts and automation
359 subrepos Subrepositories
360 subrepos Subrepositories
360 templating Template Usage
361 templating Template Usage
361 urls URL Paths
362 urls URL Paths
362
363
363 (use "hg help -v" to show built-in aliases and global options)
364 (use "hg help -v" to show built-in aliases and global options)
364
365
365
366
366
367
367 $ hg --help
368 $ hg --help
368 Mercurial Distributed SCM
369 Mercurial Distributed SCM
369
370
370 list of commands:
371 list of commands:
371
372
372 add add the specified files on the next commit
373 add add the specified files on the next commit
373 addremove add all new files, delete all missing files
374 addremove add all new files, delete all missing files
374 annotate show changeset information by line for each file
375 annotate show changeset information by line for each file
375 archive create an unversioned archive of a repository revision
376 archive create an unversioned archive of a repository revision
376 backout reverse effect of earlier changeset
377 backout reverse effect of earlier changeset
377 bisect subdivision search of changesets
378 bisect subdivision search of changesets
378 bookmarks create a new bookmark or list existing bookmarks
379 bookmarks create a new bookmark or list existing bookmarks
379 branch set or show the current branch name
380 branch set or show the current branch name
380 branches list repository named branches
381 branches list repository named branches
381 bundle create a changegroup file
382 bundle create a changegroup file
382 cat output the current or given revision of files
383 cat output the current or given revision of files
383 clone make a copy of an existing repository
384 clone make a copy of an existing repository
384 commit commit the specified files or all outstanding changes
385 commit commit the specified files or all outstanding changes
385 config show combined config settings from all hgrc files
386 config show combined config settings from all hgrc files
386 copy mark files as copied for the next commit
387 copy mark files as copied for the next commit
387 diff diff repository (or selected files)
388 diff diff repository (or selected files)
388 export dump the header and diffs for one or more changesets
389 export dump the header and diffs for one or more changesets
389 files list tracked files
390 files list tracked files
390 forget forget the specified files on the next commit
391 forget forget the specified files on the next commit
391 graft copy changes from other branches onto the current branch
392 graft copy changes from other branches onto the current branch
392 grep search for a pattern in specified files and revisions
393 grep search for a pattern in specified files and revisions
393 heads show branch heads
394 heads show branch heads
394 help show help for a given topic or a help overview
395 help show help for a given topic or a help overview
395 identify identify the working directory or specified revision
396 identify identify the working directory or specified revision
396 import import an ordered set of patches
397 import import an ordered set of patches
397 incoming show new changesets found in source
398 incoming show new changesets found in source
398 init create a new repository in the given directory
399 init create a new repository in the given directory
399 log show revision history of entire repository or files
400 log show revision history of entire repository or files
400 manifest output the current or given revision of the project manifest
401 manifest output the current or given revision of the project manifest
401 merge merge another revision into working directory
402 merge merge another revision into working directory
402 outgoing show changesets not found in the destination
403 outgoing show changesets not found in the destination
403 paths show aliases for remote repositories
404 paths show aliases for remote repositories
404 phase set or show the current phase name
405 phase set or show the current phase name
405 pull pull changes from the specified source
406 pull pull changes from the specified source
406 push push changes to the specified destination
407 push push changes to the specified destination
407 recover roll back an interrupted transaction
408 recover roll back an interrupted transaction
408 remove remove the specified files on the next commit
409 remove remove the specified files on the next commit
409 rename rename files; equivalent of copy + remove
410 rename rename files; equivalent of copy + remove
410 resolve redo merges or set/view the merge status of files
411 resolve redo merges or set/view the merge status of files
411 revert restore files to their checkout state
412 revert restore files to their checkout state
412 root print the root (top) of the current working directory
413 root print the root (top) of the current working directory
413 serve start stand-alone webserver
414 serve start stand-alone webserver
414 status show changed files in the working directory
415 status show changed files in the working directory
415 summary summarize working directory state
416 summary summarize working directory state
416 tag add one or more tags for the current or given revision
417 tag add one or more tags for the current or given revision
417 tags list repository tags
418 tags list repository tags
418 unbundle apply one or more changegroup files
419 unbundle apply one or more changegroup files
419 update update working directory (or switch revisions)
420 update update working directory (or switch revisions)
420 verify verify the integrity of the repository
421 verify verify the integrity of the repository
421 version output version and copyright information
422 version output version and copyright information
422
423
423 additional help topics:
424 additional help topics:
424
425
425 config Configuration Files
426 config Configuration Files
426 dates Date Formats
427 dates Date Formats
427 diffs Diff Formats
428 diffs Diff Formats
428 environment Environment Variables
429 environment Environment Variables
429 extensions Using Additional Features
430 extensions Using Additional Features
430 filesets Specifying File Sets
431 filesets Specifying File Sets
431 glossary Glossary
432 glossary Glossary
432 hgignore Syntax for Mercurial Ignore Files
433 hgignore Syntax for Mercurial Ignore Files
433 hgweb Configuring hgweb
434 hgweb Configuring hgweb
435 internals Technical implementation topics
434 merge-tools Merge Tools
436 merge-tools Merge Tools
435 multirevs Specifying Multiple Revisions
437 multirevs Specifying Multiple Revisions
436 patterns File Name Patterns
438 patterns File Name Patterns
437 phases Working with Phases
439 phases Working with Phases
438 revisions Specifying Single Revisions
440 revisions Specifying Single Revisions
439 revsets Specifying Revision Sets
441 revsets Specifying Revision Sets
440 scripting Using Mercurial from scripts and automation
442 scripting Using Mercurial from scripts and automation
441 subrepos Subrepositories
443 subrepos Subrepositories
442 templating Template Usage
444 templating Template Usage
443 urls URL Paths
445 urls URL Paths
444
446
445 (use "hg help -v" to show built-in aliases and global options)
447 (use "hg help -v" to show built-in aliases and global options)
446
448
447 Not tested: --debugger
449 Not tested: --debugger
448
450
@@ -1,2447 +1,2465 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 changegroup file
61 bundle create a changegroup 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 for a pattern in specified files and revisions
72 grep search for a pattern in specified files and revisions
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 changegroup files
98 unbundle apply one or more changegroup 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 config Configuration Files
105 config Configuration Files
106 dates Date Formats
106 dates Date Formats
107 diffs Diff Formats
107 diffs Diff Formats
108 environment Environment Variables
108 environment Environment Variables
109 extensions Using Additional Features
109 extensions Using Additional Features
110 filesets Specifying File Sets
110 filesets Specifying File Sets
111 glossary Glossary
111 glossary Glossary
112 hgignore Syntax for Mercurial Ignore Files
112 hgignore Syntax for Mercurial Ignore Files
113 hgweb Configuring hgweb
113 hgweb Configuring hgweb
114 internals Technical implementation topics
114 merge-tools Merge Tools
115 merge-tools Merge Tools
115 multirevs Specifying Multiple Revisions
116 multirevs Specifying Multiple Revisions
116 patterns File Name Patterns
117 patterns File Name Patterns
117 phases Working with Phases
118 phases Working with Phases
118 revisions Specifying Single Revisions
119 revisions Specifying Single Revisions
119 revsets Specifying Revision Sets
120 revsets Specifying Revision Sets
120 scripting Using Mercurial from scripts and automation
121 scripting Using Mercurial from scripts and automation
121 subrepos Subrepositories
122 subrepos Subrepositories
122 templating Template Usage
123 templating Template Usage
123 urls URL Paths
124 urls URL Paths
124
125
125 (use "hg help -v" to show built-in aliases and global options)
126 (use "hg help -v" to show built-in aliases and global options)
126
127
127 $ hg -q help
128 $ hg -q help
128 add add the specified files on the next commit
129 add add the specified files on the next commit
129 addremove add all new files, delete all missing files
130 addremove add all new files, delete all missing files
130 annotate show changeset information by line for each file
131 annotate show changeset information by line for each file
131 archive create an unversioned archive of a repository revision
132 archive create an unversioned archive of a repository revision
132 backout reverse effect of earlier changeset
133 backout reverse effect of earlier changeset
133 bisect subdivision search of changesets
134 bisect subdivision search of changesets
134 bookmarks create a new bookmark or list existing bookmarks
135 bookmarks create a new bookmark or list existing bookmarks
135 branch set or show the current branch name
136 branch set or show the current branch name
136 branches list repository named branches
137 branches list repository named branches
137 bundle create a changegroup file
138 bundle create a changegroup file
138 cat output the current or given revision of files
139 cat output the current or given revision of files
139 clone make a copy of an existing repository
140 clone make a copy of an existing repository
140 commit commit the specified files or all outstanding changes
141 commit commit the specified files or all outstanding changes
141 config show combined config settings from all hgrc files
142 config show combined config settings from all hgrc files
142 copy mark files as copied for the next commit
143 copy mark files as copied for the next commit
143 diff diff repository (or selected files)
144 diff diff repository (or selected files)
144 export dump the header and diffs for one or more changesets
145 export dump the header and diffs for one or more changesets
145 files list tracked files
146 files list tracked files
146 forget forget the specified files on the next commit
147 forget forget the specified files on the next commit
147 graft copy changes from other branches onto the current branch
148 graft copy changes from other branches onto the current branch
148 grep search for a pattern in specified files and revisions
149 grep search for a pattern in specified files and revisions
149 heads show branch heads
150 heads show branch heads
150 help show help for a given topic or a help overview
151 help show help for a given topic or a help overview
151 identify identify the working directory or specified revision
152 identify identify the working directory or specified revision
152 import import an ordered set of patches
153 import import an ordered set of patches
153 incoming show new changesets found in source
154 incoming show new changesets found in source
154 init create a new repository in the given directory
155 init create a new repository in the given directory
155 log show revision history of entire repository or files
156 log show revision history of entire repository or files
156 manifest output the current or given revision of the project manifest
157 manifest output the current or given revision of the project manifest
157 merge merge another revision into working directory
158 merge merge another revision into working directory
158 outgoing show changesets not found in the destination
159 outgoing show changesets not found in the destination
159 paths show aliases for remote repositories
160 paths show aliases for remote repositories
160 phase set or show the current phase name
161 phase set or show the current phase name
161 pull pull changes from the specified source
162 pull pull changes from the specified source
162 push push changes to the specified destination
163 push push changes to the specified destination
163 recover roll back an interrupted transaction
164 recover roll back an interrupted transaction
164 remove remove the specified files on the next commit
165 remove remove the specified files on the next commit
165 rename rename files; equivalent of copy + remove
166 rename rename files; equivalent of copy + remove
166 resolve redo merges or set/view the merge status of files
167 resolve redo merges or set/view the merge status of files
167 revert restore files to their checkout state
168 revert restore files to their checkout state
168 root print the root (top) of the current working directory
169 root print the root (top) of the current working directory
169 serve start stand-alone webserver
170 serve start stand-alone webserver
170 status show changed files in the working directory
171 status show changed files in the working directory
171 summary summarize working directory state
172 summary summarize working directory state
172 tag add one or more tags for the current or given revision
173 tag add one or more tags for the current or given revision
173 tags list repository tags
174 tags list repository tags
174 unbundle apply one or more changegroup files
175 unbundle apply one or more changegroup files
175 update update working directory (or switch revisions)
176 update update working directory (or switch revisions)
176 verify verify the integrity of the repository
177 verify verify the integrity of the repository
177 version output version and copyright information
178 version output version and copyright information
178
179
179 additional help topics:
180 additional help topics:
180
181
181 config Configuration Files
182 config Configuration Files
182 dates Date Formats
183 dates Date Formats
183 diffs Diff Formats
184 diffs Diff Formats
184 environment Environment Variables
185 environment Environment Variables
185 extensions Using Additional Features
186 extensions Using Additional Features
186 filesets Specifying File Sets
187 filesets Specifying File Sets
187 glossary Glossary
188 glossary Glossary
188 hgignore Syntax for Mercurial Ignore Files
189 hgignore Syntax for Mercurial Ignore Files
189 hgweb Configuring hgweb
190 hgweb Configuring hgweb
191 internals Technical implementation topics
190 merge-tools Merge Tools
192 merge-tools Merge Tools
191 multirevs Specifying Multiple Revisions
193 multirevs Specifying Multiple Revisions
192 patterns File Name Patterns
194 patterns File Name Patterns
193 phases Working with Phases
195 phases Working with Phases
194 revisions Specifying Single Revisions
196 revisions Specifying Single Revisions
195 revsets Specifying Revision Sets
197 revsets Specifying Revision Sets
196 scripting Using Mercurial from scripts and automation
198 scripting Using Mercurial from scripts and automation
197 subrepos Subrepositories
199 subrepos Subrepositories
198 templating Template Usage
200 templating Template Usage
199 urls URL Paths
201 urls URL Paths
200
202
201 Test extension help:
203 Test extension help:
202 $ hg help extensions --config extensions.rebase= --config extensions.children=
204 $ hg help extensions --config extensions.rebase= --config extensions.children=
203 Using Additional Features
205 Using Additional Features
204 """""""""""""""""""""""""
206 """""""""""""""""""""""""
205
207
206 Mercurial has the ability to add new features through the use of
208 Mercurial has the ability to add new features through the use of
207 extensions. Extensions may add new commands, add options to existing
209 extensions. Extensions may add new commands, add options to existing
208 commands, change the default behavior of commands, or implement hooks.
210 commands, change the default behavior of commands, or implement hooks.
209
211
210 To enable the "foo" extension, either shipped with Mercurial or in the
212 To enable the "foo" extension, either shipped with Mercurial or in the
211 Python search path, create an entry for it in your configuration file,
213 Python search path, create an entry for it in your configuration file,
212 like this:
214 like this:
213
215
214 [extensions]
216 [extensions]
215 foo =
217 foo =
216
218
217 You may also specify the full path to an extension:
219 You may also specify the full path to an extension:
218
220
219 [extensions]
221 [extensions]
220 myfeature = ~/.hgext/myfeature.py
222 myfeature = ~/.hgext/myfeature.py
221
223
222 See "hg help config" for more information on configuration files.
224 See "hg help config" for more information on configuration files.
223
225
224 Extensions are not loaded by default for a variety of reasons: they can
226 Extensions are not loaded by default for a variety of reasons: they can
225 increase startup overhead; they may be meant for advanced usage only; they
227 increase startup overhead; they may be meant for advanced usage only; they
226 may provide potentially dangerous abilities (such as letting you destroy
228 may provide potentially dangerous abilities (such as letting you destroy
227 or modify history); they might not be ready for prime time; or they may
229 or modify history); they might not be ready for prime time; or they may
228 alter some usual behaviors of stock Mercurial. It is thus up to the user
230 alter some usual behaviors of stock Mercurial. It is thus up to the user
229 to activate extensions as needed.
231 to activate extensions as needed.
230
232
231 To explicitly disable an extension enabled in a configuration file of
233 To explicitly disable an extension enabled in a configuration file of
232 broader scope, prepend its path with !:
234 broader scope, prepend its path with !:
233
235
234 [extensions]
236 [extensions]
235 # disabling extension bar residing in /path/to/extension/bar.py
237 # disabling extension bar residing in /path/to/extension/bar.py
236 bar = !/path/to/extension/bar.py
238 bar = !/path/to/extension/bar.py
237 # ditto, but no path was supplied for extension baz
239 # ditto, but no path was supplied for extension baz
238 baz = !
240 baz = !
239
241
240 enabled extensions:
242 enabled extensions:
241
243
242 children command to display child changesets (DEPRECATED)
244 children command to display child changesets (DEPRECATED)
243 rebase command to move sets of revisions to a different ancestor
245 rebase command to move sets of revisions to a different ancestor
244
246
245 disabled extensions:
247 disabled extensions:
246
248
247 acl hooks for controlling repository access
249 acl hooks for controlling repository access
248 blackbox log repository events to a blackbox for debugging
250 blackbox log repository events to a blackbox for debugging
249 bugzilla hooks for integrating with the Bugzilla bug tracker
251 bugzilla hooks for integrating with the Bugzilla bug tracker
250 censor erase file content at a given revision
252 censor erase file content at a given revision
251 churn command to display statistics about repository history
253 churn command to display statistics about repository history
252 clonebundles advertise pre-generated bundles to seed clones
254 clonebundles advertise pre-generated bundles to seed clones
253 (experimental)
255 (experimental)
254 color colorize output from some commands
256 color colorize output from some commands
255 convert import revisions from foreign VCS repositories into
257 convert import revisions from foreign VCS repositories into
256 Mercurial
258 Mercurial
257 eol automatically manage newlines in repository files
259 eol automatically manage newlines in repository files
258 extdiff command to allow external programs to compare revisions
260 extdiff command to allow external programs to compare revisions
259 factotum http authentication with factotum
261 factotum http authentication with factotum
260 gpg commands to sign and verify changesets
262 gpg commands to sign and verify changesets
261 hgcia hooks for integrating with the CIA.vc notification service
263 hgcia hooks for integrating with the CIA.vc notification service
262 hgk browse the repository in a graphical way
264 hgk browse the repository in a graphical way
263 highlight syntax highlighting for hgweb (requires Pygments)
265 highlight syntax highlighting for hgweb (requires Pygments)
264 histedit interactive history editing
266 histedit interactive history editing
265 keyword expand keywords in tracked files
267 keyword expand keywords in tracked files
266 largefiles track large binary files
268 largefiles track large binary files
267 mq manage a stack of patches
269 mq manage a stack of patches
268 notify hooks for sending email push notifications
270 notify hooks for sending email push notifications
269 pager browse command output with an external pager
271 pager browse command output with an external pager
270 patchbomb command to send changesets as (a series of) patch emails
272 patchbomb command to send changesets as (a series of) patch emails
271 purge command to delete untracked files from the working
273 purge command to delete untracked files from the working
272 directory
274 directory
273 record commands to interactively select changes for
275 record commands to interactively select changes for
274 commit/qrefresh
276 commit/qrefresh
275 relink recreates hardlinks between repository clones
277 relink recreates hardlinks between repository clones
276 schemes extend schemes with shortcuts to repository swarms
278 schemes extend schemes with shortcuts to repository swarms
277 share share a common history between several working directories
279 share share a common history between several working directories
278 shelve save and restore changes to the working directory
280 shelve save and restore changes to the working directory
279 strip strip changesets and their descendants from history
281 strip strip changesets and their descendants from history
280 transplant command to transplant changesets from another branch
282 transplant command to transplant changesets from another branch
281 win32mbcs allow the use of MBCS paths with problematic encodings
283 win32mbcs allow the use of MBCS paths with problematic encodings
282 zeroconf discover and advertise repositories on the local network
284 zeroconf discover and advertise repositories on the local network
283
285
284 Verify that extension keywords appear in help templates
286 Verify that extension keywords appear in help templates
285
287
286 $ hg help --config extensions.transplant= templating|grep transplant > /dev/null
288 $ hg help --config extensions.transplant= templating|grep transplant > /dev/null
287
289
288 Test short command list with verbose option
290 Test short command list with verbose option
289
291
290 $ hg -v help shortlist
292 $ hg -v help shortlist
291 Mercurial Distributed SCM
293 Mercurial Distributed SCM
292
294
293 basic commands:
295 basic commands:
294
296
295 add add the specified files on the next commit
297 add add the specified files on the next commit
296 annotate, blame
298 annotate, blame
297 show changeset information by line for each file
299 show changeset information by line for each file
298 clone make a copy of an existing repository
300 clone make a copy of an existing repository
299 commit, ci commit the specified files or all outstanding changes
301 commit, ci commit the specified files or all outstanding changes
300 diff diff repository (or selected files)
302 diff diff repository (or selected files)
301 export dump the header and diffs for one or more changesets
303 export dump the header and diffs for one or more changesets
302 forget forget the specified files on the next commit
304 forget forget the specified files on the next commit
303 init create a new repository in the given directory
305 init create a new repository in the given directory
304 log, history show revision history of entire repository or files
306 log, history show revision history of entire repository or files
305 merge merge another revision into working directory
307 merge merge another revision into working directory
306 pull pull changes from the specified source
308 pull pull changes from the specified source
307 push push changes to the specified destination
309 push push changes to the specified destination
308 remove, rm remove the specified files on the next commit
310 remove, rm remove the specified files on the next commit
309 serve start stand-alone webserver
311 serve start stand-alone webserver
310 status, st show changed files in the working directory
312 status, st show changed files in the working directory
311 summary, sum summarize working directory state
313 summary, sum summarize working directory state
312 update, up, checkout, co
314 update, up, checkout, co
313 update working directory (or switch revisions)
315 update working directory (or switch revisions)
314
316
315 global options ([+] can be repeated):
317 global options ([+] can be repeated):
316
318
317 -R --repository REPO repository root directory or name of overlay bundle
319 -R --repository REPO repository root directory or name of overlay bundle
318 file
320 file
319 --cwd DIR change working directory
321 --cwd DIR change working directory
320 -y --noninteractive do not prompt, automatically pick the first choice for
322 -y --noninteractive do not prompt, automatically pick the first choice for
321 all prompts
323 all prompts
322 -q --quiet suppress output
324 -q --quiet suppress output
323 -v --verbose enable additional output
325 -v --verbose enable additional output
324 --config CONFIG [+] set/override config option (use 'section.name=value')
326 --config CONFIG [+] set/override config option (use 'section.name=value')
325 --debug enable debugging output
327 --debug enable debugging output
326 --debugger start debugger
328 --debugger start debugger
327 --encoding ENCODE set the charset encoding (default: ascii)
329 --encoding ENCODE set the charset encoding (default: ascii)
328 --encodingmode MODE set the charset encoding mode (default: strict)
330 --encodingmode MODE set the charset encoding mode (default: strict)
329 --traceback always print a traceback on exception
331 --traceback always print a traceback on exception
330 --time time how long the command takes
332 --time time how long the command takes
331 --profile print command execution profile
333 --profile print command execution profile
332 --version output version information and exit
334 --version output version information and exit
333 -h --help display help and exit
335 -h --help display help and exit
334 --hidden consider hidden changesets
336 --hidden consider hidden changesets
335
337
336 (use "hg help" for the full list of commands)
338 (use "hg help" for the full list of commands)
337
339
338 $ hg add -h
340 $ hg add -h
339 hg add [OPTION]... [FILE]...
341 hg add [OPTION]... [FILE]...
340
342
341 add the specified files on the next commit
343 add the specified files on the next commit
342
344
343 Schedule files to be version controlled and added to the repository.
345 Schedule files to be version controlled and added to the repository.
344
346
345 The files will be added to the repository at the next commit. To undo an
347 The files will be added to the repository at the next commit. To undo an
346 add before that, see "hg forget".
348 add before that, see "hg forget".
347
349
348 If no names are given, add all files to the repository.
350 If no names are given, add all files to the repository.
349
351
350 Returns 0 if all files are successfully added.
352 Returns 0 if all files are successfully added.
351
353
352 options ([+] can be repeated):
354 options ([+] can be repeated):
353
355
354 -I --include PATTERN [+] include names matching the given patterns
356 -I --include PATTERN [+] include names matching the given patterns
355 -X --exclude PATTERN [+] exclude names matching the given patterns
357 -X --exclude PATTERN [+] exclude names matching the given patterns
356 -S --subrepos recurse into subrepositories
358 -S --subrepos recurse into subrepositories
357 -n --dry-run do not perform actions, just print output
359 -n --dry-run do not perform actions, just print output
358
360
359 (some details hidden, use --verbose to show complete help)
361 (some details hidden, use --verbose to show complete help)
360
362
361 Verbose help for add
363 Verbose help for add
362
364
363 $ hg add -hv
365 $ hg add -hv
364 hg add [OPTION]... [FILE]...
366 hg add [OPTION]... [FILE]...
365
367
366 add the specified files on the next commit
368 add the specified files on the next commit
367
369
368 Schedule files to be version controlled and added to the repository.
370 Schedule files to be version controlled and added to the repository.
369
371
370 The files will be added to the repository at the next commit. To undo an
372 The files will be added to the repository at the next commit. To undo an
371 add before that, see "hg forget".
373 add before that, see "hg forget".
372
374
373 If no names are given, add all files to the repository.
375 If no names are given, add all files to the repository.
374
376
375 Examples:
377 Examples:
376
378
377 - New (unknown) files are added automatically by "hg add":
379 - New (unknown) files are added automatically by "hg add":
378
380
379 $ ls
381 $ ls
380 foo.c
382 foo.c
381 $ hg status
383 $ hg status
382 ? foo.c
384 ? foo.c
383 $ hg add
385 $ hg add
384 adding foo.c
386 adding foo.c
385 $ hg status
387 $ hg status
386 A foo.c
388 A foo.c
387
389
388 - Specific files to be added can be specified:
390 - Specific files to be added can be specified:
389
391
390 $ ls
392 $ ls
391 bar.c foo.c
393 bar.c foo.c
392 $ hg status
394 $ hg status
393 ? bar.c
395 ? bar.c
394 ? foo.c
396 ? foo.c
395 $ hg add bar.c
397 $ hg add bar.c
396 $ hg status
398 $ hg status
397 A bar.c
399 A bar.c
398 ? foo.c
400 ? foo.c
399
401
400 Returns 0 if all files are successfully added.
402 Returns 0 if all files are successfully added.
401
403
402 options ([+] can be repeated):
404 options ([+] can be repeated):
403
405
404 -I --include PATTERN [+] include names matching the given patterns
406 -I --include PATTERN [+] include names matching the given patterns
405 -X --exclude PATTERN [+] exclude names matching the given patterns
407 -X --exclude PATTERN [+] exclude names matching the given patterns
406 -S --subrepos recurse into subrepositories
408 -S --subrepos recurse into subrepositories
407 -n --dry-run do not perform actions, just print output
409 -n --dry-run do not perform actions, just print output
408
410
409 global options ([+] can be repeated):
411 global options ([+] can be repeated):
410
412
411 -R --repository REPO repository root directory or name of overlay bundle
413 -R --repository REPO repository root directory or name of overlay bundle
412 file
414 file
413 --cwd DIR change working directory
415 --cwd DIR change working directory
414 -y --noninteractive do not prompt, automatically pick the first choice for
416 -y --noninteractive do not prompt, automatically pick the first choice for
415 all prompts
417 all prompts
416 -q --quiet suppress output
418 -q --quiet suppress output
417 -v --verbose enable additional output
419 -v --verbose enable additional output
418 --config CONFIG [+] set/override config option (use 'section.name=value')
420 --config CONFIG [+] set/override config option (use 'section.name=value')
419 --debug enable debugging output
421 --debug enable debugging output
420 --debugger start debugger
422 --debugger start debugger
421 --encoding ENCODE set the charset encoding (default: ascii)
423 --encoding ENCODE set the charset encoding (default: ascii)
422 --encodingmode MODE set the charset encoding mode (default: strict)
424 --encodingmode MODE set the charset encoding mode (default: strict)
423 --traceback always print a traceback on exception
425 --traceback always print a traceback on exception
424 --time time how long the command takes
426 --time time how long the command takes
425 --profile print command execution profile
427 --profile print command execution profile
426 --version output version information and exit
428 --version output version information and exit
427 -h --help display help and exit
429 -h --help display help and exit
428 --hidden consider hidden changesets
430 --hidden consider hidden changesets
429
431
430 Test help option with version option
432 Test help option with version option
431
433
432 $ hg add -h --version
434 $ hg add -h --version
433 Mercurial Distributed SCM (version *) (glob)
435 Mercurial Distributed SCM (version *) (glob)
434 (see https://mercurial-scm.org for more information)
436 (see https://mercurial-scm.org for more information)
435
437
436 Copyright (C) 2005-2015 Matt Mackall and others
438 Copyright (C) 2005-2015 Matt Mackall and others
437 This is free software; see the source for copying conditions. There is NO
439 This is free software; see the source for copying conditions. There is NO
438 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
440 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
439
441
440 $ hg add --skjdfks
442 $ hg add --skjdfks
441 hg add: option --skjdfks not recognized
443 hg add: option --skjdfks not recognized
442 hg add [OPTION]... [FILE]...
444 hg add [OPTION]... [FILE]...
443
445
444 add the specified files on the next commit
446 add the specified files on the next commit
445
447
446 options ([+] can be repeated):
448 options ([+] can be repeated):
447
449
448 -I --include PATTERN [+] include names matching the given patterns
450 -I --include PATTERN [+] include names matching the given patterns
449 -X --exclude PATTERN [+] exclude names matching the given patterns
451 -X --exclude PATTERN [+] exclude names matching the given patterns
450 -S --subrepos recurse into subrepositories
452 -S --subrepos recurse into subrepositories
451 -n --dry-run do not perform actions, just print output
453 -n --dry-run do not perform actions, just print output
452
454
453 (use "hg add -h" to show more help)
455 (use "hg add -h" to show more help)
454 [255]
456 [255]
455
457
456 Test ambiguous command help
458 Test ambiguous command help
457
459
458 $ hg help ad
460 $ hg help ad
459 list of commands:
461 list of commands:
460
462
461 add add the specified files on the next commit
463 add add the specified files on the next commit
462 addremove add all new files, delete all missing files
464 addremove add all new files, delete all missing files
463
465
464 (use "hg help -v ad" to show built-in aliases and global options)
466 (use "hg help -v ad" to show built-in aliases and global options)
465
467
466 Test command without options
468 Test command without options
467
469
468 $ hg help verify
470 $ hg help verify
469 hg verify
471 hg verify
470
472
471 verify the integrity of the repository
473 verify the integrity of the repository
472
474
473 Verify the integrity of the current repository.
475 Verify the integrity of the current repository.
474
476
475 This will perform an extensive check of the repository's integrity,
477 This will perform an extensive check of the repository's integrity,
476 validating the hashes and checksums of each entry in the changelog,
478 validating the hashes and checksums of each entry in the changelog,
477 manifest, and tracked files, as well as the integrity of their crosslinks
479 manifest, and tracked files, as well as the integrity of their crosslinks
478 and indices.
480 and indices.
479
481
480 Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
482 Please see https://mercurial-scm.org/wiki/RepositoryCorruption for more
481 information about recovery from corruption of the repository.
483 information about recovery from corruption of the repository.
482
484
483 Returns 0 on success, 1 if errors are encountered.
485 Returns 0 on success, 1 if errors are encountered.
484
486
485 (some details hidden, use --verbose to show complete help)
487 (some details hidden, use --verbose to show complete help)
486
488
487 $ hg help diff
489 $ hg help diff
488 hg diff [OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...
490 hg diff [OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...
489
491
490 diff repository (or selected files)
492 diff repository (or selected files)
491
493
492 Show differences between revisions for the specified files.
494 Show differences between revisions for the specified files.
493
495
494 Differences between files are shown using the unified diff format.
496 Differences between files are shown using the unified diff format.
495
497
496 Note:
498 Note:
497 diff may generate unexpected results for merges, as it will default to
499 diff may generate unexpected results for merges, as it will default to
498 comparing against the working directory's first parent changeset if no
500 comparing against the working directory's first parent changeset if no
499 revisions are specified.
501 revisions are specified.
500
502
501 When two revision arguments are given, then changes are shown between
503 When two revision arguments are given, then changes are shown between
502 those revisions. If only one revision is specified then that revision is
504 those revisions. If only one revision is specified then that revision is
503 compared to the working directory, and, when no revisions are specified,
505 compared to the working directory, and, when no revisions are specified,
504 the working directory files are compared to its parent.
506 the working directory files are compared to its parent.
505
507
506 Alternatively you can specify -c/--change with a revision to see the
508 Alternatively you can specify -c/--change with a revision to see the
507 changes in that changeset relative to its first parent.
509 changes in that changeset relative to its first parent.
508
510
509 Without the -a/--text option, diff will avoid generating diffs of files it
511 Without the -a/--text option, diff will avoid generating diffs of files it
510 detects as binary. With -a, diff will generate a diff anyway, probably
512 detects as binary. With -a, diff will generate a diff anyway, probably
511 with undesirable results.
513 with undesirable results.
512
514
513 Use the -g/--git option to generate diffs in the git extended diff format.
515 Use the -g/--git option to generate diffs in the git extended diff format.
514 For more information, read "hg help diffs".
516 For more information, read "hg help diffs".
515
517
516 Returns 0 on success.
518 Returns 0 on success.
517
519
518 options ([+] can be repeated):
520 options ([+] can be repeated):
519
521
520 -r --rev REV [+] revision
522 -r --rev REV [+] revision
521 -c --change REV change made by revision
523 -c --change REV change made by revision
522 -a --text treat all files as text
524 -a --text treat all files as text
523 -g --git use git extended diff format
525 -g --git use git extended diff format
524 --nodates omit dates from diff headers
526 --nodates omit dates from diff headers
525 --noprefix omit a/ and b/ prefixes from filenames
527 --noprefix omit a/ and b/ prefixes from filenames
526 -p --show-function show which function each change is in
528 -p --show-function show which function each change is in
527 --reverse produce a diff that undoes the changes
529 --reverse produce a diff that undoes the changes
528 -w --ignore-all-space ignore white space when comparing lines
530 -w --ignore-all-space ignore white space when comparing lines
529 -b --ignore-space-change ignore changes in the amount of white space
531 -b --ignore-space-change ignore changes in the amount of white space
530 -B --ignore-blank-lines ignore changes whose lines are all blank
532 -B --ignore-blank-lines ignore changes whose lines are all blank
531 -U --unified NUM number of lines of context to show
533 -U --unified NUM number of lines of context to show
532 --stat output diffstat-style summary of changes
534 --stat output diffstat-style summary of changes
533 --root DIR produce diffs relative to subdirectory
535 --root DIR produce diffs relative to subdirectory
534 -I --include PATTERN [+] include names matching the given patterns
536 -I --include PATTERN [+] include names matching the given patterns
535 -X --exclude PATTERN [+] exclude names matching the given patterns
537 -X --exclude PATTERN [+] exclude names matching the given patterns
536 -S --subrepos recurse into subrepositories
538 -S --subrepos recurse into subrepositories
537
539
538 (some details hidden, use --verbose to show complete help)
540 (some details hidden, use --verbose to show complete help)
539
541
540 $ hg help status
542 $ hg help status
541 hg status [OPTION]... [FILE]...
543 hg status [OPTION]... [FILE]...
542
544
543 aliases: st
545 aliases: st
544
546
545 show changed files in the working directory
547 show changed files in the working directory
546
548
547 Show status of files in the repository. If names are given, only files
549 Show status of files in the repository. If names are given, only files
548 that match are shown. Files that are clean or ignored or the source of a
550 that match are shown. Files that are clean or ignored or the source of a
549 copy/move operation, are not listed unless -c/--clean, -i/--ignored,
551 copy/move operation, are not listed unless -c/--clean, -i/--ignored,
550 -C/--copies or -A/--all are given. Unless options described with "show
552 -C/--copies or -A/--all are given. Unless options described with "show
551 only ..." are given, the options -mardu are used.
553 only ..." are given, the options -mardu are used.
552
554
553 Option -q/--quiet hides untracked (unknown and ignored) files unless
555 Option -q/--quiet hides untracked (unknown and ignored) files unless
554 explicitly requested with -u/--unknown or -i/--ignored.
556 explicitly requested with -u/--unknown or -i/--ignored.
555
557
556 Note:
558 Note:
557 status may appear to disagree with diff if permissions have changed or
559 status may appear to disagree with diff if permissions have changed or
558 a merge has occurred. The standard diff format does not report
560 a merge has occurred. The standard diff format does not report
559 permission changes and diff only reports changes relative to one merge
561 permission changes and diff only reports changes relative to one merge
560 parent.
562 parent.
561
563
562 If one revision is given, it is used as the base revision. If two
564 If one revision is given, it is used as the base revision. If two
563 revisions are given, the differences between them are shown. The --change
565 revisions are given, the differences between them are shown. The --change
564 option can also be used as a shortcut to list the changed files of a
566 option can also be used as a shortcut to list the changed files of a
565 revision from its first parent.
567 revision from its first parent.
566
568
567 The codes used to show the status of files are:
569 The codes used to show the status of files are:
568
570
569 M = modified
571 M = modified
570 A = added
572 A = added
571 R = removed
573 R = removed
572 C = clean
574 C = clean
573 ! = missing (deleted by non-hg command, but still tracked)
575 ! = missing (deleted by non-hg command, but still tracked)
574 ? = not tracked
576 ? = not tracked
575 I = ignored
577 I = ignored
576 = origin of the previous file (with --copies)
578 = origin of the previous file (with --copies)
577
579
578 Returns 0 on success.
580 Returns 0 on success.
579
581
580 options ([+] can be repeated):
582 options ([+] can be repeated):
581
583
582 -A --all show status of all files
584 -A --all show status of all files
583 -m --modified show only modified files
585 -m --modified show only modified files
584 -a --added show only added files
586 -a --added show only added files
585 -r --removed show only removed files
587 -r --removed show only removed files
586 -d --deleted show only deleted (but tracked) files
588 -d --deleted show only deleted (but tracked) files
587 -c --clean show only files without changes
589 -c --clean show only files without changes
588 -u --unknown show only unknown (not tracked) files
590 -u --unknown show only unknown (not tracked) files
589 -i --ignored show only ignored files
591 -i --ignored show only ignored files
590 -n --no-status hide status prefix
592 -n --no-status hide status prefix
591 -C --copies show source of copied files
593 -C --copies show source of copied files
592 -0 --print0 end filenames with NUL, for use with xargs
594 -0 --print0 end filenames with NUL, for use with xargs
593 --rev REV [+] show difference from revision
595 --rev REV [+] show difference from revision
594 --change REV list the changed files of a revision
596 --change REV list the changed files of a revision
595 -I --include PATTERN [+] include names matching the given patterns
597 -I --include PATTERN [+] include names matching the given patterns
596 -X --exclude PATTERN [+] exclude names matching the given patterns
598 -X --exclude PATTERN [+] exclude names matching the given patterns
597 -S --subrepos recurse into subrepositories
599 -S --subrepos recurse into subrepositories
598
600
599 (some details hidden, use --verbose to show complete help)
601 (some details hidden, use --verbose to show complete help)
600
602
601 $ hg -q help status
603 $ hg -q help status
602 hg status [OPTION]... [FILE]...
604 hg status [OPTION]... [FILE]...
603
605
604 show changed files in the working directory
606 show changed files in the working directory
605
607
606 $ hg help foo
608 $ hg help foo
607 abort: no such help topic: foo
609 abort: no such help topic: foo
608 (try "hg help --keyword foo")
610 (try "hg help --keyword foo")
609 [255]
611 [255]
610
612
611 $ hg skjdfks
613 $ hg skjdfks
612 hg: unknown command 'skjdfks'
614 hg: unknown command 'skjdfks'
613 Mercurial Distributed SCM
615 Mercurial Distributed SCM
614
616
615 basic commands:
617 basic commands:
616
618
617 add add the specified files on the next commit
619 add add the specified files on the next commit
618 annotate show changeset information by line for each file
620 annotate show changeset information by line for each file
619 clone make a copy of an existing repository
621 clone make a copy of an existing repository
620 commit commit the specified files or all outstanding changes
622 commit commit the specified files or all outstanding changes
621 diff diff repository (or selected files)
623 diff diff repository (or selected files)
622 export dump the header and diffs for one or more changesets
624 export dump the header and diffs for one or more changesets
623 forget forget the specified files on the next commit
625 forget forget the specified files on the next commit
624 init create a new repository in the given directory
626 init create a new repository in the given directory
625 log show revision history of entire repository or files
627 log show revision history of entire repository or files
626 merge merge another revision into working directory
628 merge merge another revision into working directory
627 pull pull changes from the specified source
629 pull pull changes from the specified source
628 push push changes to the specified destination
630 push push changes to the specified destination
629 remove remove the specified files on the next commit
631 remove remove the specified files on the next commit
630 serve start stand-alone webserver
632 serve start stand-alone webserver
631 status show changed files in the working directory
633 status show changed files in the working directory
632 summary summarize working directory state
634 summary summarize working directory state
633 update update working directory (or switch revisions)
635 update update working directory (or switch revisions)
634
636
635 (use "hg help" for the full list of commands or "hg -v" for details)
637 (use "hg help" for the full list of commands or "hg -v" for details)
636 [255]
638 [255]
637
639
638
640
639 Make sure that we don't run afoul of the help system thinking that
641 Make sure that we don't run afoul of the help system thinking that
640 this is a section and erroring out weirdly.
642 this is a section and erroring out weirdly.
641
643
642 $ hg .log
644 $ hg .log
643 hg: unknown command '.log'
645 hg: unknown command '.log'
644 (did you mean one of log?)
646 (did you mean one of log?)
645 [255]
647 [255]
646
648
647 $ hg log.
649 $ hg log.
648 hg: unknown command 'log.'
650 hg: unknown command 'log.'
649 (did you mean one of log?)
651 (did you mean one of log?)
650 [255]
652 [255]
651 $ hg pu.lh
653 $ hg pu.lh
652 hg: unknown command 'pu.lh'
654 hg: unknown command 'pu.lh'
653 (did you mean one of pull, push?)
655 (did you mean one of pull, push?)
654 [255]
656 [255]
655
657
656 $ cat > helpext.py <<EOF
658 $ cat > helpext.py <<EOF
657 > import os
659 > import os
658 > from mercurial import cmdutil, commands
660 > from mercurial import cmdutil, commands
659 >
661 >
660 > cmdtable = {}
662 > cmdtable = {}
661 > command = cmdutil.command(cmdtable)
663 > command = cmdutil.command(cmdtable)
662 >
664 >
663 > @command('nohelp',
665 > @command('nohelp',
664 > [('', 'longdesc', 3, 'x'*90),
666 > [('', 'longdesc', 3, 'x'*90),
665 > ('n', '', None, 'normal desc'),
667 > ('n', '', None, 'normal desc'),
666 > ('', 'newline', '', 'line1\nline2')],
668 > ('', 'newline', '', 'line1\nline2')],
667 > 'hg nohelp',
669 > 'hg nohelp',
668 > norepo=True)
670 > norepo=True)
669 > @command('debugoptDEP', [('', 'dopt', None, 'option is (DEPRECATED)')])
671 > @command('debugoptDEP', [('', 'dopt', None, 'option is (DEPRECATED)')])
670 > @command('debugoptEXP', [('', 'eopt', None, 'option is (EXPERIMENTAL)')])
672 > @command('debugoptEXP', [('', 'eopt', None, 'option is (EXPERIMENTAL)')])
671 > def nohelp(ui, *args, **kwargs):
673 > def nohelp(ui, *args, **kwargs):
672 > pass
674 > pass
673 >
675 >
674 > EOF
676 > EOF
675 $ echo '[extensions]' >> $HGRCPATH
677 $ echo '[extensions]' >> $HGRCPATH
676 $ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
678 $ echo "helpext = `pwd`/helpext.py" >> $HGRCPATH
677
679
678 Test command with no help text
680 Test command with no help text
679
681
680 $ hg help nohelp
682 $ hg help nohelp
681 hg nohelp
683 hg nohelp
682
684
683 (no help text available)
685 (no help text available)
684
686
685 options:
687 options:
686
688
687 --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
689 --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
688 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (default: 3)
690 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (default: 3)
689 -n -- normal desc
691 -n -- normal desc
690 --newline VALUE line1 line2
692 --newline VALUE line1 line2
691
693
692 (some details hidden, use --verbose to show complete help)
694 (some details hidden, use --verbose to show complete help)
693
695
694 $ hg help -k nohelp
696 $ hg help -k nohelp
695 Commands:
697 Commands:
696
698
697 nohelp hg nohelp
699 nohelp hg nohelp
698
700
699 Extension Commands:
701 Extension Commands:
700
702
701 nohelp (no help text available)
703 nohelp (no help text available)
702
704
703 Test that default list of commands omits extension commands
705 Test that default list of commands omits extension commands
704
706
705 $ hg help
707 $ hg help
706 Mercurial Distributed SCM
708 Mercurial Distributed SCM
707
709
708 list of commands:
710 list of commands:
709
711
710 add add the specified files on the next commit
712 add add the specified files on the next commit
711 addremove add all new files, delete all missing files
713 addremove add all new files, delete all missing files
712 annotate show changeset information by line for each file
714 annotate show changeset information by line for each file
713 archive create an unversioned archive of a repository revision
715 archive create an unversioned archive of a repository revision
714 backout reverse effect of earlier changeset
716 backout reverse effect of earlier changeset
715 bisect subdivision search of changesets
717 bisect subdivision search of changesets
716 bookmarks create a new bookmark or list existing bookmarks
718 bookmarks create a new bookmark or list existing bookmarks
717 branch set or show the current branch name
719 branch set or show the current branch name
718 branches list repository named branches
720 branches list repository named branches
719 bundle create a changegroup file
721 bundle create a changegroup file
720 cat output the current or given revision of files
722 cat output the current or given revision of files
721 clone make a copy of an existing repository
723 clone make a copy of an existing repository
722 commit commit the specified files or all outstanding changes
724 commit commit the specified files or all outstanding changes
723 config show combined config settings from all hgrc files
725 config show combined config settings from all hgrc files
724 copy mark files as copied for the next commit
726 copy mark files as copied for the next commit
725 diff diff repository (or selected files)
727 diff diff repository (or selected files)
726 export dump the header and diffs for one or more changesets
728 export dump the header and diffs for one or more changesets
727 files list tracked files
729 files list tracked files
728 forget forget the specified files on the next commit
730 forget forget the specified files on the next commit
729 graft copy changes from other branches onto the current branch
731 graft copy changes from other branches onto the current branch
730 grep search for a pattern in specified files and revisions
732 grep search for a pattern in specified files and revisions
731 heads show branch heads
733 heads show branch heads
732 help show help for a given topic or a help overview
734 help show help for a given topic or a help overview
733 identify identify the working directory or specified revision
735 identify identify the working directory or specified revision
734 import import an ordered set of patches
736 import import an ordered set of patches
735 incoming show new changesets found in source
737 incoming show new changesets found in source
736 init create a new repository in the given directory
738 init create a new repository in the given directory
737 log show revision history of entire repository or files
739 log show revision history of entire repository or files
738 manifest output the current or given revision of the project manifest
740 manifest output the current or given revision of the project manifest
739 merge merge another revision into working directory
741 merge merge another revision into working directory
740 outgoing show changesets not found in the destination
742 outgoing show changesets not found in the destination
741 paths show aliases for remote repositories
743 paths show aliases for remote repositories
742 phase set or show the current phase name
744 phase set or show the current phase name
743 pull pull changes from the specified source
745 pull pull changes from the specified source
744 push push changes to the specified destination
746 push push changes to the specified destination
745 recover roll back an interrupted transaction
747 recover roll back an interrupted transaction
746 remove remove the specified files on the next commit
748 remove remove the specified files on the next commit
747 rename rename files; equivalent of copy + remove
749 rename rename files; equivalent of copy + remove
748 resolve redo merges or set/view the merge status of files
750 resolve redo merges or set/view the merge status of files
749 revert restore files to their checkout state
751 revert restore files to their checkout state
750 root print the root (top) of the current working directory
752 root print the root (top) of the current working directory
751 serve start stand-alone webserver
753 serve start stand-alone webserver
752 status show changed files in the working directory
754 status show changed files in the working directory
753 summary summarize working directory state
755 summary summarize working directory state
754 tag add one or more tags for the current or given revision
756 tag add one or more tags for the current or given revision
755 tags list repository tags
757 tags list repository tags
756 unbundle apply one or more changegroup files
758 unbundle apply one or more changegroup files
757 update update working directory (or switch revisions)
759 update update working directory (or switch revisions)
758 verify verify the integrity of the repository
760 verify verify the integrity of the repository
759 version output version and copyright information
761 version output version and copyright information
760
762
761 enabled extensions:
763 enabled extensions:
762
764
763 helpext (no help text available)
765 helpext (no help text available)
764
766
765 additional help topics:
767 additional help topics:
766
768
767 config Configuration Files
769 config Configuration Files
768 dates Date Formats
770 dates Date Formats
769 diffs Diff Formats
771 diffs Diff Formats
770 environment Environment Variables
772 environment Environment Variables
771 extensions Using Additional Features
773 extensions Using Additional Features
772 filesets Specifying File Sets
774 filesets Specifying File Sets
773 glossary Glossary
775 glossary Glossary
774 hgignore Syntax for Mercurial Ignore Files
776 hgignore Syntax for Mercurial Ignore Files
775 hgweb Configuring hgweb
777 hgweb Configuring hgweb
778 internals Technical implementation topics
776 merge-tools Merge Tools
779 merge-tools Merge Tools
777 multirevs Specifying Multiple Revisions
780 multirevs Specifying Multiple Revisions
778 patterns File Name Patterns
781 patterns File Name Patterns
779 phases Working with Phases
782 phases Working with Phases
780 revisions Specifying Single Revisions
783 revisions Specifying Single Revisions
781 revsets Specifying Revision Sets
784 revsets Specifying Revision Sets
782 scripting Using Mercurial from scripts and automation
785 scripting Using Mercurial from scripts and automation
783 subrepos Subrepositories
786 subrepos Subrepositories
784 templating Template Usage
787 templating Template Usage
785 urls URL Paths
788 urls URL Paths
786
789
787 (use "hg help -v" to show built-in aliases and global options)
790 (use "hg help -v" to show built-in aliases and global options)
788
791
789
792
790 Test list of internal help commands
793 Test list of internal help commands
791
794
792 $ hg help debug
795 $ hg help debug
793 debug commands (internal and unsupported):
796 debug commands (internal and unsupported):
794
797
795 debugancestor
798 debugancestor
796 find the ancestor revision of two revisions in a given index
799 find the ancestor revision of two revisions in a given index
797 debugapplystreamclonebundle
800 debugapplystreamclonebundle
798 apply a stream clone bundle file
801 apply a stream clone bundle file
799 debugbuilddag
802 debugbuilddag
800 builds a repo with a given DAG from scratch in the current
803 builds a repo with a given DAG from scratch in the current
801 empty repo
804 empty repo
802 debugbundle lists the contents of a bundle
805 debugbundle lists the contents of a bundle
803 debugcheckstate
806 debugcheckstate
804 validate the correctness of the current dirstate
807 validate the correctness of the current dirstate
805 debugcommands
808 debugcommands
806 list all available commands and options
809 list all available commands and options
807 debugcomplete
810 debugcomplete
808 returns the completion list associated with the given command
811 returns the completion list associated with the given command
809 debugcreatestreamclonebundle
812 debugcreatestreamclonebundle
810 create a stream clone bundle file
813 create a stream clone bundle file
811 debugdag format the changelog or an index DAG as a concise textual
814 debugdag format the changelog or an index DAG as a concise textual
812 description
815 description
813 debugdata dump the contents of a data file revision
816 debugdata dump the contents of a data file revision
814 debugdate parse and display a date
817 debugdate parse and display a date
815 debugdeltachain
818 debugdeltachain
816 dump information about delta chains in a revlog
819 dump information about delta chains in a revlog
817 debugdirstate
820 debugdirstate
818 show the contents of the current dirstate
821 show the contents of the current dirstate
819 debugdiscovery
822 debugdiscovery
820 runs the changeset discovery protocol in isolation
823 runs the changeset discovery protocol in isolation
821 debugextensions
824 debugextensions
822 show information about active extensions
825 show information about active extensions
823 debugfileset parse and apply a fileset specification
826 debugfileset parse and apply a fileset specification
824 debugfsinfo show information detected about current filesystem
827 debugfsinfo show information detected about current filesystem
825 debuggetbundle
828 debuggetbundle
826 retrieves a bundle from a repo
829 retrieves a bundle from a repo
827 debugignore display the combined ignore pattern
830 debugignore display the combined ignore pattern
828 debugindex dump the contents of an index file
831 debugindex dump the contents of an index file
829 debugindexdot
832 debugindexdot
830 dump an index DAG as a graphviz dot file
833 dump an index DAG as a graphviz dot file
831 debuginstall test Mercurial installation
834 debuginstall test Mercurial installation
832 debugknown test whether node ids are known to a repo
835 debugknown test whether node ids are known to a repo
833 debuglocks show or modify state of locks
836 debuglocks show or modify state of locks
834 debugmergestate
837 debugmergestate
835 print merge state
838 print merge state
836 debugnamecomplete
839 debugnamecomplete
837 complete "names" - tags, open branch names, bookmark names
840 complete "names" - tags, open branch names, bookmark names
838 debugobsolete
841 debugobsolete
839 create arbitrary obsolete marker
842 create arbitrary obsolete marker
840 debugoptDEP (no help text available)
843 debugoptDEP (no help text available)
841 debugoptEXP (no help text available)
844 debugoptEXP (no help text available)
842 debugpathcomplete
845 debugpathcomplete
843 complete part or all of a tracked path
846 complete part or all of a tracked path
844 debugpushkey access the pushkey key/value protocol
847 debugpushkey access the pushkey key/value protocol
845 debugpvec (no help text available)
848 debugpvec (no help text available)
846 debugrebuilddirstate
849 debugrebuilddirstate
847 rebuild the dirstate as it would look like for the given
850 rebuild the dirstate as it would look like for the given
848 revision
851 revision
849 debugrebuildfncache
852 debugrebuildfncache
850 rebuild the fncache file
853 rebuild the fncache file
851 debugrename dump rename information
854 debugrename dump rename information
852 debugrevlog show data and statistics about a revlog
855 debugrevlog show data and statistics about a revlog
853 debugrevspec parse and apply a revision specification
856 debugrevspec parse and apply a revision specification
854 debugsetparents
857 debugsetparents
855 manually set the parents of the current working directory
858 manually set the parents of the current working directory
856 debugsub (no help text available)
859 debugsub (no help text available)
857 debugsuccessorssets
860 debugsuccessorssets
858 show set of successors for revision
861 show set of successors for revision
859 debugwalk show how files match on given patterns
862 debugwalk show how files match on given patterns
860 debugwireargs
863 debugwireargs
861 (no help text available)
864 (no help text available)
862
865
863 (use "hg help -v debug" to show built-in aliases and global options)
866 (use "hg help -v debug" to show built-in aliases and global options)
864
867
868 internals topic renders index of available sub-topics
869
870 $ hg help internals
871 Technical implementation topics
872 """""""""""""""""""""""""""""""
873
874 bundles container for exchange of repository data
875 changegroups representation of revlog data
865
876
866 Test list of commands with command with no help text
877 Test list of commands with command with no help text
867
878
868 $ hg help helpext
879 $ hg help helpext
869 helpext extension - no help text available
880 helpext extension - no help text available
870
881
871 list of commands:
882 list of commands:
872
883
873 nohelp (no help text available)
884 nohelp (no help text available)
874
885
875 (use "hg help -v helpext" to show built-in aliases and global options)
886 (use "hg help -v helpext" to show built-in aliases and global options)
876
887
877
888
878 test deprecated and experimental options are hidden in command help
889 test deprecated and experimental options are hidden in command help
879 $ hg help debugoptDEP
890 $ hg help debugoptDEP
880 hg debugoptDEP
891 hg debugoptDEP
881
892
882 (no help text available)
893 (no help text available)
883
894
884 options:
895 options:
885
896
886 (some details hidden, use --verbose to show complete help)
897 (some details hidden, use --verbose to show complete help)
887
898
888 $ hg help debugoptEXP
899 $ hg help debugoptEXP
889 hg debugoptEXP
900 hg debugoptEXP
890
901
891 (no help text available)
902 (no help text available)
892
903
893 options:
904 options:
894
905
895 (some details hidden, use --verbose to show complete help)
906 (some details hidden, use --verbose to show complete help)
896
907
897 test deprecated and experimental options is shown with -v
908 test deprecated and experimental options is shown with -v
898 $ hg help -v debugoptDEP | grep dopt
909 $ hg help -v debugoptDEP | grep dopt
899 --dopt option is (DEPRECATED)
910 --dopt option is (DEPRECATED)
900 $ hg help -v debugoptEXP | grep eopt
911 $ hg help -v debugoptEXP | grep eopt
901 --eopt option is (EXPERIMENTAL)
912 --eopt option is (EXPERIMENTAL)
902
913
903 #if gettext
914 #if gettext
904 test deprecated option is hidden with translation with untranslated description
915 test deprecated option is hidden with translation with untranslated description
905 (use many globy for not failing on changed transaction)
916 (use many globy for not failing on changed transaction)
906 $ LANGUAGE=sv hg help debugoptDEP
917 $ LANGUAGE=sv hg help debugoptDEP
907 hg debugoptDEP
918 hg debugoptDEP
908
919
909 (*) (glob)
920 (*) (glob)
910
921
911 options:
922 options:
912
923
913 (some details hidden, use --verbose to show complete help)
924 (some details hidden, use --verbose to show complete help)
914 #endif
925 #endif
915
926
916 Test commands that collide with topics (issue4240)
927 Test commands that collide with topics (issue4240)
917
928
918 $ hg config -hq
929 $ hg config -hq
919 hg config [-u] [NAME]...
930 hg config [-u] [NAME]...
920
931
921 show combined config settings from all hgrc files
932 show combined config settings from all hgrc files
922 $ hg showconfig -hq
933 $ hg showconfig -hq
923 hg config [-u] [NAME]...
934 hg config [-u] [NAME]...
924
935
925 show combined config settings from all hgrc files
936 show combined config settings from all hgrc files
926
937
927 Test a help topic
938 Test a help topic
928
939
929 $ hg help revs
940 $ hg help revs
930 Specifying Single Revisions
941 Specifying Single Revisions
931 """""""""""""""""""""""""""
942 """""""""""""""""""""""""""
932
943
933 Mercurial supports several ways to specify individual revisions.
944 Mercurial supports several ways to specify individual revisions.
934
945
935 A plain integer is treated as a revision number. Negative integers are
946 A plain integer is treated as a revision number. Negative integers are
936 treated as sequential offsets from the tip, with -1 denoting the tip, -2
947 treated as sequential offsets from the tip, with -1 denoting the tip, -2
937 denoting the revision prior to the tip, and so forth.
948 denoting the revision prior to the tip, and so forth.
938
949
939 A 40-digit hexadecimal string is treated as a unique revision identifier.
950 A 40-digit hexadecimal string is treated as a unique revision identifier.
940
951
941 A hexadecimal string less than 40 characters long is treated as a unique
952 A hexadecimal string less than 40 characters long is treated as a unique
942 revision identifier and is referred to as a short-form identifier. A
953 revision identifier and is referred to as a short-form identifier. A
943 short-form identifier is only valid if it is the prefix of exactly one
954 short-form identifier is only valid if it is the prefix of exactly one
944 full-length identifier.
955 full-length identifier.
945
956
946 Any other string is treated as a bookmark, tag, or branch name. A bookmark
957 Any other string is treated as a bookmark, tag, or branch name. A bookmark
947 is a movable pointer to a revision. A tag is a permanent name associated
958 is a movable pointer to a revision. A tag is a permanent name associated
948 with a revision. A branch name denotes the tipmost open branch head of
959 with a revision. A branch name denotes the tipmost open branch head of
949 that branch - or if they are all closed, the tipmost closed head of the
960 that branch - or if they are all closed, the tipmost closed head of the
950 branch. Bookmark, tag, and branch names must not contain the ":"
961 branch. Bookmark, tag, and branch names must not contain the ":"
951 character.
962 character.
952
963
953 The reserved name "tip" always identifies the most recent revision.
964 The reserved name "tip" always identifies the most recent revision.
954
965
955 The reserved name "null" indicates the null revision. This is the revision
966 The reserved name "null" indicates the null revision. This is the revision
956 of an empty repository, and the parent of revision 0.
967 of an empty repository, and the parent of revision 0.
957
968
958 The reserved name "." indicates the working directory parent. If no
969 The reserved name "." indicates the working directory parent. If no
959 working directory is checked out, it is equivalent to null. If an
970 working directory is checked out, it is equivalent to null. If an
960 uncommitted merge is in progress, "." is the revision of the first parent.
971 uncommitted merge is in progress, "." is the revision of the first parent.
961
972
962 Test repeated config section name
973 Test repeated config section name
963
974
964 $ hg help config.host
975 $ hg help config.host
965 "http_proxy.host"
976 "http_proxy.host"
966 Host name and (optional) port of the proxy server, for example
977 Host name and (optional) port of the proxy server, for example
967 "myproxy:8000".
978 "myproxy:8000".
968
979
969 "smtp.host"
980 "smtp.host"
970 Host name of mail server, e.g. "mail.example.com".
981 Host name of mail server, e.g. "mail.example.com".
971
982
972 Unrelated trailing paragraphs shouldn't be included
983 Unrelated trailing paragraphs shouldn't be included
973
984
974 $ hg help config.extramsg | grep '^$'
985 $ hg help config.extramsg | grep '^$'
975
986
976
987
977 Test capitalized section name
988 Test capitalized section name
978
989
979 $ hg help scripting.HGPLAIN > /dev/null
990 $ hg help scripting.HGPLAIN > /dev/null
980
991
981 Help subsection:
992 Help subsection:
982
993
983 $ hg help config.charsets |grep "Email example:" > /dev/null
994 $ hg help config.charsets |grep "Email example:" > /dev/null
984 [1]
995 [1]
985
996
986 Show nested definitions
997 Show nested definitions
987 ("profiling.type"[break]"ls"[break]"stat"[break])
998 ("profiling.type"[break]"ls"[break]"stat"[break])
988
999
989 $ hg help config.type | egrep '^$'|wc -l
1000 $ hg help config.type | egrep '^$'|wc -l
990 \s*3 (re)
1001 \s*3 (re)
991
1002
992 Last item in help config.*:
1003 Last item in help config.*:
993
1004
994 $ hg help config.`hg help config|grep '^ "'| \
1005 $ hg help config.`hg help config|grep '^ "'| \
995 > tail -1|sed 's![ "]*!!g'`| \
1006 > tail -1|sed 's![ "]*!!g'`| \
996 > grep "hg help -c config" > /dev/null
1007 > grep "hg help -c config" > /dev/null
997 [1]
1008 [1]
998
1009
999 note to use help -c for general hg help config:
1010 note to use help -c for general hg help config:
1000
1011
1001 $ hg help config |grep "hg help -c config" > /dev/null
1012 $ hg help config |grep "hg help -c config" > /dev/null
1002
1013
1003 Test templating help
1014 Test templating help
1004
1015
1005 $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
1016 $ hg help templating | egrep '(desc|diffstat|firstline|nonempty) '
1006 desc String. The text of the changeset description.
1017 desc String. The text of the changeset description.
1007 diffstat String. Statistics of changes with the following format:
1018 diffstat String. Statistics of changes with the following format:
1008 firstline Any text. Returns the first line of text.
1019 firstline Any text. Returns the first line of text.
1009 nonempty Any text. Returns '(none)' if the string is empty.
1020 nonempty Any text. Returns '(none)' if the string is empty.
1010
1021
1011 Test deprecated items
1022 Test deprecated items
1012
1023
1013 $ hg help -v templating | grep currentbookmark
1024 $ hg help -v templating | grep currentbookmark
1014 currentbookmark
1025 currentbookmark
1015 $ hg help templating | (grep currentbookmark || true)
1026 $ hg help templating | (grep currentbookmark || true)
1016
1027
1017 Test help hooks
1028 Test help hooks
1018
1029
1019 $ cat > helphook1.py <<EOF
1030 $ cat > helphook1.py <<EOF
1020 > from mercurial import help
1031 > from mercurial import help
1021 >
1032 >
1022 > def rewrite(ui, topic, doc):
1033 > def rewrite(ui, topic, doc):
1023 > return doc + '\nhelphook1\n'
1034 > return doc + '\nhelphook1\n'
1024 >
1035 >
1025 > def extsetup(ui):
1036 > def extsetup(ui):
1026 > help.addtopichook('revsets', rewrite)
1037 > help.addtopichook('revsets', rewrite)
1027 > EOF
1038 > EOF
1028 $ cat > helphook2.py <<EOF
1039 $ cat > helphook2.py <<EOF
1029 > from mercurial import help
1040 > from mercurial import help
1030 >
1041 >
1031 > def rewrite(ui, topic, doc):
1042 > def rewrite(ui, topic, doc):
1032 > return doc + '\nhelphook2\n'
1043 > return doc + '\nhelphook2\n'
1033 >
1044 >
1034 > def extsetup(ui):
1045 > def extsetup(ui):
1035 > help.addtopichook('revsets', rewrite)
1046 > help.addtopichook('revsets', rewrite)
1036 > EOF
1047 > EOF
1037 $ echo '[extensions]' >> $HGRCPATH
1048 $ echo '[extensions]' >> $HGRCPATH
1038 $ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
1049 $ echo "helphook1 = `pwd`/helphook1.py" >> $HGRCPATH
1039 $ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
1050 $ echo "helphook2 = `pwd`/helphook2.py" >> $HGRCPATH
1040 $ hg help revsets | grep helphook
1051 $ hg help revsets | grep helphook
1041 helphook1
1052 helphook1
1042 helphook2
1053 helphook2
1043
1054
1044 help -c should only show debug --debug
1055 help -c should only show debug --debug
1045
1056
1046 $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
1057 $ hg help -c --debug|egrep debug|wc -l|egrep '^\s*0\s*$'
1047 [1]
1058 [1]
1048
1059
1049 help -c should only show deprecated for -v
1060 help -c should only show deprecated for -v
1050
1061
1051 $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
1062 $ hg help -c -v|egrep DEPRECATED|wc -l|egrep '^\s*0\s*$'
1052 [1]
1063 [1]
1053
1064
1054 Test -e / -c / -k combinations
1065 Test -e / -c / -k combinations
1055
1066
1056 $ hg help -c|egrep '^\S|debug'
1067 $ hg help -c|egrep '^\S|debug'
1057 Commands:
1068 Commands:
1058 $ hg help -e|egrep '^\S'
1069 $ hg help -e|egrep '^\S'
1059 Extensions:
1070 Extensions:
1060 $ hg help -k|egrep '^\S'
1071 $ hg help -k|egrep '^\S'
1061 Topics:
1072 Topics:
1062 Commands:
1073 Commands:
1063 Extensions:
1074 Extensions:
1064 Extension Commands:
1075 Extension Commands:
1065 $ hg help -c schemes
1076 $ hg help -c schemes
1066 abort: no such help topic: schemes
1077 abort: no such help topic: schemes
1067 (try "hg help --keyword schemes")
1078 (try "hg help --keyword schemes")
1068 [255]
1079 [255]
1069 $ hg help -e schemes |head -1
1080 $ hg help -e schemes |head -1
1070 schemes extension - extend schemes with shortcuts to repository swarms
1081 schemes extension - extend schemes with shortcuts to repository swarms
1071 $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
1082 $ hg help -c -k dates |egrep '^(Topics|Extensions|Commands):'
1072 Commands:
1083 Commands:
1073 $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
1084 $ hg help -e -k a |egrep '^(Topics|Extensions|Commands):'
1074 Extensions:
1085 Extensions:
1075 $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
1086 $ hg help -e -c -k date |egrep '^(Topics|Extensions|Commands):'
1076 Extensions:
1087 Extensions:
1077 Commands:
1088 Commands:
1078 $ hg help -c commit > /dev/null
1089 $ hg help -c commit > /dev/null
1079 $ hg help -e -c commit > /dev/null
1090 $ hg help -e -c commit > /dev/null
1080 $ hg help -e commit > /dev/null
1091 $ hg help -e commit > /dev/null
1081 abort: no such help topic: commit
1092 abort: no such help topic: commit
1082 (try "hg help --keyword commit")
1093 (try "hg help --keyword commit")
1083 [255]
1094 [255]
1084
1095
1085 Test keyword search help
1096 Test keyword search help
1086
1097
1087 $ cat > prefixedname.py <<EOF
1098 $ cat > prefixedname.py <<EOF
1088 > '''matched against word "clone"
1099 > '''matched against word "clone"
1089 > '''
1100 > '''
1090 > EOF
1101 > EOF
1091 $ echo '[extensions]' >> $HGRCPATH
1102 $ echo '[extensions]' >> $HGRCPATH
1092 $ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
1103 $ echo "dot.dot.prefixedname = `pwd`/prefixedname.py" >> $HGRCPATH
1093 $ hg help -k clone
1104 $ hg help -k clone
1094 Topics:
1105 Topics:
1095
1106
1096 config Configuration Files
1107 config Configuration Files
1097 extensions Using Additional Features
1108 extensions Using Additional Features
1098 glossary Glossary
1109 glossary Glossary
1099 phases Working with Phases
1110 phases Working with Phases
1100 subrepos Subrepositories
1111 subrepos Subrepositories
1101 urls URL Paths
1112 urls URL Paths
1102
1113
1103 Commands:
1114 Commands:
1104
1115
1105 bookmarks create a new bookmark or list existing bookmarks
1116 bookmarks create a new bookmark or list existing bookmarks
1106 clone make a copy of an existing repository
1117 clone make a copy of an existing repository
1107 paths show aliases for remote repositories
1118 paths show aliases for remote repositories
1108 update update working directory (or switch revisions)
1119 update update working directory (or switch revisions)
1109
1120
1110 Extensions:
1121 Extensions:
1111
1122
1112 clonebundles advertise pre-generated bundles to seed clones (experimental)
1123 clonebundles advertise pre-generated bundles to seed clones (experimental)
1113 prefixedname matched against word "clone"
1124 prefixedname matched against word "clone"
1114 relink recreates hardlinks between repository clones
1125 relink recreates hardlinks between repository clones
1115
1126
1116 Extension Commands:
1127 Extension Commands:
1117
1128
1118 qclone clone main and patch repository at same time
1129 qclone clone main and patch repository at same time
1119
1130
1120 Test unfound topic
1131 Test unfound topic
1121
1132
1122 $ hg help nonexistingtopicthatwillneverexisteverever
1133 $ hg help nonexistingtopicthatwillneverexisteverever
1123 abort: no such help topic: nonexistingtopicthatwillneverexisteverever
1134 abort: no such help topic: nonexistingtopicthatwillneverexisteverever
1124 (try "hg help --keyword nonexistingtopicthatwillneverexisteverever")
1135 (try "hg help --keyword nonexistingtopicthatwillneverexisteverever")
1125 [255]
1136 [255]
1126
1137
1127 Test unfound keyword
1138 Test unfound keyword
1128
1139
1129 $ hg help --keyword nonexistingwordthatwillneverexisteverever
1140 $ hg help --keyword nonexistingwordthatwillneverexisteverever
1130 abort: no matches
1141 abort: no matches
1131 (try "hg help" for a list of topics)
1142 (try "hg help" for a list of topics)
1132 [255]
1143 [255]
1133
1144
1134 Test omit indicating for help
1145 Test omit indicating for help
1135
1146
1136 $ cat > addverboseitems.py <<EOF
1147 $ cat > addverboseitems.py <<EOF
1137 > '''extension to test omit indicating.
1148 > '''extension to test omit indicating.
1138 >
1149 >
1139 > This paragraph is never omitted (for extension)
1150 > This paragraph is never omitted (for extension)
1140 >
1151 >
1141 > .. container:: verbose
1152 > .. container:: verbose
1142 >
1153 >
1143 > This paragraph is omitted,
1154 > This paragraph is omitted,
1144 > if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
1155 > if :hg:\`help\` is invoked without \`\`-v\`\` (for extension)
1145 >
1156 >
1146 > This paragraph is never omitted, too (for extension)
1157 > This paragraph is never omitted, too (for extension)
1147 > '''
1158 > '''
1148 >
1159 >
1149 > from mercurial import help, commands
1160 > from mercurial import help, commands
1150 > testtopic = """This paragraph is never omitted (for topic).
1161 > testtopic = """This paragraph is never omitted (for topic).
1151 >
1162 >
1152 > .. container:: verbose
1163 > .. container:: verbose
1153 >
1164 >
1154 > This paragraph is omitted,
1165 > This paragraph is omitted,
1155 > if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
1166 > if :hg:\`help\` is invoked without \`\`-v\`\` (for topic)
1156 >
1167 >
1157 > This paragraph is never omitted, too (for topic)
1168 > This paragraph is never omitted, too (for topic)
1158 > """
1169 > """
1159 > def extsetup(ui):
1170 > def extsetup(ui):
1160 > help.helptable.append((["topic-containing-verbose"],
1171 > help.helptable.append((["topic-containing-verbose"],
1161 > "This is the topic to test omit indicating.",
1172 > "This is the topic to test omit indicating.",
1162 > lambda ui: testtopic))
1173 > lambda ui: testtopic))
1163 > EOF
1174 > EOF
1164 $ echo '[extensions]' >> $HGRCPATH
1175 $ echo '[extensions]' >> $HGRCPATH
1165 $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
1176 $ echo "addverboseitems = `pwd`/addverboseitems.py" >> $HGRCPATH
1166 $ hg help addverboseitems
1177 $ hg help addverboseitems
1167 addverboseitems extension - extension to test omit indicating.
1178 addverboseitems extension - extension to test omit indicating.
1168
1179
1169 This paragraph is never omitted (for extension)
1180 This paragraph is never omitted (for extension)
1170
1181
1171 This paragraph is never omitted, too (for extension)
1182 This paragraph is never omitted, too (for extension)
1172
1183
1173 (some details hidden, use --verbose to show complete help)
1184 (some details hidden, use --verbose to show complete help)
1174
1185
1175 no commands defined
1186 no commands defined
1176 $ hg help -v addverboseitems
1187 $ hg help -v addverboseitems
1177 addverboseitems extension - extension to test omit indicating.
1188 addverboseitems extension - extension to test omit indicating.
1178
1189
1179 This paragraph is never omitted (for extension)
1190 This paragraph is never omitted (for extension)
1180
1191
1181 This paragraph is omitted, if "hg help" is invoked without "-v" (for
1192 This paragraph is omitted, if "hg help" is invoked without "-v" (for
1182 extension)
1193 extension)
1183
1194
1184 This paragraph is never omitted, too (for extension)
1195 This paragraph is never omitted, too (for extension)
1185
1196
1186 no commands defined
1197 no commands defined
1187 $ hg help topic-containing-verbose
1198 $ hg help topic-containing-verbose
1188 This is the topic to test omit indicating.
1199 This is the topic to test omit indicating.
1189 """"""""""""""""""""""""""""""""""""""""""
1200 """"""""""""""""""""""""""""""""""""""""""
1190
1201
1191 This paragraph is never omitted (for topic).
1202 This paragraph is never omitted (for topic).
1192
1203
1193 This paragraph is never omitted, too (for topic)
1204 This paragraph is never omitted, too (for topic)
1194
1205
1195 (some details hidden, use --verbose to show complete help)
1206 (some details hidden, use --verbose to show complete help)
1196 $ hg help -v topic-containing-verbose
1207 $ hg help -v topic-containing-verbose
1197 This is the topic to test omit indicating.
1208 This is the topic to test omit indicating.
1198 """"""""""""""""""""""""""""""""""""""""""
1209 """"""""""""""""""""""""""""""""""""""""""
1199
1210
1200 This paragraph is never omitted (for topic).
1211 This paragraph is never omitted (for topic).
1201
1212
1202 This paragraph is omitted, if "hg help" is invoked without "-v" (for
1213 This paragraph is omitted, if "hg help" is invoked without "-v" (for
1203 topic)
1214 topic)
1204
1215
1205 This paragraph is never omitted, too (for topic)
1216 This paragraph is never omitted, too (for topic)
1206
1217
1207 Test section lookup
1218 Test section lookup
1208
1219
1209 $ hg help revset.merge
1220 $ hg help revset.merge
1210 "merge()"
1221 "merge()"
1211 Changeset is a merge changeset.
1222 Changeset is a merge changeset.
1212
1223
1213 $ hg help glossary.dag
1224 $ hg help glossary.dag
1214 DAG
1225 DAG
1215 The repository of changesets of a distributed version control system
1226 The repository of changesets of a distributed version control system
1216 (DVCS) can be described as a directed acyclic graph (DAG), consisting
1227 (DVCS) can be described as a directed acyclic graph (DAG), consisting
1217 of nodes and edges, where nodes correspond to changesets and edges
1228 of nodes and edges, where nodes correspond to changesets and edges
1218 imply a parent -> child relation. This graph can be visualized by
1229 imply a parent -> child relation. This graph can be visualized by
1219 graphical tools such as "hg log --graph". In Mercurial, the DAG is
1230 graphical tools such as "hg log --graph". In Mercurial, the DAG is
1220 limited by the requirement for children to have at most two parents.
1231 limited by the requirement for children to have at most two parents.
1221
1232
1222
1233
1223 $ hg help hgrc.paths
1234 $ hg help hgrc.paths
1224 "paths"
1235 "paths"
1225 -------
1236 -------
1226
1237
1227 Assigns symbolic names and behavior to repositories.
1238 Assigns symbolic names and behavior to repositories.
1228
1239
1229 Options are symbolic names defining the URL or directory that is the
1240 Options are symbolic names defining the URL or directory that is the
1230 location of the repository. Example:
1241 location of the repository. Example:
1231
1242
1232 [paths]
1243 [paths]
1233 my_server = https://example.com/my_repo
1244 my_server = https://example.com/my_repo
1234 local_path = /home/me/repo
1245 local_path = /home/me/repo
1235
1246
1236 These symbolic names can be used from the command line. To pull from
1247 These symbolic names can be used from the command line. To pull from
1237 "my_server": "hg pull my_server". To push to "local_path": "hg push
1248 "my_server": "hg pull my_server". To push to "local_path": "hg push
1238 local_path".
1249 local_path".
1239
1250
1240 Options containing colons (":") denote sub-options that can influence
1251 Options containing colons (":") denote sub-options that can influence
1241 behavior for that specific path. Example:
1252 behavior for that specific path. Example:
1242
1253
1243 [paths]
1254 [paths]
1244 my_server = https://example.com/my_path
1255 my_server = https://example.com/my_path
1245 my_server:pushurl = ssh://example.com/my_path
1256 my_server:pushurl = ssh://example.com/my_path
1246
1257
1247 The following sub-options can be defined:
1258 The following sub-options can be defined:
1248
1259
1249 "pushurl"
1260 "pushurl"
1250 The URL to use for push operations. If not defined, the location
1261 The URL to use for push operations. If not defined, the location
1251 defined by the path's main entry is used.
1262 defined by the path's main entry is used.
1252
1263
1253 The following special named paths exist:
1264 The following special named paths exist:
1254
1265
1255 "default"
1266 "default"
1256 The URL or directory to use when no source or remote is specified.
1267 The URL or directory to use when no source or remote is specified.
1257
1268
1258 "hg clone" will automatically define this path to the location the
1269 "hg clone" will automatically define this path to the location the
1259 repository was cloned from.
1270 repository was cloned from.
1260
1271
1261 "default-push"
1272 "default-push"
1262 (deprecated) The URL or directory for the default "hg push" location.
1273 (deprecated) The URL or directory for the default "hg push" location.
1263 "default:pushurl" should be used instead.
1274 "default:pushurl" should be used instead.
1264
1275
1265 $ hg help glossary.mcguffin
1276 $ hg help glossary.mcguffin
1266 abort: help section not found
1277 abort: help section not found
1267 [255]
1278 [255]
1268
1279
1269 $ hg help glossary.mc.guffin
1280 $ hg help glossary.mc.guffin
1270 abort: help section not found
1281 abort: help section not found
1271 [255]
1282 [255]
1272
1283
1273 $ hg help template.files
1284 $ hg help template.files
1274 files List of strings. All files modified, added, or removed by
1285 files List of strings. All files modified, added, or removed by
1275 this changeset.
1286 this changeset.
1276
1287
1277 Test dynamic list of merge tools only shows up once
1288 Test dynamic list of merge tools only shows up once
1278 $ hg help merge-tools
1289 $ hg help merge-tools
1279 Merge Tools
1290 Merge Tools
1280 """""""""""
1291 """""""""""
1281
1292
1282 To merge files Mercurial uses merge tools.
1293 To merge files Mercurial uses merge tools.
1283
1294
1284 A merge tool combines two different versions of a file into a merged file.
1295 A merge tool combines two different versions of a file into a merged file.
1285 Merge tools are given the two files and the greatest common ancestor of
1296 Merge tools are given the two files and the greatest common ancestor of
1286 the two file versions, so they can determine the changes made on both
1297 the two file versions, so they can determine the changes made on both
1287 branches.
1298 branches.
1288
1299
1289 Merge tools are used both for "hg resolve", "hg merge", "hg update", "hg
1300 Merge tools are used both for "hg resolve", "hg merge", "hg update", "hg
1290 backout" and in several extensions.
1301 backout" and in several extensions.
1291
1302
1292 Usually, the merge tool tries to automatically reconcile the files by
1303 Usually, the merge tool tries to automatically reconcile the files by
1293 combining all non-overlapping changes that occurred separately in the two
1304 combining all non-overlapping changes that occurred separately in the two
1294 different evolutions of the same initial base file. Furthermore, some
1305 different evolutions of the same initial base file. Furthermore, some
1295 interactive merge programs make it easier to manually resolve conflicting
1306 interactive merge programs make it easier to manually resolve conflicting
1296 merges, either in a graphical way, or by inserting some conflict markers.
1307 merges, either in a graphical way, or by inserting some conflict markers.
1297 Mercurial does not include any interactive merge programs but relies on
1308 Mercurial does not include any interactive merge programs but relies on
1298 external tools for that.
1309 external tools for that.
1299
1310
1300 Available merge tools
1311 Available merge tools
1301 =====================
1312 =====================
1302
1313
1303 External merge tools and their properties are configured in the merge-
1314 External merge tools and their properties are configured in the merge-
1304 tools configuration section - see hgrc(5) - but they can often just be
1315 tools configuration section - see hgrc(5) - but they can often just be
1305 named by their executable.
1316 named by their executable.
1306
1317
1307 A merge tool is generally usable if its executable can be found on the
1318 A merge tool is generally usable if its executable can be found on the
1308 system and if it can handle the merge. The executable is found if it is an
1319 system and if it can handle the merge. The executable is found if it is an
1309 absolute or relative executable path or the name of an application in the
1320 absolute or relative executable path or the name of an application in the
1310 executable search path. The tool is assumed to be able to handle the merge
1321 executable search path. The tool is assumed to be able to handle the merge
1311 if it can handle symlinks if the file is a symlink, if it can handle
1322 if it can handle symlinks if the file is a symlink, if it can handle
1312 binary files if the file is binary, and if a GUI is available if the tool
1323 binary files if the file is binary, and if a GUI is available if the tool
1313 requires a GUI.
1324 requires a GUI.
1314
1325
1315 There are some internal merge tools which can be used. The internal merge
1326 There are some internal merge tools which can be used. The internal merge
1316 tools are:
1327 tools are:
1317
1328
1318 ":dump"
1329 ":dump"
1319 Creates three versions of the files to merge, containing the contents of
1330 Creates three versions of the files to merge, containing the contents of
1320 local, other and base. These files can then be used to perform a merge
1331 local, other and base. These files can then be used to perform a merge
1321 manually. If the file to be merged is named "a.txt", these files will
1332 manually. If the file to be merged is named "a.txt", these files will
1322 accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
1333 accordingly be named "a.txt.local", "a.txt.other" and "a.txt.base" and
1323 they will be placed in the same directory as "a.txt".
1334 they will be placed in the same directory as "a.txt".
1324
1335
1325 ":fail"
1336 ":fail"
1326 Rather than attempting to merge files that were modified on both
1337 Rather than attempting to merge files that were modified on both
1327 branches, it marks them as unresolved. The resolve command must be used
1338 branches, it marks them as unresolved. The resolve command must be used
1328 to resolve these conflicts.
1339 to resolve these conflicts.
1329
1340
1330 ":local"
1341 ":local"
1331 Uses the local version of files as the merged version.
1342 Uses the local version of files as the merged version.
1332
1343
1333 ":merge"
1344 ":merge"
1334 Uses the internal non-interactive simple merge algorithm for merging
1345 Uses the internal non-interactive simple merge algorithm for merging
1335 files. It will fail if there are any conflicts and leave markers in the
1346 files. It will fail if there are any conflicts and leave markers in the
1336 partially merged file. Markers will have two sections, one for each side
1347 partially merged file. Markers will have two sections, one for each side
1337 of merge.
1348 of merge.
1338
1349
1339 ":merge-local"
1350 ":merge-local"
1340 Like :merge, but resolve all conflicts non-interactively in favor of the
1351 Like :merge, but resolve all conflicts non-interactively in favor of the
1341 local changes.
1352 local changes.
1342
1353
1343 ":merge-other"
1354 ":merge-other"
1344 Like :merge, but resolve all conflicts non-interactively in favor of the
1355 Like :merge, but resolve all conflicts non-interactively in favor of the
1345 other changes.
1356 other changes.
1346
1357
1347 ":merge3"
1358 ":merge3"
1348 Uses the internal non-interactive simple merge algorithm for merging
1359 Uses the internal non-interactive simple merge algorithm for merging
1349 files. It will fail if there are any conflicts and leave markers in the
1360 files. It will fail if there are any conflicts and leave markers in the
1350 partially merged file. Marker will have three sections, one from each
1361 partially merged file. Marker will have three sections, one from each
1351 side of the merge and one for the base content.
1362 side of the merge and one for the base content.
1352
1363
1353 ":other"
1364 ":other"
1354 Uses the other version of files as the merged version.
1365 Uses the other version of files as the merged version.
1355
1366
1356 ":prompt"
1367 ":prompt"
1357 Asks the user which of the local or the other version to keep as the
1368 Asks the user which of the local or the other version to keep as the
1358 merged version.
1369 merged version.
1359
1370
1360 ":tagmerge"
1371 ":tagmerge"
1361 Uses the internal tag merge algorithm (experimental).
1372 Uses the internal tag merge algorithm (experimental).
1362
1373
1363 ":union"
1374 ":union"
1364 Uses the internal non-interactive simple merge algorithm for merging
1375 Uses the internal non-interactive simple merge algorithm for merging
1365 files. It will use both left and right sides for conflict regions. No
1376 files. It will use both left and right sides for conflict regions. No
1366 markers are inserted.
1377 markers are inserted.
1367
1378
1368 Internal tools are always available and do not require a GUI but will by
1379 Internal tools are always available and do not require a GUI but will by
1369 default not handle symlinks or binary files.
1380 default not handle symlinks or binary files.
1370
1381
1371 Choosing a merge tool
1382 Choosing a merge tool
1372 =====================
1383 =====================
1373
1384
1374 Mercurial uses these rules when deciding which merge tool to use:
1385 Mercurial uses these rules when deciding which merge tool to use:
1375
1386
1376 1. If a tool has been specified with the --tool option to merge or
1387 1. If a tool has been specified with the --tool option to merge or
1377 resolve, it is used. If it is the name of a tool in the merge-tools
1388 resolve, it is used. If it is the name of a tool in the merge-tools
1378 configuration, its configuration is used. Otherwise the specified tool
1389 configuration, its configuration is used. Otherwise the specified tool
1379 must be executable by the shell.
1390 must be executable by the shell.
1380 2. If the "HGMERGE" environment variable is present, its value is used and
1391 2. If the "HGMERGE" environment variable is present, its value is used and
1381 must be executable by the shell.
1392 must be executable by the shell.
1382 3. If the filename of the file to be merged matches any of the patterns in
1393 3. If the filename of the file to be merged matches any of the patterns in
1383 the merge-patterns configuration section, the first usable merge tool
1394 the merge-patterns configuration section, the first usable merge tool
1384 corresponding to a matching pattern is used. Here, binary capabilities
1395 corresponding to a matching pattern is used. Here, binary capabilities
1385 of the merge tool are not considered.
1396 of the merge tool are not considered.
1386 4. If ui.merge is set it will be considered next. If the value is not the
1397 4. If ui.merge is set it will be considered next. If the value is not the
1387 name of a configured tool, the specified value is used and must be
1398 name of a configured tool, the specified value is used and must be
1388 executable by the shell. Otherwise the named tool is used if it is
1399 executable by the shell. Otherwise the named tool is used if it is
1389 usable.
1400 usable.
1390 5. If any usable merge tools are present in the merge-tools configuration
1401 5. If any usable merge tools are present in the merge-tools configuration
1391 section, the one with the highest priority is used.
1402 section, the one with the highest priority is used.
1392 6. If a program named "hgmerge" can be found on the system, it is used -
1403 6. If a program named "hgmerge" can be found on the system, it is used -
1393 but it will by default not be used for symlinks and binary files.
1404 but it will by default not be used for symlinks and binary files.
1394 7. If the file to be merged is not binary and is not a symlink, then
1405 7. If the file to be merged is not binary and is not a symlink, then
1395 internal ":merge" is used.
1406 internal ":merge" is used.
1396 8. The merge of the file fails and must be resolved before commit.
1407 8. The merge of the file fails and must be resolved before commit.
1397
1408
1398 Note:
1409 Note:
1399 After selecting a merge program, Mercurial will by default attempt to
1410 After selecting a merge program, Mercurial will by default attempt to
1400 merge the files using a simple merge algorithm first. Only if it
1411 merge the files using a simple merge algorithm first. Only if it
1401 doesn't succeed because of conflicting changes Mercurial will actually
1412 doesn't succeed because of conflicting changes Mercurial will actually
1402 execute the merge program. Whether to use the simple merge algorithm
1413 execute the merge program. Whether to use the simple merge algorithm
1403 first can be controlled by the premerge setting of the merge tool.
1414 first can be controlled by the premerge setting of the merge tool.
1404 Premerge is enabled by default unless the file is binary or a symlink.
1415 Premerge is enabled by default unless the file is binary or a symlink.
1405
1416
1406 See the merge-tools and ui sections of hgrc(5) for details on the
1417 See the merge-tools and ui sections of hgrc(5) for details on the
1407 configuration of merge tools.
1418 configuration of merge tools.
1408
1419
1409 Test usage of section marks in help documents
1420 Test usage of section marks in help documents
1410
1421
1411 $ cd "$TESTDIR"/../doc
1422 $ cd "$TESTDIR"/../doc
1412 $ python check-seclevel.py
1423 $ python check-seclevel.py
1413 $ cd $TESTTMP
1424 $ cd $TESTTMP
1414
1425
1415 #if serve
1426 #if serve
1416
1427
1417 Test the help pages in hgweb.
1428 Test the help pages in hgweb.
1418
1429
1419 Dish up an empty repo; serve it cold.
1430 Dish up an empty repo; serve it cold.
1420
1431
1421 $ hg init "$TESTTMP/test"
1432 $ hg init "$TESTTMP/test"
1422 $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
1433 $ hg serve -R "$TESTTMP/test" -n test -p $HGPORT -d --pid-file=hg.pid
1423 $ cat hg.pid >> $DAEMON_PIDS
1434 $ cat hg.pid >> $DAEMON_PIDS
1424
1435
1425 $ get-with-headers.py 127.0.0.1:$HGPORT "help"
1436 $ get-with-headers.py 127.0.0.1:$HGPORT "help"
1426 200 Script output follows
1437 200 Script output follows
1427
1438
1428 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1439 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1429 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
1440 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
1430 <head>
1441 <head>
1431 <link rel="icon" href="/static/hgicon.png" type="image/png" />
1442 <link rel="icon" href="/static/hgicon.png" type="image/png" />
1432 <meta name="robots" content="index, nofollow" />
1443 <meta name="robots" content="index, nofollow" />
1433 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
1444 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
1434 <script type="text/javascript" src="/static/mercurial.js"></script>
1445 <script type="text/javascript" src="/static/mercurial.js"></script>
1435
1446
1436 <title>Help: Index</title>
1447 <title>Help: Index</title>
1437 </head>
1448 </head>
1438 <body>
1449 <body>
1439
1450
1440 <div class="container">
1451 <div class="container">
1441 <div class="menu">
1452 <div class="menu">
1442 <div class="logo">
1453 <div class="logo">
1443 <a href="https://mercurial-scm.org/">
1454 <a href="https://mercurial-scm.org/">
1444 <img src="/static/hglogo.png" alt="mercurial" /></a>
1455 <img src="/static/hglogo.png" alt="mercurial" /></a>
1445 </div>
1456 </div>
1446 <ul>
1457 <ul>
1447 <li><a href="/shortlog">log</a></li>
1458 <li><a href="/shortlog">log</a></li>
1448 <li><a href="/graph">graph</a></li>
1459 <li><a href="/graph">graph</a></li>
1449 <li><a href="/tags">tags</a></li>
1460 <li><a href="/tags">tags</a></li>
1450 <li><a href="/bookmarks">bookmarks</a></li>
1461 <li><a href="/bookmarks">bookmarks</a></li>
1451 <li><a href="/branches">branches</a></li>
1462 <li><a href="/branches">branches</a></li>
1452 </ul>
1463 </ul>
1453 <ul>
1464 <ul>
1454 <li class="active">help</li>
1465 <li class="active">help</li>
1455 </ul>
1466 </ul>
1456 </div>
1467 </div>
1457
1468
1458 <div class="main">
1469 <div class="main">
1459 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
1470 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
1460 <form class="search" action="/log">
1471 <form class="search" action="/log">
1461
1472
1462 <p><input name="rev" id="search1" type="text" size="30" /></p>
1473 <p><input name="rev" id="search1" type="text" size="30" /></p>
1463 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
1474 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
1464 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
1475 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
1465 </form>
1476 </form>
1466 <table class="bigtable">
1477 <table class="bigtable">
1467 <tr><td colspan="2"><h2><a name="main" href="#topics">Topics</a></h2></td></tr>
1478 <tr><td colspan="2"><h2><a name="main" href="#topics">Topics</a></h2></td></tr>
1468
1479
1469 <tr><td>
1480 <tr><td>
1470 <a href="/help/config">
1481 <a href="/help/config">
1471 config
1482 config
1472 </a>
1483 </a>
1473 </td><td>
1484 </td><td>
1474 Configuration Files
1485 Configuration Files
1475 </td></tr>
1486 </td></tr>
1476 <tr><td>
1487 <tr><td>
1477 <a href="/help/dates">
1488 <a href="/help/dates">
1478 dates
1489 dates
1479 </a>
1490 </a>
1480 </td><td>
1491 </td><td>
1481 Date Formats
1492 Date Formats
1482 </td></tr>
1493 </td></tr>
1483 <tr><td>
1494 <tr><td>
1484 <a href="/help/diffs">
1495 <a href="/help/diffs">
1485 diffs
1496 diffs
1486 </a>
1497 </a>
1487 </td><td>
1498 </td><td>
1488 Diff Formats
1499 Diff Formats
1489 </td></tr>
1500 </td></tr>
1490 <tr><td>
1501 <tr><td>
1491 <a href="/help/environment">
1502 <a href="/help/environment">
1492 environment
1503 environment
1493 </a>
1504 </a>
1494 </td><td>
1505 </td><td>
1495 Environment Variables
1506 Environment Variables
1496 </td></tr>
1507 </td></tr>
1497 <tr><td>
1508 <tr><td>
1498 <a href="/help/extensions">
1509 <a href="/help/extensions">
1499 extensions
1510 extensions
1500 </a>
1511 </a>
1501 </td><td>
1512 </td><td>
1502 Using Additional Features
1513 Using Additional Features
1503 </td></tr>
1514 </td></tr>
1504 <tr><td>
1515 <tr><td>
1505 <a href="/help/filesets">
1516 <a href="/help/filesets">
1506 filesets
1517 filesets
1507 </a>
1518 </a>
1508 </td><td>
1519 </td><td>
1509 Specifying File Sets
1520 Specifying File Sets
1510 </td></tr>
1521 </td></tr>
1511 <tr><td>
1522 <tr><td>
1512 <a href="/help/glossary">
1523 <a href="/help/glossary">
1513 glossary
1524 glossary
1514 </a>
1525 </a>
1515 </td><td>
1526 </td><td>
1516 Glossary
1527 Glossary
1517 </td></tr>
1528 </td></tr>
1518 <tr><td>
1529 <tr><td>
1519 <a href="/help/hgignore">
1530 <a href="/help/hgignore">
1520 hgignore
1531 hgignore
1521 </a>
1532 </a>
1522 </td><td>
1533 </td><td>
1523 Syntax for Mercurial Ignore Files
1534 Syntax for Mercurial Ignore Files
1524 </td></tr>
1535 </td></tr>
1525 <tr><td>
1536 <tr><td>
1526 <a href="/help/hgweb">
1537 <a href="/help/hgweb">
1527 hgweb
1538 hgweb
1528 </a>
1539 </a>
1529 </td><td>
1540 </td><td>
1530 Configuring hgweb
1541 Configuring hgweb
1531 </td></tr>
1542 </td></tr>
1532 <tr><td>
1543 <tr><td>
1544 <a href="/help/internals">
1545 internals
1546 </a>
1547 </td><td>
1548 Technical implementation topics
1549 </td></tr>
1550 <tr><td>
1533 <a href="/help/merge-tools">
1551 <a href="/help/merge-tools">
1534 merge-tools
1552 merge-tools
1535 </a>
1553 </a>
1536 </td><td>
1554 </td><td>
1537 Merge Tools
1555 Merge Tools
1538 </td></tr>
1556 </td></tr>
1539 <tr><td>
1557 <tr><td>
1540 <a href="/help/multirevs">
1558 <a href="/help/multirevs">
1541 multirevs
1559 multirevs
1542 </a>
1560 </a>
1543 </td><td>
1561 </td><td>
1544 Specifying Multiple Revisions
1562 Specifying Multiple Revisions
1545 </td></tr>
1563 </td></tr>
1546 <tr><td>
1564 <tr><td>
1547 <a href="/help/patterns">
1565 <a href="/help/patterns">
1548 patterns
1566 patterns
1549 </a>
1567 </a>
1550 </td><td>
1568 </td><td>
1551 File Name Patterns
1569 File Name Patterns
1552 </td></tr>
1570 </td></tr>
1553 <tr><td>
1571 <tr><td>
1554 <a href="/help/phases">
1572 <a href="/help/phases">
1555 phases
1573 phases
1556 </a>
1574 </a>
1557 </td><td>
1575 </td><td>
1558 Working with Phases
1576 Working with Phases
1559 </td></tr>
1577 </td></tr>
1560 <tr><td>
1578 <tr><td>
1561 <a href="/help/revisions">
1579 <a href="/help/revisions">
1562 revisions
1580 revisions
1563 </a>
1581 </a>
1564 </td><td>
1582 </td><td>
1565 Specifying Single Revisions
1583 Specifying Single Revisions
1566 </td></tr>
1584 </td></tr>
1567 <tr><td>
1585 <tr><td>
1568 <a href="/help/revsets">
1586 <a href="/help/revsets">
1569 revsets
1587 revsets
1570 </a>
1588 </a>
1571 </td><td>
1589 </td><td>
1572 Specifying Revision Sets
1590 Specifying Revision Sets
1573 </td></tr>
1591 </td></tr>
1574 <tr><td>
1592 <tr><td>
1575 <a href="/help/scripting">
1593 <a href="/help/scripting">
1576 scripting
1594 scripting
1577 </a>
1595 </a>
1578 </td><td>
1596 </td><td>
1579 Using Mercurial from scripts and automation
1597 Using Mercurial from scripts and automation
1580 </td></tr>
1598 </td></tr>
1581 <tr><td>
1599 <tr><td>
1582 <a href="/help/subrepos">
1600 <a href="/help/subrepos">
1583 subrepos
1601 subrepos
1584 </a>
1602 </a>
1585 </td><td>
1603 </td><td>
1586 Subrepositories
1604 Subrepositories
1587 </td></tr>
1605 </td></tr>
1588 <tr><td>
1606 <tr><td>
1589 <a href="/help/templating">
1607 <a href="/help/templating">
1590 templating
1608 templating
1591 </a>
1609 </a>
1592 </td><td>
1610 </td><td>
1593 Template Usage
1611 Template Usage
1594 </td></tr>
1612 </td></tr>
1595 <tr><td>
1613 <tr><td>
1596 <a href="/help/urls">
1614 <a href="/help/urls">
1597 urls
1615 urls
1598 </a>
1616 </a>
1599 </td><td>
1617 </td><td>
1600 URL Paths
1618 URL Paths
1601 </td></tr>
1619 </td></tr>
1602 <tr><td>
1620 <tr><td>
1603 <a href="/help/topic-containing-verbose">
1621 <a href="/help/topic-containing-verbose">
1604 topic-containing-verbose
1622 topic-containing-verbose
1605 </a>
1623 </a>
1606 </td><td>
1624 </td><td>
1607 This is the topic to test omit indicating.
1625 This is the topic to test omit indicating.
1608 </td></tr>
1626 </td></tr>
1609
1627
1610 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
1628 <tr><td colspan="2"><h2><a name="main" href="#main">Main Commands</a></h2></td></tr>
1611
1629
1612 <tr><td>
1630 <tr><td>
1613 <a href="/help/add">
1631 <a href="/help/add">
1614 add
1632 add
1615 </a>
1633 </a>
1616 </td><td>
1634 </td><td>
1617 add the specified files on the next commit
1635 add the specified files on the next commit
1618 </td></tr>
1636 </td></tr>
1619 <tr><td>
1637 <tr><td>
1620 <a href="/help/annotate">
1638 <a href="/help/annotate">
1621 annotate
1639 annotate
1622 </a>
1640 </a>
1623 </td><td>
1641 </td><td>
1624 show changeset information by line for each file
1642 show changeset information by line for each file
1625 </td></tr>
1643 </td></tr>
1626 <tr><td>
1644 <tr><td>
1627 <a href="/help/clone">
1645 <a href="/help/clone">
1628 clone
1646 clone
1629 </a>
1647 </a>
1630 </td><td>
1648 </td><td>
1631 make a copy of an existing repository
1649 make a copy of an existing repository
1632 </td></tr>
1650 </td></tr>
1633 <tr><td>
1651 <tr><td>
1634 <a href="/help/commit">
1652 <a href="/help/commit">
1635 commit
1653 commit
1636 </a>
1654 </a>
1637 </td><td>
1655 </td><td>
1638 commit the specified files or all outstanding changes
1656 commit the specified files or all outstanding changes
1639 </td></tr>
1657 </td></tr>
1640 <tr><td>
1658 <tr><td>
1641 <a href="/help/diff">
1659 <a href="/help/diff">
1642 diff
1660 diff
1643 </a>
1661 </a>
1644 </td><td>
1662 </td><td>
1645 diff repository (or selected files)
1663 diff repository (or selected files)
1646 </td></tr>
1664 </td></tr>
1647 <tr><td>
1665 <tr><td>
1648 <a href="/help/export">
1666 <a href="/help/export">
1649 export
1667 export
1650 </a>
1668 </a>
1651 </td><td>
1669 </td><td>
1652 dump the header and diffs for one or more changesets
1670 dump the header and diffs for one or more changesets
1653 </td></tr>
1671 </td></tr>
1654 <tr><td>
1672 <tr><td>
1655 <a href="/help/forget">
1673 <a href="/help/forget">
1656 forget
1674 forget
1657 </a>
1675 </a>
1658 </td><td>
1676 </td><td>
1659 forget the specified files on the next commit
1677 forget the specified files on the next commit
1660 </td></tr>
1678 </td></tr>
1661 <tr><td>
1679 <tr><td>
1662 <a href="/help/init">
1680 <a href="/help/init">
1663 init
1681 init
1664 </a>
1682 </a>
1665 </td><td>
1683 </td><td>
1666 create a new repository in the given directory
1684 create a new repository in the given directory
1667 </td></tr>
1685 </td></tr>
1668 <tr><td>
1686 <tr><td>
1669 <a href="/help/log">
1687 <a href="/help/log">
1670 log
1688 log
1671 </a>
1689 </a>
1672 </td><td>
1690 </td><td>
1673 show revision history of entire repository or files
1691 show revision history of entire repository or files
1674 </td></tr>
1692 </td></tr>
1675 <tr><td>
1693 <tr><td>
1676 <a href="/help/merge">
1694 <a href="/help/merge">
1677 merge
1695 merge
1678 </a>
1696 </a>
1679 </td><td>
1697 </td><td>
1680 merge another revision into working directory
1698 merge another revision into working directory
1681 </td></tr>
1699 </td></tr>
1682 <tr><td>
1700 <tr><td>
1683 <a href="/help/pull">
1701 <a href="/help/pull">
1684 pull
1702 pull
1685 </a>
1703 </a>
1686 </td><td>
1704 </td><td>
1687 pull changes from the specified source
1705 pull changes from the specified source
1688 </td></tr>
1706 </td></tr>
1689 <tr><td>
1707 <tr><td>
1690 <a href="/help/push">
1708 <a href="/help/push">
1691 push
1709 push
1692 </a>
1710 </a>
1693 </td><td>
1711 </td><td>
1694 push changes to the specified destination
1712 push changes to the specified destination
1695 </td></tr>
1713 </td></tr>
1696 <tr><td>
1714 <tr><td>
1697 <a href="/help/remove">
1715 <a href="/help/remove">
1698 remove
1716 remove
1699 </a>
1717 </a>
1700 </td><td>
1718 </td><td>
1701 remove the specified files on the next commit
1719 remove the specified files on the next commit
1702 </td></tr>
1720 </td></tr>
1703 <tr><td>
1721 <tr><td>
1704 <a href="/help/serve">
1722 <a href="/help/serve">
1705 serve
1723 serve
1706 </a>
1724 </a>
1707 </td><td>
1725 </td><td>
1708 start stand-alone webserver
1726 start stand-alone webserver
1709 </td></tr>
1727 </td></tr>
1710 <tr><td>
1728 <tr><td>
1711 <a href="/help/status">
1729 <a href="/help/status">
1712 status
1730 status
1713 </a>
1731 </a>
1714 </td><td>
1732 </td><td>
1715 show changed files in the working directory
1733 show changed files in the working directory
1716 </td></tr>
1734 </td></tr>
1717 <tr><td>
1735 <tr><td>
1718 <a href="/help/summary">
1736 <a href="/help/summary">
1719 summary
1737 summary
1720 </a>
1738 </a>
1721 </td><td>
1739 </td><td>
1722 summarize working directory state
1740 summarize working directory state
1723 </td></tr>
1741 </td></tr>
1724 <tr><td>
1742 <tr><td>
1725 <a href="/help/update">
1743 <a href="/help/update">
1726 update
1744 update
1727 </a>
1745 </a>
1728 </td><td>
1746 </td><td>
1729 update working directory (or switch revisions)
1747 update working directory (or switch revisions)
1730 </td></tr>
1748 </td></tr>
1731
1749
1732 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
1750 <tr><td colspan="2"><h2><a name="other" href="#other">Other Commands</a></h2></td></tr>
1733
1751
1734 <tr><td>
1752 <tr><td>
1735 <a href="/help/addremove">
1753 <a href="/help/addremove">
1736 addremove
1754 addremove
1737 </a>
1755 </a>
1738 </td><td>
1756 </td><td>
1739 add all new files, delete all missing files
1757 add all new files, delete all missing files
1740 </td></tr>
1758 </td></tr>
1741 <tr><td>
1759 <tr><td>
1742 <a href="/help/archive">
1760 <a href="/help/archive">
1743 archive
1761 archive
1744 </a>
1762 </a>
1745 </td><td>
1763 </td><td>
1746 create an unversioned archive of a repository revision
1764 create an unversioned archive of a repository revision
1747 </td></tr>
1765 </td></tr>
1748 <tr><td>
1766 <tr><td>
1749 <a href="/help/backout">
1767 <a href="/help/backout">
1750 backout
1768 backout
1751 </a>
1769 </a>
1752 </td><td>
1770 </td><td>
1753 reverse effect of earlier changeset
1771 reverse effect of earlier changeset
1754 </td></tr>
1772 </td></tr>
1755 <tr><td>
1773 <tr><td>
1756 <a href="/help/bisect">
1774 <a href="/help/bisect">
1757 bisect
1775 bisect
1758 </a>
1776 </a>
1759 </td><td>
1777 </td><td>
1760 subdivision search of changesets
1778 subdivision search of changesets
1761 </td></tr>
1779 </td></tr>
1762 <tr><td>
1780 <tr><td>
1763 <a href="/help/bookmarks">
1781 <a href="/help/bookmarks">
1764 bookmarks
1782 bookmarks
1765 </a>
1783 </a>
1766 </td><td>
1784 </td><td>
1767 create a new bookmark or list existing bookmarks
1785 create a new bookmark or list existing bookmarks
1768 </td></tr>
1786 </td></tr>
1769 <tr><td>
1787 <tr><td>
1770 <a href="/help/branch">
1788 <a href="/help/branch">
1771 branch
1789 branch
1772 </a>
1790 </a>
1773 </td><td>
1791 </td><td>
1774 set or show the current branch name
1792 set or show the current branch name
1775 </td></tr>
1793 </td></tr>
1776 <tr><td>
1794 <tr><td>
1777 <a href="/help/branches">
1795 <a href="/help/branches">
1778 branches
1796 branches
1779 </a>
1797 </a>
1780 </td><td>
1798 </td><td>
1781 list repository named branches
1799 list repository named branches
1782 </td></tr>
1800 </td></tr>
1783 <tr><td>
1801 <tr><td>
1784 <a href="/help/bundle">
1802 <a href="/help/bundle">
1785 bundle
1803 bundle
1786 </a>
1804 </a>
1787 </td><td>
1805 </td><td>
1788 create a changegroup file
1806 create a changegroup file
1789 </td></tr>
1807 </td></tr>
1790 <tr><td>
1808 <tr><td>
1791 <a href="/help/cat">
1809 <a href="/help/cat">
1792 cat
1810 cat
1793 </a>
1811 </a>
1794 </td><td>
1812 </td><td>
1795 output the current or given revision of files
1813 output the current or given revision of files
1796 </td></tr>
1814 </td></tr>
1797 <tr><td>
1815 <tr><td>
1798 <a href="/help/config">
1816 <a href="/help/config">
1799 config
1817 config
1800 </a>
1818 </a>
1801 </td><td>
1819 </td><td>
1802 show combined config settings from all hgrc files
1820 show combined config settings from all hgrc files
1803 </td></tr>
1821 </td></tr>
1804 <tr><td>
1822 <tr><td>
1805 <a href="/help/copy">
1823 <a href="/help/copy">
1806 copy
1824 copy
1807 </a>
1825 </a>
1808 </td><td>
1826 </td><td>
1809 mark files as copied for the next commit
1827 mark files as copied for the next commit
1810 </td></tr>
1828 </td></tr>
1811 <tr><td>
1829 <tr><td>
1812 <a href="/help/files">
1830 <a href="/help/files">
1813 files
1831 files
1814 </a>
1832 </a>
1815 </td><td>
1833 </td><td>
1816 list tracked files
1834 list tracked files
1817 </td></tr>
1835 </td></tr>
1818 <tr><td>
1836 <tr><td>
1819 <a href="/help/graft">
1837 <a href="/help/graft">
1820 graft
1838 graft
1821 </a>
1839 </a>
1822 </td><td>
1840 </td><td>
1823 copy changes from other branches onto the current branch
1841 copy changes from other branches onto the current branch
1824 </td></tr>
1842 </td></tr>
1825 <tr><td>
1843 <tr><td>
1826 <a href="/help/grep">
1844 <a href="/help/grep">
1827 grep
1845 grep
1828 </a>
1846 </a>
1829 </td><td>
1847 </td><td>
1830 search for a pattern in specified files and revisions
1848 search for a pattern in specified files and revisions
1831 </td></tr>
1849 </td></tr>
1832 <tr><td>
1850 <tr><td>
1833 <a href="/help/heads">
1851 <a href="/help/heads">
1834 heads
1852 heads
1835 </a>
1853 </a>
1836 </td><td>
1854 </td><td>
1837 show branch heads
1855 show branch heads
1838 </td></tr>
1856 </td></tr>
1839 <tr><td>
1857 <tr><td>
1840 <a href="/help/help">
1858 <a href="/help/help">
1841 help
1859 help
1842 </a>
1860 </a>
1843 </td><td>
1861 </td><td>
1844 show help for a given topic or a help overview
1862 show help for a given topic or a help overview
1845 </td></tr>
1863 </td></tr>
1846 <tr><td>
1864 <tr><td>
1847 <a href="/help/identify">
1865 <a href="/help/identify">
1848 identify
1866 identify
1849 </a>
1867 </a>
1850 </td><td>
1868 </td><td>
1851 identify the working directory or specified revision
1869 identify the working directory or specified revision
1852 </td></tr>
1870 </td></tr>
1853 <tr><td>
1871 <tr><td>
1854 <a href="/help/import">
1872 <a href="/help/import">
1855 import
1873 import
1856 </a>
1874 </a>
1857 </td><td>
1875 </td><td>
1858 import an ordered set of patches
1876 import an ordered set of patches
1859 </td></tr>
1877 </td></tr>
1860 <tr><td>
1878 <tr><td>
1861 <a href="/help/incoming">
1879 <a href="/help/incoming">
1862 incoming
1880 incoming
1863 </a>
1881 </a>
1864 </td><td>
1882 </td><td>
1865 show new changesets found in source
1883 show new changesets found in source
1866 </td></tr>
1884 </td></tr>
1867 <tr><td>
1885 <tr><td>
1868 <a href="/help/manifest">
1886 <a href="/help/manifest">
1869 manifest
1887 manifest
1870 </a>
1888 </a>
1871 </td><td>
1889 </td><td>
1872 output the current or given revision of the project manifest
1890 output the current or given revision of the project manifest
1873 </td></tr>
1891 </td></tr>
1874 <tr><td>
1892 <tr><td>
1875 <a href="/help/nohelp">
1893 <a href="/help/nohelp">
1876 nohelp
1894 nohelp
1877 </a>
1895 </a>
1878 </td><td>
1896 </td><td>
1879 (no help text available)
1897 (no help text available)
1880 </td></tr>
1898 </td></tr>
1881 <tr><td>
1899 <tr><td>
1882 <a href="/help/outgoing">
1900 <a href="/help/outgoing">
1883 outgoing
1901 outgoing
1884 </a>
1902 </a>
1885 </td><td>
1903 </td><td>
1886 show changesets not found in the destination
1904 show changesets not found in the destination
1887 </td></tr>
1905 </td></tr>
1888 <tr><td>
1906 <tr><td>
1889 <a href="/help/paths">
1907 <a href="/help/paths">
1890 paths
1908 paths
1891 </a>
1909 </a>
1892 </td><td>
1910 </td><td>
1893 show aliases for remote repositories
1911 show aliases for remote repositories
1894 </td></tr>
1912 </td></tr>
1895 <tr><td>
1913 <tr><td>
1896 <a href="/help/phase">
1914 <a href="/help/phase">
1897 phase
1915 phase
1898 </a>
1916 </a>
1899 </td><td>
1917 </td><td>
1900 set or show the current phase name
1918 set or show the current phase name
1901 </td></tr>
1919 </td></tr>
1902 <tr><td>
1920 <tr><td>
1903 <a href="/help/recover">
1921 <a href="/help/recover">
1904 recover
1922 recover
1905 </a>
1923 </a>
1906 </td><td>
1924 </td><td>
1907 roll back an interrupted transaction
1925 roll back an interrupted transaction
1908 </td></tr>
1926 </td></tr>
1909 <tr><td>
1927 <tr><td>
1910 <a href="/help/rename">
1928 <a href="/help/rename">
1911 rename
1929 rename
1912 </a>
1930 </a>
1913 </td><td>
1931 </td><td>
1914 rename files; equivalent of copy + remove
1932 rename files; equivalent of copy + remove
1915 </td></tr>
1933 </td></tr>
1916 <tr><td>
1934 <tr><td>
1917 <a href="/help/resolve">
1935 <a href="/help/resolve">
1918 resolve
1936 resolve
1919 </a>
1937 </a>
1920 </td><td>
1938 </td><td>
1921 redo merges or set/view the merge status of files
1939 redo merges or set/view the merge status of files
1922 </td></tr>
1940 </td></tr>
1923 <tr><td>
1941 <tr><td>
1924 <a href="/help/revert">
1942 <a href="/help/revert">
1925 revert
1943 revert
1926 </a>
1944 </a>
1927 </td><td>
1945 </td><td>
1928 restore files to their checkout state
1946 restore files to their checkout state
1929 </td></tr>
1947 </td></tr>
1930 <tr><td>
1948 <tr><td>
1931 <a href="/help/root">
1949 <a href="/help/root">
1932 root
1950 root
1933 </a>
1951 </a>
1934 </td><td>
1952 </td><td>
1935 print the root (top) of the current working directory
1953 print the root (top) of the current working directory
1936 </td></tr>
1954 </td></tr>
1937 <tr><td>
1955 <tr><td>
1938 <a href="/help/tag">
1956 <a href="/help/tag">
1939 tag
1957 tag
1940 </a>
1958 </a>
1941 </td><td>
1959 </td><td>
1942 add one or more tags for the current or given revision
1960 add one or more tags for the current or given revision
1943 </td></tr>
1961 </td></tr>
1944 <tr><td>
1962 <tr><td>
1945 <a href="/help/tags">
1963 <a href="/help/tags">
1946 tags
1964 tags
1947 </a>
1965 </a>
1948 </td><td>
1966 </td><td>
1949 list repository tags
1967 list repository tags
1950 </td></tr>
1968 </td></tr>
1951 <tr><td>
1969 <tr><td>
1952 <a href="/help/unbundle">
1970 <a href="/help/unbundle">
1953 unbundle
1971 unbundle
1954 </a>
1972 </a>
1955 </td><td>
1973 </td><td>
1956 apply one or more changegroup files
1974 apply one or more changegroup files
1957 </td></tr>
1975 </td></tr>
1958 <tr><td>
1976 <tr><td>
1959 <a href="/help/verify">
1977 <a href="/help/verify">
1960 verify
1978 verify
1961 </a>
1979 </a>
1962 </td><td>
1980 </td><td>
1963 verify the integrity of the repository
1981 verify the integrity of the repository
1964 </td></tr>
1982 </td></tr>
1965 <tr><td>
1983 <tr><td>
1966 <a href="/help/version">
1984 <a href="/help/version">
1967 version
1985 version
1968 </a>
1986 </a>
1969 </td><td>
1987 </td><td>
1970 output version and copyright information
1988 output version and copyright information
1971 </td></tr>
1989 </td></tr>
1972 </table>
1990 </table>
1973 </div>
1991 </div>
1974 </div>
1992 </div>
1975
1993
1976 <script type="text/javascript">process_dates()</script>
1994 <script type="text/javascript">process_dates()</script>
1977
1995
1978
1996
1979 </body>
1997 </body>
1980 </html>
1998 </html>
1981
1999
1982
2000
1983 $ get-with-headers.py 127.0.0.1:$HGPORT "help/add"
2001 $ get-with-headers.py 127.0.0.1:$HGPORT "help/add"
1984 200 Script output follows
2002 200 Script output follows
1985
2003
1986 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2004 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
1987 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2005 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
1988 <head>
2006 <head>
1989 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2007 <link rel="icon" href="/static/hgicon.png" type="image/png" />
1990 <meta name="robots" content="index, nofollow" />
2008 <meta name="robots" content="index, nofollow" />
1991 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2009 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
1992 <script type="text/javascript" src="/static/mercurial.js"></script>
2010 <script type="text/javascript" src="/static/mercurial.js"></script>
1993
2011
1994 <title>Help: add</title>
2012 <title>Help: add</title>
1995 </head>
2013 </head>
1996 <body>
2014 <body>
1997
2015
1998 <div class="container">
2016 <div class="container">
1999 <div class="menu">
2017 <div class="menu">
2000 <div class="logo">
2018 <div class="logo">
2001 <a href="https://mercurial-scm.org/">
2019 <a href="https://mercurial-scm.org/">
2002 <img src="/static/hglogo.png" alt="mercurial" /></a>
2020 <img src="/static/hglogo.png" alt="mercurial" /></a>
2003 </div>
2021 </div>
2004 <ul>
2022 <ul>
2005 <li><a href="/shortlog">log</a></li>
2023 <li><a href="/shortlog">log</a></li>
2006 <li><a href="/graph">graph</a></li>
2024 <li><a href="/graph">graph</a></li>
2007 <li><a href="/tags">tags</a></li>
2025 <li><a href="/tags">tags</a></li>
2008 <li><a href="/bookmarks">bookmarks</a></li>
2026 <li><a href="/bookmarks">bookmarks</a></li>
2009 <li><a href="/branches">branches</a></li>
2027 <li><a href="/branches">branches</a></li>
2010 </ul>
2028 </ul>
2011 <ul>
2029 <ul>
2012 <li class="active"><a href="/help">help</a></li>
2030 <li class="active"><a href="/help">help</a></li>
2013 </ul>
2031 </ul>
2014 </div>
2032 </div>
2015
2033
2016 <div class="main">
2034 <div class="main">
2017 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2035 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2018 <h3>Help: add</h3>
2036 <h3>Help: add</h3>
2019
2037
2020 <form class="search" action="/log">
2038 <form class="search" action="/log">
2021
2039
2022 <p><input name="rev" id="search1" type="text" size="30" /></p>
2040 <p><input name="rev" id="search1" type="text" size="30" /></p>
2023 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2041 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2024 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2042 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2025 </form>
2043 </form>
2026 <div id="doc">
2044 <div id="doc">
2027 <p>
2045 <p>
2028 hg add [OPTION]... [FILE]...
2046 hg add [OPTION]... [FILE]...
2029 </p>
2047 </p>
2030 <p>
2048 <p>
2031 add the specified files on the next commit
2049 add the specified files on the next commit
2032 </p>
2050 </p>
2033 <p>
2051 <p>
2034 Schedule files to be version controlled and added to the
2052 Schedule files to be version controlled and added to the
2035 repository.
2053 repository.
2036 </p>
2054 </p>
2037 <p>
2055 <p>
2038 The files will be added to the repository at the next commit. To
2056 The files will be added to the repository at the next commit. To
2039 undo an add before that, see &quot;hg forget&quot;.
2057 undo an add before that, see &quot;hg forget&quot;.
2040 </p>
2058 </p>
2041 <p>
2059 <p>
2042 If no names are given, add all files to the repository.
2060 If no names are given, add all files to the repository.
2043 </p>
2061 </p>
2044 <p>
2062 <p>
2045 Examples:
2063 Examples:
2046 </p>
2064 </p>
2047 <ul>
2065 <ul>
2048 <li> New (unknown) files are added automatically by &quot;hg add&quot;:
2066 <li> New (unknown) files are added automatically by &quot;hg add&quot;:
2049 <pre>
2067 <pre>
2050 \$ ls (re)
2068 \$ ls (re)
2051 foo.c
2069 foo.c
2052 \$ hg status (re)
2070 \$ hg status (re)
2053 ? foo.c
2071 ? foo.c
2054 \$ hg add (re)
2072 \$ hg add (re)
2055 adding foo.c
2073 adding foo.c
2056 \$ hg status (re)
2074 \$ hg status (re)
2057 A foo.c
2075 A foo.c
2058 </pre>
2076 </pre>
2059 <li> Specific files to be added can be specified:
2077 <li> Specific files to be added can be specified:
2060 <pre>
2078 <pre>
2061 \$ ls (re)
2079 \$ ls (re)
2062 bar.c foo.c
2080 bar.c foo.c
2063 \$ hg status (re)
2081 \$ hg status (re)
2064 ? bar.c
2082 ? bar.c
2065 ? foo.c
2083 ? foo.c
2066 \$ hg add bar.c (re)
2084 \$ hg add bar.c (re)
2067 \$ hg status (re)
2085 \$ hg status (re)
2068 A bar.c
2086 A bar.c
2069 ? foo.c
2087 ? foo.c
2070 </pre>
2088 </pre>
2071 </ul>
2089 </ul>
2072 <p>
2090 <p>
2073 Returns 0 if all files are successfully added.
2091 Returns 0 if all files are successfully added.
2074 </p>
2092 </p>
2075 <p>
2093 <p>
2076 options ([+] can be repeated):
2094 options ([+] can be repeated):
2077 </p>
2095 </p>
2078 <table>
2096 <table>
2079 <tr><td>-I</td>
2097 <tr><td>-I</td>
2080 <td>--include PATTERN [+]</td>
2098 <td>--include PATTERN [+]</td>
2081 <td>include names matching the given patterns</td></tr>
2099 <td>include names matching the given patterns</td></tr>
2082 <tr><td>-X</td>
2100 <tr><td>-X</td>
2083 <td>--exclude PATTERN [+]</td>
2101 <td>--exclude PATTERN [+]</td>
2084 <td>exclude names matching the given patterns</td></tr>
2102 <td>exclude names matching the given patterns</td></tr>
2085 <tr><td>-S</td>
2103 <tr><td>-S</td>
2086 <td>--subrepos</td>
2104 <td>--subrepos</td>
2087 <td>recurse into subrepositories</td></tr>
2105 <td>recurse into subrepositories</td></tr>
2088 <tr><td>-n</td>
2106 <tr><td>-n</td>
2089 <td>--dry-run</td>
2107 <td>--dry-run</td>
2090 <td>do not perform actions, just print output</td></tr>
2108 <td>do not perform actions, just print output</td></tr>
2091 </table>
2109 </table>
2092 <p>
2110 <p>
2093 global options ([+] can be repeated):
2111 global options ([+] can be repeated):
2094 </p>
2112 </p>
2095 <table>
2113 <table>
2096 <tr><td>-R</td>
2114 <tr><td>-R</td>
2097 <td>--repository REPO</td>
2115 <td>--repository REPO</td>
2098 <td>repository root directory or name of overlay bundle file</td></tr>
2116 <td>repository root directory or name of overlay bundle file</td></tr>
2099 <tr><td></td>
2117 <tr><td></td>
2100 <td>--cwd DIR</td>
2118 <td>--cwd DIR</td>
2101 <td>change working directory</td></tr>
2119 <td>change working directory</td></tr>
2102 <tr><td>-y</td>
2120 <tr><td>-y</td>
2103 <td>--noninteractive</td>
2121 <td>--noninteractive</td>
2104 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2122 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2105 <tr><td>-q</td>
2123 <tr><td>-q</td>
2106 <td>--quiet</td>
2124 <td>--quiet</td>
2107 <td>suppress output</td></tr>
2125 <td>suppress output</td></tr>
2108 <tr><td>-v</td>
2126 <tr><td>-v</td>
2109 <td>--verbose</td>
2127 <td>--verbose</td>
2110 <td>enable additional output</td></tr>
2128 <td>enable additional output</td></tr>
2111 <tr><td></td>
2129 <tr><td></td>
2112 <td>--config CONFIG [+]</td>
2130 <td>--config CONFIG [+]</td>
2113 <td>set/override config option (use 'section.name=value')</td></tr>
2131 <td>set/override config option (use 'section.name=value')</td></tr>
2114 <tr><td></td>
2132 <tr><td></td>
2115 <td>--debug</td>
2133 <td>--debug</td>
2116 <td>enable debugging output</td></tr>
2134 <td>enable debugging output</td></tr>
2117 <tr><td></td>
2135 <tr><td></td>
2118 <td>--debugger</td>
2136 <td>--debugger</td>
2119 <td>start debugger</td></tr>
2137 <td>start debugger</td></tr>
2120 <tr><td></td>
2138 <tr><td></td>
2121 <td>--encoding ENCODE</td>
2139 <td>--encoding ENCODE</td>
2122 <td>set the charset encoding (default: ascii)</td></tr>
2140 <td>set the charset encoding (default: ascii)</td></tr>
2123 <tr><td></td>
2141 <tr><td></td>
2124 <td>--encodingmode MODE</td>
2142 <td>--encodingmode MODE</td>
2125 <td>set the charset encoding mode (default: strict)</td></tr>
2143 <td>set the charset encoding mode (default: strict)</td></tr>
2126 <tr><td></td>
2144 <tr><td></td>
2127 <td>--traceback</td>
2145 <td>--traceback</td>
2128 <td>always print a traceback on exception</td></tr>
2146 <td>always print a traceback on exception</td></tr>
2129 <tr><td></td>
2147 <tr><td></td>
2130 <td>--time</td>
2148 <td>--time</td>
2131 <td>time how long the command takes</td></tr>
2149 <td>time how long the command takes</td></tr>
2132 <tr><td></td>
2150 <tr><td></td>
2133 <td>--profile</td>
2151 <td>--profile</td>
2134 <td>print command execution profile</td></tr>
2152 <td>print command execution profile</td></tr>
2135 <tr><td></td>
2153 <tr><td></td>
2136 <td>--version</td>
2154 <td>--version</td>
2137 <td>output version information and exit</td></tr>
2155 <td>output version information and exit</td></tr>
2138 <tr><td>-h</td>
2156 <tr><td>-h</td>
2139 <td>--help</td>
2157 <td>--help</td>
2140 <td>display help and exit</td></tr>
2158 <td>display help and exit</td></tr>
2141 <tr><td></td>
2159 <tr><td></td>
2142 <td>--hidden</td>
2160 <td>--hidden</td>
2143 <td>consider hidden changesets</td></tr>
2161 <td>consider hidden changesets</td></tr>
2144 </table>
2162 </table>
2145
2163
2146 </div>
2164 </div>
2147 </div>
2165 </div>
2148 </div>
2166 </div>
2149
2167
2150 <script type="text/javascript">process_dates()</script>
2168 <script type="text/javascript">process_dates()</script>
2151
2169
2152
2170
2153 </body>
2171 </body>
2154 </html>
2172 </html>
2155
2173
2156
2174
2157 $ get-with-headers.py 127.0.0.1:$HGPORT "help/remove"
2175 $ get-with-headers.py 127.0.0.1:$HGPORT "help/remove"
2158 200 Script output follows
2176 200 Script output follows
2159
2177
2160 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2178 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2161 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2179 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2162 <head>
2180 <head>
2163 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2181 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2164 <meta name="robots" content="index, nofollow" />
2182 <meta name="robots" content="index, nofollow" />
2165 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2183 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2166 <script type="text/javascript" src="/static/mercurial.js"></script>
2184 <script type="text/javascript" src="/static/mercurial.js"></script>
2167
2185
2168 <title>Help: remove</title>
2186 <title>Help: remove</title>
2169 </head>
2187 </head>
2170 <body>
2188 <body>
2171
2189
2172 <div class="container">
2190 <div class="container">
2173 <div class="menu">
2191 <div class="menu">
2174 <div class="logo">
2192 <div class="logo">
2175 <a href="https://mercurial-scm.org/">
2193 <a href="https://mercurial-scm.org/">
2176 <img src="/static/hglogo.png" alt="mercurial" /></a>
2194 <img src="/static/hglogo.png" alt="mercurial" /></a>
2177 </div>
2195 </div>
2178 <ul>
2196 <ul>
2179 <li><a href="/shortlog">log</a></li>
2197 <li><a href="/shortlog">log</a></li>
2180 <li><a href="/graph">graph</a></li>
2198 <li><a href="/graph">graph</a></li>
2181 <li><a href="/tags">tags</a></li>
2199 <li><a href="/tags">tags</a></li>
2182 <li><a href="/bookmarks">bookmarks</a></li>
2200 <li><a href="/bookmarks">bookmarks</a></li>
2183 <li><a href="/branches">branches</a></li>
2201 <li><a href="/branches">branches</a></li>
2184 </ul>
2202 </ul>
2185 <ul>
2203 <ul>
2186 <li class="active"><a href="/help">help</a></li>
2204 <li class="active"><a href="/help">help</a></li>
2187 </ul>
2205 </ul>
2188 </div>
2206 </div>
2189
2207
2190 <div class="main">
2208 <div class="main">
2191 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2209 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2192 <h3>Help: remove</h3>
2210 <h3>Help: remove</h3>
2193
2211
2194 <form class="search" action="/log">
2212 <form class="search" action="/log">
2195
2213
2196 <p><input name="rev" id="search1" type="text" size="30" /></p>
2214 <p><input name="rev" id="search1" type="text" size="30" /></p>
2197 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2215 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2198 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2216 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2199 </form>
2217 </form>
2200 <div id="doc">
2218 <div id="doc">
2201 <p>
2219 <p>
2202 hg remove [OPTION]... FILE...
2220 hg remove [OPTION]... FILE...
2203 </p>
2221 </p>
2204 <p>
2222 <p>
2205 aliases: rm
2223 aliases: rm
2206 </p>
2224 </p>
2207 <p>
2225 <p>
2208 remove the specified files on the next commit
2226 remove the specified files on the next commit
2209 </p>
2227 </p>
2210 <p>
2228 <p>
2211 Schedule the indicated files for removal from the current branch.
2229 Schedule the indicated files for removal from the current branch.
2212 </p>
2230 </p>
2213 <p>
2231 <p>
2214 This command schedules the files to be removed at the next commit.
2232 This command schedules the files to be removed at the next commit.
2215 To undo a remove before that, see &quot;hg revert&quot;. To undo added
2233 To undo a remove before that, see &quot;hg revert&quot;. To undo added
2216 files, see &quot;hg forget&quot;.
2234 files, see &quot;hg forget&quot;.
2217 </p>
2235 </p>
2218 <p>
2236 <p>
2219 -A/--after can be used to remove only files that have already
2237 -A/--after can be used to remove only files that have already
2220 been deleted, -f/--force can be used to force deletion, and -Af
2238 been deleted, -f/--force can be used to force deletion, and -Af
2221 can be used to remove files from the next revision without
2239 can be used to remove files from the next revision without
2222 deleting them from the working directory.
2240 deleting them from the working directory.
2223 </p>
2241 </p>
2224 <p>
2242 <p>
2225 The following table details the behavior of remove for different
2243 The following table details the behavior of remove for different
2226 file states (columns) and option combinations (rows). The file
2244 file states (columns) and option combinations (rows). The file
2227 states are Added [A], Clean [C], Modified [M] and Missing [!]
2245 states are Added [A], Clean [C], Modified [M] and Missing [!]
2228 (as reported by &quot;hg status&quot;). The actions are Warn, Remove
2246 (as reported by &quot;hg status&quot;). The actions are Warn, Remove
2229 (from branch) and Delete (from disk):
2247 (from branch) and Delete (from disk):
2230 </p>
2248 </p>
2231 <table>
2249 <table>
2232 <tr><td>opt/state</td>
2250 <tr><td>opt/state</td>
2233 <td>A</td>
2251 <td>A</td>
2234 <td>C</td>
2252 <td>C</td>
2235 <td>M</td>
2253 <td>M</td>
2236 <td>!</td></tr>
2254 <td>!</td></tr>
2237 <tr><td>none</td>
2255 <tr><td>none</td>
2238 <td>W</td>
2256 <td>W</td>
2239 <td>RD</td>
2257 <td>RD</td>
2240 <td>W</td>
2258 <td>W</td>
2241 <td>R</td></tr>
2259 <td>R</td></tr>
2242 <tr><td>-f</td>
2260 <tr><td>-f</td>
2243 <td>R</td>
2261 <td>R</td>
2244 <td>RD</td>
2262 <td>RD</td>
2245 <td>RD</td>
2263 <td>RD</td>
2246 <td>R</td></tr>
2264 <td>R</td></tr>
2247 <tr><td>-A</td>
2265 <tr><td>-A</td>
2248 <td>W</td>
2266 <td>W</td>
2249 <td>W</td>
2267 <td>W</td>
2250 <td>W</td>
2268 <td>W</td>
2251 <td>R</td></tr>
2269 <td>R</td></tr>
2252 <tr><td>-Af</td>
2270 <tr><td>-Af</td>
2253 <td>R</td>
2271 <td>R</td>
2254 <td>R</td>
2272 <td>R</td>
2255 <td>R</td>
2273 <td>R</td>
2256 <td>R</td></tr>
2274 <td>R</td></tr>
2257 </table>
2275 </table>
2258 <p>
2276 <p>
2259 Note that remove never deletes files in Added [A] state from the
2277 Note that remove never deletes files in Added [A] state from the
2260 working directory, not even if option --force is specified.
2278 working directory, not even if option --force is specified.
2261 </p>
2279 </p>
2262 <p>
2280 <p>
2263 Returns 0 on success, 1 if any warnings encountered.
2281 Returns 0 on success, 1 if any warnings encountered.
2264 </p>
2282 </p>
2265 <p>
2283 <p>
2266 options ([+] can be repeated):
2284 options ([+] can be repeated):
2267 </p>
2285 </p>
2268 <table>
2286 <table>
2269 <tr><td>-A</td>
2287 <tr><td>-A</td>
2270 <td>--after</td>
2288 <td>--after</td>
2271 <td>record delete for missing files</td></tr>
2289 <td>record delete for missing files</td></tr>
2272 <tr><td>-f</td>
2290 <tr><td>-f</td>
2273 <td>--force</td>
2291 <td>--force</td>
2274 <td>remove (and delete) file even if added or modified</td></tr>
2292 <td>remove (and delete) file even if added or modified</td></tr>
2275 <tr><td>-S</td>
2293 <tr><td>-S</td>
2276 <td>--subrepos</td>
2294 <td>--subrepos</td>
2277 <td>recurse into subrepositories</td></tr>
2295 <td>recurse into subrepositories</td></tr>
2278 <tr><td>-I</td>
2296 <tr><td>-I</td>
2279 <td>--include PATTERN [+]</td>
2297 <td>--include PATTERN [+]</td>
2280 <td>include names matching the given patterns</td></tr>
2298 <td>include names matching the given patterns</td></tr>
2281 <tr><td>-X</td>
2299 <tr><td>-X</td>
2282 <td>--exclude PATTERN [+]</td>
2300 <td>--exclude PATTERN [+]</td>
2283 <td>exclude names matching the given patterns</td></tr>
2301 <td>exclude names matching the given patterns</td></tr>
2284 </table>
2302 </table>
2285 <p>
2303 <p>
2286 global options ([+] can be repeated):
2304 global options ([+] can be repeated):
2287 </p>
2305 </p>
2288 <table>
2306 <table>
2289 <tr><td>-R</td>
2307 <tr><td>-R</td>
2290 <td>--repository REPO</td>
2308 <td>--repository REPO</td>
2291 <td>repository root directory or name of overlay bundle file</td></tr>
2309 <td>repository root directory or name of overlay bundle file</td></tr>
2292 <tr><td></td>
2310 <tr><td></td>
2293 <td>--cwd DIR</td>
2311 <td>--cwd DIR</td>
2294 <td>change working directory</td></tr>
2312 <td>change working directory</td></tr>
2295 <tr><td>-y</td>
2313 <tr><td>-y</td>
2296 <td>--noninteractive</td>
2314 <td>--noninteractive</td>
2297 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2315 <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
2298 <tr><td>-q</td>
2316 <tr><td>-q</td>
2299 <td>--quiet</td>
2317 <td>--quiet</td>
2300 <td>suppress output</td></tr>
2318 <td>suppress output</td></tr>
2301 <tr><td>-v</td>
2319 <tr><td>-v</td>
2302 <td>--verbose</td>
2320 <td>--verbose</td>
2303 <td>enable additional output</td></tr>
2321 <td>enable additional output</td></tr>
2304 <tr><td></td>
2322 <tr><td></td>
2305 <td>--config CONFIG [+]</td>
2323 <td>--config CONFIG [+]</td>
2306 <td>set/override config option (use 'section.name=value')</td></tr>
2324 <td>set/override config option (use 'section.name=value')</td></tr>
2307 <tr><td></td>
2325 <tr><td></td>
2308 <td>--debug</td>
2326 <td>--debug</td>
2309 <td>enable debugging output</td></tr>
2327 <td>enable debugging output</td></tr>
2310 <tr><td></td>
2328 <tr><td></td>
2311 <td>--debugger</td>
2329 <td>--debugger</td>
2312 <td>start debugger</td></tr>
2330 <td>start debugger</td></tr>
2313 <tr><td></td>
2331 <tr><td></td>
2314 <td>--encoding ENCODE</td>
2332 <td>--encoding ENCODE</td>
2315 <td>set the charset encoding (default: ascii)</td></tr>
2333 <td>set the charset encoding (default: ascii)</td></tr>
2316 <tr><td></td>
2334 <tr><td></td>
2317 <td>--encodingmode MODE</td>
2335 <td>--encodingmode MODE</td>
2318 <td>set the charset encoding mode (default: strict)</td></tr>
2336 <td>set the charset encoding mode (default: strict)</td></tr>
2319 <tr><td></td>
2337 <tr><td></td>
2320 <td>--traceback</td>
2338 <td>--traceback</td>
2321 <td>always print a traceback on exception</td></tr>
2339 <td>always print a traceback on exception</td></tr>
2322 <tr><td></td>
2340 <tr><td></td>
2323 <td>--time</td>
2341 <td>--time</td>
2324 <td>time how long the command takes</td></tr>
2342 <td>time how long the command takes</td></tr>
2325 <tr><td></td>
2343 <tr><td></td>
2326 <td>--profile</td>
2344 <td>--profile</td>
2327 <td>print command execution profile</td></tr>
2345 <td>print command execution profile</td></tr>
2328 <tr><td></td>
2346 <tr><td></td>
2329 <td>--version</td>
2347 <td>--version</td>
2330 <td>output version information and exit</td></tr>
2348 <td>output version information and exit</td></tr>
2331 <tr><td>-h</td>
2349 <tr><td>-h</td>
2332 <td>--help</td>
2350 <td>--help</td>
2333 <td>display help and exit</td></tr>
2351 <td>display help and exit</td></tr>
2334 <tr><td></td>
2352 <tr><td></td>
2335 <td>--hidden</td>
2353 <td>--hidden</td>
2336 <td>consider hidden changesets</td></tr>
2354 <td>consider hidden changesets</td></tr>
2337 </table>
2355 </table>
2338
2356
2339 </div>
2357 </div>
2340 </div>
2358 </div>
2341 </div>
2359 </div>
2342
2360
2343 <script type="text/javascript">process_dates()</script>
2361 <script type="text/javascript">process_dates()</script>
2344
2362
2345
2363
2346 </body>
2364 </body>
2347 </html>
2365 </html>
2348
2366
2349
2367
2350 $ get-with-headers.py 127.0.0.1:$HGPORT "help/revisions"
2368 $ get-with-headers.py 127.0.0.1:$HGPORT "help/revisions"
2351 200 Script output follows
2369 200 Script output follows
2352
2370
2353 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2371 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
2354 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2372 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
2355 <head>
2373 <head>
2356 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2374 <link rel="icon" href="/static/hgicon.png" type="image/png" />
2357 <meta name="robots" content="index, nofollow" />
2375 <meta name="robots" content="index, nofollow" />
2358 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2376 <link rel="stylesheet" href="/static/style-paper.css" type="text/css" />
2359 <script type="text/javascript" src="/static/mercurial.js"></script>
2377 <script type="text/javascript" src="/static/mercurial.js"></script>
2360
2378
2361 <title>Help: revisions</title>
2379 <title>Help: revisions</title>
2362 </head>
2380 </head>
2363 <body>
2381 <body>
2364
2382
2365 <div class="container">
2383 <div class="container">
2366 <div class="menu">
2384 <div class="menu">
2367 <div class="logo">
2385 <div class="logo">
2368 <a href="https://mercurial-scm.org/">
2386 <a href="https://mercurial-scm.org/">
2369 <img src="/static/hglogo.png" alt="mercurial" /></a>
2387 <img src="/static/hglogo.png" alt="mercurial" /></a>
2370 </div>
2388 </div>
2371 <ul>
2389 <ul>
2372 <li><a href="/shortlog">log</a></li>
2390 <li><a href="/shortlog">log</a></li>
2373 <li><a href="/graph">graph</a></li>
2391 <li><a href="/graph">graph</a></li>
2374 <li><a href="/tags">tags</a></li>
2392 <li><a href="/tags">tags</a></li>
2375 <li><a href="/bookmarks">bookmarks</a></li>
2393 <li><a href="/bookmarks">bookmarks</a></li>
2376 <li><a href="/branches">branches</a></li>
2394 <li><a href="/branches">branches</a></li>
2377 </ul>
2395 </ul>
2378 <ul>
2396 <ul>
2379 <li class="active"><a href="/help">help</a></li>
2397 <li class="active"><a href="/help">help</a></li>
2380 </ul>
2398 </ul>
2381 </div>
2399 </div>
2382
2400
2383 <div class="main">
2401 <div class="main">
2384 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2402 <h2 class="breadcrumb"><a href="/">Mercurial</a> </h2>
2385 <h3>Help: revisions</h3>
2403 <h3>Help: revisions</h3>
2386
2404
2387 <form class="search" action="/log">
2405 <form class="search" action="/log">
2388
2406
2389 <p><input name="rev" id="search1" type="text" size="30" /></p>
2407 <p><input name="rev" id="search1" type="text" size="30" /></p>
2390 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2408 <div id="hint">Find changesets by keywords (author, files, the commit message), revision
2391 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2409 number or hash, or <a href="/help/revsets">revset expression</a>.</div>
2392 </form>
2410 </form>
2393 <div id="doc">
2411 <div id="doc">
2394 <h1>Specifying Single Revisions</h1>
2412 <h1>Specifying Single Revisions</h1>
2395 <p>
2413 <p>
2396 Mercurial supports several ways to specify individual revisions.
2414 Mercurial supports several ways to specify individual revisions.
2397 </p>
2415 </p>
2398 <p>
2416 <p>
2399 A plain integer is treated as a revision number. Negative integers are
2417 A plain integer is treated as a revision number. Negative integers are
2400 treated as sequential offsets from the tip, with -1 denoting the tip,
2418 treated as sequential offsets from the tip, with -1 denoting the tip,
2401 -2 denoting the revision prior to the tip, and so forth.
2419 -2 denoting the revision prior to the tip, and so forth.
2402 </p>
2420 </p>
2403 <p>
2421 <p>
2404 A 40-digit hexadecimal string is treated as a unique revision
2422 A 40-digit hexadecimal string is treated as a unique revision
2405 identifier.
2423 identifier.
2406 </p>
2424 </p>
2407 <p>
2425 <p>
2408 A hexadecimal string less than 40 characters long is treated as a
2426 A hexadecimal string less than 40 characters long is treated as a
2409 unique revision identifier and is referred to as a short-form
2427 unique revision identifier and is referred to as a short-form
2410 identifier. A short-form identifier is only valid if it is the prefix
2428 identifier. A short-form identifier is only valid if it is the prefix
2411 of exactly one full-length identifier.
2429 of exactly one full-length identifier.
2412 </p>
2430 </p>
2413 <p>
2431 <p>
2414 Any other string is treated as a bookmark, tag, or branch name. A
2432 Any other string is treated as a bookmark, tag, or branch name. A
2415 bookmark is a movable pointer to a revision. A tag is a permanent name
2433 bookmark is a movable pointer to a revision. A tag is a permanent name
2416 associated with a revision. A branch name denotes the tipmost open branch head
2434 associated with a revision. A branch name denotes the tipmost open branch head
2417 of that branch - or if they are all closed, the tipmost closed head of the
2435 of that branch - or if they are all closed, the tipmost closed head of the
2418 branch. Bookmark, tag, and branch names must not contain the &quot;:&quot; character.
2436 branch. Bookmark, tag, and branch names must not contain the &quot;:&quot; character.
2419 </p>
2437 </p>
2420 <p>
2438 <p>
2421 The reserved name &quot;tip&quot; always identifies the most recent revision.
2439 The reserved name &quot;tip&quot; always identifies the most recent revision.
2422 </p>
2440 </p>
2423 <p>
2441 <p>
2424 The reserved name &quot;null&quot; indicates the null revision. This is the
2442 The reserved name &quot;null&quot; indicates the null revision. This is the
2425 revision of an empty repository, and the parent of revision 0.
2443 revision of an empty repository, and the parent of revision 0.
2426 </p>
2444 </p>
2427 <p>
2445 <p>
2428 The reserved name &quot;.&quot; indicates the working directory parent. If no
2446 The reserved name &quot;.&quot; indicates the working directory parent. If no
2429 working directory is checked out, it is equivalent to null. If an
2447 working directory is checked out, it is equivalent to null. If an
2430 uncommitted merge is in progress, &quot;.&quot; is the revision of the first
2448 uncommitted merge is in progress, &quot;.&quot; is the revision of the first
2431 parent.
2449 parent.
2432 </p>
2450 </p>
2433
2451
2434 </div>
2452 </div>
2435 </div>
2453 </div>
2436 </div>
2454 </div>
2437
2455
2438 <script type="text/javascript">process_dates()</script>
2456 <script type="text/javascript">process_dates()</script>
2439
2457
2440
2458
2441 </body>
2459 </body>
2442 </html>
2460 </html>
2443
2461
2444
2462
2445 $ killdaemons.py
2463 $ killdaemons.py
2446
2464
2447 #endif
2465 #endif
@@ -1,1115 +1,1119 b''
1 #require json
1 #require json
2 #require serve
2 #require serve
3
3
4 $ request() {
4 $ request() {
5 > get-with-headers.py --json localhost:$HGPORT "$1"
5 > get-with-headers.py --json localhost:$HGPORT "$1"
6 > }
6 > }
7
7
8 $ hg init test
8 $ hg init test
9 $ cd test
9 $ cd test
10 $ mkdir da
10 $ mkdir da
11 $ echo foo > da/foo
11 $ echo foo > da/foo
12 $ echo foo > foo
12 $ echo foo > foo
13 $ hg -q ci -A -m initial
13 $ hg -q ci -A -m initial
14 $ echo bar > foo
14 $ echo bar > foo
15 $ hg ci -m 'modify foo'
15 $ hg ci -m 'modify foo'
16 $ echo bar > da/foo
16 $ echo bar > da/foo
17 $ hg ci -m 'modify da/foo'
17 $ hg ci -m 'modify da/foo'
18 $ hg bookmark bookmark1
18 $ hg bookmark bookmark1
19 $ hg up default
19 $ hg up default
20 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
20 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
21 (leaving bookmark bookmark1)
21 (leaving bookmark bookmark1)
22 $ hg mv foo foo-new
22 $ hg mv foo foo-new
23 $ hg commit -m 'move foo'
23 $ hg commit -m 'move foo'
24 $ hg tag -m 'create tag' tag1
24 $ hg tag -m 'create tag' tag1
25 $ hg phase --public -r .
25 $ hg phase --public -r .
26 $ echo baz > da/foo
26 $ echo baz > da/foo
27 $ hg commit -m 'another commit to da/foo'
27 $ hg commit -m 'another commit to da/foo'
28 $ hg tag -m 'create tag2' tag2
28 $ hg tag -m 'create tag2' tag2
29 $ hg bookmark bookmark2
29 $ hg bookmark bookmark2
30 $ hg -q up -r 0
30 $ hg -q up -r 0
31 $ hg -q branch test-branch
31 $ hg -q branch test-branch
32 $ echo branch > foo
32 $ echo branch > foo
33 $ hg commit -m 'create test branch'
33 $ hg commit -m 'create test branch'
34 $ echo branch_commit_2 > foo
34 $ echo branch_commit_2 > foo
35 $ hg commit -m 'another commit in test-branch'
35 $ hg commit -m 'another commit in test-branch'
36 $ hg -q up default
36 $ hg -q up default
37 $ hg merge --tool :local test-branch
37 $ hg merge --tool :local test-branch
38 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
38 0 files updated, 1 files merged, 0 files removed, 0 files unresolved
39 (branch merge, don't forget to commit)
39 (branch merge, don't forget to commit)
40 $ hg commit -m 'merge test-branch into default'
40 $ hg commit -m 'merge test-branch into default'
41
41
42 $ hg log -G
42 $ hg log -G
43 @ changeset: 9:cc725e08502a
43 @ changeset: 9:cc725e08502a
44 |\ tag: tip
44 |\ tag: tip
45 | | parent: 6:ceed296fe500
45 | | parent: 6:ceed296fe500
46 | | parent: 8:ed66c30e87eb
46 | | parent: 8:ed66c30e87eb
47 | | user: test
47 | | user: test
48 | | date: Thu Jan 01 00:00:00 1970 +0000
48 | | date: Thu Jan 01 00:00:00 1970 +0000
49 | | summary: merge test-branch into default
49 | | summary: merge test-branch into default
50 | |
50 | |
51 | o changeset: 8:ed66c30e87eb
51 | o changeset: 8:ed66c30e87eb
52 | | branch: test-branch
52 | | branch: test-branch
53 | | user: test
53 | | user: test
54 | | date: Thu Jan 01 00:00:00 1970 +0000
54 | | date: Thu Jan 01 00:00:00 1970 +0000
55 | | summary: another commit in test-branch
55 | | summary: another commit in test-branch
56 | |
56 | |
57 | o changeset: 7:6ab967a8ab34
57 | o changeset: 7:6ab967a8ab34
58 | | branch: test-branch
58 | | branch: test-branch
59 | | parent: 0:06e557f3edf6
59 | | parent: 0:06e557f3edf6
60 | | user: test
60 | | user: test
61 | | date: Thu Jan 01 00:00:00 1970 +0000
61 | | date: Thu Jan 01 00:00:00 1970 +0000
62 | | summary: create test branch
62 | | summary: create test branch
63 | |
63 | |
64 o | changeset: 6:ceed296fe500
64 o | changeset: 6:ceed296fe500
65 | | bookmark: bookmark2
65 | | bookmark: bookmark2
66 | | user: test
66 | | user: test
67 | | date: Thu Jan 01 00:00:00 1970 +0000
67 | | date: Thu Jan 01 00:00:00 1970 +0000
68 | | summary: create tag2
68 | | summary: create tag2
69 | |
69 | |
70 o | changeset: 5:f2890a05fea4
70 o | changeset: 5:f2890a05fea4
71 | | tag: tag2
71 | | tag: tag2
72 | | user: test
72 | | user: test
73 | | date: Thu Jan 01 00:00:00 1970 +0000
73 | | date: Thu Jan 01 00:00:00 1970 +0000
74 | | summary: another commit to da/foo
74 | | summary: another commit to da/foo
75 | |
75 | |
76 o | changeset: 4:93a8ce14f891
76 o | changeset: 4:93a8ce14f891
77 | | user: test
77 | | user: test
78 | | date: Thu Jan 01 00:00:00 1970 +0000
78 | | date: Thu Jan 01 00:00:00 1970 +0000
79 | | summary: create tag
79 | | summary: create tag
80 | |
80 | |
81 o | changeset: 3:78896eb0e102
81 o | changeset: 3:78896eb0e102
82 | | tag: tag1
82 | | tag: tag1
83 | | user: test
83 | | user: test
84 | | date: Thu Jan 01 00:00:00 1970 +0000
84 | | date: Thu Jan 01 00:00:00 1970 +0000
85 | | summary: move foo
85 | | summary: move foo
86 | |
86 | |
87 o | changeset: 2:8d7c456572ac
87 o | changeset: 2:8d7c456572ac
88 | | bookmark: bookmark1
88 | | bookmark: bookmark1
89 | | user: test
89 | | user: test
90 | | date: Thu Jan 01 00:00:00 1970 +0000
90 | | date: Thu Jan 01 00:00:00 1970 +0000
91 | | summary: modify da/foo
91 | | summary: modify da/foo
92 | |
92 | |
93 o | changeset: 1:f8bbb9024b10
93 o | changeset: 1:f8bbb9024b10
94 |/ user: test
94 |/ user: test
95 | date: Thu Jan 01 00:00:00 1970 +0000
95 | date: Thu Jan 01 00:00:00 1970 +0000
96 | summary: modify foo
96 | summary: modify foo
97 |
97 |
98 o changeset: 0:06e557f3edf6
98 o changeset: 0:06e557f3edf6
99 user: test
99 user: test
100 date: Thu Jan 01 00:00:00 1970 +0000
100 date: Thu Jan 01 00:00:00 1970 +0000
101 summary: initial
101 summary: initial
102
102
103
103
104 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E error.log
104 $ hg serve -p $HGPORT -d --pid-file=hg.pid -A access.log -E error.log
105 $ cat hg.pid >> $DAEMON_PIDS
105 $ cat hg.pid >> $DAEMON_PIDS
106
106
107 (Try to keep these in roughly the order they are defined in webcommands.py)
107 (Try to keep these in roughly the order they are defined in webcommands.py)
108
108
109 (log is handled by filelog/ and changelog/ - ignore it)
109 (log is handled by filelog/ and changelog/ - ignore it)
110
110
111 (rawfile/ doesn't use templating - nothing to test)
111 (rawfile/ doesn't use templating - nothing to test)
112
112
113 file/{revision}/{path} shows file revision
113 file/{revision}/{path} shows file revision
114
114
115 $ request json-file/06e557f3edf6/foo
115 $ request json-file/06e557f3edf6/foo
116 200 Script output follows
116 200 Script output follows
117
117
118 "not yet implemented"
118 "not yet implemented"
119
119
120 file/{revision} shows root directory info
120 file/{revision} shows root directory info
121
121
122 $ request json-file/cc725e08502a
122 $ request json-file/cc725e08502a
123 200 Script output follows
123 200 Script output follows
124
124
125 {
125 {
126 "abspath": "/",
126 "abspath": "/",
127 "bookmarks": [],
127 "bookmarks": [],
128 "directories": [
128 "directories": [
129 {
129 {
130 "abspath": "/da",
130 "abspath": "/da",
131 "basename": "da",
131 "basename": "da",
132 "emptydirs": ""
132 "emptydirs": ""
133 }
133 }
134 ],
134 ],
135 "files": [
135 "files": [
136 {
136 {
137 "abspath": ".hgtags",
137 "abspath": ".hgtags",
138 "basename": ".hgtags",
138 "basename": ".hgtags",
139 "date": [
139 "date": [
140 0.0,
140 0.0,
141 0
141 0
142 ],
142 ],
143 "flags": "",
143 "flags": "",
144 "size": 92
144 "size": 92
145 },
145 },
146 {
146 {
147 "abspath": "foo-new",
147 "abspath": "foo-new",
148 "basename": "foo-new",
148 "basename": "foo-new",
149 "date": [
149 "date": [
150 0.0,
150 0.0,
151 0
151 0
152 ],
152 ],
153 "flags": "",
153 "flags": "",
154 "size": 4
154 "size": 4
155 }
155 }
156 ],
156 ],
157 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
157 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
158 "tags": [
158 "tags": [
159 "tip"
159 "tip"
160 ]
160 ]
161 }
161 }
162
162
163 changelog/ shows information about several changesets
163 changelog/ shows information about several changesets
164
164
165 $ request json-changelog
165 $ request json-changelog
166 200 Script output follows
166 200 Script output follows
167
167
168 {
168 {
169 "changeset_count": 10,
169 "changeset_count": 10,
170 "changesets": [
170 "changesets": [
171 {
171 {
172 "bookmarks": [],
172 "bookmarks": [],
173 "date": [
173 "date": [
174 0.0,
174 0.0,
175 0
175 0
176 ],
176 ],
177 "desc": "merge test-branch into default",
177 "desc": "merge test-branch into default",
178 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
178 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
179 "tags": [
179 "tags": [
180 "tip"
180 "tip"
181 ],
181 ],
182 "user": "test"
182 "user": "test"
183 },
183 },
184 {
184 {
185 "bookmarks": [],
185 "bookmarks": [],
186 "date": [
186 "date": [
187 0.0,
187 0.0,
188 0
188 0
189 ],
189 ],
190 "desc": "another commit in test-branch",
190 "desc": "another commit in test-branch",
191 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
191 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
192 "tags": [],
192 "tags": [],
193 "user": "test"
193 "user": "test"
194 },
194 },
195 {
195 {
196 "bookmarks": [],
196 "bookmarks": [],
197 "date": [
197 "date": [
198 0.0,
198 0.0,
199 0
199 0
200 ],
200 ],
201 "desc": "create test branch",
201 "desc": "create test branch",
202 "node": "6ab967a8ab3489227a83f80e920faa039a71819f",
202 "node": "6ab967a8ab3489227a83f80e920faa039a71819f",
203 "tags": [],
203 "tags": [],
204 "user": "test"
204 "user": "test"
205 },
205 },
206 {
206 {
207 "bookmarks": [
207 "bookmarks": [
208 "bookmark2"
208 "bookmark2"
209 ],
209 ],
210 "date": [
210 "date": [
211 0.0,
211 0.0,
212 0
212 0
213 ],
213 ],
214 "desc": "create tag2",
214 "desc": "create tag2",
215 "node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
215 "node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
216 "tags": [],
216 "tags": [],
217 "user": "test"
217 "user": "test"
218 },
218 },
219 {
219 {
220 "bookmarks": [],
220 "bookmarks": [],
221 "date": [
221 "date": [
222 0.0,
222 0.0,
223 0
223 0
224 ],
224 ],
225 "desc": "another commit to da/foo",
225 "desc": "another commit to da/foo",
226 "node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
226 "node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
227 "tags": [
227 "tags": [
228 "tag2"
228 "tag2"
229 ],
229 ],
230 "user": "test"
230 "user": "test"
231 },
231 },
232 {
232 {
233 "bookmarks": [],
233 "bookmarks": [],
234 "date": [
234 "date": [
235 0.0,
235 0.0,
236 0
236 0
237 ],
237 ],
238 "desc": "create tag",
238 "desc": "create tag",
239 "node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
239 "node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
240 "tags": [],
240 "tags": [],
241 "user": "test"
241 "user": "test"
242 },
242 },
243 {
243 {
244 "bookmarks": [],
244 "bookmarks": [],
245 "date": [
245 "date": [
246 0.0,
246 0.0,
247 0
247 0
248 ],
248 ],
249 "desc": "move foo",
249 "desc": "move foo",
250 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
250 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
251 "tags": [
251 "tags": [
252 "tag1"
252 "tag1"
253 ],
253 ],
254 "user": "test"
254 "user": "test"
255 },
255 },
256 {
256 {
257 "bookmarks": [
257 "bookmarks": [
258 "bookmark1"
258 "bookmark1"
259 ],
259 ],
260 "date": [
260 "date": [
261 0.0,
261 0.0,
262 0
262 0
263 ],
263 ],
264 "desc": "modify da/foo",
264 "desc": "modify da/foo",
265 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
265 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
266 "tags": [],
266 "tags": [],
267 "user": "test"
267 "user": "test"
268 },
268 },
269 {
269 {
270 "bookmarks": [],
270 "bookmarks": [],
271 "date": [
271 "date": [
272 0.0,
272 0.0,
273 0
273 0
274 ],
274 ],
275 "desc": "modify foo",
275 "desc": "modify foo",
276 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
276 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
277 "tags": [],
277 "tags": [],
278 "user": "test"
278 "user": "test"
279 },
279 },
280 {
280 {
281 "bookmarks": [],
281 "bookmarks": [],
282 "date": [
282 "date": [
283 0.0,
283 0.0,
284 0
284 0
285 ],
285 ],
286 "desc": "initial",
286 "desc": "initial",
287 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
287 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
288 "tags": [],
288 "tags": [],
289 "user": "test"
289 "user": "test"
290 }
290 }
291 ],
291 ],
292 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
292 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
293 }
293 }
294
294
295 changelog/{revision} shows information starting at a specific changeset
295 changelog/{revision} shows information starting at a specific changeset
296
296
297 $ request json-changelog/f8bbb9024b10
297 $ request json-changelog/f8bbb9024b10
298 200 Script output follows
298 200 Script output follows
299
299
300 {
300 {
301 "changeset_count": 10,
301 "changeset_count": 10,
302 "changesets": [
302 "changesets": [
303 {
303 {
304 "bookmarks": [],
304 "bookmarks": [],
305 "date": [
305 "date": [
306 0.0,
306 0.0,
307 0
307 0
308 ],
308 ],
309 "desc": "modify foo",
309 "desc": "modify foo",
310 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
310 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
311 "tags": [],
311 "tags": [],
312 "user": "test"
312 "user": "test"
313 },
313 },
314 {
314 {
315 "bookmarks": [],
315 "bookmarks": [],
316 "date": [
316 "date": [
317 0.0,
317 0.0,
318 0
318 0
319 ],
319 ],
320 "desc": "initial",
320 "desc": "initial",
321 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
321 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
322 "tags": [],
322 "tags": [],
323 "user": "test"
323 "user": "test"
324 }
324 }
325 ],
325 ],
326 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8"
326 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8"
327 }
327 }
328
328
329 shortlog/ shows information about a set of changesets
329 shortlog/ shows information about a set of changesets
330
330
331 $ request json-shortlog
331 $ request json-shortlog
332 200 Script output follows
332 200 Script output follows
333
333
334 {
334 {
335 "changeset_count": 10,
335 "changeset_count": 10,
336 "changesets": [
336 "changesets": [
337 {
337 {
338 "bookmarks": [],
338 "bookmarks": [],
339 "date": [
339 "date": [
340 0.0,
340 0.0,
341 0
341 0
342 ],
342 ],
343 "desc": "merge test-branch into default",
343 "desc": "merge test-branch into default",
344 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
344 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
345 "tags": [
345 "tags": [
346 "tip"
346 "tip"
347 ],
347 ],
348 "user": "test"
348 "user": "test"
349 },
349 },
350 {
350 {
351 "bookmarks": [],
351 "bookmarks": [],
352 "date": [
352 "date": [
353 0.0,
353 0.0,
354 0
354 0
355 ],
355 ],
356 "desc": "another commit in test-branch",
356 "desc": "another commit in test-branch",
357 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
357 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
358 "tags": [],
358 "tags": [],
359 "user": "test"
359 "user": "test"
360 },
360 },
361 {
361 {
362 "bookmarks": [],
362 "bookmarks": [],
363 "date": [
363 "date": [
364 0.0,
364 0.0,
365 0
365 0
366 ],
366 ],
367 "desc": "create test branch",
367 "desc": "create test branch",
368 "node": "6ab967a8ab3489227a83f80e920faa039a71819f",
368 "node": "6ab967a8ab3489227a83f80e920faa039a71819f",
369 "tags": [],
369 "tags": [],
370 "user": "test"
370 "user": "test"
371 },
371 },
372 {
372 {
373 "bookmarks": [
373 "bookmarks": [
374 "bookmark2"
374 "bookmark2"
375 ],
375 ],
376 "date": [
376 "date": [
377 0.0,
377 0.0,
378 0
378 0
379 ],
379 ],
380 "desc": "create tag2",
380 "desc": "create tag2",
381 "node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
381 "node": "ceed296fe500c3fac9541e31dad860cb49c89e45",
382 "tags": [],
382 "tags": [],
383 "user": "test"
383 "user": "test"
384 },
384 },
385 {
385 {
386 "bookmarks": [],
386 "bookmarks": [],
387 "date": [
387 "date": [
388 0.0,
388 0.0,
389 0
389 0
390 ],
390 ],
391 "desc": "another commit to da/foo",
391 "desc": "another commit to da/foo",
392 "node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
392 "node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
393 "tags": [
393 "tags": [
394 "tag2"
394 "tag2"
395 ],
395 ],
396 "user": "test"
396 "user": "test"
397 },
397 },
398 {
398 {
399 "bookmarks": [],
399 "bookmarks": [],
400 "date": [
400 "date": [
401 0.0,
401 0.0,
402 0
402 0
403 ],
403 ],
404 "desc": "create tag",
404 "desc": "create tag",
405 "node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
405 "node": "93a8ce14f89156426b7fa981af8042da53f03aa0",
406 "tags": [],
406 "tags": [],
407 "user": "test"
407 "user": "test"
408 },
408 },
409 {
409 {
410 "bookmarks": [],
410 "bookmarks": [],
411 "date": [
411 "date": [
412 0.0,
412 0.0,
413 0
413 0
414 ],
414 ],
415 "desc": "move foo",
415 "desc": "move foo",
416 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
416 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
417 "tags": [
417 "tags": [
418 "tag1"
418 "tag1"
419 ],
419 ],
420 "user": "test"
420 "user": "test"
421 },
421 },
422 {
422 {
423 "bookmarks": [
423 "bookmarks": [
424 "bookmark1"
424 "bookmark1"
425 ],
425 ],
426 "date": [
426 "date": [
427 0.0,
427 0.0,
428 0
428 0
429 ],
429 ],
430 "desc": "modify da/foo",
430 "desc": "modify da/foo",
431 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
431 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
432 "tags": [],
432 "tags": [],
433 "user": "test"
433 "user": "test"
434 },
434 },
435 {
435 {
436 "bookmarks": [],
436 "bookmarks": [],
437 "date": [
437 "date": [
438 0.0,
438 0.0,
439 0
439 0
440 ],
440 ],
441 "desc": "modify foo",
441 "desc": "modify foo",
442 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
442 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
443 "tags": [],
443 "tags": [],
444 "user": "test"
444 "user": "test"
445 },
445 },
446 {
446 {
447 "bookmarks": [],
447 "bookmarks": [],
448 "date": [
448 "date": [
449 0.0,
449 0.0,
450 0
450 0
451 ],
451 ],
452 "desc": "initial",
452 "desc": "initial",
453 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
453 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
454 "tags": [],
454 "tags": [],
455 "user": "test"
455 "user": "test"
456 }
456 }
457 ],
457 ],
458 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
458 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
459 }
459 }
460
460
461 changeset/ renders the tip changeset
461 changeset/ renders the tip changeset
462
462
463 $ request json-rev
463 $ request json-rev
464 200 Script output follows
464 200 Script output follows
465
465
466 {
466 {
467 "bookmarks": [],
467 "bookmarks": [],
468 "branch": "default",
468 "branch": "default",
469 "date": [
469 "date": [
470 0.0,
470 0.0,
471 0
471 0
472 ],
472 ],
473 "desc": "merge test-branch into default",
473 "desc": "merge test-branch into default",
474 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
474 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
475 "parents": [
475 "parents": [
476 "ceed296fe500c3fac9541e31dad860cb49c89e45",
476 "ceed296fe500c3fac9541e31dad860cb49c89e45",
477 "ed66c30e87eb65337c05a4229efaa5f1d5285a90"
477 "ed66c30e87eb65337c05a4229efaa5f1d5285a90"
478 ],
478 ],
479 "phase": "draft",
479 "phase": "draft",
480 "tags": [
480 "tags": [
481 "tip"
481 "tip"
482 ],
482 ],
483 "user": "test"
483 "user": "test"
484 }
484 }
485
485
486 changeset/{revision} shows tags
486 changeset/{revision} shows tags
487
487
488 $ request json-rev/78896eb0e102
488 $ request json-rev/78896eb0e102
489 200 Script output follows
489 200 Script output follows
490
490
491 {
491 {
492 "bookmarks": [],
492 "bookmarks": [],
493 "branch": "default",
493 "branch": "default",
494 "date": [
494 "date": [
495 0.0,
495 0.0,
496 0
496 0
497 ],
497 ],
498 "desc": "move foo",
498 "desc": "move foo",
499 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
499 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
500 "parents": [
500 "parents": [
501 "8d7c456572acf3557e8ed8a07286b10c408bcec5"
501 "8d7c456572acf3557e8ed8a07286b10c408bcec5"
502 ],
502 ],
503 "phase": "public",
503 "phase": "public",
504 "tags": [
504 "tags": [
505 "tag1"
505 "tag1"
506 ],
506 ],
507 "user": "test"
507 "user": "test"
508 }
508 }
509
509
510 changeset/{revision} shows bookmarks
510 changeset/{revision} shows bookmarks
511
511
512 $ request json-rev/8d7c456572ac
512 $ request json-rev/8d7c456572ac
513 200 Script output follows
513 200 Script output follows
514
514
515 {
515 {
516 "bookmarks": [
516 "bookmarks": [
517 "bookmark1"
517 "bookmark1"
518 ],
518 ],
519 "branch": "default",
519 "branch": "default",
520 "date": [
520 "date": [
521 0.0,
521 0.0,
522 0
522 0
523 ],
523 ],
524 "desc": "modify da/foo",
524 "desc": "modify da/foo",
525 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
525 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5",
526 "parents": [
526 "parents": [
527 "f8bbb9024b10f93cdbb8d940337398291d40dea8"
527 "f8bbb9024b10f93cdbb8d940337398291d40dea8"
528 ],
528 ],
529 "phase": "public",
529 "phase": "public",
530 "tags": [],
530 "tags": [],
531 "user": "test"
531 "user": "test"
532 }
532 }
533
533
534 changeset/{revision} shows branches
534 changeset/{revision} shows branches
535
535
536 $ request json-rev/6ab967a8ab34
536 $ request json-rev/6ab967a8ab34
537 200 Script output follows
537 200 Script output follows
538
538
539 {
539 {
540 "bookmarks": [],
540 "bookmarks": [],
541 "branch": "test-branch",
541 "branch": "test-branch",
542 "date": [
542 "date": [
543 0.0,
543 0.0,
544 0
544 0
545 ],
545 ],
546 "desc": "create test branch",
546 "desc": "create test branch",
547 "node": "6ab967a8ab3489227a83f80e920faa039a71819f",
547 "node": "6ab967a8ab3489227a83f80e920faa039a71819f",
548 "parents": [
548 "parents": [
549 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
549 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
550 ],
550 ],
551 "phase": "draft",
551 "phase": "draft",
552 "tags": [],
552 "tags": [],
553 "user": "test"
553 "user": "test"
554 }
554 }
555
555
556 manifest/{revision}/{path} shows info about a directory at a revision
556 manifest/{revision}/{path} shows info about a directory at a revision
557
557
558 $ request json-manifest/06e557f3edf6/
558 $ request json-manifest/06e557f3edf6/
559 200 Script output follows
559 200 Script output follows
560
560
561 {
561 {
562 "abspath": "/",
562 "abspath": "/",
563 "bookmarks": [],
563 "bookmarks": [],
564 "directories": [
564 "directories": [
565 {
565 {
566 "abspath": "/da",
566 "abspath": "/da",
567 "basename": "da",
567 "basename": "da",
568 "emptydirs": ""
568 "emptydirs": ""
569 }
569 }
570 ],
570 ],
571 "files": [
571 "files": [
572 {
572 {
573 "abspath": "foo",
573 "abspath": "foo",
574 "basename": "foo",
574 "basename": "foo",
575 "date": [
575 "date": [
576 0.0,
576 0.0,
577 0
577 0
578 ],
578 ],
579 "flags": "",
579 "flags": "",
580 "size": 4
580 "size": 4
581 }
581 }
582 ],
582 ],
583 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
583 "node": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
584 "tags": []
584 "tags": []
585 }
585 }
586
586
587 tags/ shows tags info
587 tags/ shows tags info
588
588
589 $ request json-tags
589 $ request json-tags
590 200 Script output follows
590 200 Script output follows
591
591
592 {
592 {
593 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
593 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
594 "tags": [
594 "tags": [
595 {
595 {
596 "date": [
596 "date": [
597 0.0,
597 0.0,
598 0
598 0
599 ],
599 ],
600 "node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
600 "node": "f2890a05fea49bfaf9fb27ed5490894eba32da78",
601 "tag": "tag2"
601 "tag": "tag2"
602 },
602 },
603 {
603 {
604 "date": [
604 "date": [
605 0.0,
605 0.0,
606 0
606 0
607 ],
607 ],
608 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
608 "node": "78896eb0e102174ce9278438a95e12543e4367a7",
609 "tag": "tag1"
609 "tag": "tag1"
610 }
610 }
611 ]
611 ]
612 }
612 }
613
613
614 bookmarks/ shows bookmarks info
614 bookmarks/ shows bookmarks info
615
615
616 $ request json-bookmarks
616 $ request json-bookmarks
617 200 Script output follows
617 200 Script output follows
618
618
619 {
619 {
620 "bookmarks": [
620 "bookmarks": [
621 {
621 {
622 "bookmark": "bookmark1",
622 "bookmark": "bookmark1",
623 "date": [
623 "date": [
624 0.0,
624 0.0,
625 0
625 0
626 ],
626 ],
627 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5"
627 "node": "8d7c456572acf3557e8ed8a07286b10c408bcec5"
628 },
628 },
629 {
629 {
630 "bookmark": "bookmark2",
630 "bookmark": "bookmark2",
631 "date": [
631 "date": [
632 0.0,
632 0.0,
633 0
633 0
634 ],
634 ],
635 "node": "ceed296fe500c3fac9541e31dad860cb49c89e45"
635 "node": "ceed296fe500c3fac9541e31dad860cb49c89e45"
636 }
636 }
637 ],
637 ],
638 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
638 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7"
639 }
639 }
640
640
641 branches/ shows branches info
641 branches/ shows branches info
642
642
643 $ request json-branches
643 $ request json-branches
644 200 Script output follows
644 200 Script output follows
645
645
646 {
646 {
647 "branches": [
647 "branches": [
648 {
648 {
649 "branch": "default",
649 "branch": "default",
650 "date": [
650 "date": [
651 0.0,
651 0.0,
652 0
652 0
653 ],
653 ],
654 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
654 "node": "cc725e08502a79dd1eda913760fbe06ed7a9abc7",
655 "status": "open"
655 "status": "open"
656 },
656 },
657 {
657 {
658 "branch": "test-branch",
658 "branch": "test-branch",
659 "date": [
659 "date": [
660 0.0,
660 0.0,
661 0
661 0
662 ],
662 ],
663 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
663 "node": "ed66c30e87eb65337c05a4229efaa5f1d5285a90",
664 "status": "inactive"
664 "status": "inactive"
665 }
665 }
666 ]
666 ]
667 }
667 }
668
668
669 summary/ shows a summary of repository state
669 summary/ shows a summary of repository state
670
670
671 $ request json-summary
671 $ request json-summary
672 200 Script output follows
672 200 Script output follows
673
673
674 "not yet implemented"
674 "not yet implemented"
675
675
676 filediff/{revision}/{path} shows changes to a file in a revision
676 filediff/{revision}/{path} shows changes to a file in a revision
677
677
678 $ request json-diff/f8bbb9024b10/foo
678 $ request json-diff/f8bbb9024b10/foo
679 200 Script output follows
679 200 Script output follows
680
680
681 {
681 {
682 "author": "test",
682 "author": "test",
683 "children": [],
683 "children": [],
684 "date": [
684 "date": [
685 0.0,
685 0.0,
686 0
686 0
687 ],
687 ],
688 "desc": "modify foo",
688 "desc": "modify foo",
689 "diff": [
689 "diff": [
690 {
690 {
691 "blockno": 1,
691 "blockno": 1,
692 "lines": [
692 "lines": [
693 {
693 {
694 "l": "--- a/foo\tThu Jan 01 00:00:00 1970 +0000\n",
694 "l": "--- a/foo\tThu Jan 01 00:00:00 1970 +0000\n",
695 "n": 1,
695 "n": 1,
696 "t": "-"
696 "t": "-"
697 },
697 },
698 {
698 {
699 "l": "+++ b/foo\tThu Jan 01 00:00:00 1970 +0000\n",
699 "l": "+++ b/foo\tThu Jan 01 00:00:00 1970 +0000\n",
700 "n": 2,
700 "n": 2,
701 "t": "+"
701 "t": "+"
702 },
702 },
703 {
703 {
704 "l": "@@ -1,1 +1,1 @@\n",
704 "l": "@@ -1,1 +1,1 @@\n",
705 "n": 3,
705 "n": 3,
706 "t": "@"
706 "t": "@"
707 },
707 },
708 {
708 {
709 "l": "-foo\n",
709 "l": "-foo\n",
710 "n": 4,
710 "n": 4,
711 "t": "-"
711 "t": "-"
712 },
712 },
713 {
713 {
714 "l": "+bar\n",
714 "l": "+bar\n",
715 "n": 5,
715 "n": 5,
716 "t": "+"
716 "t": "+"
717 }
717 }
718 ]
718 ]
719 }
719 }
720 ],
720 ],
721 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
721 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
722 "parents": [
722 "parents": [
723 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
723 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
724 ],
724 ],
725 "path": "foo"
725 "path": "foo"
726 }
726 }
727
727
728 comparison/{revision}/{path} shows information about before and after for a file
728 comparison/{revision}/{path} shows information about before and after for a file
729
729
730 $ request json-comparison/f8bbb9024b10/foo
730 $ request json-comparison/f8bbb9024b10/foo
731 200 Script output follows
731 200 Script output follows
732
732
733 {
733 {
734 "author": "test",
734 "author": "test",
735 "children": [],
735 "children": [],
736 "comparison": [
736 "comparison": [
737 {
737 {
738 "lines": [
738 "lines": [
739 {
739 {
740 "ll": "foo",
740 "ll": "foo",
741 "ln": 1,
741 "ln": 1,
742 "rl": "bar",
742 "rl": "bar",
743 "rn": 1,
743 "rn": 1,
744 "t": "replace"
744 "t": "replace"
745 }
745 }
746 ]
746 ]
747 }
747 }
748 ],
748 ],
749 "date": [
749 "date": [
750 0.0,
750 0.0,
751 0
751 0
752 ],
752 ],
753 "desc": "modify foo",
753 "desc": "modify foo",
754 "leftnode": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
754 "leftnode": "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e",
755 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
755 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
756 "parents": [
756 "parents": [
757 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
757 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
758 ],
758 ],
759 "path": "foo",
759 "path": "foo",
760 "rightnode": "f8bbb9024b10f93cdbb8d940337398291d40dea8"
760 "rightnode": "f8bbb9024b10f93cdbb8d940337398291d40dea8"
761 }
761 }
762
762
763 annotate/{revision}/{path} shows annotations for each line
763 annotate/{revision}/{path} shows annotations for each line
764
764
765 $ request json-annotate/f8bbb9024b10/foo
765 $ request json-annotate/f8bbb9024b10/foo
766 200 Script output follows
766 200 Script output follows
767
767
768 {
768 {
769 "abspath": "foo",
769 "abspath": "foo",
770 "annotate": [
770 "annotate": [
771 {
771 {
772 "abspath": "foo",
772 "abspath": "foo",
773 "author": "test",
773 "author": "test",
774 "desc": "modify foo",
774 "desc": "modify foo",
775 "line": "bar\n",
775 "line": "bar\n",
776 "lineno": 1,
776 "lineno": 1,
777 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
777 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
778 "revdate": [
778 "revdate": [
779 0.0,
779 0.0,
780 0
780 0
781 ],
781 ],
782 "targetline": 1
782 "targetline": 1
783 }
783 }
784 ],
784 ],
785 "author": "test",
785 "author": "test",
786 "children": [],
786 "children": [],
787 "date": [
787 "date": [
788 0.0,
788 0.0,
789 0
789 0
790 ],
790 ],
791 "desc": "modify foo",
791 "desc": "modify foo",
792 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
792 "node": "f8bbb9024b10f93cdbb8d940337398291d40dea8",
793 "parents": [
793 "parents": [
794 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
794 "06e557f3edf66faa1ccaba5dd8c203c21cc79f1e"
795 ],
795 ],
796 "permissions": ""
796 "permissions": ""
797 }
797 }
798
798
799 filelog/{revision}/{path} shows history of a single file
799 filelog/{revision}/{path} shows history of a single file
800
800
801 $ request json-filelog/f8bbb9024b10/foo
801 $ request json-filelog/f8bbb9024b10/foo
802 200 Script output follows
802 200 Script output follows
803
803
804 "not yet implemented"
804 "not yet implemented"
805
805
806 (archive/ doesn't use templating, so ignore it)
806 (archive/ doesn't use templating, so ignore it)
807
807
808 (static/ doesn't use templating, so ignore it)
808 (static/ doesn't use templating, so ignore it)
809
809
810 graph/ shows information that can be used to render a graph of the DAG
810 graph/ shows information that can be used to render a graph of the DAG
811
811
812 $ request json-graph
812 $ request json-graph
813 200 Script output follows
813 200 Script output follows
814
814
815 "not yet implemented"
815 "not yet implemented"
816
816
817 help/ shows help topics
817 help/ shows help topics
818
818
819 $ request json-help
819 $ request json-help
820 200 Script output follows
820 200 Script output follows
821
821
822 {
822 {
823 "earlycommands": [
823 "earlycommands": [
824 {
824 {
825 "summary": "add the specified files on the next commit",
825 "summary": "add the specified files on the next commit",
826 "topic": "add"
826 "topic": "add"
827 },
827 },
828 {
828 {
829 "summary": "show changeset information by line for each file",
829 "summary": "show changeset information by line for each file",
830 "topic": "annotate"
830 "topic": "annotate"
831 },
831 },
832 {
832 {
833 "summary": "make a copy of an existing repository",
833 "summary": "make a copy of an existing repository",
834 "topic": "clone"
834 "topic": "clone"
835 },
835 },
836 {
836 {
837 "summary": "commit the specified files or all outstanding changes",
837 "summary": "commit the specified files or all outstanding changes",
838 "topic": "commit"
838 "topic": "commit"
839 },
839 },
840 {
840 {
841 "summary": "diff repository (or selected files)",
841 "summary": "diff repository (or selected files)",
842 "topic": "diff"
842 "topic": "diff"
843 },
843 },
844 {
844 {
845 "summary": "dump the header and diffs for one or more changesets",
845 "summary": "dump the header and diffs for one or more changesets",
846 "topic": "export"
846 "topic": "export"
847 },
847 },
848 {
848 {
849 "summary": "forget the specified files on the next commit",
849 "summary": "forget the specified files on the next commit",
850 "topic": "forget"
850 "topic": "forget"
851 },
851 },
852 {
852 {
853 "summary": "create a new repository in the given directory",
853 "summary": "create a new repository in the given directory",
854 "topic": "init"
854 "topic": "init"
855 },
855 },
856 {
856 {
857 "summary": "show revision history of entire repository or files",
857 "summary": "show revision history of entire repository or files",
858 "topic": "log"
858 "topic": "log"
859 },
859 },
860 {
860 {
861 "summary": "merge another revision into working directory",
861 "summary": "merge another revision into working directory",
862 "topic": "merge"
862 "topic": "merge"
863 },
863 },
864 {
864 {
865 "summary": "pull changes from the specified source",
865 "summary": "pull changes from the specified source",
866 "topic": "pull"
866 "topic": "pull"
867 },
867 },
868 {
868 {
869 "summary": "push changes to the specified destination",
869 "summary": "push changes to the specified destination",
870 "topic": "push"
870 "topic": "push"
871 },
871 },
872 {
872 {
873 "summary": "remove the specified files on the next commit",
873 "summary": "remove the specified files on the next commit",
874 "topic": "remove"
874 "topic": "remove"
875 },
875 },
876 {
876 {
877 "summary": "start stand-alone webserver",
877 "summary": "start stand-alone webserver",
878 "topic": "serve"
878 "topic": "serve"
879 },
879 },
880 {
880 {
881 "summary": "show changed files in the working directory",
881 "summary": "show changed files in the working directory",
882 "topic": "status"
882 "topic": "status"
883 },
883 },
884 {
884 {
885 "summary": "summarize working directory state",
885 "summary": "summarize working directory state",
886 "topic": "summary"
886 "topic": "summary"
887 },
887 },
888 {
888 {
889 "summary": "update working directory (or switch revisions)",
889 "summary": "update working directory (or switch revisions)",
890 "topic": "update"
890 "topic": "update"
891 }
891 }
892 ],
892 ],
893 "othercommands": [
893 "othercommands": [
894 {
894 {
895 "summary": "add all new files, delete all missing files",
895 "summary": "add all new files, delete all missing files",
896 "topic": "addremove"
896 "topic": "addremove"
897 },
897 },
898 {
898 {
899 "summary": "create an unversioned archive of a repository revision",
899 "summary": "create an unversioned archive of a repository revision",
900 "topic": "archive"
900 "topic": "archive"
901 },
901 },
902 {
902 {
903 "summary": "reverse effect of earlier changeset",
903 "summary": "reverse effect of earlier changeset",
904 "topic": "backout"
904 "topic": "backout"
905 },
905 },
906 {
906 {
907 "summary": "subdivision search of changesets",
907 "summary": "subdivision search of changesets",
908 "topic": "bisect"
908 "topic": "bisect"
909 },
909 },
910 {
910 {
911 "summary": "create a new bookmark or list existing bookmarks",
911 "summary": "create a new bookmark or list existing bookmarks",
912 "topic": "bookmarks"
912 "topic": "bookmarks"
913 },
913 },
914 {
914 {
915 "summary": "set or show the current branch name",
915 "summary": "set or show the current branch name",
916 "topic": "branch"
916 "topic": "branch"
917 },
917 },
918 {
918 {
919 "summary": "list repository named branches",
919 "summary": "list repository named branches",
920 "topic": "branches"
920 "topic": "branches"
921 },
921 },
922 {
922 {
923 "summary": "create a changegroup file",
923 "summary": "create a changegroup file",
924 "topic": "bundle"
924 "topic": "bundle"
925 },
925 },
926 {
926 {
927 "summary": "output the current or given revision of files",
927 "summary": "output the current or given revision of files",
928 "topic": "cat"
928 "topic": "cat"
929 },
929 },
930 {
930 {
931 "summary": "show combined config settings from all hgrc files",
931 "summary": "show combined config settings from all hgrc files",
932 "topic": "config"
932 "topic": "config"
933 },
933 },
934 {
934 {
935 "summary": "mark files as copied for the next commit",
935 "summary": "mark files as copied for the next commit",
936 "topic": "copy"
936 "topic": "copy"
937 },
937 },
938 {
938 {
939 "summary": "list tracked files",
939 "summary": "list tracked files",
940 "topic": "files"
940 "topic": "files"
941 },
941 },
942 {
942 {
943 "summary": "copy changes from other branches onto the current branch",
943 "summary": "copy changes from other branches onto the current branch",
944 "topic": "graft"
944 "topic": "graft"
945 },
945 },
946 {
946 {
947 "summary": "search for a pattern in specified files and revisions",
947 "summary": "search for a pattern in specified files and revisions",
948 "topic": "grep"
948 "topic": "grep"
949 },
949 },
950 {
950 {
951 "summary": "show branch heads",
951 "summary": "show branch heads",
952 "topic": "heads"
952 "topic": "heads"
953 },
953 },
954 {
954 {
955 "summary": "show help for a given topic or a help overview",
955 "summary": "show help for a given topic or a help overview",
956 "topic": "help"
956 "topic": "help"
957 },
957 },
958 {
958 {
959 "summary": "identify the working directory or specified revision",
959 "summary": "identify the working directory or specified revision",
960 "topic": "identify"
960 "topic": "identify"
961 },
961 },
962 {
962 {
963 "summary": "import an ordered set of patches",
963 "summary": "import an ordered set of patches",
964 "topic": "import"
964 "topic": "import"
965 },
965 },
966 {
966 {
967 "summary": "show new changesets found in source",
967 "summary": "show new changesets found in source",
968 "topic": "incoming"
968 "topic": "incoming"
969 },
969 },
970 {
970 {
971 "summary": "output the current or given revision of the project manifest",
971 "summary": "output the current or given revision of the project manifest",
972 "topic": "manifest"
972 "topic": "manifest"
973 },
973 },
974 {
974 {
975 "summary": "show changesets not found in the destination",
975 "summary": "show changesets not found in the destination",
976 "topic": "outgoing"
976 "topic": "outgoing"
977 },
977 },
978 {
978 {
979 "summary": "show aliases for remote repositories",
979 "summary": "show aliases for remote repositories",
980 "topic": "paths"
980 "topic": "paths"
981 },
981 },
982 {
982 {
983 "summary": "set or show the current phase name",
983 "summary": "set or show the current phase name",
984 "topic": "phase"
984 "topic": "phase"
985 },
985 },
986 {
986 {
987 "summary": "roll back an interrupted transaction",
987 "summary": "roll back an interrupted transaction",
988 "topic": "recover"
988 "topic": "recover"
989 },
989 },
990 {
990 {
991 "summary": "rename files; equivalent of copy + remove",
991 "summary": "rename files; equivalent of copy + remove",
992 "topic": "rename"
992 "topic": "rename"
993 },
993 },
994 {
994 {
995 "summary": "redo merges or set/view the merge status of files",
995 "summary": "redo merges or set/view the merge status of files",
996 "topic": "resolve"
996 "topic": "resolve"
997 },
997 },
998 {
998 {
999 "summary": "restore files to their checkout state",
999 "summary": "restore files to their checkout state",
1000 "topic": "revert"
1000 "topic": "revert"
1001 },
1001 },
1002 {
1002 {
1003 "summary": "print the root (top) of the current working directory",
1003 "summary": "print the root (top) of the current working directory",
1004 "topic": "root"
1004 "topic": "root"
1005 },
1005 },
1006 {
1006 {
1007 "summary": "add one or more tags for the current or given revision",
1007 "summary": "add one or more tags for the current or given revision",
1008 "topic": "tag"
1008 "topic": "tag"
1009 },
1009 },
1010 {
1010 {
1011 "summary": "list repository tags",
1011 "summary": "list repository tags",
1012 "topic": "tags"
1012 "topic": "tags"
1013 },
1013 },
1014 {
1014 {
1015 "summary": "apply one or more changegroup files",
1015 "summary": "apply one or more changegroup files",
1016 "topic": "unbundle"
1016 "topic": "unbundle"
1017 },
1017 },
1018 {
1018 {
1019 "summary": "verify the integrity of the repository",
1019 "summary": "verify the integrity of the repository",
1020 "topic": "verify"
1020 "topic": "verify"
1021 },
1021 },
1022 {
1022 {
1023 "summary": "output version and copyright information",
1023 "summary": "output version and copyright information",
1024 "topic": "version"
1024 "topic": "version"
1025 }
1025 }
1026 ],
1026 ],
1027 "topics": [
1027 "topics": [
1028 {
1028 {
1029 "summary": "Configuration Files",
1029 "summary": "Configuration Files",
1030 "topic": "config"
1030 "topic": "config"
1031 },
1031 },
1032 {
1032 {
1033 "summary": "Date Formats",
1033 "summary": "Date Formats",
1034 "topic": "dates"
1034 "topic": "dates"
1035 },
1035 },
1036 {
1036 {
1037 "summary": "Diff Formats",
1037 "summary": "Diff Formats",
1038 "topic": "diffs"
1038 "topic": "diffs"
1039 },
1039 },
1040 {
1040 {
1041 "summary": "Environment Variables",
1041 "summary": "Environment Variables",
1042 "topic": "environment"
1042 "topic": "environment"
1043 },
1043 },
1044 {
1044 {
1045 "summary": "Using Additional Features",
1045 "summary": "Using Additional Features",
1046 "topic": "extensions"
1046 "topic": "extensions"
1047 },
1047 },
1048 {
1048 {
1049 "summary": "Specifying File Sets",
1049 "summary": "Specifying File Sets",
1050 "topic": "filesets"
1050 "topic": "filesets"
1051 },
1051 },
1052 {
1052 {
1053 "summary": "Glossary",
1053 "summary": "Glossary",
1054 "topic": "glossary"
1054 "topic": "glossary"
1055 },
1055 },
1056 {
1056 {
1057 "summary": "Syntax for Mercurial Ignore Files",
1057 "summary": "Syntax for Mercurial Ignore Files",
1058 "topic": "hgignore"
1058 "topic": "hgignore"
1059 },
1059 },
1060 {
1060 {
1061 "summary": "Configuring hgweb",
1061 "summary": "Configuring hgweb",
1062 "topic": "hgweb"
1062 "topic": "hgweb"
1063 },
1063 },
1064 {
1064 {
1065 "summary": "Technical implementation topics",
1066 "topic": "internals"
1067 },
1068 {
1065 "summary": "Merge Tools",
1069 "summary": "Merge Tools",
1066 "topic": "merge-tools"
1070 "topic": "merge-tools"
1067 },
1071 },
1068 {
1072 {
1069 "summary": "Specifying Multiple Revisions",
1073 "summary": "Specifying Multiple Revisions",
1070 "topic": "multirevs"
1074 "topic": "multirevs"
1071 },
1075 },
1072 {
1076 {
1073 "summary": "File Name Patterns",
1077 "summary": "File Name Patterns",
1074 "topic": "patterns"
1078 "topic": "patterns"
1075 },
1079 },
1076 {
1080 {
1077 "summary": "Working with Phases",
1081 "summary": "Working with Phases",
1078 "topic": "phases"
1082 "topic": "phases"
1079 },
1083 },
1080 {
1084 {
1081 "summary": "Specifying Single Revisions",
1085 "summary": "Specifying Single Revisions",
1082 "topic": "revisions"
1086 "topic": "revisions"
1083 },
1087 },
1084 {
1088 {
1085 "summary": "Specifying Revision Sets",
1089 "summary": "Specifying Revision Sets",
1086 "topic": "revsets"
1090 "topic": "revsets"
1087 },
1091 },
1088 {
1092 {
1089 "summary": "Using Mercurial from scripts and automation",
1093 "summary": "Using Mercurial from scripts and automation",
1090 "topic": "scripting"
1094 "topic": "scripting"
1091 },
1095 },
1092 {
1096 {
1093 "summary": "Subrepositories",
1097 "summary": "Subrepositories",
1094 "topic": "subrepos"
1098 "topic": "subrepos"
1095 },
1099 },
1096 {
1100 {
1097 "summary": "Template Usage",
1101 "summary": "Template Usage",
1098 "topic": "templating"
1102 "topic": "templating"
1099 },
1103 },
1100 {
1104 {
1101 "summary": "URL Paths",
1105 "summary": "URL Paths",
1102 "topic": "urls"
1106 "topic": "urls"
1103 }
1107 }
1104 ]
1108 ]
1105 }
1109 }
1106
1110
1107 help/{topic} shows an individual help topic
1111 help/{topic} shows an individual help topic
1108
1112
1109 $ request json-help/phases
1113 $ request json-help/phases
1110 200 Script output follows
1114 200 Script output follows
1111
1115
1112 {
1116 {
1113 "rawdoc": "Working with Phases\n*", (glob)
1117 "rawdoc": "Working with Phases\n*", (glob)
1114 "topic": "phases"
1118 "topic": "phases"
1115 }
1119 }
General Comments 0
You need to be logged in to leave comments. Login now