<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.
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
2. Short options enforce a blank between option letter and
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
* 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
* Many commands only have long options (e.g. diff --to).
* Some have short options as alias of a long option (e.g. diff
* 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
* Provide short options as aliases for long options as far as
* 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
Provide error messages.
6. fossil mv/rm don’t act on the checkout as well.
Make these commands act on the files in the checkout as well by
7. There seems no easy way to display the full timeline.
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
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