D5454: help: hide default value for boolean flag and show "[no-]" only for default-on

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Wed Dec 19 16:51:06 UTC 2018


martinvonz created this revision.
Herald added a reviewer: durin42.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  As Anton (av6) pointed out, the "[no-]" is confusing for action flags
  like `hg bookmark --delete`. We could come up with a way of indicating
  which flags are action flags (e.g. use None for the default value
  instead of False). However, it's probably also unlikely that users
  will want to negate even non-action flags like --hidden.
  
  One of the more common flags where the "[no-]" prefix would be useful
  is `hg evolve --update`. The reason it's helpful there is that it
  defaults to on. So I think we can simply include "[no-]" only for
  flags that are on by default (and thus require the user to add the
  "[no-]" for the option to have any effect).
  
  If we no longer show the "[no-]" for default-off flags, it also seems
  confusing to show the "default: off" for them. That, in turn, makes it
  confusing to show "default: on" for default-on flags. So this patch
  removes the "default: on/off" for boolean flags. The presence of
  "[no-]" thus becomes an indicator that the flag is on by default.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D5454

AFFECTED FILES
  mercurial/help.py
  tests/test-extension.t
  tests/test-fix.t
  tests/test-help.t
  tests/test-narrow-trackedcmd.t
  tests/test-shelve.t
  tests/test-uncommit.t

CHANGE DETAILS

diff --git a/tests/test-uncommit.t b/tests/test-uncommit.t
--- a/tests/test-uncommit.t
+++ b/tests/test-uncommit.t
@@ -34,8 +34,7 @@
   
   options ([+] can be repeated):
   
-      --[no-]keep           allow an empty commit after uncommiting (default:
-                            off)
+      --keep                allow an empty commit after uncommiting
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
   
diff --git a/tests/test-shelve.t b/tests/test-shelve.t
--- a/tests/test-shelve.t
+++ b/tests/test-shelve.t
@@ -75,7 +75,7 @@
       --cleanup             delete all shelved changes
       --date DATE           shelve with the specified commit date
    -d --delete              delete the named shelved change(s)
-   -e --[no-]edit           invoke editor on commit messages (default: off)
+   -e --edit                invoke editor on commit messages
    -l --list                list current shelves
    -m --message TEXT        use text as shelve message
    -n --name NAME           use the given name for the shelved commit
diff --git a/tests/test-narrow-trackedcmd.t b/tests/test-narrow-trackedcmd.t
--- a/tests/test-narrow-trackedcmd.t
+++ b/tests/test-narrow-trackedcmd.t
@@ -99,20 +99,18 @@
   
   options ([+] can be repeated):
   
-      --addinclude VALUE [+]            new paths to include
-      --removeinclude VALUE [+]         old paths to no longer include
-      --addexclude VALUE [+]            new paths to exclude
-      --import-rules VALUE              import narrowspecs from a file
-      --removeexclude VALUE [+]         old paths to no longer exclude
-      --[no-]clear                      whether to replace the existing
-                                        narrowspec (default: off)
-      --[no-]force-delete-local-changes forces deletion of local changes when
-                                        narrowing (default: off)
-   -e --ssh CMD                         specify ssh command to use
-      --remotecmd CMD                   specify hg command to run on the remote
-                                        side
-      --insecure                        do not verify server certificate
-                                        (ignoring web.cacerts config)
+      --addinclude VALUE [+]       new paths to include
+      --removeinclude VALUE [+]    old paths to no longer include
+      --addexclude VALUE [+]       new paths to exclude
+      --import-rules VALUE         import narrowspecs from a file
+      --removeexclude VALUE [+]    old paths to no longer exclude
+      --clear                      whether to replace the existing narrowspec
+      --force-delete-local-changes forces deletion of local changes when
+                                   narrowing
+   -e --ssh CMD                    specify ssh command to use
+      --remotecmd CMD              specify hg command to run on the remote side
+      --insecure                   do not verify server certificate (ignoring
+                                   web.cacerts config)
   
   (use 'hg tracked -h' to show more help)
   [255]
diff --git a/tests/test-help.t b/tests/test-help.t
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -440,7 +440,7 @@
       --profile           print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
-      --[no-]hidden       consider hidden changesets (default: off)
+      --hidden            consider hidden changesets
       --pager TYPE        when to paginate (boolean, always, auto, or never)
                           (default: auto)
   
@@ -540,7 +540,7 @@
       --profile           print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
-      --[no-]hidden       consider hidden changesets (default: off)
+      --hidden            consider hidden changesets
       --pager TYPE        when to paginate (boolean, always, auto, or never)
                           (default: auto)
 
@@ -905,8 +905,8 @@
                                     xxxxxxxxxxxxxxxxxxxxxxx (default: 3)
    -n --                            normal desc
       --newline VALUE               line1 line2
-      --[no-]default-off            enable X (default: off)
-      --[no-]default-on             enable Y (default: on)
+      --default-off                 enable X
+      --[no-]default-on             enable Y
       --callableopt VALUE           adds foo
       --customopt VALUE             adds bar
       --customopt-withdefault VALUE adds bar (default: foo)
@@ -2889,8 +2889,8 @@
   <td>--help</td>
   <td>display help and exit</td></tr>
   <tr><td></td>
-  <td>--[no-]hidden</td>
-  <td>consider hidden changesets (default: off)</td></tr>
+  <td>--hidden</td>
+  <td>consider hidden changesets</td></tr>
   <tr><td></td>
   <td>--pager TYPE</td>
   <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
@@ -3093,8 +3093,8 @@
   <td>--help</td>
   <td>display help and exit</td></tr>
   <tr><td></td>
-  <td>--[no-]hidden</td>
-  <td>consider hidden changesets (default: off)</td></tr>
+  <td>--hidden</td>
+  <td>consider hidden changesets</td></tr>
   <tr><td></td>
   <td>--pager TYPE</td>
   <td>when to paginate (boolean, always, auto, or never) (default: auto)</td></tr>
diff --git a/tests/test-fix.t b/tests/test-fix.t
--- a/tests/test-fix.t
+++ b/tests/test-fix.t
@@ -104,13 +104,12 @@
   
   options ([+] can be repeated):
   
-      --[no-]all         fix all non-public non-obsolete revisions (default:
-                         off)
-      --base REV [+]     revisions to diff against (overrides automatic
-                         selection, and applies to every revision being fixed)
-   -r --rev REV [+]      revisions to fix
-   -w --[no-]working-dir fix the working directory (default: off)
-      --[no-]whole       always fix every line of a file (default: off)
+      --all          fix all non-public non-obsolete revisions
+      --base REV [+] revisions to diff against (overrides automatic selection,
+                     and applies to every revision being fixed)
+   -r --rev REV [+]  revisions to fix
+   -w --working-dir  fix the working directory
+      --whole        always fix every line of a file
   
   (some details hidden, use --verbose to show complete help)
 
diff --git a/tests/test-extension.t b/tests/test-extension.t
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -716,7 +716,7 @@
       --profile           print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
-      --[no-]hidden       consider hidden changesets (default: off)
+      --hidden            consider hidden changesets
       --pager TYPE        when to paginate (boolean, always, auto, or never)
                           (default: auto)
 
@@ -755,7 +755,7 @@
       --profile           print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
-      --[no-]hidden       consider hidden changesets (default: off)
+      --hidden            consider hidden changesets
       --pager TYPE        when to paginate (boolean, always, auto, or never)
                           (default: auto)
 
@@ -1043,7 +1043,7 @@
       --profile           print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
-      --[no-]hidden       consider hidden changesets (default: off)
+      --hidden            consider hidden changesets
       --pager TYPE        when to paginate (boolean, always, auto, or never)
                           (default: auto)
 
@@ -1080,7 +1080,7 @@
       --profile           print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
-      --[no-]hidden       consider hidden changesets (default: off)
+      --hidden            consider hidden changesets
       --pager TYPE        when to paginate (boolean, always, auto, or never)
                           (default: auto)
 
@@ -1155,7 +1155,7 @@
       --profile           print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
-      --[no-]hidden       consider hidden changesets (default: off)
+      --hidden            consider hidden changesets
       --pager TYPE        when to paginate (boolean, always, auto, or never)
                           (default: auto)
 
@@ -1191,7 +1191,7 @@
       --profile           print command execution profile
       --version           output version information and exit
    -h --help              display help and exit
-      --[no-]hidden       consider hidden changesets (default: off)
+      --hidden            consider hidden changesets
       --pager TYPE        when to paginate (boolean, always, auto, or never)
                           (default: auto)
 
diff --git a/mercurial/help.py b/mercurial/help.py
--- a/mercurial/help.py
+++ b/mercurial/help.py
@@ -160,20 +160,18 @@
         if shortopt:
             so = '-' + shortopt
         lo = '--' + longopt
-        if isinstance(default, bool):
+        if default is True:
             lo = '--[no-]' + longopt
 
         if isinstance(default, fancyopts.customopt):
             default = default.getdefaultvalue()
-        if (default and not callable(default)) or default is False:
+        if (default and not callable(default)):
             # default is of unknown type, and in Python 2 we abused
             # the %s-shows-repr property to handle integers etc. To
             # match that behavior on Python 3, we do str(default) and
             # then convert it to bytes.
-            defaultstr = pycompat.bytestr(default)
-            if isinstance(default, bool):
-                defaultstr = _("on") if default else _("off")
-            desc += _(" (default: %s)") % defaultstr
+            if default is not True:
+                desc += _(" (default: %s)") % pycompat.bytestr(default)
 
         if isinstance(default, list):
             lo += " %s [+]" % optlabel



To: martinvonz, durin42, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list