[PATCH] dispatch: fix so that --help more reliably shows command help (issue4240)

Prabhu Gnana Sundar pprabhugs at gmail.com
Tue Jul 1 12:05:55 CDT 2014


# HG changeset patch
# User Prabhu Gnana Sundar <pprabhugs at gmail.com>
# Date 1404234214 -19800
#      Tue Jul 01 22:33:34 2014 +0530
# Node ID 43e4cd31fae70005b4680ccb53b51f46b962e5b6
# Parent  99db956b88ab699644c99095fecadbc4c83adbfc
dispatch: fix so that --help more reliably shows command help (issue4240)

After hg 3.0, "hg showconfig --help" was showing the configuration man page
instead of the 'hg help -c showconfig' output.

This patch fixes the 'hg showconfig --help' regression issue by removing an
unwanted assignement of aliases[0] to cmd and shows the correct command
in the first line of help description.
Also, added a test case to test 'hg showconfig --help'.

diff -r 99db956b88ab -r 43e4cd31fae7 mercurial/cmdutil.py
--- a/mercurial/cmdutil.py	Sun Jun 01 16:01:01 2014 -0700
+++ b/mercurial/cmdutil.py	Tue Jul 01 22:33:34 2014 +0530
@@ -39,11 +39,13 @@
         if cmd in aliases:
             found = cmd
         elif not strict:
-            for a in aliases:
-                if a.startswith(cmd):
-                    found = a
+            for alias in aliases:
+                if alias.startswith(cmd):
+                    found = alias
                     break
         if found is not None:
+            aliases = [alias for alias in aliases if alias != cmd]
+            aliases.insert(0, cmd)
             if aliases[0].startswith("debug") or found.startswith("debug"):
                 debugchoice[found] = (aliases, table[e])
             else:
diff -r 99db956b88ab -r 43e4cd31fae7 mercurial/dispatch.py
--- a/mercurial/dispatch.py	Sun Jun 01 16:01:01 2014 -0700
+++ b/mercurial/dispatch.py	Tue Jul 01 22:33:34 2014 +0530
@@ -494,7 +494,6 @@
         cmd, args = args[0], args[1:]
         aliases, entry = cmdutil.findcmd(cmd, commands.table,
                                          ui.configbool("ui", "strict"))
-        cmd = aliases[0]
         args = aliasargs(entry[0], args)
         defaults = ui.config("defaults", cmd)
         if defaults:
diff -r 99db956b88ab -r 43e4cd31fae7 tests/test-help.t
--- a/tests/test-help.t	Sun Jun 01 16:01:01 2014 -0700
+++ b/tests/test-help.t	Tue Jul 01 22:33:34 2014 +0530
@@ -2085,3 +2085,41 @@
   $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS
 
 #endif
+
+
+Test showconfig help
+
+  $ hg showconfig --help
+  hg showconfig [-u] [NAME]...
+  
+  aliases: config, debugconfig
+  
+  show combined config settings from all hgrc files
+  
+      With no arguments, print names and values of all config items.
+  
+      With one argument of the form section.name, print just the value of that
+      config item.
+  
+      With multiple arguments, print names and values of all config items with
+      matching section names.
+  
+      With --edit, start an editor on the user-level config file. With --global,
+      edit the system-wide config file. With --local, edit the repository-level
+      config file.
+  
+      With --debug, the source (filename and line number) is printed for each
+      config item.
+  
+      See "hg help config" for more information about config files.
+  
+      Returns 0 on success.
+  
+  options:
+  
+   -u --untrusted show untrusted configuration options
+   -e --edit      edit user config
+   -l --local     edit repository config
+   -g --global    edit global config
+  
+  use "hg -v help showconfig" to show the global options


More information about the Mercurial-devel mailing list