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