Fossil Forum

Missing dot in docs for add
Login

Missing dot in docs for add

(1) By Kirill M (Kirill) on 2021-03-10 19:39:50 [source]

Index: src/add.c
==================================================================
--- src/add.c
+++ src/add.c
@@ -348,11 +348,11 @@
 ** When adding files or directories recursively, filenames that begin
 ** with "." are excluded by default.  To include such files, add
 ** the "--dotfiles" option to the command-line.
 **
 ** The --ignore and --clean options are comma-separated lists of glob patterns
-** for files to be excluded.  Example:  '*.o,*.obj,*.exe'  If the --ignore
+** for files to be excluded.  Example:  '*.o,*.obj,*.exe'.  If the --ignore
 ** option does not appear on the command line then the "ignore-glob" setting
 ** is used.  If the --clean option does not appear on the command line then
 ** the "clean-glob" setting is used.
 **
 ** If files are attempted to be added explicitly on the command line which

(2) By Kirill M (Kirill) on 2021-03-10 20:44:59 in reply to 1 [link] [source]

While at it, I've noticed that sometimes there is a dot at the end of a description of an option, and sometimes there is no dot:

Dot at the end in docs for changes:

checkin.c:**    --dotfiles             Include files beginning with a dot (".").

No dot at the end in docs for add:

add.c:**    --dotfiles              include files beginning with a dot (".")

There you'll also notice that it varies whether or not the description starts with a capital letter.

Should I make a patch for inital capital and no dot at the end?

(3) By Stephan Beal (stephan) on 2021-03-11 04:43:21 in reply to 2 [link] [source]

While at it, I've noticed that sometimes there is a dot at the end of a description of an option, and sometimes there is no dot:

Those bits were written by many people over more than a decade, so some degree of inconsistency is not surprising. Feel free to post any improvements you make in that regard and we'll get them integrated.

(4) By Kirill M (Kirill) on 2021-03-11 09:09:44 in reply to 3 [link] [source]

I'll give it a shot. By the way, what about --dry-run vs. --dryrun? Both are being used.

(7) By Stephan Beal (stephan) on 2021-03-11 12:10:28 in reply to 4 [link] [source]

what about --dry-run vs. --dryrun? Both are being used.

There was a long discussion about that a few years back, but i think it predated the forum. dry-run is (IIRC) the current convention but we can't just go swapping out flags out from under people.

(11) By ravbc on 2021-03-11 13:15:24 in reply to 7 [link] [source]

dry-run is (IIRC) the current convention but we can't just go swapping out flags out from under people.

FWIW I agree, but maybe there is a possibility to add everywhere the preferred form and only this one shows in help text? Or even make the obsolete form just an "alias" for the preferred one? This way, old habits/scripts would still work, but will not create any new discrepancy...

(5) By Kirill M (Kirill) on 2021-03-11 10:49:14 in reply to 3 [link] [source]

Here's the diff which tries to standardise on using initial capital letter, no period at the end of the option description, order of short/long option, imperative verbs.

Index: src/add.c
==================================================================
--- src/add.c
+++ src/add.c
@@ -348,11 +348,11 @@
 ** When adding files or directories recursively, filenames that begin
 ** with "." are excluded by default.  To include such files, add
 ** the "--dotfiles" option to the command-line.
 **
 ** The --ignore and --clean options are comma-separated lists of glob patterns
-** for files to be excluded.  Example:  '*.o,*.obj,*.exe'  If the --ignore
+** for files to be excluded.  Example:  '*.o,*.obj,*.exe'.  If the --ignore
 ** option does not appear on the command line then the "ignore-glob" setting
 ** is used.  If the --clean option does not appear on the command line then
 ** the "clean-glob" setting is used.
 **
 ** If files are attempted to be added explicitly on the command line which
@@ -363,26 +363,26 @@
 ** be treated case sensitive or not. If the option is not given, the default
 ** depends on the global setting, or the operating system default, if not set.
 **
 ** Options:
 **
-**    --case-sensitive BOOL   Override the case-sensitive setting.
-**    --dotfiles              include files beginning with a dot (".")
+**    --case-sensitive BOOL   Override the case-sensitive setting
+**    --dotfiles              Include files beginning with a dot (".")
 **    -f|--force              Add files without prompting
 **    --ignore CSG            Ignore unmanaged files matching patterns from
 **                            the Comma Separated Glob (CSG) pattern list
 **    --clean CSG             Also ignore files matching patterns from
 **                            the Comma Separated Glob (CSG) list
 **    --reset                 Reset the ADDED state of a checkout, such
 **                            that all newly-added (but not yet committed)
 **                            files are no longer added. No flags other
 **                            than --verbose and --dry-run may be used
-**                            with --reset.
+**                            with --reset
 **
 ** The following options are only valid with --reset:
-**    -v|--verbose            Outputs information about each --reset file.
-**    -n|--dry-run            Display instead of run actions.
+**    -v|--verbose            Output information about each --reset file
+**    -n|--dry-run            Display instead of run actions
 **
 ** See also: [[addremove]], [[rm]]
 */
 void add_cmd(void){
   int i;                     /* Loop counter */
@@ -550,21 +550,21 @@
 **          setting is non-zero, files WILL BE removed from disk as well.
 **          This does NOT apply to the 'forget' command.
 **
 ** Options:
 **   --soft                  Skip removing files from the checkout.
-**                           This supersedes the --hard option.
-**   --hard                  Remove files from the checkout.
+**                           This supersedes the --hard option
+**   --hard                  Remove files from the checkout
 **   --case-sensitive BOOL   Override the case-sensitive setting.
-**   -n|--dry-run            If given, display instead of run actions.
+**   -n|--dry-run            If given, display instead of run actions
 **   --reset                 Reset the DELETED state of a checkout, such
 **                           that all newly-rm'd (but not yet committed)
 **                           files are no longer removed. No flags other
 **                           than --verbose or --dry-run may be used with
-**                           --reset.
-**   --verbose|-v            Outputs information about each --reset file.
-**                           Only usable with --reset.
+**                           --reset
+**   -v|--verbose            Output information about each --reset file.
+**                           Only usable with --reset
 **
 ** See also: [[addremove]], [[add]]
 */
 void delete_cmd(void){
   int i;
@@ -738,25 +738,25 @@
 ** anything.
 **
 ** This command can be used to track third party software.
 **
 ** Options:
-**   --case-sensitive BOOL   Override the case-sensitive setting.
+**   --case-sensitive BOOL   Override the case-sensitive setting
 **   --dotfiles              Include files beginning with a dot (".")
 **   --ignore CSG            Ignore unmanaged files matching patterns from
 **                           the Comma Separated Glob (CSG) list
 **   --clean CSG             Also ignore files matching patterns from
 **                           the Comma Separated Glob (CSG) list
-**   -n|--dry-run            If given, display instead of run actions.
+**   -n|--dry-run            If given, display instead of run actions
 **   --reset                 Reset the ADDED/DELETED state of a checkout,
 **                           such that all newly-added (but not yet committed)
 **                           files are no longer added and all newly-removed
 **                           (but not yet committed) files are no longer
 **                           removed. No flags other than --verbose and
-**                           --dry-run may be used with --reset.
-**   --verbose|-v            Outputs information about each --reset file.
-**                           Only usable with --reset.
+**                           --dry-run may be used with --reset
+**   -v|--verbose            Output information about each --reset file.
+**                           Only usable with --reset
 **
 ** See also: [[add]], [[rm]]
 */
 void addremove_cmd(void){
   Blob path;
@@ -988,14 +988,14 @@
 **          setting is non-zero, files WILL BE renamed or moved on disk
 **          as well.  This does NOT apply to the 'rename' command.
 **
 ** Options:
 **   --soft                    Skip moving files within the checkout.
-**                             This supersedes the --hard option.
-**   --hard                    Move files within the checkout.
-**   --case-sensitive BOOL     Override the case-sensitive setting.
-**   -n|--dry-run              If given, display instead of run actions.
+**                             This supersedes the --hard option
+**   --hard                    Move files within the checkout
+**   --case-sensitive BOOL     Override the case-sensitive setting
+**   -n|--dry-run              If given, display instead of run actions
 **
 ** See also: [[changes]], [[status]]
 */
 void mv_cmd(void){
   int i;

Index: src/ajax.c
==================================================================
--- src/ajax.c
+++ src/ajax.c
@@ -66,11 +66,11 @@
   }
 }
 
 /*
 ** Returns a value from the ajax_render_modes enum, based on the
-** given mime type string (which may be NULL), defaulting to
+** given mimetype string (which may be NULL), defaulting to
 ** AJAX_RENDER_PLAIN_TEXT.
  */
 int ajax_render_mode_for_mimetype(const char * zMimetype){
   int rc = AJAX_RENDER_PLAIN_TEXT;
   if( zMimetype ){

Index: src/alerts.c
==================================================================
--- src/alerts.c
+++ src/alerts.c
@@ -1017,11 +1017,11 @@
 **                            configuration.  Options:
 **
 **                              --body FILENAME
 **                              --smtp-trace
 **                              --stdout
-**                              --subject|-S SUBJECT
+**                              -S|--subject SUBJECT
 **
 **    unsubscribe EMAIL       Remove a single subscriber with the given EMAIL.
 */
 void alert_cmd(void){
   const char *zCmd;
@@ -2479,15 +2479,15 @@
 **
 ** Options:
 **
 **    --backoffice        Run alert_backoffice() after all alerts have
 **                        been added.  This will cause the alerts to be
-**                        sent out with the SENDALERT_TRACE option.
+**                        sent out with the SENDALERT_TRACE option
 **
 **    --debug             Like --backoffice, but add the SENDALERT_STDOUT
 **                        so that emails are printed to standard output
-**                        rather than being sent.
+**                        rather than being sent
 **
 **    --digest            Process emails using SENDALERT_DIGEST
 */
 void test_add_alert_cmd(void){
   int i;

Index: src/allrepo.c
==================================================================
--- src/allrepo.c
+++ src/allrepo.c
@@ -137,13 +137,13 @@
 ** when one of the following commands are run against the repository:
 ** clone, info, pull, push, or sync.  Even previously ignored repositories
 ** are added back to the list of repositories by these commands.
 **
 ** Options:
-**   --showfile     Show the repository or checkout being operated upon.
-**   --dontstop     Continue with other repositories even after an error.
-**   --dry-run      If given, display instead of run actions.
+**   --showfile     Show the repository or checkout being operated upon
+**   --dontstop     Continue with other repositories even after an error
+**   --dry-run      If given, display instead of run actions
 */
 void all_cmd(void){
   int n;
   Stmt q;
   const char *zCmd;

Index: src/attach.c
==================================================================
--- src/attach.c
+++ src/attach.c
@@ -679,14 +679,14 @@
 **
 **    -t|--technote DATETIME      Specifies the timestamp of
 **                                the technote to which the attachment
 **                                is to be made. The attachment will be
 **                                to the most recently modified tech note
-**                                with the specified timestamp.
+**                                with the specified timestamp
 **
 **    -t|--technote TECHNOTE-ID   Specifies the technote to be
-**                                updated by its technote id.
+**                                updated by its technote id
 **
 ** One of PAGENAME, DATETIME or TECHNOTE-ID must be specified.
 **
 ** DATETIME may be "now" or "YYYY-MM-DDTHH:MM:SS.SSS". If in
 ** year-month-day form, it may be truncated, the "T" may be replaced by

Index: src/backlink.c
==================================================================
--- src/backlink.c
+++ src/backlink.c
@@ -318,12 +318,12 @@
 ** routine.  But instead of adding backlinks to the backlink table,
 ** just print them on stdout.  SRCID and SRCTYPE are integers.
 **
 ** Options:
 **    --mtime DATETIME        Use an alternative date/time.  Defaults to the
-**                            current date/time.
-**    --mimetype TYPE         Use an alternative mimetype.
+**                            current date/time
+**    --mimetype TYPE         Use an alternative mimetype
 */
 void test_backlinks_cmd(void){
   const char *zMTime = find_option("mtime",0,1);
   const char *zMimetype = find_option("mimetype",0,1);
   Blob in;

Index: src/backoffice.c
==================================================================
--- src/backoffice.c
+++ src/backoffice.c
@@ -669,37 +669,37 @@
 ** or if --poll is used, a separate sub-process is started for each poll of 
 ** each repository.
 **
 ** Standard options:
 **
-**    --debug                 Show what this command is doing.
+**    --debug                 Show what this command is doing
 **
-**    --logfile FILE          Append a log of backoffice actions onto FILE.
+**    --logfile FILE          Append a log of backoffice actions onto FILE
 **
 **    --min N                 When polling, invoke backoffice at least
 **                            once every N seconds even if the repository
 **                            never changes.  0 or negative means disable
-**                            this feature.  Default: 3600 (once per hour).
+**                            this feature.  Default: 3600 (once per hour)
 **
 **    --poll N                Repeat backoffice calls for repositories that
 **                            change in appoximately N-second intervals.
 **                            N less than 1 turns polling off (the default).
-**                            Recommended polling interval: 60 seconds.
+**                            Recommended polling interval: 60 seconds
 **
 **    --trace                 Enable debugging output on stderr
 **
 ** Options intended for internal use only which may change or be
 ** discontinued in future releases:
 **
 **    --nodelay               Do not queue up or wait for a backoffice job
 **                            to complete. If no work is available or if
-**                            backoffice has run recently, return immediately.
+**                            backoffice has run recently, return immediately
 **
 **    --nolease               Always run backoffice, even if there is a lease
 **                            conflict.  This option implies --nodelay.  This
 **                            option is added to secondary backoffice commands
-**                            that are invoked by the --poll option.  
+**                            that are invoked by the --poll option.
 */
 void backoffice_command(void){
   int nPoll;
   int nMin;
   const char *zPoll;

Index: src/branch.c
==================================================================
--- src/branch.c
+++ src/branch.c
@@ -359,21 +359,21 @@
 **
 ** >  fossil branch list|ls ?OPTIONS?
 **
 **        List all branches. Options:
 **          -a|--all      List all branches.  Default show only open branches
-**          -c|--closed   List closed branches.
+**          -c|--closed   List closed branches
 **          -r            Reverse the sort order
 **          -t            Show recently changed branches first
 **
 ** >  fossil branch new BRANCH-NAME BASIS ?OPTIONS?
 **
 **        Create a new branch BRANCH-NAME off of check-in BASIS.
 **        Supported options for this subcommand include:
-**        --private             branch is private (i.e., remains local)
-**        --bgcolor COLOR       use COLOR instead of automatic background
-**        --nosign              do not sign contents on this branch
+**        --private             Branch is private (i.e., remains local)
+**        --bgcolor COLOR       Use COLOR instead of automatic background
+**        --nosign              Do not sign contents on this branch
 **        --date-override DATE  DATE to use instead of 'now'
 **        --user-override USER  USER to use instead of the current default
 **
 **        DATE may be "now" or "YYYY-MM-DDTHH:MM:SS.SSS". If in
 **        year-month-day form, it may be truncated, the "T" may be

Index: src/bundle.c
==================================================================
--- src/bundle.c
+++ src/bundle.c
@@ -740,12 +740,12 @@
 **      subset of the check-ins in the repository (usually a single branch)
 **      described by the --branch, --from, --to, and/or --checkin options,
 **      at least one of which is required.  If BUNDLE already exists, the
 **      specified content is added to the bundle.
 **
-**         --branch BRANCH            Package all check-ins on BRANCH.
-**         --from TAG1 --to TAG2      Package check-ins between TAG1 and TAG2.
+**         --branch BRANCH            Package all check-ins on BRANCH
+**         --from TAG1 --to TAG2      Package check-ins between TAG1 and TAG2
 **         --checkin TAG              Package the single check-in TAG
 **         --standalone               Do no use delta-encoding against
 **                                    artifacts not in the bundle
 **
 ** > fossil bundle extend BUNDLE

Index: src/checkin.c
==================================================================
--- src/checkin.c
+++ src/checkin.c
@@ -411,41 +411,41 @@
 ** same is true of --classify and --no-classify.
 **
 ** The "fossil changes --extra" command is equivalent to "fossil extras".
 **
 ** General options:
-**    --abs-paths       Display absolute pathnames.
+**    --abs-paths       Display absolute pathnames
 **    --rel-paths       Display pathnames relative to the current working
-**                      directory.
+**                      directory
 **    --hash            Verify file status using hashing rather than
-**                      relying on file mtimes.
-**    --case-sensitive BOOL  Override case-sensitive setting.
-**    --dotfiles        Include unmanaged files beginning with a dot.
-**    --ignore <CSG>    Ignore unmanaged files matching CSG glob patterns.
+**                      relying on file mtimes
+**    --case-sensitive BOOL  Override case-sensitive setting
+**    --dotfiles        Include unmanaged files beginning with a dot
+**    --ignore <CSG>    Ignore unmanaged files matching CSG glob patterns
 **
 ** Options specific to the changes command:
-**    --header          Identify the repository if report is non-empty.
-**    -v|--verbose      Say "(none)" if the change report is empty.
-**    --classify        Start each line with the file's change type.
-**    --no-classify     Do not print file change types.
+**    --header          Identify the repository if report is non-empty
+**    -v|--verbose      Say "(none)" if the change report is empty
+**    --classify        Start each line with the file's change type
+**    --no-classify     Do not print file change types
 **
 ** Filter options:
-**    --edited          Display edited, merged, and conflicted files.
-**    --updated         Display files updated by merge/integrate.
-**    --changed         Combination of the above two options.
-**    --missing         Display missing files.
-**    --added           Display added files.
-**    --deleted         Display deleted files.
-**    --renamed         Display renamed files.
-**    --conflict        Display files having merge conflicts.
-**    --meta            Display files with metadata changes.
-**    --unchanged       Display unchanged files.
-**    --all             Display all managed files, i.e. all of the above.
-**    --extra           Display unmanaged files.
-**    --differ          Display modified and extra files.
-**    --merge           Display merge contributors.
-**    --no-merge        Do not display merge contributors.
+**    --edited          Display edited, merged, and conflicted files
+**    --updated         Display files updated by merge/integrate
+**    --changed         Combination of the above two options
+**    --missing         Display missing files
+**    --added           Display added files
+**    --deleted         Display deleted files
+**    --renamed         Display renamed files
+**    --conflict        Display files having merge conflicts
+**    --meta            Display files with metadata changes
+**    --unchanged       Display unchanged files
+**    --all             Display all managed files, i.e. all of the above
+**    --extra           Display unmanaged files
+**    --differ          Display modified and extra files
+**    --merge           Display merge contributors
+**    --no-merge        Do not display merge contributors
 **
 ** See also: [[extras]], [[ls]]
 */
 void status_cmd(void){
   /* Affirmative and negative flag option tables. */
@@ -673,17 +673,17 @@
 ** The -t option changes the sort order.  Without -t, files are sorted by
 ** path and name (case insensitive sort if -r).  If neither --age nor -r
 ** are used, -t sorts by modification time, otherwise by commit time.
 **
 ** Options:
-**   --age                 Show when each file was committed.
-**   -v|--verbose          Provide extra information about each file.
-**   -t                    Sort output in time order.
-**   -r VERSION            The specific check-in to list.
-**   -R|--repository FILE  Extract info from repository FILE.
+**   --age                 Show when each file was committed
+**   -v|--verbose          Provide extra information about each file
+**   -t                    Sort output in time order
+**   -r VERSION            The specific check-in to list
+**   -R|--repository FILE  Extract info from repository FILE
 **   --hash                With -v, verify file status using hashing
-**                         rather than relying on file sizes and mtimes.
+**                         rather than relying on file sizes and mtimes
 **
 ** See also: [[changes]], [[extras]], [[status]]
 */
 void ls_cmd(void){
   int vid;
@@ -831,17 +831,17 @@
 **
 ** Pathnames are displayed according to the "relative-paths" setting,
 ** unless overridden by the --abs-paths or --rel-paths options.
 **
 ** Options:
-**    --abs-paths             Display absolute pathnames.
+**    --abs-paths             Display absolute pathnames
 **    --case-sensitive BOOL   Override case-sensitive setting
 **    --dotfiles              Include files beginning with a dot (".")
 **    --header                Identify the repository if there are extras
 **    --ignore CSG            Ignore files matching patterns from the argument
 **    --rel-paths             Display pathnames relative to the current working
-**                            directory.
+**                            directory
 **
 ** See also: [[changes]], [[clean]], [[status]]
 */
 void extras_cmd(void){
   Blob report = BLOB_INITIALIZER;
@@ -920,27 +920,27 @@
 **    --allckouts            Check for empty directories within any checkouts
 **                           that may be nested within the current one.  This
 **                           option should be used with great care because the
 **                           empty-dirs setting (and other applicable settings)
 **                           belonging to the other repositories, if any, will
-**                           not be checked.
+**                           not be checked
 **    --case-sensitive BOOL  Override case-sensitive setting
 **    --dirsonly             Only remove empty directories.  No files will
 **                           be removed.  Using this option will automatically
-**                           enable the --emptydirs option as well.
+**                           enable the --emptydirs option as well
 **    --disable-undo         WARNING: This option disables use of the undo
 **                           mechanism for this clean operation and should be
-**                           used with extreme caution.
+**                           used with extreme caution
 **    --dotfiles             Include files beginning with a dot (".").
 **    --emptydirs            Remove any empty directories that are not
 **                           explicitly exempted via the empty-dirs setting
 **                           or another applicable setting or command line
 **                           argument.  Matching files, if any, are removed
 **                           prior to checking for any empty directories;
 **                           therefore, directories that contain only files
-**                           that were removed will be removed as well.
-**    -f|--force             Remove files without prompting.
+**                           that were removed will be removed as well
+**    -f|--force             Remove files without prompting
 **    -i|--prompt            Prompt before removing each file.  This option
 **                           implies the --disable-undo option.
 **    -x|--verily            WARNING: Removes everything that is not a managed
 **                           file or the repository itself.  This option
 **                           implies the --force, --emptydirs, --dotfiles, and

Index: src/checkout.c
==================================================================
--- src/checkout.c
+++ src/checkout.c
@@ -277,11 +277,11 @@
 **    --force           Ignore edited files in the current checkout
 **    --keep            Only update the manifest and manifest.uuid files
 **    --force-missing   Force checkout even if content is missing
 **    --setmtime        Set timestamps of all files to match their SCM-side
 **                      times (the timestamp of the last checkin which modified
-**                      them).
+**                      them)
 **
 ** See also: [[update]]
 */
 void checkout_cmd(void){
   int forceFlag;                 /* Force checkout even if edits exist */
@@ -392,11 +392,11 @@
 ** The opposite of "[[open]]".  Close the current database connection.
 ** Require a -f or --force flag if there are unsaved changes in the
 ** current check-out or if there is non-empty stash.
 **
 ** Options:
-**   --force|-f  necessary to close a check out with uncommitted changes
+**   -f|--force  necessary to close a check out with uncommitted changes
 **
 ** See also: [[open]]
 */
 void close_cmd(void){
   int forceFlag = find_option("force","f",0)!=0;

Index: src/clone.c
==================================================================
--- src/clone.c
+++ src/clone.c
@@ -114,17 +114,17 @@
 ** By default, the current login name is used to create the default
 ** admin user. This can be overridden using the -A|--admin-user
 ** parameter.
 **
 ** Options:
-**    --admin-user|-A USERNAME   Make USERNAME the administrator
-**    --httpauth|-B USER:PASS    Add HTTP Basic Authorization to requests
+**    -A|--admin-user USERNAME   Make USERNAME the administrator
+**    -B|--httpauth USER:PASS    Add HTTP Basic Authorization to requests
 **    --nocompress               Omit extra delta compression
-**    --once                     Don't remember the URI.
+**    --once                     Don't remember the URI
 **    --private                  Also clone private branches
 **    --save-http-password       Remember the HTTP password without asking
-**    --ssh-command|-c SSH       Use SSH as the "ssh" command
+**    -c|--ssh-command SSH       Use SSH as the "ssh" command
 **    --ssl-identity FILENAME    Use the SSL identity if requested by the server
 **    -u|--unversioned           Also sync unversioned content
 **    -v|--verbose               Show more statistics in output
 **
 ** See also: [[init]], [[open]]

Index: src/comformat.c
==================================================================
--- src/comformat.c
+++ src/comformat.c
@@ -540,23 +540,23 @@
 **
 ** Test comment formatting and printing.  Use for testing only.
 **
 ** Options:
 **   --file           The comment text is really just a file name to
-**                    read it from.
+**                    read it from
 **   --decode         Decode the text using the same method used when
-**                    handling the value of a C-card from a manifest.
-**   --legacy         Use the legacy comment printing algorithm.
-**   --trimcrlf       Enable trimming of leading/trailing CR/LF.
-**   --trimspace      Enable trimming of leading/trailing spaces.
-**   --wordbreak      Attempt to break lines on word boundaries.
+**                    handling the value of a C-card from a manifest
+**   --legacy         Use the legacy comment printing algorithm
+**   --trimcrlf       Enable trimming of leading/trailing CR/LF
+**   --trimspace      Enable trimming of leading/trailing spaces
+**   --wordbreak      Attempt to break lines on word boundaries
 **   --origbreak      Attempt to break when the original comment text
-**                    is detected.
+**                    is detected
 **   --indent         Number of spaces to indent (default (-1) is to
-**                    auto-detect).  Zero means no indent.
+**                    auto-detect).  Zero means no indent
 **   -W|--width NUM   Width of lines (default (-1) is to auto-detect).
-**                    Zero means no limit.
+**                    Zero means no limit
 */
 void test_comment_format(void){
   const char *zWidth;
   const char *zIndent;
   const char *zPrefix;

Index: src/content.c
==================================================================
--- src/content.c
+++ src/content.c
@@ -946,17 +946,17 @@
 ** successfully reconstructed using "fossil rebuild".
 **
 ** Options:
 **
 **    -d|--db-only       Run "PRAGMA integrity_check" on the database only.
-**                       No other validation is performed.
+**                       No other validation is performed
 **
 **    --parse            Parse all manifests, wikis, tickets, events, and
-**                       so forth, reporting any errors found.
+**                       so forth, reporting any errors found
 **
 **    -q|--quick         Run "PRAGMA quick_check" on the database only.
-**                       No other validation is performed.
+**                       No other validation is performed
 */
 void test_integrity(void){
   Stmt q;
   Blob content;
   int n1 = 0;

Index: src/db.c
==================================================================
--- src/db.c
+++ src/db.c
@@ -2680,11 +2680,11 @@
 ** default users "anonymous", "nobody", "reader", "developer", and their
 ** associated permissions will be copied.
 **
 ** Options:
 **    --template      FILE         Copy settings from repository file
-**    --admin-user|-A USERNAME     Select given USERNAME as admin user
+**    -A|--admin-user USERNAME     Select given USERNAME as admin user
 **    --date-override DATETIME     Use DATETIME as time of the initial check-in
 **    --sha1                       Use an initial hash policy of "sha1"
 **
 ** DATETIME may be "now" or "YYYY-MM-DDTHH:MM:SS.SSS". If in
 ** year-month-day form, it may be truncated, the "T" may be replaced by
@@ -3411,23 +3411,23 @@
 ** "new-name.fossil".
 **
 ** Options:
 **   --empty           Initialize checkout as being empty, but still connected
 **                     with the local repository. If you commit this checkout,
-**                     it will become a new "initial" commit in the repository.
+**                     it will become a new "initial" commit in the repository
 **   -f|--force        Continue with the open even if the working directory is
-**                     not empty.
+**                     not empty
 **   --force-missing   Force opening a repository with missing content
 **   --keep            Only modify the manifest and manifest.uuid files
 **   --nested          Allow opening a repository inside an opened checkout
 **   --repodir DIR     If REPOSITORY is a URI that will be cloned, store
 **                     the clone in DIR rather than in "."
 **   --setmtime        Set timestamps of all files to match their SCM-side
 **                     times (the timestamp of the last checkin which modified
-**                     them).
+**                     them)
 **   --workdir DIR     Use DIR as the working directory instead of ".". The DIR
-**                     directory is created if it does not exist.
+**                     directory is created if it does not exist
 **
 ** See also: [[close]], [[clone]]
 */
 void cmd_open(void){
   int emptyFlag;
@@ -4266,14 +4266,14 @@
 ** configuration database.  If both a local and a global value exists for a
 ** setting, the local value takes precedence.  This command normally operates
 ** on the local settings.  Use the --global option to change global settings.
 **
 ** Options:
-**   --global   set or unset the given property globally instead of
-**              setting or unsetting it for the open repository only.
+**   --global   Set or unset the given property globally instead of
+**              setting or unsetting it for the open repository only
 **
-**   --exact    only consider exact name matches.
+**   --exact    Only consider exact name matches
 **
 ** See also: [[configuration]]
 */
 void setting_cmd(void){
   int i;
@@ -4409,11 +4409,11 @@
 **
 ** The purpose of this command is for testing the WITHOUT ROWID capabilities
 ** of SQLite.  There is no big advantage to using WITHOUT ROWID in Fossil.
 **
 ** Options:
-**    --dryrun | -n         No changes.  Just print what would happen.
+**    -n|--dryrun       No changes.  Just print what would happen
 */
 void test_without_rowid(void){
   int i, j;
   Stmt q;
   Blob allSql;

Index: src/descendants.c
==================================================================
--- src/descendants.c
+++ src/descendants.c
@@ -346,11 +346,11 @@
 **
 ** Options:
 **    -R|--repository FILE       Extract info from repository FILE
 **    -W|--width N               Width of lines (default is to auto-detect).
 **                               Must be greater than 20 or else 0 for no
-**                               limit, resulting in a one line per entry.
+**                               limit, resulting in a one line per entry
 **
 ** See also: [[finfo]], [[info]], [[leaves]]
 */
 void descendants_cmd(void){
   Stmt q;
@@ -399,18 +399,18 @@
 **
 ** The --recompute flag causes the content of the "leaf" table in the
 ** repository database to be recomputed.
 **
 ** Options:
-**   -a|--all         show ALL leaves
-**   --bybranch       order output by branch name
-**   -c|--closed      show only closed leaves
-**   -m|--multiple    show only cases with multiple leaves on a single branch
-**   --recompute      recompute the "leaf" table in the repository DB
+**   -a|--all         Show ALL leaves
+**   --bybranch       Order output by branch name
+**   -c|--closed      Show only closed leaves
+**   -m|--multiple    Show only cases with multiple leaves on a single branch
+**   --recompute      Recompute the "leaf" table in the repository DB
 **   -W|--width N     Width of lines (default is to auto-detect). Must be
 **                    more than 39 or else 0 no limit, resulting in a single
-**                    line per entry.
+**                    line per entry
 **
 ** See also: [[descendants]], [[finfo]], [[info]], [[branch]]
 */
 void leaves_cmd(void){
   Stmt q;

Index: src/diff.c
==================================================================
--- src/diff.c
+++ src/diff.c
@@ -1980,21 +1980,21 @@
 /*
 ** Process diff-related command-line options and return an appropriate
 ** "diffFlags" integer.
 **
 **   --brief                    Show filenames only    DIFF_BRIEF
-**   -c|--context N             N lines of context.    DIFF_CONTEXT_MASK
+**   -c|--context N             N lines of context     DIFF_CONTEXT_MASK
 **   --html                     Format for HTML        DIFF_HTML
 **   --invert                   Invert the diff        DIFF_INVERT
 **   -n|--linenum               Show line numbers      DIFF_LINENO
 **   --noopt                    Disable optimization   DIFF_NOOPT
 **   --numstat                  Show change counts     DIFF_NUMSTAT
 **   --strip-trailing-cr        Strip trailing CR      DIFF_STRIP_EOLCR
-**   --unified                  Unified diff.          ~DIFF_SIDEBYSIDE
+**   --unified                  Unified diff           ~DIFF_SIDEBYSIDE
 **   -w|--ignore-all-space      Ignore all whitespaces DIFF_IGNORE_ALLWS
-**   -W|--width N               N character lines.     DIFF_WIDTH_MASK
-**   -y|--side-by-side          Side-by-side diff.     DIFF_SIDEBYSIDE
+**   -W|--width N               N character lines      DIFF_WIDTH_MASK
+**   -y|--side-by-side          Side-by-side diff      DIFF_SIDEBYSIDE
 **   -Z|--ignore-trailing-space Ignore eol-whitespaces DIFF_IGNORE_EOLWS
 */
 u64 diff_options(void){
   u64 diffFlags = 0;
   const char *z;
@@ -2592,11 +2592,11 @@
 **                                 N      Up to N versions
 **                                 Xs     As much as possible in X seconds
 **                                 none   No limit
 **   -o|--origin VERSION         The origin check-in. By default this is the
 **                               root of the repository. Set to "trunk" or
-**                               similar for a reverse annotation.
+**                               similar for a reverse annotation
 **   -w|--ignore-all-space       Ignore white space when comparing lines
 **   -Z|--ignore-trailing-space  Ignore whitespace at line end
 **
 ** See also: [[info]], [[finfo]], [[timeline]]
 */

Index: src/diffcmd.c
==================================================================
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -821,19 +821,19 @@
 **                               as binary
 **   --branch BRANCH             Show diff of all changes on BRANCH
 **   --brief                     Show filenames only
 **   --checkin VERSION           Show diff of all changes in VERSION
 **   --command PROG              External diff program. Overrides "diff-command"
-**   --context|-c N              Use N lines of context
+**   -c|--context N              Use N lines of context
 **   --diff-binary BOOL          Include binary files with external commands
 **   --exec-abs-paths            Force absolute path names on external commands
 **   --exec-rel-paths            Force relative path names on external commands
-**   --from|-r VERSION           Select VERSION as source for the diff
-**   --internal|-i               Use internal diff logic
-**   --new-file|-N               Show complete text of added and deleted files
+**   -r|--from VERSION           Select VERSION as source for the diff
+**   -i|--internal               Use internal diff logic
+**   -N|--new-file               Show complete text of added and deleted files
 **   --numstat                   Show only the number of lines delete and added
-**   --side-by-side|-y           Side-by-side diff
+**   -y|--side-by-side           Side-by-side diff
 **   --strip-trailing-cr         Strip trailing CR
 **   --tclsh PATH                Tcl/Tk used for --tk (default: "tclsh")
 **   --tk                        Launch a Tcl/Tk GUI for display
 **   --to VERSION                Select VERSION as target for the diff
 **   --undo                      Diff against the "undo" buffer

Index: src/dispatch.c
==================================================================
--- src/dispatch.c
+++ src/dispatch.c
@@ -522,16 +522,16 @@
 ** Show help text for commands and pages.  Useful for proof-reading.
 ** Defaults to just the CLI commands.  Specify --www to see only the
 ** web pages, or --everything to see both commands and pages.
 **
 ** Options:
-**    -e|--everything   Show all commands and pages.
+**    -e|--everything   Show all commands and pages
 **    -t|--test         Include test- commands
-**    -w|--www          Show WWW pages.
-**    -s|--settings     Show settings.
-**    -h|--html         Transform output to HTML.
-**    -r|--raw          No output formatting.
+**    -w|--www          Show WWW pages
+**    -s|--settings     Show settings
+**    -h|--html         Transform output to HTML
+**    -r|--raw          No output formatting
 */
 void test_all_help_cmd(void){
   int i;
   int mask = CMDFLAG_1ST_TIER | CMDFLAG_2ND_TIER;
   int useHtml = find_option("html","h",0)!=0;
@@ -982,11 +982,11 @@
 @   --sqlstats              Show SQL usage statistics when done
 @   --sqltrace              Trace all SQL commands
 @   --sshtrace              Trace SSH activity
 @   --ssl-identity NAME     Set the SSL identity to NAME
 @   --systemtrace           Trace calls to system()
-@   --user|-U USER          Make the default user be USER
+@   -U|--user USER          Make the default user be USER
 @   --utc                   Display times using UTC
 @   --vfs NAME              Cause SQLite to use the NAME VFS
 ;
 
 /*

Index: src/doc.c
==================================================================
--- src/doc.c
+++ src/doc.c
@@ -64,11 +64,11 @@
   return "unknown/unknown";
 }
 
 /* A table of mimetypes based on file suffixes.
 ** Suffixes must be in sorted order so that we can do a binary
-** search to find the mime-type
+** search to find the mimetype
 */
 static const struct {
   const char *zSuffix;       /* The file suffix */
   int size;                  /* Length of the suffix */
   const char *zMimetype;     /* The corresponding mimetype */
@@ -417,11 +417,11 @@
     style_script_end();
   }
 }
 
 /*
-** Guess the mime-type of a document based on its name.
+** Guess the mimetype of a document based on its name.
 */
 const char *mimetype_from_name(const char *zName){
   const char *z;
   int i;
   int first, last;

Index: src/export.c
==================================================================
--- src/export.c
+++ src/export.c
@@ -478,14 +478,14 @@
 **
 ** If the "--export-marks FILE" option is used, the rid of all commits and
 ** blobs written on exit for use with "--import-marks" on the next run.
 **
 ** Options:
-**   --export-marks FILE          export rids of exported data to FILE
-**   --import-marks FILE          read rids of data to ignore from FILE
-**   --rename-trunk NAME          use NAME as name of exported trunk branch
-**   --repository|-R REPOSITORY   export the given REPOSITORY
+**   --export-marks FILE          Export rids of exported data to FILE
+**   --import-marks FILE          Read rids of data to ignore from FILE
+**   --rename-trunk NAME          Use NAME as name of exported trunk branch
+**   -R|--repository REPOSITORY   Export the given REPOSITORY
 **
 ** See also: import
 */
 /*
 ** COMMAND: export*
@@ -1673,16 +1673,16 @@
 **         --autopush URL      Automatically do a 'git push' to URL.  The
 **                             URL is remembered and used on subsequent exports
 **                             to the same repository.  Or if URL is "off" the
 **                             auto-push mechanism is disabled
 **         --debug FILE        Write fast-export text to FILE rather than
-**                             piping it into "git fast-import".
-**         --force|-f          Do the export even if nothing has changed
+**                             piping it into "git fast-import"
+**         -f|--force          Do the export even if nothing has changed
 **         --limit N           Add no more than N new check-ins to MIRROR.
 **                             Useful for debugging
-**         --quiet|-q          Reduce output. Repeat for even less output.
-**         --verbose|-v        More output.
+**         -q|--quiet          Reduce output. Repeat for even less output
+**         -v|--verbose        More output
 **
 ** > fossil git import MIRROR
 **
 **       TBD...   
 **

Index: src/file.c
==================================================================
--- src/file.c
+++ src/file.c
@@ -1380,14 +1380,14 @@
 ** display file system information about the files specified, if any.
 **
 ** Options:
 **
 **     --allow-symlinks BOOLEAN     Temporarily turn allow-symlinks on/off
-**     --open-config                Open the configuration database first.
-**     --reset                      Reset cached stat() info for each file.
+**     --open-config                Open the configuration database first
+**     --reset                      Reset cached stat() info for each file
 **     --root ROOT                  Use ROOT as the root of the checkout
-**     --slash                      Trailing slashes, if any, are retained.
+**     --slash                      Trailing slashes, if any, are retained
 */
 void cmd_test_file_environment(void){
   int i;
   int slashFlag = find_option("slash",0,0)!=0;
   int resetFlag = find_option("reset",0,0)!=0;
@@ -1677,13 +1677,13 @@
 ** COMMAND: test-tree-name
 **
 ** Test the operation of the tree name generator.
 **
 ** Options:
-**   --absolute           Return an absolute path instead of a relative one.
+**   --absolute           Return an absolute path instead of a relative one
 **   --case-sensitive B   Enable or disable case-sensitive filenames.  B is
-**                        a boolean: "yes", "no", "true", "false", etc.
+**                        a boolean: "yes", "no", "true", "false", etc
 */
 void cmd_test_tree_name(void){
   int i;
   Blob x;
   int absoluteFlag = find_option("absolute",0,0)!=0;
@@ -2279,24 +2279,24 @@
 ** This command gets its name from the conventional Unix "touch"
 ** command.
 **
 ** Options:
 **   --now          Stamp each affected file with the current time.
-**                  This is the default behavior.
+**                  This is the default behavior
 **   -c|--checkin   Stamp each affected file with the time of the
-**                  most recent check-in which modified that file.
+**                  most recent check-in which modified that file
 **   -C|--checkout  Stamp each affected file with the time of the
-**                  currently-checked-out version.
-**   -g GLOBLIST    Comma-separated list of glob patterns.
+**                  currently-checked-out version
+**   -g GLOBLIST    Comma-separated list of glob patterns
 **   -G GLOBFILE    Similar to -g but reads its globs from a
-**                  fossil-conventional glob list file.
-**   -v|-verbose    Outputs extra information about its globs
-**                  and each file it touches.
-**   -n|--dry-run   Outputs which files would require touching,
-**                  but does not touch them.
+**                  fossil-conventional glo list file
+**   -v|-verbose    Output extra information about its globs
+**                  and each file it touches
+**   -n|--dry-run   Output which files would require touching,
+**                  but does not touch them
 **   -q|--quiet     Suppress warnings, e.g. when skipping unmanaged
-**                  or out-of-tree files.
+**                  or out-of-tree files
 **
 ** Only one of --now, --checkin, and --checkout may be used. The
 ** default is --now.
 **
 ** Only one of -g or -G may be used. If neither is provided and no

Index: src/fileedit.c
==================================================================
--- src/fileedit.c
+++ src/fileedit.c
@@ -699,51 +699,51 @@
 ** where FILENAME is a repo-relative name as it would appear in the
 ** vfile table.
 **
 ** Options:
 **
-**   --repository|-R REPO      The repository file to commit to.
+**   -R|--repository REPO      The repository file to commit to
 **   --as FILENAME             The repository-side name of the input
 **                             file, relative to the top of the
 **                             repository. Default is the same as the
-**                             input file name.
-**   --comment|-m COMMENT      Required checkin comment.
-**   --comment-file|-M FILE    Reads checkin comment from the given file.
-**   --revision|-r VERSION     Commit from this version. Default is
+**                             input file name
+**   -m|--comment COMMENT      Required checkin comment
+**   -M|--comment-file FILE    Read checkin comment from the given file.
+**   -r|--revision VERSION     Commit from this version. Default is
 **                             the checkout version (if available) or
-**                             trunk (if used without a checkout).
-**   --allow-fork              Allows the commit to be made against a
+**                             trunk (if used without a checkout)
+**   --allow-fork              Allow the commit to be made against a
 **                             non-leaf parent. Note that no autosync
-**                             is performed beforehand.
-**   --allow-merge-conflict    Allows checkin of a file even if it
+**                             is performed beforehand
+**   --allow-merge-conflict    Allow checkin of a file even if it
 **                             appears to contain a fossil merge conflict
-**                             marker.
+**                             marker
 **   --user-override USER      USER to use instead of the current
-**                             default.
-**   --date-override DATETIME  DATE to use instead of 'now'.
+**                             default
+**   --date-override DATETIME  DATE to use instead of 'now'
 **   --allow-older             Allow a commit to be older than its
-**                             ancestor.
+**                             ancestor
 **   --convert-eol-inherit     Convert EOL style of the checkin to match
-**                             the previous version's content.
-**   --convert-eol-unix        Convert the EOL style to Unix.
-**   --convert-eol-windows     Convert the EOL style to Windows.
+**                             the previous version's content
+**   --convert-eol-unix        Convert the EOL style to Unix
+**   --convert-eol-windows     Convert the EOL style to Windows
 **   (only one of the --convert-eol-X options may be used and they only
-**    modified the saved blob, not the input file.)
+**    modified the saved blob, not the input file)
 **   --delta                   Prefer to generate a delta manifest, if
 **                             able. The forbid-delta-manifests repo
 **                             config option trumps this, as do certain
-**                             heuristics.
+**                             heuristics
 **   --allow-new-file          Allow addition of a new file this way.
 **                             Disabled by default to avoid that case-
 **                             sensitivity errors inadvertently lead to
 **                             adding a new file where an update is
-**                             intended.
-**   --dump-manifest|-d        Dumps the generated manifest to stdout
-**                             immediately after it's generated.
-**   --save-manifest FILE      Saves the generated manifest to a file
-**                             after successfully processing it.
-**   --wet-run                 Disables the default dry-run mode.
+**                             intended
+**   -d|--dump-manifest        Dump the generated manifest to stdout
+**                             immediately after it's generated
+**   --save-manifest FILE      Save the generated manifest to a file
+**                             after successfully processing it
+**   --wet-run                 Disable the default dry-run mode
 **
 ** Example:
 **
 ** %fossil test-ci-mini -R REPO -m ... -r foo --as src/myfile.c myfile.c
 **
@@ -753,11 +753,11 @@
   int newRid = 0;                /* RID of new version */
   const char * zFilename;        /* argv[2] */
   const char * zComment;         /* -m comment */
   const char * zCommentFile;     /* -M FILE */
   const char * zAsFilename;      /* --as filename */
-  const char * zRevision;        /* --revision|-r [=trunk|checkout] */
+  const char * zRevision;        /* -r|--revision [=trunk|checkout] */
   const char * zUser;            /* --user-override */
   const char * zDate;            /* --date-override */
   char const * zManifestFile = 0;/* --save-manifest FILE */
 
   /* This function should perform only the minimal "business logic" it

Index: src/finfo.c
==================================================================
--- src/finfo.c
+++ src/finfo.c
@@ -39,23 +39,23 @@
 ** In the -p mode, there's an optional flag "-r|--revision REVISION".
 ** The specified version (or the latest checked out version) is printed
 ** to stdout.  The -p mode is another form of the "cat" command.
 **
 ** Options:
-**   -b|--brief           display a brief (one line / revision) summary
+**   -b|--brief           Display a brief (one line / revision) summary
 **   --case-sensitive B   Enable or disable case-sensitive filenames.  B is a
-**                        boolean: "yes", "no", "true", "false", etc.
-**   -l|--log             select log mode (the default)
+**                        boolean: "yes", "no", "true", "false", etc
+**   -l|--log             Select log mode (the default)
 **   -n|--limit N         Display the first N changes (default unlimited).
-**                        N less than 0 means no limit.
-**   --offset P           skip P changes
-**   -p|--print           select print mode
-**   -r|--revision R      print the given revision (or ckout, if none is given)
+**                        N less than 0 means no limit
+**   --offset P           Skip P changes
+**   -p|--print           Select print mode
+**   -r|--revision R      Print the given revision (or ckout, if none is given)
 **                        to stdout (only in print mode)
-**   -s|--status          select status mode (print a status indicator for FILE)
+**   -s|--status          Select status mode (print a status indicator for FILE)
 **   -W|--width N         Width of lines (default is to auto-detect). Must be
-**                        more than 22 or else 0 to indicate no limit.
+**                        more than 22 or else 0 to indicate no limit
 **
 ** See also: [[artifact]], [[cat]], [[descendants]], [[info]], [[leaves]]
 */
 void finfo_cmd(void){
   db_must_be_within_tree();

Index: src/import.c
==================================================================
--- src/import.c
+++ src/import.c
@@ -1646,12 +1646,12 @@
 **
 **   --git        Import from the git-fast-export file format (default)
 **                Options:
 **                  --import-marks  FILE Restore marks table from FILE
 **                  --export-marks  FILE Save marks table to FILE
-**                  --rename-master NAME Renames the master branch to NAME
-**                  --use-author    Uses author as the committer
+**                  --rename-master NAME Rename the master branch to NAME
+**                  --use-author    Use author as the committer
 **
 **   --svn        Import from the svnadmin-dump file format.  The default
 **                behaviour (unless overridden by --flat) is to treat 3
 **                folders in the SVN root as special, following the
 **                common layout of SVN repositories.  These are (by
@@ -1662,24 +1662,24 @@
 **                  --branches FOLDER  Name of branches folder
 **                  --tags FOLDER      Name of tags folder
 **                  --base PATH        Path to project root in repository
 **                  --flat             The whole dump is a single branch
 **                  --rev-tags         Tag each revision, implied by -i
-**                  --no-rev-tags      Disables tagging effect of -i
+**                  --no-rev-tags      Disable tagging effect of -i
 **                  --rename-rev PAT   Rev tag names, default "svn-rev-%"
-**                  --ignore-tree DIR  Ignores subtree rooted at DIR
+**                  --ignore-tree DIR  Ignore subtree rooted at DIR
 **
 ** Common Options:
-**   -i|--incremental     allow importing into an existing repository
-**   -f|--force           overwrite repository if already exists
-**   -q|--quiet           omit progress output
-**   --no-rebuild         skip the "rebuilding metadata" step
-**   --no-vacuum          skip the final VACUUM of the database file
-**   --rename-trunk NAME  use NAME as name of imported trunk branch
-**   --rename-branch PAT  rename all branch names using PAT pattern
-**   --rename-tag PAT     rename all tag names using PAT pattern
-**   --admin-user|-A NAME use NAME for the admin user 
+**   -i|--incremental     Allow importing into an existing repository
+**   -f|--force           Overwrite repository if already exists
+**   -q|--quiet           Omit progress output
+**   --no-rebuild         Skip the "rebuilding metadata" step
+**   --no-vacuum          Skip the final VACUUM of the database file
+**   --rename-trunk NAME  Use NAME as name of imported trunk branch
+**   --rename-branch PAT  Rename all branch names using PAT pattern
+**   --rename-tag PAT     Rename all tag names using PAT pattern
+**   -A|--admin-user NAME Use NAME for the admin user 
 **
 ** The --incremental option allows an existing repository to be extended
 ** with new content.  The --rename-* options may be useful to avoid name
 ** conflicts when using the --incremental option. The --admin-user
 ** option is ignored if --incremental is specified.

Index: src/info.c
==================================================================
--- src/info.c
+++ src/info.c
@@ -1821,12 +1821,12 @@
 }
 
 
 /*
 ** Generate a verbatim artifact as the result of an HTTP request.
-** If zMime is not NULL, use it as the MIME-type.  If zMime is
-** NULL, guess at the MIME-type based on the filename
+** If zMime is not NULL, use it as the mimetype.  If zMime is
+** NULL, guess at the mimetype based on the filename
 ** associated with the artifact.
 */
 void deliver_artifact(int rid, const char *zMime){
   Blob content;
   const char *zAttachName = P("at");

Index: src/json_branch.c
==================================================================
--- src/json_branch.c
+++ src/json_branch.c
@@ -50,12 +50,12 @@
 ** Impl for /json/branch/list
 **
 **
 ** CLI mode options:
 **
-**  --range X | -r X, where X is one of (open,closed,all)
-**    (only the first letter is significant, default=open).
+**  -r|--range X, where X is one of "open", "closed" or "all"
+**    (only the first letter is significant, default=open)
 **  -a (same as --range a)
 **  -c (same as --range c)
 **
 ** HTTP mode options:
 **

Index: src/lookslike.c
==================================================================
--- src/lookslike.c
+++ src/lookslike.c
@@ -401,11 +401,11 @@
 **
 ** Usage:  %fossil test-looks-like-utf FILENAME
 **
 ** Options:
 **    -n|--limit N     Repeat looks-like function N times, for
-**                     performance measurement. Default = 1;
+**                     performance measurement. Default = 1
 **    --utf8           Ignoring BOM and file size, force UTF-8 checking
 **    --utf16          Ignoring BOM and file size, force UTF-16 checking
 **
 ** FILENAME is the name of a file to check for textual content in the UTF-8
 ** and/or UTF-16 encodings.

Index: src/main.c
==================================================================
--- src/main.c
+++ src/main.c
@@ -2470,15 +2470,15 @@
 ** If the --localauth option is given, then automatic login is performed
 ** for requests coming from localhost, if the "localauth" setting is not
 ** enabled.
 **
 ** Options:
-**   --baseurl URL    base URL (useful with reverse proxies)
-**   --extroot DIR    document root for the /ext extension mechanism
-**   --files GLOB     comma-separate glob patterns for static file to serve
-**   --host NAME      specify hostname of the server
-**   --https          signal a request coming in via https
+**   --baseurl URL    Base URL (useful with reverse proxies)
+**   --extroot DIR    Document root for the /ext extension mechanism
+**   --files GLOB     Comma-separate glob patterns for static file to serve
+**   --host NAME      Specify hostname of the server
+**   --https          Signal a request coming in via https
 **   --in FILE        Take input from FILE instead of standard input
 **   --ipaddr ADDR    Assume the request comes from the given IP address
 **   --jsmode MODE       Determine how JavaScript is delivered with pages.
 **                       Mode can be one of:
 **                          inline       All JavaScript is inserted inline at
@@ -2489,24 +2489,24 @@
 **                                       more bundled requests which
 **                                       concatenate scripts together.
 **                       Depending on the needs of any given page, inline
 **                       and bundled modes might result in a single
 **                       amalgamated script or several, but both approaches
-**                       result in fewer HTTP requests than the separate mode.
-**   --localauth      enable automatic login for local connections
-**   --nocompress     do not compress HTTP replies
-**   --nodelay        omit backoffice processing if it would delay process exit
-**   --nojail         drop root privilege but do not enter the chroot jail
-**   --nossl          signal that no SSL connections are available
-**   --notfound URL   use URL as "HTTP 404, object not found" page.
-**   --out FILE       write results to FILE instead of to standard output
-**   --repolist       If REPOSITORY is directory, URL "/" lists all repos
+**                       result in fewer HTTP requests than the separate mode
+**   --localauth      Enable automatic login for local connections
+**   --nocompress     Do not compress HTTP replies
+**   --nodelay        Omit backoffice processing if it would delay process exit
+**   --nojail         Drop root privilege but do not enter the chroot jail
+**   --nossl          Signal that no SSL connections are available
+**   --notfound URL   Use URL as "HTTP 404, object not found" page
+**   --out FILE       Write results to FILE instead of to standard output
+**   --repolist       If REPOSITORY is directory, URL "/" list all repos
 **   --scgi           Interpret input as SCGI rather than HTTP
 **   --skin LABEL     Use override skin LABEL
-**   --th-trace       trace TH1 execution (for debugging purposes)
+**   --th-trace       Trace TH1 execution (for debugging purposes)
 **   --usepidkey      Use saved encryption key from parent process.  This is
-**                    only necessary when using SEE on Windows.
+**                    only necessary when using SEE on Windows
 **
 ** See also: [[cgi]], [[server]], [[winsrv]]
 */
 void cmd_http(void){
   const char *zIpAddr = 0;
@@ -2613,12 +2613,12 @@
 ** COMMAND: test-http
 **
 ** Works like the [[http]] command but gives setup permission to all users.
 **
 ** Options:
-**   --th-trace          trace TH1 execution (for debugging purposes)
-**   --usercap   CAP     user capability string.  (Default: "sx")
+**   --th-trace          Trace TH1 execution (for debugging purposes)
+**   --usercap   CAP     User capability string  (Default: "sx")
 **
 */
 void cmd_test_http(void){
   const char *zIpAddr;    /* IP address of remote client */
   const char *zUserCap;
@@ -2771,13 +2771,13 @@
 **   --nojail            Drop root privileges but do not enter the chroot jail
 **   --nossl             signal that no SSL connections are available (Always
 **                       set by default for the "ui" command)
 **   --notfound URL      Redirect
 **   --page PAGE         Start "ui" on PAGE.  ex: --page "timeline?y=ci"
-**   -P|--port TCPPORT   listen to request on port TCPPORT
-**   --th-trace          trace TH1 execution (for debugging purposes)
-**   --repolist          If REPOSITORY is dir, URL "/" lists repos.
+**   -P|--port TCPPORT   Listen to request on port TCPPORT
+**   --th-trace          Trace TH1 execution (for debugging purposes)
+**   --repolist          If REPOSITORY is dir, URL "/" list repos
 **   --scgi              Accept SCGI rather than HTTP
 **   --skin LABEL        Use override skin LABEL
 **   --usepidkey         Use saved encryption key from parent process.  This is
 **                       only necessary when using SEE on Windows.
 **

Index: src/manifest.c
==================================================================
--- src/manifest.c
+++ src/manifest.c
@@ -1243,16 +1243,16 @@
 ** repositories after making any changes to the manifest_parse()
 ** implementation to confirm that the changes did not break anything.
 **
 ** Options:
 **
-**   --limit N            Parse no more than N artifacts before stopping.
+**   --limit N            Parse no more than N artifacts before stopping
 **   --wellformed         Use all BLOB table entries as input, not just
 **                        those entries that are believed to be valid
 **                        artifacts, and verify that the result the
 **                        manifest_is_well_formed() agrees with the
-**                        result of manifest_parse().
+**                        result of manifest_parse()
 */
 void manifest_test_parse_all_blobs_cmd(void){
   Manifest *p;
   Blob err;
   Stmt q;

Index: src/merge.c
==================================================================
--- src/merge.c
+++ src/merge.c
@@ -199,39 +199,39 @@
 **
 ** Options:
 **
 **   --backout               Do a reverse cherrypick merge against VERSION.
 **                           In other words, back out the changes that were
-**                           added by VERSION.
+**                           added by VERSION
 **
 **   --baseline BASELINE     Use BASELINE as the "pivot" of the merge instead
 **                           of the nearest common ancestor.  This allows
 **                           a sequence of changes in a branch to be merged
-**                           without having to merge the entire branch.
+**                           without having to merge the entire branch
 **
 **   --binary GLOBPATTERN    Treat files that match GLOBPATTERN as binary
 **                           and do not try to merge parallel changes.  This
-**                           option overrides the "binary-glob" setting.
+**                           option overrides the "binary-glob" setting
 **
 **   --case-sensitive BOOL   Override the case-sensitive setting.  If false,
 **                           files whose names differ only in case are taken
-**                           to be the same file.
+**                           to be the same file
 **
 **   --cherrypick            Do a cherrypick merge VERSION into the current
 **                           checkout.  A cherrypick merge pulls in the changes
 **                           of the single check-in VERSION, rather than all
-**                           changes back to the nearest common ancestor.
+**                           changes back to the nearest common ancestor
+**
+**   -f|--force              Force the merge even if it would be a no-op
 **
-**   -f|--force              Force the merge even if it would be a no-op.
+**   --force-missing         Force the merge even if there is missing content
 **
-**   --force-missing         Force the merge even if there is missing content.
-**
-**   --integrate             Merged branch will be closed when committing.
+**   --integrate             Merged branch will be closed when committing
 **
 **   -K|--keep-merge-files   On merge conflict, retain the temporary files
 **                           used for merging, named *-baseline, *-original,
-**                           and *-merge.
+**                           and *-merge
 **
 **   -n|--dry-run            If given, display instead of run actions
 **
 **   -v|--verbose            Show additional details of the merge
 */

Index: src/name.c
==================================================================
--- src/name.c
+++ src/name.c
@@ -849,11 +849,11 @@
 ** plays.
 **
 ** Options:
 **
 **    --type TYPE          Only find artifacts of TYPE (one of: 'ci', 't',
-**                         'w', 'g', or 'e').
+**                         'w', 'g', or 'e')
 **    -v|--verbose         Provide extra information (such as the RID)
 */
 void whatis_cmd(void){
   int rid;
   const char *zName;

Index: src/pikchrshow.c
==================================================================
--- src/pikchrshow.c
+++ src/pikchrshow.c
@@ -388,44 +388,44 @@
 ** resp. stdout, and the names "-" can be used as aliases for those
 ** streams.
 **
 ** Options:
 **
-**    -div       On success, adds a DIV wrapper around the
-**               resulting SVG output which limits its max-width to
-**               its computed maximum ideal size.
+**    -div         On success, add a DIV wrapper around the
+**                 resulting SVG output which limits its max-width to
+**                 its computed maximum ideal size
 **
-**    -div-indent  Like -div but indents the div.
+**    -div-indent  Like -div but indent the div
+**
+**    -div-center  Like -div but center the div
+**
+**    -div-left    Like -div but float the div left
+**
+**    -div-right   Like -div but float the div right
+**
+**    -div-toggle  Set the 'toggle' CSS class on the div (used by the
+**                 JavaScript-side post-processor)
 **
-**    -div-center  Like -div but centers the div.
-**
-**    -div-left    Like -div but floats the div left.
-**
-**    -div-right   Like -div but floats the div right.
+**    -div-source  Set the 'source' CSS class on the div, which tells
+**                 CSS to hide the SVG and reveal the source by default
 **
-**    -div-toggle  Sets the 'toggle' CSS class on the div (used by the
-**                 JavaScript-side post-processor).
-**
-**    -div-source  Sets the 'source' CSS class on the div, which tells
-**                 CSS to hide the SVG and reveal the source by default.
-**
-**    -src       Stores the input pikchr's source code in the output as
+**    -src       Store the input pikchr's source code in the output as
 **               a separate element adjacent to the SVG one. Implied
-**               by -div-source.
+**               by -div-source
 **                
 **
-**    -th        Process the input using TH1 before passing it to pikchr.
+**    -th        Process the input using TH1 before passing it to pikchr
 **
 **    -th-novar  Disable $var and $<var> TH1 processing. Use this if the
 **               pikchr script uses '$' for its own purposes and that
 **               causes issues. This only affects parsing of '$' outside
-**               of TH1 script blocks. Code in such blocks is unaffected.
+**               of TH1 script blocks. Code in such blocks is unaffected
 **
 **    -th-nosvg  When using -th, output the post-TH1'd script
-**               instead of the pikchr-rendered output.
+**               instead of the pikchr-rendered output
 **
-**    -th-trace  Trace TH1 execution (for debugging purposes).
+**    -th-trace  Trace TH1 execution (for debugging purposes)
 **
 **
 ** The -div-indent/center/left/right flags may not be combined.
 **
 ** TH1-related Notes and Caveats:

Index: src/purge.c
==================================================================
--- src/purge.c
+++ src/purge.c
@@ -505,11 +505,11 @@
 **
 **      TBD...
 **
 ** COMMON OPTIONS:
 **
-**   --explain         Make no changes, but show what would happen.
+**   --explain         Make no changes, but show what would happen
 **   --dry-run         An alias for --explain
 */
 void purge_cmd(void){
   int purgeFlags = PURGE_MOVETO_GRAVEYARD | PURGE_PRINT_SUMMARY;
   const char *zSubcmd;

Index: src/rebuild.c
==================================================================
--- src/rebuild.c
+++ src/rebuild.c
@@ -601,11 +601,11 @@
 **   --force           Force the rebuild to complete even if errors are seen
 **   --ifneeded        Only do the rebuild if it would change the schema version
 **   --index           Always add in the full-text search index
 **   --noverify        Skip the verification of changes to the BLOB table
 **   --noindex         Always omit the full-text search index
-**   --pagesize N      Set the database pagesize to N. (512..65536 and power of 2)
+**   --pagesize N      Set the database pagesize to . (512..65536 and power of 2)
 **   --quiet           Only show output if there are errors
 **   --randomize       Scan artifacts in a random order
 **   --stats           Show artifact statistics after rebuilding
 **   --vacuum          Run VACUUM on the database after rebuilding
 **   --wal             Set Write-Ahead-Log journalling mode on the database
@@ -887,13 +887,13 @@
 **
 ** The user is prompted to confirm the scrub unless the --force option
 ** is used.
 **
 ** Options:
-**   --force     do not prompt for confirmation
-**   --private   only private branches are removed from the repository
-**   --verily    scrub real thoroughly (see above)
+**   --force     Do not prompt for confirmation
+**   --private   Only private branches are removed from the repository
+**   --verily    Scrub real thoroughly (see above)
 */
 void scrub_cmd(void){
   int bVerily = find_option("verily",0,0)!=0;
   int bForce = find_option("force", "f", 0)!=0;
   int privateOnly = find_option("private",0,0)!=0;
@@ -1111,11 +1111,11 @@
 **
 ** No files or directories will be created.
 **
 ** Options:
 **   -L|--prefixlength N     Set the length of the names of the DESTINATION
-**                           subdirectories to N.
+**                           subdirectories to N
 */
 void test_hash_from_path_cmd(void) {
   char *zDest;
   char *zUuid;
   char *zFile;
@@ -1214,13 +1214,13 @@
 ** Fossil record from them.  It places the new Fossil repository in FILENAME.
 ** Subdirectories are read, files with leading '.' in the filename are ignored.
 **
 ** Options:
 **   -K|--keep-rid1     Read the filename of the artifact with RID=1 from the
-**                      file .rid in DIRECTORY.
+**                      file .rid in DIRECTORY
 **   -P|--keep-private  Mark the artifacts listed in the file .private in
-**                      DIRECTORY as private in the new Fossil repository.
+**                      DIRECTORY as private in the new Fossil repository
 */
 void reconstruct_cmd(void) {
   char *zPassword;
   int fKeepPrivate;
   fKeepRid1 = find_option("keep-rid1","K",0)!=0;
@@ -1281,19 +1281,19 @@
 ** 40+ character artifact ID, AA the first 2 characters.
 ** If -L|--prefixlength is given, the length (default 2) of the directory prefix
 ** can be set to 0,1,..,9 characters.
 **
 ** Options:
-**   -R|--repository REPOSITORY  Deconstruct given REPOSITORY.
+**   -R|--repository REPOSITORY  Deconstruct given REPOSITORY
 **   -K|--keep-rid1              Save the filename of the artifact with RID=1 to
-**                               the file .rid1 in the DESTINATION directory.
+**                               the file .rid1 in the DESTINATION directory
 **   -L|--prefixlength N         Set the length of the names of the DESTINATION
-**                               subdirectories to N.
-**   --private                   Include private artifacts.
+**                               subdirectories to N
+**   --private                   Include private artifacts
 **   -P|--keep-private           Save the list of private artifacts to the file
 **                               .private in the DESTINATION directory (implies
-**                               the --private option).
+**                               the --private option)
 */
 void deconstruct_cmd(void){
   const char *zPrefixOpt;
   Stmt        s;
   int privateFlag;

Index: src/rss.c
==================================================================
--- src/rss.c
+++ src/rss.c
@@ -224,29 +224,29 @@
 ** Usage: %fossil rss ?OPTIONS?
 **
 ** The CLI variant of the /timeline.rss page, this produces an RSS
 ** feed of the timeline to stdout. Options:
 **
-**   -type|y FLAG    may be: all (default), ci (show check-ins only),
-**                   t (show tickets only),  w (show wiki only).
+**   -type|y FLAG    May be: all (default), ci (show check-ins only),
+**                   t (show tickets only),  w (show wiki only)
+**
+**   -limit|n LIMIT  The maximum number of items to show
 **
-**   -limit|n LIMIT  The maximum number of items to show.
+**   -tkt HASH       Filter for only those events for the specified ticket
 **
-**   -tkt HASH       Filters for only those events for the specified ticket.
+**   -tag TAG        Filter for a tag
 **
-**   -tag TAG        filters for a tag
-**
-**   -wiki NAME      Filters on a specific wiki page.
+**   -wiki NAME      Filter on a specific wiki page
 **
 ** Only one of -tkt, -tag, or -wiki may be used.
 **
-**   -name FILENAME  filters for a specific file. This may be combined
+**   -name FILENAME  Filter for a specific file. This may be combined
 **                   with one of the other filters (useful for looking
-**                   at a specific branch).
+**                   at a specific branch)
 **
-**   -url STRING     Sets the RSS feed's root URL to the given string.
-**                   The default is "URL-PLACEHOLDER" (without quotes).
+**   -url STRING     Set the RSS feed's root URL to the given string.
+**                   The default is "URL-PLACEHOLDER" (without quotes)
 */
 void cmd_timeline_rss(void){
   Stmt q;
   int nLine=0;
   char *zPubDate, *zProjectName, *zProjectDescr, *zFreeProjectName=0;

Index: src/search.c
==================================================================
--- src/search.c
+++ src/search.c
@@ -584,14 +584,14 @@
 ** returned.  The -width option can be used to set the output width used
 ** when printing matches.
 **
 ** Options:
 **
-**     -a|--all          Output all matches, not just best matches.
-**     -n|--limit N      Limit output to N matches.
+**     -a|--all          Output all matches, not just best matches
+**     -n|--limit N      Limit output to N matches
 **     -W|--width WIDTH  Set display width to WIDTH columns, 0 for
-**                       unlimited. Defaults the terminal's width.
+**                       unlimited. Defaults the terminal's width
 */
 void search_cmd(void){
   Blob pattern;
   int i;
   Blob sql = empty_blob;

Index: src/sha1.c
==================================================================
--- src/sha1.c
+++ src/sha1.c
@@ -503,14 +503,14 @@
 **
 ** Compute an SHA1 checksum of all files named on the command-line.
 ** If a file is named "-" then take its content from standard input.
 ** Options:
 **
-**    -h, --dereference     If FILE is a symbolic link, compute the hash
+**    -h|--dereference      If FILE is a symbolic link, compute the hash
 **                          on the object that the link points to.  Normally,
 **                          the hash is over the name of the object that
-**                          the link points to.
+**                          the link points to
 **
 ** See also: [[md5sum]], [[sha3sum]]
 */
 void sha1sum_test(void){
   int i;

Index: src/sha3.c
==================================================================
--- src/sha3.c
+++ src/sha3.c
@@ -634,13 +634,13 @@
 **    --224               Compute a SHA3-224 hash
 **    --256               Compute a SHA3-256 hash (the default)
 **    --384               Compute a SHA3-384 hash
 **    --512               Compute a SHA3-512 hash
 **    --size N            An N-bit hash.  N must be a multiple of 32 between
-**                        128 and 512.
-**    -h, --dereference   If FILE is a symbolic link, compute the hash on
-**                        the object pointed to, not on the link itself.
+**                        128 and 512
+**    -h|--dereference    If FILE is a symbolic link, compute the hash on
+**                        the object pointed to, not on the link itself
 **
 ** See also: [[md5sum]], [[sha1sum]]
 */
 void sha3sum_test(void){
   int i;

Index: src/shell.c
==================================================================
--- src/shell.c
+++ src/shell.c
@@ -14011,11 +14011,11 @@
   ".print STRING...         Print literal STRING",
 #ifndef SQLITE_OMIT_PROGRESS_CALLBACK
   ".progress N              Invoke progress handler after every N opcodes",
   "   --limit N                 Interrupt after N progress callbacks",
   "   --once                    Do no more than one progress interrupt",
-  "   --quiet|-q                No output except at interrupts",
+  "   -q|--quiet                No output except at interrupts",
   "   --reset                   Reset the count for each input and interrupt",
 #endif
   ".prompt MAIN CONTINUE    Replace the standard prompts",
   ".quit                    Exit this program",
   ".read FILE               Read input from FILE",

Index: src/smtp.c
==================================================================
--- src/smtp.c
+++ src/smtp.c
@@ -598,11 +598,11 @@
 ** to the list of users TO.  FROM is the sender of the email.
 **
 ** Options:
 **
 **      --direct              Go directly to the TO domain.  Bypass MX lookup
-**      --relayhost R         Use R as relay host directly for delivery.
+**      --relayhost R         Use R as relay host directly for delivery
 **      --port N              Use TCP port N instead of 25
 **      --trace               Show the SMTP conversation on the console
 */
 void test_smtp_send(void){
   SmtpSession *p;
@@ -1337,11 +1337,11 @@
 **      --trace           Print a transcript of the conversation on stderr
 **                        for debugging and analysis
 **
 **      --ipaddr ADDR     The SMTP connection originates at ADDR.  Or if ADDR
 **                        is the name of an environment variable, the address
-**                        is taken from that environment variable.
+**                        is taken from that environment variable
 */
 void smtp_server(void){
   char *zDbName;
   const char *zDomain;
   SmtpServer x;
@@ -1483,11 +1483,11 @@
 ** off of the wire.
 **
 **   --logdir  DIR        Each pop3d session creates a new logfile
 **                        in the directory DIR and records a transcript
 **                        of the session there.  The logfile is opened
-**                        before entering the chroot jail.
+**                        before entering the chroot jail
 */
 void pop3d_command(void){
   char *zDbName;
   char *zA1, *zA2, *zCmd, *z;
   int inAuth = 1;

Index: src/sqlcmd.c
==================================================================
--- src/sqlcmd.c
+++ src/sqlcmd.c
@@ -322,15 +322,15 @@
 ** running any SQL commands that modify the repository database.  Use the
 ** --readonly option to prevent accidental damage to the repository.
 **
 ** Options:
 **
-**    --no-repository           Skip opening the repository database.
+**    --no-repository           Skip opening the repository database
 **
 **    --readonly                Open the repository read-only.  No changes
 **                              are allowed.  This is a recommended safety
-**                              precaution to prevent repository damage.
+**                              precaution to prevent repository damage
 **
 **    -R REPOSITORY             Use REPOSITORY as the repository database
 **
 ** All of the standard sqlite3 command-line shell options should also
 ** work.

Index: src/stat.c
==================================================================
--- src/stat.c
+++ src/stat.c
@@ -301,16 +301,16 @@
 ** Shows statistics and global information about the repository and/or
 ** verify the integrity of a repository.
 **
 ** Options:
 **
-**   --brief|-b           Only show essential elements.
-**   --db-check           Run "PRAGMA quick_check" on the repository database.
-**   --db-verify          Run a full verification of the repository integrity.
+**   -b|--brief           Only show essential elements
+**   --db-check           Run "PRAGMA quick_check" on the repository database
+**   --db-verify          Run a full verification of the repository integrity
 **                        This involves decoding and reparsing all artifacts
-**                        and can take significant time.
-**   --omit-version-info  Omit the SQLite and Fossil version information.
+**                        and can take significant time
+**   --omit-version-info  Omit the SQLite and Fossil version information
 */
 void dbstat_cmd(void){
   i64 t, fsize;
   int n, m;
   int szMax, szAvg;

Index: src/tag.c
==================================================================
--- src/tag.c
+++ src/tag.c
@@ -379,16 +379,16 @@
 **         be usable instead of a CHECK-IN in commands such as
 **         update and merge.  If the --propagate flag is present,
 **         the tag value propagates to all descendants of CHECK-IN
 **
 **         Options:
-**           --raw                       Raw tag name.
-**           --propagate                 Propagating tag.
-**           --date-override DATETIME    Set date and time added.
-**           --user-override USER        Name USER when adding the tag.
-**           --dryrun|-n                 Display the tag text, but do not
-**                                       actually insert it into the database.
+**           --raw                       Raw tag name
+**           --propagate                 Propagating tag
+**           --date-override DATETIME    Set date and time added
+**           --user-override USER        Name USER when adding the tag
+**           -n|--dryrun                 Display the tag text, but do not
+**                                       actually insert it into the database
 **
 **         The --date-override and --user-override options support
 **         importing history from other SCM systems. DATETIME has
 **         the form 'YYYY-MMM-DD HH:MM:SS'.
 **
@@ -397,26 +397,26 @@
 **         Remove the tag TAGNAME from CHECK-IN, and also remove
 **         the propagation of the tag to any descendants.  Use the
 **         the --dryrun or -n options to see what would have happened.
 **
 **         Options:
-**           --raw                       Raw tag name.
-**           --date-override DATETIME    Set date and time deleted.
-**           --user-override USER        Name USER when deleting the tag.
-**           --dryrun|-n                 Display the control artifact, but do
-**                                       not insert it into the database.
+**           --raw                       Raw tag name
+**           --date-override DATETIME    Set date and time deleted
+**           --user-override USER        Name USER when deleting the tag
+**           -n|--dryrun                 Display the control artifact, but do
+**                                       not insert it into the database
 **
 ** > fossil tag find ?OPTIONS? TAGNAME
 **
 **         List all objects that use TAGNAME.  TYPE can be "ci" for
 **         check-ins or "e" for events. The limit option limits the number
 **         of results to the given value.
 **
 **         Options:
-**           --raw           Raw tag name.
-**           -t|--type TYPE  One of "ci", or "e".
-**           -n|--limit N    Limit to N results.
+**           --raw           Raw tag name
+**           -t|--type TYPE  One of "ci", or "e"
+**           -n|--limit N    Limit to N results
 **
 ** > fossil tag list|ls ?OPTIONS? ?CHECK-IN?
 **
 **         List all tags, or if CHECK-IN is supplied, list
 **         all tags and their values for CHECK-IN.  The tagtype option
@@ -423,11 +423,11 @@
 **         takes one of: propagated, singleton, cancel.
 **
 **         Options:
 **           --raw           List tags raw names of tags
 **           --tagtype TYPE  List only tags of type TYPE
-**           -v|--inverse    Inverse the meaning of --tagtype TYPE.
+**           -v|--inverse    Inverse the meaning of --tagtype TYPE
 **
 ** The option --raw allows the manipulation of all types of tags
 ** used for various internal purposes in fossil. It also shows
 ** "cancel" tags for the "find" and "list" subcommands. You should
 ** not use this option to make changes unless you are sure what
@@ -643,13 +643,13 @@
 ** Reparenting is accomplished by adding a parent tag.  So to undo the
 ** reparenting operation, simply delete the tag.
 **
 **    --test           Make database entries but do not add the tag artifact.
 **                     So the reparent operation will be undone by the next
-**                     "fossil rebuild" command.
-**    --dryrun | -n    Print the tag that would have been created but do not
-**                     actually change the database in any way.
+**                     "fossil rebuild" command
+**    -n|--dryrun      Print the tag that would have been created but do not
+**                     actually change the database in any way
 **    --date-override DATETIME  Set the change time on the control artifact
 **    --user-override USER      Set the user name on the control artifact
 */
 void reparent_cmd(void){
   int bTest = find_option("test","",0)!=0;

Index: src/tar.c
==================================================================
--- src/tar.c
+++ src/tar.c
@@ -425,11 +425,11 @@
 ** COMMAND: test-tarball
 **
 ** Generate a GZIP-compressed tarball in the file given by the first argument
 ** that contains files given in the second and subsequent arguments.
 **
-**   -h, --dereference   Follow symlinks; archive the files they point to.
+**   -h|--dereference    Follow symlinks; archive the files they point to.
 */
 void test_tarball_cmd(void){
   int i;
   Blob zip;
   int eFType = SymFILE;

Index: src/timeline.c
==================================================================
--- src/timeline.c
+++ src/timeline.c
@@ -2846,29 +2846,29 @@
 **
 **
 ** Options:
 **   -n|--limit N         If N is positive, output the first N entries.  If
 **                        N is negative, output the first -N lines.  If N is
-**                        zero, no limit.  Default is -20 meaning 20 lines.
+**                        zero, no limit.  Default is -20 meaning 20 lines
 **   -p|--path PATH       Output items affecting PATH only.
-**                        PATH can be a file or a sub directory.
-**   --offset P           skip P changes
+**                        PATH can be a file or a sub directory
+**   --offset P           Skip P changes
 **   --sql                Show the SQL used to generate the timeline
 **   -t|--type TYPE       Output items from the given types only, such as:
 **                            ci = file commits only
 **                            e  = technical notes only
 **                            t  = tickets only
 **                            w  = wiki commits only
 **   -v|--verbose         Output the list of files changed by each commit
 **                        and the type of each change (edited, deleted,
-**                        etc.) after the check-in comment.
+**                        etc.) after the check-in comment
 **   -W|--width N         Width of lines (default is to auto-detect). N must be
 **                        either greater than 20 or it ust be zero 0 to
 **                        indicate no limit, resulting in a single line per
-**                        entry.
+**                        entry
 **   -R REPO_FILE         Specifies the repository db to use. Default is
-**                        the current checkout's repository.
+**                        the current checkout's repository
 */
 void timeline_cmd(void){
   Stmt q;
   int n, k, width;
   const char *zLimit;

Index: src/undo.c
==================================================================
--- src/undo.c
+++ src/undo.c
@@ -462,11 +462,11 @@
 **
 ** Future versions of Fossil might add new commands to the set of commands
 ** that are undoable.
 **
 ** Options:
-**   -n|--dry-run   do not make changes but show what would be done
+**   -n|--dry-run   Do not make changes but show what would be done
 **
 ** See also: [[commit]], [[status]]
 */
 void undo_cmd(void){
   int isRedo = g.argv[1][0]=='r';

Index: src/unversioned.c
==================================================================
--- src/unversioned.c
+++ src/unversioned.c
@@ -258,11 +258,11 @@
 **
 **                              --glob PATTERN   Show only files that match
 **                              --like PATTERN   Show only files that match
 **                              -l               Show additional details for
 **                                               files that match. Implied
-**                                               when 'list' is used.
+**                                               when 'list' is used
 **
 **    revert ?URL?           Restore the state of all unversioned files in the
 **                           local repository to match the remote repository
 **                           URL.
 **
@@ -290,11 +290,11 @@
 **    touch FILE ...         Update the TIMESTAMP on all of the listed files
 **
 ** Options:
 **
 **   --mtime TIMESTAMP       Use TIMESTAMP instead of "now" for the "add",
-**                           "edit", "remove", and "touch" subcommands.
+**                           "edit", "remove", and "touch" subcommands
 **   -R|--repository FILE    Use FILE as the repository
 */
 void unversioned_cmd(void){
   const char *zCmd;
   int nCmd;

Index: src/update.c
==================================================================
--- src/update.c
+++ src/update.c
@@ -100,17 +100,17 @@
 **   --force-missing        Force update if missing content after sync
 **   -n|--dry-run           If given, display instead of run actions
 **   -v|--verbose           Print status information about all files
 **   -W|--width WIDTH       Width of lines (default is to auto-detect).
 **                          Must be more than 20 or 0 (= no limit,
-**                          resulting in a single line per entry).
+**                          resulting in a single line per entry)
 **   --setmtime             Set timestamps of all files to match their
 **                          SCM-side times (the timestamp of the last
-**                          checkin which modified them).
+**                          checkin which modified them)
 **  -K|--keep-merge-files   On merge conflict, retain the temporary files
 **                          used for merging, named *-baseline, *-original,
-**                          and *-merge.
+**                          and *-merge
 **
 ** See also: [[revert]]
 */
 void update_cmd(void){
   int vid;              /* Current version */

Index: src/url.c
==================================================================
--- src/url.c
+++ src/url.c
@@ -390,11 +390,11 @@
 ** also happens to be a convenient place to look for other
 ** network-related options:
 **
 **    --nosync             Temporarily disable "autosync"
 **
-**    --ipv4               Disallow IPv6.  Use only IPv4.
+**    --ipv4               Disallow IPv6.  Use only IPv4
 **
 **    --accept-any-cert    Disable server SSL cert validation. Accept
 **                         any SSL cert that the server provides.
 **                         WARNING: this option opens you up to
 **                         forged-DNS and man-in-the-middle attacks!

Index: src/wiki.c
==================================================================
--- src/wiki.c
+++ src/wiki.c
@@ -737,11 +737,11 @@
 **
 ** Output JSON format:
 **
 ** { name: "page name",
 **   type: "normal" | "tag" | "checkin" | "branch" | "sandbox",
-**   mimetype: "mime type",
+**   mimetype: "mimetype",
 **   version: UUID string or null for a sandbox page,
 **   parent: "parent uuid" or null if no parent,
 **   isDeleted: true if the page has no content (is "deleted")
 **              else not set (making it "falsy" in JS),
 **   content: "page content" (only if includeContent is true)
@@ -805,11 +805,11 @@
 ** Ajax route handler for /wikiajax/save.
 **
 ** URL params:
 **
 **  page = the wiki page name.
-**  mimetype = content mime type.
+**  mimetype = content mimetype.
 **  content = page content. Fossil considers an empty page to
 **            be "deleted".
 **  isnew = 1 if the page is to be newly-created, else 0 or
 **          not send.
 **
@@ -1875,50 +1875,48 @@
 **       writes the output to standard output.  The directory parts of
 **       the output filename are created if needed.
 **       If PAGENAME is provided, the named wiki page will be output.
 **
 **       Options:
-**         --technote|-t DATETIME|TECHNOTE-ID
+**         -t|--technote DATETIME|TECHNOTE-ID
 **                    Specifies that a technote, rather than a wiki page,
 **                    will be exported. If DATETIME is used, the most
 **                    recently modified tech note with that DATETIME will
-**                    output.
+**                    output
 **         -h|--html  The body (only) is rendered in HTML form, without
-**                    any page header/foot or HTML/BODY tag wrappers.
+**                    any page header/foot or HTML/BODY tag wrappers
 **         -H|--HTML  Works like -h|-html but wraps the output in
-**                    <html><body>...</body></html>.
+**                    <html><body>...</body></html>
 **         -p|--pre   If -h|-H is used and the page or technote has
 **                    the text/plain mimetype, its HTML-escaped output
-**                    will be wrapped in <pre>...</pre>.
+**                    will be wrapped in <pre>...</pre>
 **
 ** > fossil wiki (create|commit) PAGENAME ?FILE? ?OPTIONS?
 **
 **       Create a new or commit changes to an existing wiki page or
 **       technote from FILE or from standard input. PAGENAME is the
 **       name of the wiki entry or the timeline comment of the
 **       technote.
 **
 **       Options:
-**         -M|--mimetype TEXT-FORMAT   The mime type of the update.
+**         -M|--mimetype TEXT-FORMAT   Mimetype of the update.
 **                                     Defaults to the type used by
 **                                     the previous version of the
 **                                     page, or text/x-fossil-wiki.
 **                                     Valid values are: text/x-fossil-wiki,
 **                                     text/x-markdown and text/plain. fossil,
 **                                     markdown or plain can be specified as
-**                                     synonyms of these values.
-**         -t|--technote DATETIME      Specifies the timestamp of
-**                                     the technote to be created or
-**                                     updated. When updating a tech note
+**                                     synonyms of these values
+**         -t|--technote DATETIME      Timestamp of the technote to be created
+**                                     or updated. When updating a tech note
 **                                     the most recently modified tech note
 **                                     with the specified timestamp will be
-**                                     updated.
-**         -t|--technote TECHNOTE-ID   Specifies the technote to be
-**                                     updated by its technote id.
-**         --technote-tags TAGS        The set of tags for a technote.
-**         --technote-bgcolor COLOR    The color used for the technote
-**                                     on the timeline.
+**                                     updated
+**         -t|--technote TECHNOTE-ID   Technote to be updated by its technote id
+**         --technote-tags TAGS        Tags for a technote
+**         --technote-bgcolor COLOR    Color used for the technote
+**                                     on the timeline
 **
 ** > fossil wiki list ?OPTIONS?
 ** > fossil wiki ls ?OPTIONS?
 **
 **       Lists all wiki entries, one per line, ordered
@@ -1926,16 +1924,16 @@
 **
 **       Options:
 **         -t|--technote               Technotes will be listed instead of
 **                                     pages. The technotes will be in order
 **                                     of timestamp with the most recent
-**                                     first.
+**                                     first
 **         -s|--show-technote-ids      The id of the tech note will be listed
 **                                     along side the timestamp. The tech note
 **                                     id will be the first word on each line.
 **                                     This option only applies if the
-**                                     --technote option is also specified.
+**                                     --technote option is also specified
 **
 ** DATETIME may be "now" or "YYYY-MM-DDTHH:MM:SS.SSS". If in
 ** year-month-day form, it may be truncated, the "T" may be replaced by
 ** a space, and it may also name a timezone offset from UTC as "-HH:MM"
 ** (westward) or "+HH:MM" (eastward). Either no timezone suffix or "Z"
@@ -2090,11 +2088,11 @@
       if( rid>0 ){
         pWiki = manifest_get(rid, CFTYPE_EVENT, 0);
       }
     }
     if( !zMimeType || !*zMimeType ){
-      /* Try to deduce the mime type based on the prior version. */
+      /* Try to deduce the mimetype based on the prior version. */
       if(isSandbox){
         zMimeType =
           wiki_filter_mimetypes(db_get("sandbox-mimetype",
                                        "text/x-fossil-wiki"));
       }else if( pWiki!=0 && (pWiki->zMimetype && *pWiki->zMimetype) ){


(6) By Marcos Cruz (programandala.net) on 2021-03-11 12:02:10 in reply to 5 [link] [source]

Here's the diff which tries to standardise on using initial capital letter, no period at the end of the option description, order of short/long option, imperative verbs.

I really appreciate this kind of care and consistency in the help texts of any program. Usually it's difficult to achieve in large projects maintained by several people. Thank you for working on that.

But what is the rationale behind removing all periods? The option descriptions are full sentences, and some of them contain more than one sentence. IMHO a period at the end of all descriptions is not only clearer for reading, but required by the punctuation rules.

(8) By Stephan Beal (stephan) on 2021-03-11 12:15:47 in reply to 6 [link] [source]

But what is the rationale behind removing all periods? The option descriptions are full sentences, and some of them contain more than one sentence. IMHO a period at the end of all descriptions is not only clearer for reading, but required by the punctuation rules.

FWIW i agree. i'm one of those people who feel that lines of text without a dot at the end just look odd.

In any case, i will apply ever-so-slightly modified forms of the patches later on today. Thank you, Kirill, for the contributions.

(9) By Kirill M (Kirill) on 2021-03-11 12:47:57 in reply to 8 [link] [source]

My view on this is that list of options is just that, a list, and a list which would look strange in a terminal if all elements ended with a period, even if some are full sentences. Many descriptions are not full sentences either, and those would certainly look strange with a period at the end. Thus, for consistency, I did what I did. Which also resulted in multi sentence descriptions to have the final period chopped off.

(14) By Marcos Cruz (programandala.net) on 2021-03-11 15:22:56 in reply to 9 [link] [source]

My view on this is that list of options is just that, a list, and a list which would look strange in a terminal if all elements ended with a period, even if some are full sentences.

I see your point, but IMHO the question is what the contents are, not the fact that they are displayed as a list or a table. For example, imagine a similar list with two elements per item: and author and a famous quote. The fact the quote is part of a list item is not a reason to change its own internal punctuation. The final period (or ellipsis or whatever) is part of the quote, not part of the list item as a whole. I see no difference with this case. On the other hand, a list of authors and theirs birthdays would not require a period after the dates.

Many descriptions are not full sentences either, and those would certainly strange with a period at the end.

I have found some of them, for example:

--date-override DATE  DATE to use instead of 'now'

I don't know if it's considered a full sentence or not in English, but anyway, for consistency, such descriptions could be reworded after the general convention:

--date-override DATE  Use DATE instead of 'now'

Other cases are full sentences, but need more changes to make them imperative:

--file           The comment text is really just a file name to read it from
--private        Branch is private (i.e., remains local)

Possible alternatives:

--file           Make the comment text be really just a file name to read it from
--private        Make the branch private (i.e., remains local)

Which also resulted in multi sentence descriptions to have the final period chopped off.

I understand the coherency, but the result looks strange in those cases.

Out of curiosity, I've checked several manual pages, and all of them respect the punctuation of the option descriptions. When the period is missing, it's clearly an oversight, like -b and -c (compared to -A and -D) in this excerpt from Mutt's manual:

-A alias
       An expanded version of the given alias is passed to stdout.

-a file [...]
       Attach  a file to your message using MIME.  When attaching single or multiple files,
       separating filenames and recipient addresses with "--" is mandatory,  e.g.  mutt  -a
       image.jpg  --  addr1 or mutt -a img.jpg *.png -- addr1 addr2.  The -a option must be
       placed at the end of command line options.

-b address
       Specify a blind-carbon-copy (BCC) recipient

-c address
       Specify a carbon-copy (CC) recipient

-d level
       If mutt was compiled with +DEBUG log debugging output to ~/.muttdebug0.   Level  can
       range from 1-5 and effects verbosity. A value of 2 is recommended.

-D     Print the value of all configuration options to stdout.

(10.2) By Stephan Beal (stephan) on 2021-03-11 13:24:39 edited from 10.1 in reply to 5 [link] [source]

Here's the diff which tries to standardise on using initial capital letter, no period at the end of the option description, order of short/long option, imperative verbs.

Just FYI i'm working on this now but it will take a while. i agree with Marcos that the periods are "more correct," BUT we seem to have about a 50/50 split in terms of their usage/non-usage, which means there are lots of help flags to go through:

$ f help --everything | grep -c -e '^ *-'
862

(Ouch.)

That said: one compelling reason for leaving the periods off is that Richard's tendency seems to be to write them without the periods. Thus i'm torn on this point :/. My current (this moment, subject to change) preference seems to be to add a period only when we have more than one statement (see below for one compelling argument for that). Feel free to argue one way or the other, noting that i'm (possibly) not the final arbiter.

If we look at some common CLI tools, they are consistent within themselves but inconsistent with regards to each other:

  • patch --help: Starting caps, ending periods.
  • grep --help: starting lower, no periods
  • man --help: same as grep
  • emacs --help: same as grep but shows flags in --long, -short format.
  • My own apps: Caps, periods. (Noting that there is something to be said for the lower noise level of missing periods, grammar be damned.)

Noting that (grep, man, emacs) never seem to use more than one statement, whereas we often have 2-3 sentences of text.

The changes i'm making based on your patch are:

  • Start help with caps.
  • End with a period (see note above about being torn).
  • "mime type" ==> "mimetype". (That's something we discussed long ago as well.)
  • Ordering of flags as -S|--long. A contributor reordered most of those a few months ago, and you've caught the outliers.
  • Verb forms, e.g. "outputs" ==> "output"

At least one of the blocks you patched are internal-only documentation so i will leave those as-is (diff_options()). The --help text and internal text can be distinguished by the existence of the word COMMAND: or WEBPAGE: at the top of the comment block. All of those get processed as --help resp. /help docs, but no other comment blocks get processed that way.

(12) By Stephan Beal (stephan) on 2021-03-11 13:34:14 in reply to 10.2 [link] [source]

Just FYI i'm working on this now but it will take a while.

There's an initial go at this in fossil:4cb50c4ef35d0ab2. The periods i only modified for consistency within a given command/page's help text, deferring the decision on whether to globally lop them off or add them for the time being. Fundamentally i agree with Marco that periods are a real thing, but also agree that they're "just noise" on brief statements. Multi-statement help text "needs" them, though, in order to avoid triggering OCD quirks in some folks (who, me?). That, in turn, argues for having them everywhere for consistency. Alas, there is no one right answer for such things.

(13) By Kirill M (Kirill) on 2021-03-11 15:02:37 in reply to 12 [link] [source]

Great! I'm happy as long as there's no period after brief statements, and as long as there's consistent initial capital letter. I too prefer periods after full sentences.

Now, there're also some inconsistencies in how the same option is being described in various commands, e.g. --repository (is it a repository, or a repository file, or the repository file?):

   -R|--repository FILE       Extract artifacts from repository FILE
   -R|--repository FILE       Run commands on repository FILE
   -R|--repository FILE       Extract artifacts from repository FILE
   -R|--repository FILE       Extract info from repository FILE
  -R|--repository REPOSITORY  Deconstruct given REPOSITORY.
   -R|--repository FILE       Extract info from repository FILE
   -R|--repository FILE       Extract info from repository FILE
  -R|--repository FILE  Extract info from repository FILE.
  -R|--repository REPO       Local repository to pull into
  -R|--repository REPO       Local repository to push from
  -R|--repository REPO       Local repository to sync with
  -R|--repository REPO      The repository file to commit to.
      -R|--repository FILE
  -R|--repository FILE    Use FILE as the repository
  -R|--repository FILE    Use FILE as the repository

But right now I have $work to do!

(16) By Stephan Beal (stephan) on 2021-03-11 15:41:40 in reply to 13 [link] [source]

Now, there're also some inconsistencies ... e.g. --repository (is it a repository, or a repository file, or the repository file?):

No there's not ;).

(17) By Kirill M (Kirill) on 2021-03-11 16:07:30 in reply to 16 [link] [source]

The descriptions continue to refer to FILE and REPOSITORY, though.

(18) By Stephan Beal (stephan) on 2021-03-11 18:22:58 in reply to 17 [link] [source]

The descriptions continue to refer to FILE and REPOSITORY, though.

No they don't. ;)

$ grep -B2 'repository FILE' *.c
db.c-** Usage: %fossil test-without-rowid FILENAME...
db.c-**
db.c:** Change the Fossil repository FILENAME to make use of the WITHOUT ROWID

(That one is internal documentation for a test-only command, not help text for users.)

(15) By Marcos Cruz (programandala.net) on 2021-03-11 15:38:40 in reply to 12 [link] [source]

periods are a real thing, but also agree that they're "just noise" on brief statements. Multi-statement help text "needs" them, though,

I tend to think more linguistically than visually, and thus I'm less inclined to make such disctintions or exceptions, but your criteria seems reasonable, and at least it's a clear convention to follow.

No doubt the revision done by Kirill is a good improvement.