diff -r 9c6473d2038b -r c303d65d2e34 mercurial/commands.py --- a/mercurial/commands.py Fri Oct 12 17:57:36 2018 +0200 +++ b/mercurial/commands.py Sat Oct 13 02:17:41 2018 -0700 @@ -134,6 +134,7 @@ @command('^add', walkopts + subrepoopts + dryrunopts, _('[OPTION]... [FILE]...'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY, inferrepo=True) def add(ui, repo, *pats, **opts): """add the specified files on the next commit @@ -185,6 +186,7 @@ @command('addremove', similarityopts + subrepoopts + walkopts + dryrunopts, _('[OPTION]... [FILE]...'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY, inferrepo=True) def addremove(ui, repo, *pats, **opts): """add all new files, delete all missing files @@ -269,6 +271,7 @@ ('', 'skip', [], _('revision to not display (EXPERIMENTAL)'), _('REV')), ] + diffwsopts + walkopts + formatteropts, _('[-r REV] [-f] [-a] [-u] [-d] [-n] [-c] [-l] FILE...'), + helpcategory=command.CATEGORY_FILE_CONTENTS, inferrepo=True) def annotate(ui, repo, *pats, **opts): """show changeset information by line for each file @@ -451,7 +454,8 @@ ('r', 'rev', '', _('revision to distribute'), _('REV')), ('t', 'type', '', _('type of distribution to create'), _('TYPE')), ] + subrepoopts + walkopts, - _('[OPTION]... DEST')) + _('[OPTION]... DEST'), + helpcategory=command.CATEGORY_IMPORT_EXPORT) def archive(ui, repo, dest, **opts): '''create an unversioned archive of a repository revision @@ -530,7 +534,8 @@ ('r', 'rev', '', _('revision to backout'), _('REV')), ('e', 'edit', False, _('invoke editor on commit messages')), ] + mergetoolopts + walkopts + commitopts + commitopts2, - _('[OPTION]... [-r] REV')) + _('[OPTION]... [-r] REV'), + helpcategory=command.CATEGORY_CHANGE_MANAGEMENT) def backout(ui, repo, node=None, rev=None, **opts): '''reverse effect of earlier changeset @@ -693,7 +698,8 @@ ('e', 'extend', False, _('extend the bisect range')), ('c', 'command', '', _('use command to check changeset state'), _('CMD')), ('U', 'noupdate', False, _('do not update to target'))], - _("[-gbsr] [-U] [-c CMD] [REV]")) + _("[-gbsr] [-U] [-c CMD] [REV]"), + helpcategory=command.CATEGORY_CHANGE_NAVIGATION) def bisect(ui, repo, rev=None, extra=None, command=None, reset=None, good=None, bad=None, skip=None, extend=None, noupdate=None): @@ -926,7 +932,8 @@ ('i', 'inactive', False, _('mark a bookmark inactive')), ('l', 'list', False, _('list existing bookmarks')), ] + formatteropts, - _('hg bookmarks [OPTIONS]... [NAME]...')) + _('hg bookmarks [OPTIONS]... [NAME]...'), + helpcategory=command.CATEGORY_CHANGE_ORGANIZATION) def bookmark(ui, repo, *names, **opts): '''create a new bookmark or list existing bookmarks @@ -1046,7 +1053,8 @@ ('C', 'clean', None, _('reset branch name to parent branch name')), ('r', 'rev', [], _('change branches of the given revs (EXPERIMENTAL)')), ], - _('[-fC] [NAME]')) + _('[-fC] [NAME]'), + helpcategory=command.CATEGORY_CHANGE_ORGANIZATION) def branch(ui, repo, label=None, **opts): """set or show the current branch name @@ -1121,6 +1129,7 @@ ('c', 'closed', False, _('show normal and closed branches')), ] + formatteropts, _('[-c]'), + helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, intents={INTENT_READONLY}) def branches(ui, repo, active=False, closed=False, **opts): """list repository named branches @@ -1206,7 +1215,8 @@ ('a', 'all', None, _('bundle all changesets in the repository')), ('t', 'type', 'bzip2', _('bundle compression type to use'), _('TYPE')), ] + remoteopts, - _('[-f] [-t BUNDLESPEC] [-a] [-r REV]... [--base REV]... FILE [DEST]')) + _('[-f] [-t BUNDLESPEC] [-a] [-r REV]... [--base REV]... FILE [DEST]'), + helpcategory=command.CATEGORY_IMPORT_EXPORT) def bundle(ui, repo, fname, dest=None, **opts): """create a bundle file @@ -1333,6 +1343,7 @@ ('', 'decode', None, _('apply any matching decode filter')), ] + walkopts + formatteropts, _('[OPTION]... FILE...'), + helpcategory=command.CATEGORY_FILE_CONTENTS, inferrepo=True, intents={INTENT_READONLY}) def cat(ui, repo, file1, *pats, **opts): @@ -1404,6 +1415,7 @@ _('clone with minimal data processing')), ] + remoteopts, _('[OPTION]... SOURCE [DEST]'), + helpcategory=command.CATEGORY_REPO_CREATION, norepo=True) def clone(ui, source, dest=None, **opts): """make a copy of an existing repository @@ -1554,6 +1566,7 @@ ('i', 'interactive', None, _('use interactive mode')), ] + walkopts + commitopts + commitopts2 + subrepoopts, _('[OPTION]... [FILE]...'), + helpcategory=command.CATEGORY_COMMITTING, inferrepo=True) def commit(ui, repo, *pats, **opts): """commit the specified files or all outstanding changes @@ -1706,6 +1719,7 @@ ('l', 'local', None, _('edit repository config')), ('g', 'global', None, _('edit global config'))] + formatteropts, _('[-u] [NAME]...'), + helpcategory=command.CATEGORY_HELP, optionalrepo=True, intents={INTENT_READONLY}) def config(ui, repo, *values, **opts): @@ -1824,7 +1838,8 @@ [('A', 'after', None, _('record a copy that has already occurred')), ('f', 'force', None, _('forcibly copy over an existing managed file')), ] + walkopts + dryrunopts, - _('[OPTION]... [SOURCE]... DEST')) + _('[OPTION]... [SOURCE]... DEST'), + helpcategory=command.CATEGORY_FILE_CONTENTS) def copy(ui, repo, *pats, **opts): """mark files as copied for the next commit @@ -1845,7 +1860,10 @@ with repo.wlock(False): return cmdutil.copy(ui, repo, pats, opts) -@command('debugcommands', [], _('[COMMAND]'), norepo=True) +@command( + 'debugcommands', [], _('[COMMAND]'), + helpcategory=command.CATEGORY_HELP, + norepo=True) def debugcommands(ui, cmd='', *args): """list all available commands and options""" for cmd, vals in sorted(table.iteritems()): @@ -1856,6 +1874,7 @@ @command('debugcomplete', [('o', 'options', None, _('show the command options'))], _('[-o] CMD'), + helpcategory=command.CATEGORY_HELP, norepo=True) def debugcomplete(ui, cmd='', **opts): """returns the completion list associated with the given command""" @@ -1886,6 +1905,7 @@ ('c', 'change', '', _('change made by revision'), _('REV')) ] + diffopts + diffopts2 + walkopts + subrepoopts, _('[OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...'), + helpcategory=command.CATEGORY_FILE_CONTENTS, inferrepo=True, intents={INTENT_READONLY}) def diff(ui, repo, *pats, **opts): @@ -1984,6 +2004,7 @@ ('r', 'rev', [], _('revisions to export'), _('REV')), ] + diffopts + formatteropts, _('[OPTION]... [-o OUTFILESPEC] [-r] [REV]...'), + helpcategory=command.CATEGORY_IMPORT_EXPORT, intents={INTENT_READONLY}) def export(ui, repo, *changesets, **opts): """dump the header and diffs for one or more changesets @@ -2104,6 +2125,7 @@ ('0', 'print0', None, _('end filenames with NUL, for use with xargs')), ] + walkopts + formatteropts + subrepoopts, _('[OPTION]... [FILE]...'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY, intents={INTENT_READONLY}) def files(ui, repo, *pats, **opts): """list tracked files @@ -2179,7 +2201,9 @@ '^forget', [('i', 'interactive', None, _('use interactive mode')), ] + walkopts + dryrunopts, - _('[OPTION]... FILE...'), inferrepo=True) + _('[OPTION]... FILE...'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY, + inferrepo=True) def forget(ui, repo, *pats, **opts): """forget the specified files on the next commit @@ -2236,7 +2260,8 @@ ('U', 'currentuser', False, _('record the current user as committer'), _('DATE'))] + commitopts2 + mergetoolopts + dryrunopts, - _('[OPTION]... [-r REV]... REV...')) + _('[OPTION]... [-r REV]... REV...'), + helpcategory=command.CATEGORY_CHANGE_MANAGEMENT) def graft(ui, repo, *revs, **opts): '''copy changes from other branches onto the current branch @@ -2624,6 +2649,7 @@ ('d', 'date', None, _('list the date (short with -q)')), ] + formatteropts + walkopts, _('[OPTION]... PATTERN [FILE]...'), + helpcategory=command.CATEGORY_FILE_CONTENTS, inferrepo=True, intents={INTENT_READONLY}) def grep(ui, repo, pattern, *pats, **opts): @@ -2917,6 +2943,7 @@ ('c', 'closed', False, _('show normal and closed branch heads')), ] + templateopts, _('[-ct] [-r STARTREV] [REV]...'), + helpcategory=command.CATEGORY_CHANGE_NAVIGATION, intents={INTENT_READONLY}) def heads(ui, repo, *branchrevs, **opts): """show branch heads @@ -2993,6 +3020,7 @@ ('s', 'system', [], _('show help for specific platform(s)')), ], _('[-ecks] [TOPIC]'), + helpcategory=command.CATEGORY_HELP, norepo=True, intents={INTENT_READONLY}) def help_(ui, name=None, **opts): @@ -3036,6 +3064,7 @@ ('B', 'bookmarks', None, _('show bookmarks')), ] + remoteopts + formatteropts, _('[-nibtB] [-r REV] [SOURCE]'), + helpcategory=command.CATEGORY_CHANGE_NAVIGATION, optionalrepo=True, intents={INTENT_READONLY}) def identify(ui, repo, source=None, rev=None, @@ -3234,7 +3263,8 @@ ('', 'import-branch', None, _('use any branch information in patch (implied by --exact)'))] + commitopts + commitopts2 + similarityopts, - _('[OPTION]... PATCH...')) + _('[OPTION]... PATCH...'), + helpcategory=command.CATEGORY_IMPORT_EXPORT) def import_(ui, repo, patch1=None, *patches, **opts): """import an ordered set of patches @@ -3431,7 +3461,8 @@ ('b', 'branch', [], _('a specific branch you would like to pull'), _('BRANCH')), ] + logopts + remoteopts + subrepoopts, - _('[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]')) + _('[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]'), + helpcategory=command.CATEGORY_REMOTE_REPO_MANAGEMENT) def incoming(ui, repo, source="default", **opts): """show new changesets found in source @@ -3519,6 +3550,7 @@ @command('^init', remoteopts, _('[-e CMD] [--remotecmd CMD] [DEST]'), + helpcategory=command.CATEGORY_REPO_CREATION, norepo=True) def init(ui, dest=".", **opts): """create a new repository in the given directory @@ -3541,7 +3573,8 @@ ('0', 'print0', None, _('end filenames with NUL, for use with xargs')), ('f', 'fullpath', None, _('print complete paths from the filesystem root')), ] + walkopts, - _('[OPTION]... [PATTERN]...')) + _('[OPTION]... [PATTERN]...'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY) def locate(ui, repo, *pats, **opts): """locate files matching specific patterns (DEPRECATED) @@ -3616,6 +3649,7 @@ _('do not display revision or any of its ancestors'), _('REV')), ] + logopts + walkopts, _('[OPTION]... [FILE]'), + helpcategory=command.CATEGORY_CHANGE_NAVIGATION, inferrepo=True, intents={INTENT_READONLY}) def log(ui, repo, *pats, **opts): @@ -3786,6 +3820,7 @@ ('', 'all', False, _("list files from all revisions"))] + formatteropts, _('[-r REV]'), + helpcategory=command.CATEGORY_MAINTENANCE, intents={INTENT_READONLY}) def manifest(ui, repo, node=None, rev=None, **opts): """output the current or given revision of the project manifest @@ -3851,7 +3886,8 @@ _('review revisions to merge (no merge is performed)')), ('', 'abort', None, _('abort the ongoing merge')), ] + mergetoolopts, - _('[-P] [[-r] REV]')) + _('[-P] [[-r] REV]'), + helpcategory=command.CATEGORY_CHANGE_MANAGEMENT) def merge(ui, repo, node=None, **opts): """merge another revision into working directory @@ -3932,7 +3968,8 @@ ('b', 'branch', [], _('a specific branch you would like to push'), _('BRANCH')), ] + logopts + remoteopts + subrepoopts, - _('[-M] [-p] [-n] [-f] [-r REV]... [DEST]')) + _('[-M] [-p] [-n] [-f] [-r REV]... [DEST]'), + helpcategory=command.CATEGORY_REMOTE_REPO_MANAGEMENT) def outgoing(ui, repo, dest=None, **opts): """show changesets not found in the destination @@ -4012,6 +4049,7 @@ [('r', 'rev', '', _('show parents of the specified revision'), _('REV')), ] + templateopts, _('[-r REV] [FILE]'), + helpcategory=command.CATEGORY_CHANGE_NAVIGATION, inferrepo=True) def parents(ui, repo, file_=None, **opts): """show the parents of the working directory or revision (DEPRECATED) @@ -4068,8 +4106,9 @@ displayer.show(repo[n]) displayer.close() -@command('paths', formatteropts, _('[NAME]'), optionalrepo=True, - intents={INTENT_READONLY}) +@command('paths', formatteropts, _('[NAME]'), + helpcategory=command.CATEGORY_REMOTE_REPO_MANAGEMENT, + optionalrepo=True, intents={INTENT_READONLY}) def paths(ui, repo, search=None, **opts): """show aliases for remote repositories @@ -4157,7 +4196,8 @@ ('f', 'force', False, _('allow to move boundary backward')), ('r', 'rev', [], _('target revision'), _('REV')), ], - _('[-p|-d|-s] [-f] [-r] [REV...]')) + _('[-p|-d|-s] [-f] [-r] [REV...]'), + helpcategory=command.CATEGORY_CHANGE_ORGANIZATION) def phase(ui, repo, *revs, **opts): """set or show the current phase name @@ -4274,7 +4314,8 @@ ('b', 'branch', [], _('a specific branch you would like to pull'), _('BRANCH')), ] + remoteopts, - _('[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]')) + _('[-u] [-f] [-r REV]... [-e CMD] [--remotecmd CMD] [SOURCE]'), + helpcategory=command.CATEGORY_REMOTE_REPO_MANAGEMENT) def pull(ui, repo, source="default", **opts): """pull changes from the specified source @@ -4405,7 +4446,8 @@ ('', 'new-branch', False, _('allow pushing a new branch')), ('', 'pushvars', [], _('variables that can be sent to server (ADVANCED)')), ] + remoteopts, - _('[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]')) + _('[-f] [-r REV]... [-e CMD] [--remotecmd CMD] [DEST]'), + helpcategory=command.CATEGORY_REMOTE_REPO_MANAGEMENT) def push(ui, repo, dest=None, **opts): """push changes to the specified destination @@ -4531,7 +4573,7 @@ return result -@command('recover', []) +@command('recover', [], helpcategory=command.CATEGORY_MAINTENANCE) def recover(ui, repo): """roll back an interrupted transaction @@ -4553,6 +4595,7 @@ _('forget added files, delete modified files')), ] + subrepoopts + walkopts + dryrunopts, _('[OPTION]... FILE...'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY, inferrepo=True) def remove(ui, repo, *pats, **opts): """remove the specified files on the next commit @@ -4608,7 +4651,8 @@ [('A', 'after', None, _('record a rename that has already occurred')), ('f', 'force', None, _('forcibly copy over an existing managed file')), ] + walkopts + dryrunopts, - _('[OPTION]... SOURCE... DEST')) + _('[OPTION]... SOURCE... DEST'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY) def rename(ui, repo, *pats, **opts): """rename files; equivalent of copy + remove @@ -4638,6 +4682,7 @@ ('', 're-merge', None, _('re-merge files'))] + mergetoolopts + walkopts + formatteropts, _('[OPTION]... [FILE]...'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY, inferrepo=True) def resolve(ui, repo, *pats, **opts): """redo merges or set/view the merge status of files @@ -4939,7 +4984,8 @@ ('C', 'no-backup', None, _('do not save backup copies of files')), ('i', 'interactive', None, _('interactively select the changes')), ] + walkopts + dryrunopts, - _('[OPTION]... [-r REV] [NAME]...')) + _('[OPTION]... [-r REV] [NAME]...'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY) def revert(ui, repo, *pats, **opts): """restore files to their checkout state @@ -5019,8 +5065,10 @@ return cmdutil.revert(ui, repo, ctx, (parent, p2), *pats, **pycompat.strkwargs(opts)) -@command('rollback', dryrunopts + - [('f', 'force', False, _('ignore safety measures'))]) +@command( + 'rollback', + dryrunopts + [('f', 'force', False, _('ignore safety measures'))], + helpcategory=command.CATEGORY_MAINTENANCE) def rollback(ui, repo, **opts): """roll back the last transaction (DANGEROUS) (DEPRECATED) @@ -5072,7 +5120,9 @@ return repo.rollback(dryrun=opts.get(r'dry_run'), force=opts.get(r'force')) -@command('root', [], intents={INTENT_READONLY}) +@command( + 'root', [], intents={INTENT_READONLY}, + helpcategory=command.CATEGORY_WORKING_DIRECTORY) def root(ui, repo): """print the root (top) of the current working directory @@ -5110,6 +5160,7 @@ ('', 'print-url', None, _('start and print only the URL'))] + subrepoopts, _('[OPTION]...'), + helpcategory=command.CATEGORY_REMOTE_REPO_MANAGEMENT, optionalrepo=True) def serve(ui, repo, **opts): """start stand-alone webserver @@ -5171,6 +5222,7 @@ ('', 'change', '', _('list the changed files of a revision'), _('REV')), ] + walkopts + subrepoopts + formatteropts, _('[OPTION]... [FILE]...'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY, inferrepo=True, intents={INTENT_READONLY}) def status(ui, repo, *pats, **opts): @@ -5360,6 +5412,7 @@ @command('^summary|sum', [('', 'remote', None, _('check for push and pull'))], '[--remote]', + helpcategory=command.CATEGORY_WORKING_DIRECTORY, intents={INTENT_READONLY}) def summary(ui, repo, **opts): """summarize working directory state @@ -5650,7 +5703,8 @@ ('e', 'edit', None, _('invoke editor on commit messages')), ('m', 'message', '', _('use text as commit message'), _('TEXT')), ] + commitopts2, - _('[-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME...')) + _('[-f] [-l] [-m TEXT] [-d DATE] [-u USER] [-r REV] NAME...'), + helpcategory=command.CATEGORY_CHANGE_ORGANIZATION) def tag(ui, repo, name1, *names, **opts): """add one or more tags for the current or given revision @@ -5756,7 +5810,10 @@ tagsmod.tag(repo, names, node, message, opts.get('local'), opts.get('user'), date, editor=editor) -@command('tags', formatteropts, '', intents={INTENT_READONLY}) +@command( + 'tags', formatteropts, '', + helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, + intents={INTENT_READONLY}) def tags(ui, repo, **opts): """list repository tags @@ -5806,7 +5863,8 @@ [('p', 'patch', None, _('show patch')), ('g', 'git', None, _('use git extended diff format')), ] + templateopts, - _('[-p] [-g]')) + _('[-p] [-g]'), + helpcategory=command.CATEGORY_CHANGE_NAVIGATION) def tip(ui, repo, **opts): """show the tip revision (DEPRECATED) @@ -5831,7 +5889,8 @@ @command('unbundle', [('u', 'update', None, _('update to new branch head if changesets were unbundled'))], - _('[-u] FILE...')) + _('[-u] FILE...'), + helpcategory=command.CATEGORY_IMPORT_EXPORT) def unbundle(ui, repo, fname1, *fnames, **opts): """apply one or more bundle files @@ -5875,7 +5934,8 @@ ('d', 'date', '', _('tipmost revision matching date'), _('DATE')), ('r', 'rev', '', _('revision'), _('REV')) ] + mergetoolopts, - _('[-C|-c|-m] [-d DATE] [[-r] REV]')) + _('[-C|-c|-m] [-d DATE] [[-r] REV]'), + helpcategory=command.CATEGORY_WORKING_DIRECTORY) def update(ui, repo, node=None, **opts): """update working directory (or switch revisions) @@ -5986,7 +6046,7 @@ ui.warn("(%s)\n" % obsfatemsg) return ret -@command('verify', []) +@command('verify', [], helpcategory=command.CATEGORY_MAINTENANCE) def verify(ui, repo): """verify the integrity of the repository @@ -6005,8 +6065,9 @@ """ return hg.verify(repo) -@command('version', [] + formatteropts, norepo=True, - intents={INTENT_READONLY}) +@command( + 'version', [] + formatteropts, helpcategory=command.CATEGORY_HELP, + norepo=True, intents={INTENT_READONLY}) def version_(ui, **opts): """output version and copyright information