help: displaying extension commands by default
Differential Revision: https://phab.mercurial-scm.org/D5156
--- a/mercurial/help.py Thu Oct 18 19:57:05 2018 -0700
+++ b/mercurial/help.py Thu Oct 18 19:57:30 2018 -0700
@@ -540,15 +540,6 @@
func = e[0]
if select and not select(f):
continue
- # Only list built-in commands (defined in commands.py) and aliases
- # (defined in dispatch.py), but not any other extensions.
- # We don't want a circular dependency between this file and
- # dispatch, so reference that by name.
- # TODO(rdamazio): Just show commands from all extensions.
- if (not select and name != 'shortlist' and
- func.__module__ != commands.__name__ and
- func.__module__ != 'mercurial.dispatch'):
- continue
doc = pycompat.getdoc(func)
if filtercmd(ui, f, func, name, doc):
continue
--- a/tests/test-help.t Thu Oct 18 19:57:05 2018 -0700
+++ b/tests/test-help.t Thu Oct 18 19:57:30 2018 -0700
@@ -820,6 +820,11 @@
> def nohelp(ui, *args, **kwargs):
> pass
>
+ > @command(b'hashelp', [], b'hg hashelp', norepo=True)
+ > def hashelp(ui, *args, **kwargs):
+ > """Extension command's help"""
+ > pass
+ >
> def uisetup(ui):
> ui.setconfig(b'alias', b'shellalias', b'!echo hi', b'helpext')
> ui.setconfig(b'alias', b'hgalias', b'summary', b'helpext')
@@ -904,6 +909,19 @@
(some details hidden, use --verbose to show complete help)
+Test that default list of commands includes extension commands that have help,
+but not those that don't, except in verbose mode, when a keyword is passed, or
+when help about the extension is requested.
+
+#if no-extraextensions
+
+ $ hg help | grep hashelp
+ hashelp Extension command's help
+ $ hg help | grep nohelp
+ [1]
+ $ hg help -v | grep nohelp
+ nohelp (no help text available)
+
$ hg help -k nohelp
Commands:
@@ -913,144 +931,15 @@
nohelp (no help text available)
-Test that default list of commands omits extension commands
-
-#if no-extraextensions
-
- $ hg help
- Mercurial Distributed SCM
+ $ hg help helpext
+ helpext extension - no help text available
list of commands:
- Repository creation:
-
- clone make a copy of an existing repository
- init create a new repository in the given directory
-
- Remote repository management:
-
- incoming show new changesets found in source
- outgoing show changesets not found in the destination
- paths show aliases for remote repositories
- pull pull changes from the specified source
- push push changes to the specified destination
- serve start stand-alone webserver
-
- Change creation:
-
- commit commit the specified files or all outstanding changes
-
- Change manipulation:
-
- backout reverse effect of earlier changeset
- graft copy changes from other branches onto the current branch
- merge merge another revision into working directory
-
- Change organization:
-
- bookmarks create a new bookmark or list existing bookmarks
- branch set or show the current branch name
- branches list repository named branches
- phase set or show the current phase name
- tag add one or more tags for the current or given revision
- tags list repository tags
-
- File content management:
-
- annotate show changeset information by line for each file
- cat output the current or given revision of files
- copy mark files as copied for the next commit
- diff diff repository (or selected files)
- grep search revision history for a pattern in specified files
-
- Change navigation:
-
- bisect subdivision search of changesets
- heads show branch heads
- hgalias My doc
- identify identify the working directory or specified revision
- log show revision history of entire repository or files
-
- Working directory management:
-
- add add the specified files on the next commit
- addremove add all new files, delete all missing files
- files list tracked files
- forget forget the specified files on the next commit
- remove remove the specified files on the next commit
- rename rename files; equivalent of copy + remove
- resolve redo merges or set/view the merge status of files
- revert restore files to their checkout state
- root print the root (top) of the current working directory
- status show changed files in the working directory
- summary summarize working directory state
- update update working directory (or switch revisions)
-
- Change import/export:
-
- archive create an unversioned archive of a repository revision
- bundle create a bundle file
- export dump the header and diffs for one or more changesets
- import import an ordered set of patches
- unbundle apply one or more bundle files
-
- Repository maintenance:
-
- manifest output the current or given revision of the project manifest
- recover roll back an interrupted transaction
- verify verify the integrity of the repository
-
- Help:
-
- config show combined config settings from all hgrc files
- help show help for a given topic or a help overview
- version output version and copyright information
-
- enabled extensions:
-
- helpext (no help text available)
-
- additional help topics:
-
- Mercurial identifiers:
-
- filesets Specifying File Sets
- hgignore Syntax for Mercurial Ignore Files
- patterns File Name Patterns
- revisions Specifying Revisions
- urls URL Paths
-
- Mercurial output:
-
- color Colorizing Outputs
- dates Date Formats
- diffs Diff Formats
- templating Template Usage
-
- Mercurial configuration:
-
- config Configuration Files
- environment Environment Variables
- extensions Using Additional Features
- flags Command-line flags
- hgweb Configuring hgweb
- merge-tools Merge Tools
- pager Pager Support
-
- Concepts:
-
- bundlespec Bundle File Formats
- glossary Glossary
- phases Working with Phases
- subrepos Subrepositories
-
- Miscellaneous:
-
- deprecated Deprecated Features
- internals Technical implementation topics
- scripting Using Mercurial from scripts and automation
-
- (use 'hg help -v' to show built-in aliases and global options)
+ hashelp Extension command's help
+ nohelp (no help text available)
+
+ (use 'hg help -v helpext' to show built-in aliases and global options)
#endif
@@ -1402,18 +1291,6 @@
*empty chunk* at the end of each *delta group* denotes the boundary to the
next filelog sub-segment.
-Test list of commands with command with no help text
-
- $ hg help helpext
- helpext extension - no help text available
-
- list of commands:
-
- nohelp (no help text available)
-
- (use 'hg help -v helpext' to show built-in aliases and global options)
-
-
test advanced, deprecated and experimental options are hidden in command help
$ hg help debugoptADV
hg debugoptADV
@@ -2665,6 +2542,13 @@
search revision history for a pattern in specified files
</td></tr>
<tr><td>
+ <a href="/help/hashelp">
+ hashelp
+ </a>
+ </td><td>
+ Extension command's help
+ </td></tr>
+ <tr><td>
<a href="/help/heads">
heads
</a>