Command line user interface (CLI) quirks (and wish list for improvements)
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 issued).
2. Short options enforce a blank between option letter and argument.
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).
* 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)
* 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
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 default.
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 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