diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -65,6 +65,7 @@ table.update(debugcommandsmod.command._table) command = registrar.command(table) +readonly = registrar.command.readonly # common command options @@ -1060,7 +1061,7 @@ _('show only branches that have unmerged heads (DEPRECATED)')), ('c', 'closed', False, _('show normal and closed branches')), ] + formatteropts, - _('[-c]')) + _('[-c]'), cmdtype=readonly) def branches(ui, repo, active=False, closed=False, **opts): """list repository named branches @@ -1254,7 +1255,7 @@ ('', 'decode', None, _('apply any matching decode filter')), ] + walkopts + formatteropts, _('[OPTION]... FILE...'), - inferrepo=True) + inferrepo=True, cmdtype=readonly) def cat(ui, repo, file1, *pats, **opts): """output the current or given revision of files @@ -1600,7 +1601,7 @@ ('l', 'local', None, _('edit repository config')), ('g', 'global', None, _('edit global config'))] + formatteropts, _('[-u] [NAME]...'), - optionalrepo=True) + optionalrepo=True, cmdtype=readonly) def config(ui, repo, *values, **opts): """show combined config settings from all hgrc files @@ -1773,7 +1774,7 @@ ('c', 'change', '', _('change made by revision'), _('REV')) ] + diffopts + diffopts2 + walkopts + subrepoopts, _('[OPTION]... ([-c REV] | [-r REV1 [-r REV2]]) [FILE]...'), - inferrepo=True) + inferrepo=True, cmdtype=readonly) def diff(ui, repo, *pats, **opts): """diff repository (or selected files) @@ -1863,7 +1864,7 @@ ('', 'switch-parent', None, _('diff against the second parent')), ('r', 'rev', [], _('revisions to export'), _('REV')), ] + diffopts, - _('[OPTION]... [-o OUTFILESPEC] [-r] [REV]...')) + _('[OPTION]... [-o OUTFILESPEC] [-r] [REV]...'), cmdtype=readonly) def export(ui, repo, *changesets, **opts): """dump the header and diffs for one or more changesets @@ -1944,7 +1945,7 @@ [('r', 'rev', '', _('search the repository as it is in REV'), _('REV')), ('0', 'print0', None, _('end filenames with NUL, for use with xargs')), ] + walkopts + formatteropts + subrepoopts, - _('[OPTION]... [FILE]...')) + _('[OPTION]... [FILE]...'), cmdtype=readonly) def files(ui, repo, *pats, **opts): """list tracked files @@ -2317,7 +2318,7 @@ ('d', 'date', None, _('list the date (short with -q)')), ] + formatteropts + walkopts, _('[OPTION]... PATTERN [FILE]...'), - inferrepo=True) + inferrepo=True, cmdtype=readonly) def grep(ui, repo, pattern, *pats, **opts): """search revision history for a pattern in specified files @@ -2560,7 +2561,7 @@ ('a', 'active', False, _('show active branchheads only (DEPRECATED)')), ('c', 'closed', False, _('show normal and closed branch heads')), ] + templateopts, - _('[-ct] [-r STARTREV] [REV]...')) + _('[-ct] [-r STARTREV] [REV]...'), cmdtype=readonly) def heads(ui, repo, *branchrevs, **opts): """show branch heads @@ -2633,7 +2634,7 @@ ('s', 'system', [], _('show help for specific platform(s)')), ], _('[-ecks] [TOPIC]'), - norepo=True) + norepo=True, cmdtype=readonly) def help_(ui, name=None, **opts): """show help for a given topic or a help overview @@ -2675,7 +2676,7 @@ ('B', 'bookmarks', None, _('show bookmarks')), ] + remoteopts + formatteropts, _('[-nibtB] [-r REV] [SOURCE]'), - optionalrepo=True) + optionalrepo=True, cmdtype=readonly) def identify(ui, repo, source=None, rev=None, num=None, id=None, branch=None, tags=None, bookmarks=None, **opts): """identify the working directory or specified revision @@ -3249,7 +3250,7 @@ _('do not display revision or any of its ancestors'), _('REV')), ] + logopts + walkopts, _('[OPTION]... [FILE]'), - inferrepo=True) + inferrepo=True, cmdtype=readonly) def log(ui, repo, *pats, **opts): """show revision history of entire repository or files @@ -3457,7 +3458,7 @@ [('r', 'rev', '', _('revision to display'), _('REV')), ('', 'all', False, _("list files from all revisions"))] + formatteropts, - _('[-r REV]')) + _('[-r REV]'), cmdtype=readonly) def manifest(ui, repo, node=None, rev=None, **opts): """output the current or given revision of the project manifest @@ -3721,7 +3722,8 @@ displayer.show(repo[n]) displayer.close() -@command('paths', formatteropts, _('[NAME]'), optionalrepo=True) +@command('paths', formatteropts, _('[NAME]'), optionalrepo=True, + cmdtype=readonly) def paths(ui, repo, search=None, **opts): """show aliases for remote repositories @@ -4648,7 +4650,7 @@ return repo.rollback(dryrun=opts.get(r'dry_run'), force=opts.get(r'force')) -@command('root', []) +@command('root', [], cmdtype=readonly) def root(ui, repo): """print the root (top) of the current working directory @@ -4742,7 +4744,7 @@ ('', 'change', '', _('list the changed files of a revision'), _('REV')), ] + walkopts + subrepoopts + formatteropts, _('[OPTION]... [FILE]...'), - inferrepo=True) + inferrepo=True, cmdtype=readonly) def status(ui, repo, *pats, **opts): """show changed files in the working directory @@ -4907,7 +4909,8 @@ fm.end() @command('^summary|sum', - [('', 'remote', None, _('check for push and pull'))], '[--remote]') + [('', 'remote', None, _('check for push and pull'))], + '[--remote]', cmdtype=readonly) def summary(ui, repo, **opts): """summarize working directory state @@ -5308,7 +5311,7 @@ finally: release(lock, wlock) -@command('tags', formatteropts, '') +@command('tags', formatteropts, '', cmdtype=readonly) def tags(ui, repo, **opts): """list repository tags @@ -5531,7 +5534,7 @@ """ return hg.verify(repo) -@command('version', [] + formatteropts, norepo=True) +@command('version', [] + formatteropts, norepo=True, cmdtype=readonly) def version_(ui, **opts): """output version and copyright information""" opts = pycompat.byteskwargs(opts)