help: allow hiding of help topics
Differential Revision: https://phab.mercurial-scm.org/D5077
--- a/mercurial/configitems.py Sat Oct 13 05:02:55 2018 -0700
+++ b/mercurial/configitems.py Sat Oct 13 05:43:39 2018 -0700
@@ -703,6 +703,10 @@
default=False,
generic=True,
)
+coreconfigitem('help', 'hidden-topic\..*',
+ default=False,
+ generic=True,
+)
coreconfigitem('hooks', '.*',
default=dynamicdefault,
generic=True,
--- a/mercurial/help.py Sat Oct 13 05:02:55 2018 -0700
+++ b/mercurial/help.py Sat Oct 13 05:43:39 2018 -0700
@@ -198,6 +198,9 @@
return True
return False
+def filtertopic(ui, topic):
+ return ui.configbool('help', 'hidden-topic.%s' % topic, False)
+
def topicmatch(ui, commands, kw):
"""Return help topics matching kw.
@@ -218,7 +221,9 @@
if (sum(map(lowercontains, names))
or lowercontains(header)
or (callable(doc) and lowercontains(doc(ui)))):
- results['topics'].append((names[0], header))
+ name = names[0]
+ if not filtertopic(ui, name):
+ results['topics'].append((names[0], header))
for cmd, entry in commands.table.iteritems():
if len(entry) == 3:
summary = entry[2]
@@ -599,7 +604,10 @@
else:
category = TOPIC_CATEGORY_NONE
- topiccats.setdefault(category, []).append((names[0], header))
+ topicname = names[0]
+ if not filtertopic(ui, topicname):
+ topiccats.setdefault(category, []).append(
+ (topicname, header))
# Check that all categories have an order.
missing_order = set(topiccats.keys()) - set(TOPIC_CATEGORY_ORDER)
--- a/tests/test-help-hide.t Sat Oct 13 05:02:55 2018 -0700
+++ b/tests/test-help-hide.t Sat Oct 13 05:43:39 2018 -0700
@@ -125,3 +125,131 @@
scripting Using Mercurial from scripts and automation
(use 'hg help -v' to show built-in aliases and global options)
+
+Test hiding some topics.
+
+ $ hg --config help.hidden-topic.deprecated=true \
+ > --config help.hidden-topic.internals=true \
+ > --config help.hidden-topic.scripting=true help
+ Mercurial Distributed SCM
+
+ 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
+ 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
+
+ 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
+
+ (use 'hg help -v' to show built-in aliases and global options)