Patchwork [8,of,8,v2] help: mark boolean flags with a ^ and explain that they can be negated (RFC)

login
register
mail settings
Submitter Augie Fackler
Date Aug. 30, 2016, 8:16 p.m.
Message ID <5efc13a760938ff5fd8e.1472588181@arthedain.pit.corp.google.com>
Download mbox | patch
Permalink /patch/16494/
State Changes Requested
Headers show

Comments

Augie Fackler - Aug. 30, 2016, 8:16 p.m.
# HG changeset patch
# User Augie Fackler <augie@google.com>
# Date 1472584444 14400
#      Tue Aug 30 15:14:04 2016 -0400
# Node ID 5efc13a760938ff5fd8e4553dd8e06d06b98025b
# Parent  fd68fb86c29873eb32c4a2bd28f7ac0abe3dc172
help: mark boolean flags with a ^ and explain that they can be negated (RFC)

This patch is an RFC - it does not update test expectations other than
in one file so the changes can be bikeshod. I'm not really in love
with this solution, but I don't have anything better either (credit
and/or blame for this idea actually goes to timeless.)
timeless - Aug. 31, 2016, 4:42 a.m.
In principle you shouldn't use multi occur to guard this.

     if multioccur:
-        header += (_(" ([+] can be repeated)"))
+        m = _(
+            " ([+] can be repeated, flags marked ^ can be negated with
--no-)")
+        header += (m)

It's too hard for me you write the correct logic (you can use a set and
dictionary).
Augie Fackler - Aug. 31, 2016, 1:15 p.m.
On Wed, Aug 31, 2016 at 12:42 AM, timeless <timeless@gmail.com> wrote:
> In principle you shouldn't use multi occur to guard this.
>
>      if multioccur:
> -        header += (_(" ([+] can be repeated)"))
> +        m = _(
> +            " ([+] can be repeated, flags marked ^ can be negated with
> --no-)")
> +        header += (m)
>
> It's too hard for me you write the correct logic (you can use a set and
> dictionary).

Yes, I'll change the code a little. How's the overall feel of the
output in help? Good enough? Awful?
Matt Mackall - Aug. 31, 2016, 4:13 p.m.
On Tue, 2016-08-30 at 16:16 -0400, Augie Fackler wrote:
> # HG changeset patch
> # User Augie Fackler <augie@google.com>
> # Date 1472584444 14400
> #      Tue Aug 30 15:14:04 2016 -0400
> # Node ID 5efc13a760938ff5fd8e4553dd8e06d06b98025b
> # Parent  fd68fb86c29873eb32c4a2bd28f7ac0abe3dc172
> help: mark boolean flags with a ^ and explain that they can be negated (RFC)


>  options ([+] can be repeated, flags marked ^ can be negated with --no-):

The format here is a bit inconsistent. Perhaps:

  options ([+] can be repeated, [?] are flags):

I think actually sticking ^ on the option name itself is a little bizarre and
might lead to some minor confusion.

Also, we should probably figure out a way to have aliases for some of these
options so we can fully normalize the scheme. Consider:

> +   -y --noninteractive^   do not prompt, automatically pick the first choice

Having --no-noninteractive seems really sad. We could make --noninteractive
hidden and then advertise --no-interactive as the long version.

Also, I don't think --no-no-backup is a good idea. --backup should be its
negation.

> +      --version^          output version information and exit
> +   -h --help^             display help and exit

Wat. That's maybe a little too generalized.

-- 
Mathematics is the supreme nostalgia of our time.
Augie Fackler - Aug. 31, 2016, 5:10 p.m.
On Wed, Aug 31, 2016 at 12:13 PM, Matt Mackall <mpm@selenic.com> wrote:
> On Tue, 2016-08-30 at 16:16 -0400, Augie Fackler wrote:
>> # HG changeset patch
>> # User Augie Fackler <augie@google.com>
>> # Date 1472584444 14400
>> #      Tue Aug 30 15:14:04 2016 -0400
>> # Node ID 5efc13a760938ff5fd8e4553dd8e06d06b98025b
>> # Parent  fd68fb86c29873eb32c4a2bd28f7ac0abe3dc172
>> help: mark boolean flags with a ^ and explain that they can be negated (RFC)
>
>
>>  options ([+] can be repeated, flags marked ^ can be negated with --no-):
>
> The format here is a bit inconsistent. Perhaps:
>
>   options ([+] can be repeated, [?] are flags):
>
> I think actually sticking ^ on the option name itself is a little bizarre and
> might lead to some minor confusion.
>
> Also, we should probably figure out a way to have aliases for some of these
> options so we can fully normalize the scheme. Consider:
>
>> +   -y --noninteractive^   do not prompt, automatically pick the first choice
>
> Having --no-noninteractive seems really sad. We could make --noninteractive
> hidden and then advertise --no-interactive as the long version.
>
> Also, I don't think --no-no-backup is a good idea. --backup should be its
> negation.

These cases are a bit problematic, because we don't really have a way
to specify default-true flags. Would it be good enough to blacklist
anything that starts with no- and noninteractive for now?

>
>> +      --version^          output version information and exit
>> +   -h --help^             display help and exit
>
> Wat. That's maybe a little too generalized.

Heh. Yeah. I can blacklist specific flags, I guess.

>
> --
> Mathematics is the supreme nostalgia of our time.
>
timeless - Aug. 31, 2016, 7:43 p.m.
>   options ([+] can be repeated, [?] are flags):

This is closer to how I was envisioning it.

> Having --no-noninteractive seems really sad. We could make --noninteractive
> hidden and then advertise --no-interactive as the long version.

Agreed

> Also, I don't think --no-no-backup is a good idea. --backup should be its
> negation.

Agreed
Matt Mackall - Sept. 1, 2016, 5:51 p.m.
On Wed, 2016-08-31 at 13:10 -0400, Augie Fackler wrote:
> On Wed, Aug 31, 2016 at 12:13 PM, Matt Mackall <mpm@selenic.com> wrote:
> > 
> > On Tue, 2016-08-30 at 16:16 -0400, Augie Fackler wrote:
> > > 
> > > # HG changeset patch
> > > # User Augie Fackler <augie@google.com>
> > > # Date 1472584444 14400
> > > #      Tue Aug 30 15:14:04 2016 -0400
> > > # Node ID 5efc13a760938ff5fd8e4553dd8e06d06b98025b
> > > # Parent  fd68fb86c29873eb32c4a2bd28f7ac0abe3dc172
> > > help: mark boolean flags with a ^ and explain that they can be negated
> > > (RFC)
> > 
> > > 
> > >  options ([+] can be repeated, flags marked ^ can be negated with --no-):
> > The format here is a bit inconsistent. Perhaps:
> > 
> >   options ([+] can be repeated, [?] are flags):
> > 
> > I think actually sticking ^ on the option name itself is a little bizarre
> > and
> > might lead to some minor confusion.
> > 
> > Also, we should probably figure out a way to have aliases for some of these
> > options so we can fully normalize the scheme. Consider:
> > 
> > > 
> > > +   -y --noninteractive^   do not prompt, automatically pick the first
> > > choice
> > Having --no-noninteractive seems really sad. We could make --noninteractive
> > hidden and then advertise --no-interactive as the long version.
> > 
> > Also, I don't think --no-no-backup is a good idea. --backup should be its
> > negation.
> These cases are a bit problematic, because we don't really have a way
> to specify default-true flags.

I was thinking --no-backup would be detected as an inverse. So the parser would
synthesize a --backup option and if it was used bare, opts["no_backup"] would be
set to False rather than None. Maybe that's too convoluted though.

>  Would it be good enough to blacklist
> anything that starts with no- and noninteractive for now?

Yep. Though it's a bit of a shame for fancyopts to acquire such knowledge.

-- 
Mathematics is the supreme nostalgia of our time.
Pierre-Yves David - Sept. 6, 2016, 4:09 p.m.
On 08/31/2016 07:10 PM, Augie Fackler wrote:
> On Wed, Aug 31, 2016 at 12:13 PM, Matt Mackall <mpm@selenic.com> wrote:
>> On Tue, 2016-08-30 at 16:16 -0400, Augie Fackler wrote:
>>> # HG changeset patch
>>> # User Augie Fackler <augie@google.com>
>>> # Date 1472584444 14400
>>> #      Tue Aug 30 15:14:04 2016 -0400
>>> # Node ID 5efc13a760938ff5fd8e4553dd8e06d06b98025b
>>> # Parent  fd68fb86c29873eb32c4a2bd28f7ac0abe3dc172
>>> help: mark boolean flags with a ^ and explain that they can be negated (RFC)
>>
>>
>>>  options ([+] can be repeated, flags marked ^ can be negated with --no-):

I like the general idea.

>> The format here is a bit inconsistent. Perhaps:
>>
>>   options ([+] can be repeated, [?] are flags):

What  about [&], "?" is a bit confusing to me as we often use it for 
optional/extend help thingy. "&" is often related to boolean/bit 
operation and seems to fit here.

>> I think actually sticking ^ on the option name itself is a little bizarre and
>> might lead to some minor confusion.
>>
>> Also, we should probably figure out a way to have aliases for some of these
>> options so we can fully normalize the scheme. Consider:
>>
>>> +   -y --noninteractive^   do not prompt, automatically pick the first choice
>>
>> Having --no-noninteractive seems really sad. We could make --noninteractive
>> hidden and then advertise --no-interactive as the long version.
>>
>> Also, I don't think --no-no-backup is a good idea. --backup should be its
>> negation.
>
> These cases are a bit problematic, because we don't really have a way
> to specify default-true flags. Would it be good enough to blacklist
> anything that starts with no- and noninteractive for now?

Can you elaborate on this. I saw your changeset making it forbiden as a 
default value (because it was silly) but is seems like we found 
non-silly usecase. Is there a technical reason why we don't want default 
value to True?


>>> +      --version^          output version information and exit
>>> +   -h --help^             display help and exit
>>
>> Wat. That's maybe a little too generalized.
>
> Heh. Yeah. I can blacklist specific flags, I guess.

If this is a common issue, we could consider using some special marker 
(or special default value) in the option definition. But the list will 
probably be short and that won't be worth the trouble.

Patch

diff --git a/mercurial/help.py b/mercurial/help.py
--- a/mercurial/help.py
+++ b/mercurial/help.py
@@ -87,11 +87,16 @@  def optrst(header, options, verbose):
             multioccur = True
         elif (default is not None) and not isinstance(default, bool):
             lo += " %s" % optlabel
+        else:
+            lo += '^'
+            multioccur = True
 
         data.append((so, lo, desc))
 
     if multioccur:
-        header += (_(" ([+] can be repeated)"))
+        m = _(
+            " ([+] can be repeated, flags marked ^ can be negated with --no-)")
+        header += (m)
 
     rst = ['\n%s:\n\n' % header]
     rst.extend(minirst.maketable(data, 1))
diff --git a/tests/test-help.t b/tests/test-help.t
--- a/tests/test-help.t
+++ b/tests/test-help.t
@@ -311,26 +311,27 @@  Test short command list with verbose opt
    update, up, checkout, co
                  update working directory (or switch revisions)
   
-  global options ([+] can be repeated):
+  global options ([+] can be repeated, flags marked ^ can be negated with
+  --no-):
   
    -R --repository REPO   repository root directory or name of overlay bundle
                           file
       --cwd DIR           change working directory
-   -y --noninteractive    do not prompt, automatically pick the first choice for
+   -y --noninteractive^   do not prompt, automatically pick the first choice for
                           all prompts
-   -q --quiet             suppress output
-   -v --verbose           enable additional output
+   -q --quiet^            suppress output
+   -v --verbose^          enable additional output
       --config CONFIG [+] set/override config option (use 'section.name=value')
-      --debug             enable debugging output
-      --debugger          start debugger
+      --debug^            enable debugging output
+      --debugger^         start debugger
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
-      --traceback         always print a traceback on exception
-      --time              time how long the command takes
-      --profile           print command execution profile
-      --version           output version information and exit
-   -h --help              display help and exit
-      --hidden            consider hidden changesets
+      --traceback^        always print a traceback on exception
+      --time^             time how long the command takes
+      --profile^          print command execution profile
+      --version^          output version information and exit
+   -h --help^             display help and exit
+      --hidden^           consider hidden changesets
   
   (use "hg help" for the full list of commands)
 
@@ -349,12 +350,12 @@  Test short command list with verbose opt
   
       Returns 0 if all files are successfully added.
   
-  options ([+] can be repeated):
+  options ([+] can be repeated, flags marked ^ can be negated with --no-):
   
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
-   -n --dry-run             do not perform actions, just print output
+   -S --subrepos^           recurse into subrepositories
+   -n --dry-run^            do not perform actions, just print output
   
   (some details hidden, use --verbose to show complete help)
 
@@ -400,33 +401,34 @@  Verbose help for add
   
       Returns 0 if all files are successfully added.
   
-  options ([+] can be repeated):
+  options ([+] can be repeated, flags marked ^ can be negated with --no-):
   
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
-   -n --dry-run             do not perform actions, just print output
-  
-  global options ([+] can be repeated):
+   -S --subrepos^           recurse into subrepositories
+   -n --dry-run^            do not perform actions, just print output
+  
+  global options ([+] can be repeated, flags marked ^ can be negated with
+  --no-):
   
    -R --repository REPO   repository root directory or name of overlay bundle
                           file
       --cwd DIR           change working directory
-   -y --noninteractive    do not prompt, automatically pick the first choice for
+   -y --noninteractive^   do not prompt, automatically pick the first choice for
                           all prompts
-   -q --quiet             suppress output
-   -v --verbose           enable additional output
+   -q --quiet^            suppress output
+   -v --verbose^          enable additional output
       --config CONFIG [+] set/override config option (use 'section.name=value')
-      --debug             enable debugging output
-      --debugger          start debugger
+      --debug^            enable debugging output
+      --debugger^         start debugger
       --encoding ENCODE   set the charset encoding (default: ascii)
       --encodingmode MODE set the charset encoding mode (default: strict)
-      --traceback         always print a traceback on exception
-      --time              time how long the command takes
-      --profile           print command execution profile
-      --version           output version information and exit
-   -h --help              display help and exit
-      --hidden            consider hidden changesets
+      --traceback^        always print a traceback on exception
+      --time^             time how long the command takes
+      --profile^          print command execution profile
+      --version^          output version information and exit
+   -h --help^             display help and exit
+      --hidden^           consider hidden changesets
 
 Test the textwidth config option
 
@@ -460,12 +462,12 @@  Test help option with version option
   
   add the specified files on the next commit
   
-  options ([+] can be repeated):
+  options ([+] can be repeated, flags marked ^ can be negated with --no-):
   
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
-   -n --dry-run             do not perform actions, just print output
+   -S --subrepos^           recurse into subrepositories
+   -n --dry-run^            do not perform actions, just print output
   
   (use "hg add -h" to show more help)
   [255]
@@ -532,25 +534,25 @@  Test command without options
   
       Returns 0 on success.
   
-  options ([+] can be repeated):
-  
-   -r --rev REV [+]         revision
-   -c --change REV          change made by revision
-   -a --text                treat all files as text
-   -g --git                 use git extended diff format
-      --nodates             omit dates from diff headers
-      --noprefix            omit a/ and b/ prefixes from filenames
-   -p --show-function       show which function each change is in
-      --reverse             produce a diff that undoes the changes
-   -w --ignore-all-space    ignore white space when comparing lines
-   -b --ignore-space-change ignore changes in the amount of white space
-   -B --ignore-blank-lines  ignore changes whose lines are all blank
-   -U --unified NUM         number of lines of context to show
-      --stat                output diffstat-style summary of changes
-      --root DIR            produce diffs relative to subdirectory
-   -I --include PATTERN [+] include names matching the given patterns
-   -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
+  options ([+] can be repeated, flags marked ^ can be negated with --no-):
+  
+   -r --rev REV [+]          revision
+   -c --change REV           change made by revision
+   -a --text^                treat all files as text
+   -g --git^                 use git extended diff format
+      --nodates^             omit dates from diff headers
+      --noprefix^            omit a/ and b/ prefixes from filenames
+   -p --show-function^       show which function each change is in
+      --reverse^             produce a diff that undoes the changes
+   -w --ignore-all-space^    ignore white space when comparing lines
+   -b --ignore-space-change^ ignore changes in the amount of white space
+   -B --ignore-blank-lines^  ignore changes whose lines are all blank
+   -U --unified NUM          number of lines of context to show
+      --stat^                output diffstat-style summary of changes
+      --root DIR             produce diffs relative to subdirectory
+   -I --include PATTERN [+]  include names matching the given patterns
+   -X --exclude PATTERN [+]  exclude names matching the given patterns
+   -S --subrepos^            recurse into subrepositories
   
   (some details hidden, use --verbose to show complete help)
 
@@ -594,24 +596,24 @@  Test command without options
   
       Returns 0 on success.
   
-  options ([+] can be repeated):
-  
-   -A --all                 show status of all files
-   -m --modified            show only modified files
-   -a --added               show only added files
-   -r --removed             show only removed files
-   -d --deleted             show only deleted (but tracked) files
-   -c --clean               show only files without changes
-   -u --unknown             show only unknown (not tracked) files
-   -i --ignored             show only ignored files
-   -n --no-status           hide status prefix
-   -C --copies              show source of copied files
-   -0 --print0              end filenames with NUL, for use with xargs
+  options ([+] can be repeated, flags marked ^ can be negated with --no-):
+  
+   -A --all^                show status of all files
+   -m --modified^           show only modified files
+   -a --added^              show only added files
+   -r --removed^            show only removed files
+   -d --deleted^            show only deleted (but tracked) files
+   -c --clean^              show only files without changes
+   -u --unknown^            show only unknown (not tracked) files
+   -i --ignored^            show only ignored files
+   -n --no-status^          hide status prefix
+   -C --copies^             show source of copied files
+   -0 --print0^             end filenames with NUL, for use with xargs
       --rev REV [+]         show difference from revision
       --change REV          list the changed files of a revision
    -I --include PATTERN [+] include names matching the given patterns
    -X --exclude PATTERN [+] exclude names matching the given patterns
-   -S --subrepos            recurse into subrepositories
+   -S --subrepos^           recurse into subrepositories
   
   (some details hidden, use --verbose to show complete help)
 
@@ -715,9 +717,9 @@  Test for aliases
   
   defined by: helpext
   
-  options:
-  
-    --remote check for push and pull
+  options ([+] can be repeated, flags marked ^ can be negated with --no-):
+  
+    --remote^ check for push and pull
   
   (some details hidden, use --verbose to show complete help)
 
@@ -739,11 +741,11 @@  Test command with no help text
   
   (no help text available)
   
-  options:
+  options ([+] can be repeated, flags marked ^ can be negated with --no-):
   
       --longdesc VALUE xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
                        xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (default: 3)
-   -n --               normal desc
+   -n --^              normal desc
       --newline VALUE  line1 line2
   
   (some details hidden, use --verbose to show complete help)
@@ -1128,9 +1130,9 @@  test deprecated and experimental options
 
 test deprecated and experimental options is shown with -v
   $ hg help -v debugoptDEP | grep dopt
-    --dopt option is (DEPRECATED)
+    --dopt^ option is (DEPRECATED)
   $ hg help -v debugoptEXP | grep eopt
-    --eopt option is (EXPERIMENTAL)
+    --eopt^ option is (EXPERIMENTAL)
 
 #if gettext
 test deprecated option is hidden with translation with untranslated description
@@ -2450,7 +2452,7 @@  Dish up an empty repo; serve it cold.
   Returns 0 if all files are successfully added.
   </p>
   <p>
-  options ([+] can be repeated):
+  options ([+] can be repeated, flags marked ^ can be negated with --no-):
   </p>
   <table>
   <tr><td>-I</td>
@@ -2460,14 +2462,14 @@  Dish up an empty repo; serve it cold.
   <td>--exclude PATTERN [+]</td>
   <td>exclude names matching the given patterns</td></tr>
   <tr><td>-S</td>
-  <td>--subrepos</td>
+  <td>--subrepos^</td>
   <td>recurse into subrepositories</td></tr>
   <tr><td>-n</td>
-  <td>--dry-run</td>
+  <td>--dry-run^</td>
   <td>do not perform actions, just print output</td></tr>
   </table>
   <p>
-  global options ([+] can be repeated):
+  global options ([+] can be repeated, flags marked ^ can be negated with --no-):
   </p>
   <table>
   <tr><td>-R</td>
@@ -2477,22 +2479,22 @@  Dish up an empty repo; serve it cold.
   <td>--cwd DIR</td>
   <td>change working directory</td></tr>
   <tr><td>-y</td>
-  <td>--noninteractive</td>
+  <td>--noninteractive^</td>
   <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
   <tr><td>-q</td>
-  <td>--quiet</td>
+  <td>--quiet^</td>
   <td>suppress output</td></tr>
   <tr><td>-v</td>
-  <td>--verbose</td>
+  <td>--verbose^</td>
   <td>enable additional output</td></tr>
   <tr><td></td>
   <td>--config CONFIG [+]</td>
   <td>set/override config option (use 'section.name=value')</td></tr>
   <tr><td></td>
-  <td>--debug</td>
+  <td>--debug^</td>
   <td>enable debugging output</td></tr>
   <tr><td></td>
-  <td>--debugger</td>
+  <td>--debugger^</td>
   <td>start debugger</td></tr>
   <tr><td></td>
   <td>--encoding ENCODE</td>
@@ -2501,22 +2503,22 @@  Dish up an empty repo; serve it cold.
   <td>--encodingmode MODE</td>
   <td>set the charset encoding mode (default: strict)</td></tr>
   <tr><td></td>
-  <td>--traceback</td>
+  <td>--traceback^</td>
   <td>always print a traceback on exception</td></tr>
   <tr><td></td>
-  <td>--time</td>
+  <td>--time^</td>
   <td>time how long the command takes</td></tr>
   <tr><td></td>
-  <td>--profile</td>
+  <td>--profile^</td>
   <td>print command execution profile</td></tr>
   <tr><td></td>
-  <td>--version</td>
+  <td>--version^</td>
   <td>output version information and exit</td></tr>
   <tr><td>-h</td>
-  <td>--help</td>
+  <td>--help^</td>
   <td>display help and exit</td></tr>
   <tr><td></td>
-  <td>--hidden</td>
+  <td>--hidden^</td>
   <td>consider hidden changesets</td></tr>
   </table>
   
@@ -2643,17 +2645,17 @@  Dish up an empty repo; serve it cold.
   Returns 0 on success, 1 if any warnings encountered.
   </p>
   <p>
-  options ([+] can be repeated):
+  options ([+] can be repeated, flags marked ^ can be negated with --no-):
   </p>
   <table>
   <tr><td>-A</td>
-  <td>--after</td>
+  <td>--after^</td>
   <td>record delete for missing files</td></tr>
   <tr><td>-f</td>
-  <td>--force</td>
+  <td>--force^</td>
   <td>forget added files, delete modified files</td></tr>
   <tr><td>-S</td>
-  <td>--subrepos</td>
+  <td>--subrepos^</td>
   <td>recurse into subrepositories</td></tr>
   <tr><td>-I</td>
   <td>--include PATTERN [+]</td>
@@ -2663,7 +2665,7 @@  Dish up an empty repo; serve it cold.
   <td>exclude names matching the given patterns</td></tr>
   </table>
   <p>
-  global options ([+] can be repeated):
+  global options ([+] can be repeated, flags marked ^ can be negated with --no-):
   </p>
   <table>
   <tr><td>-R</td>
@@ -2673,22 +2675,22 @@  Dish up an empty repo; serve it cold.
   <td>--cwd DIR</td>
   <td>change working directory</td></tr>
   <tr><td>-y</td>
-  <td>--noninteractive</td>
+  <td>--noninteractive^</td>
   <td>do not prompt, automatically pick the first choice for all prompts</td></tr>
   <tr><td>-q</td>
-  <td>--quiet</td>
+  <td>--quiet^</td>
   <td>suppress output</td></tr>
   <tr><td>-v</td>
-  <td>--verbose</td>
+  <td>--verbose^</td>
   <td>enable additional output</td></tr>
   <tr><td></td>
   <td>--config CONFIG [+]</td>
   <td>set/override config option (use 'section.name=value')</td></tr>
   <tr><td></td>
-  <td>--debug</td>
+  <td>--debug^</td>
   <td>enable debugging output</td></tr>
   <tr><td></td>
-  <td>--debugger</td>
+  <td>--debugger^</td>
   <td>start debugger</td></tr>
   <tr><td></td>
   <td>--encoding ENCODE</td>
@@ -2697,22 +2699,22 @@  Dish up an empty repo; serve it cold.
   <td>--encodingmode MODE</td>
   <td>set the charset encoding mode (default: strict)</td></tr>
   <tr><td></td>
-  <td>--traceback</td>
+  <td>--traceback^</td>
   <td>always print a traceback on exception</td></tr>
   <tr><td></td>
-  <td>--time</td>
+  <td>--time^</td>
   <td>time how long the command takes</td></tr>
   <tr><td></td>
-  <td>--profile</td>
+  <td>--profile^</td>
   <td>print command execution profile</td></tr>
   <tr><td></td>
-  <td>--version</td>
+  <td>--version^</td>
   <td>output version information and exit</td></tr>
   <tr><td>-h</td>
-  <td>--help</td>
+  <td>--help^</td>
   <td>display help and exit</td></tr>
   <tr><td></td>
-  <td>--hidden</td>
+  <td>--hidden^</td>
   <td>consider hidden changesets</td></tr>
   </table>