help: displaying extension commands by default
authorrdamazio@google.com
Thu, 18 Oct 2018 19:57:30 -0700
changeset 40415 dce0e0f78f0f
parent 40414 444861dc1e55
child 40423 597bb5a6867f
help: displaying extension commands by default Differential Revision: https://phab.mercurial-scm.org/D5156
mercurial/help.py
tests/test-help.t
--- 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>