<i>Command line user interface (CLI) quirks (and wish list for improvements)</i>

Note: the following text is generated from an AsciiDoc source file. Intentionally, no attempt at wiki formatting is made. The text currently only presents my personal opinions regarding desirable changes in order to improve the CLI.

    1. Currenlty, checkin with empty commit message is possible after
       explicit confirmation that this is intended.

       Wish list

       I would say an empty commit message never makes sense. Therefore,
       leaving the editor without providing a commit message (or not
       providing it on the command line) should be interpreted as intentional
       abort of the checkin (and a “commit aborted” message should be
       issued).

    2. Short options enforce a blank between option letter and
       argument.

       Wish list

       Don’t enforce a blank, i.e. allow usage such as fossil diff -r1234.

    3. There are short options (one-dash, one-character) and long options
       (two-dashes, multiple-character) but there are also at least two
       one-dash/multiple-character options, namely -showfiles (for timeline)
       and -help (as an option to command instead of using the help command
       itself).

       Wish list

          * Abolish one-dash/multiple-character options in order to adhere to
            more standard usage (like GNU readline).

          * Changes dashes in argument names to underscores (e.g.
            date-override) in order to make intervening blanks between short
            options and arguments unambiguous possible.

    4. Command options are handled not consistently across different
       commands.

          * Many commands only have long options (e.g. diff --to).

          * Some have short options as alias of a long option (e.g. diff
            (-r|--from)

          * some short options do not correspond to a long option (e.g.
            fossil diff -i)

          * Where there are equivalent short and long options the help pages
            usually list them in the form --long | -l but sometimes the other
            way round (e.g. for ui: -P|--port) which is inconsistent.

          * There are a few one-dash/multicharacter options (e.g. fossil
            timeline -showfiles)

            Wish list

               * Provide short options as aliases for long options as far as
                 possible.

               * Replace one-dash/multi-character options by standard short
                 and long options.

               * Always list short options first in help pages.

    5. Some mistyped commands fail silently, e.g. fossil time -showfile

       Wish list

       Provide error messages.

    6. fossil mv/rm don’t act on the checkout as well.

       Wish list

       Make these commands act on the files in the checkout as well by
       default.

    7. There seems no easy way to display the full timeline.

       Wish list

       Provide a way to display whole timeline without guessing a
       sufficiently high value for the -n option argument, i.e. something
       like fossil timeline --all

Augmented wish list

    1. Customization via a command alias mechanism, such as

     alias not ' "extras --dotfiles --ignore "" '

    2. Add a fossil help --showall option concatenating in alphabetical order
       all help pages in order to make them globally searchable for the user
       (by piping them through more, for example)

    3. add (only locally unambiguous) chronological revision numbers to the
       timeline and make these revision numbers usable as a substitute for
       the SHA1 hashes of the checkins in commands like fossil cat -r rev
       somefile.txt. E.g., Mercurial does this by prepending the enumeration
       colon separated to the hash, changeset: 46:b2008223fa4a. Although the
       enumeration is meaningless across connected repositories (at least if
       run with autosync off), it is very helpful locally when specifying a
       revision to some command (diff, tag, etc).

    4. add an “ASCII art” version of the DAG to timeline output when using
       the CLI

    5. add a syntax fossil diff -r rev1:rev2 to better comply with expected
       behavior (svn, hg, …)

   --------------------------------------------------------------------------

   Last updated 2013-01-13 13:30:01 CET