Login
Changes To f-tools
Login

Changes to "f-tools" between 2014-01-12 11:29:48 and 2014-01-26 13:54:28

1
2
3
4
5

6
7
8
9
10
11

12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20





+






+







<h1>The f-tools</h1>

The source tree contains a few test/demo apps which are named <tt>f-something</tt> (the "f" is for "fossil", of course). Collectively, these apps demonstrate the functionality which is currently ported in from fossil(1) (or is new) and working. If a fossil(1) feature is not represented here, it's probably not yet ported.

   *  <tt>[/finfo?name=f-acat.c|f-acat]</tt> ("artifact cat") can output arbitrary artifacts from a repository.
   *  <tt>[/finfo?name=f-config.c|f-config]</tt> lists the contents of the various configuration sources.
   *  <tt>[/finfo?name=f-ls.c|f-ls]</tt> lists files from a repository.
   *  <tt>[/finfo?name=f-mfparse.c|f-mfparse]</tt> reads in Fossil control artifacts, converts them to its internal high-level form, and saves them back out to a file. This is used for testing both the manifest parsing and generation code, to test round-trip fidelity and compatibility with fossil(1) manifests.
   *  <tt>[/finfo?name=f-new.c|f-new]</tt> creates new/empty repository databases.
   *  <tt>[/finfo?name=f-query.c|f-query]</tt> runs SQL commands against a repo/checkout db. Be careful!
   *  <tt>[/finfo?name=f-resolve.c|f-resolve]</tt> resolves symbolic checkin names (like "trunk", "current", and "prev") and partial UUIDs to their full UUIDs and RIDs.
   *  <tt>[/finfo?name=f-sanity.c|f-sanity]</tt> runs a number of sanity checks on the library. Library developers should run/amend this occasionally.
   *  <tt>[/finfo?name=f-status.c|f-status]</tt> behaves mostly like fossil's <tt>status</tt> command.
   *  <tt>[/finfo?name=f-tag.c|f-tag]</tt> can add tags to artifacts.
   *  <tt>[/finfo?name=f-timeline.c|f-timeline]</tt> provides a simple timeline 
   *  <tt>[/finfo?name=f-wiki.c|f-wiki]</tt> hopes to one day be a generic wiki manipulation tool.

All of these applications accept <tt>-?</tt>, <tt>--help</tt>, or a first non-flag argument of <tt>help</tt> to show their help text.

These applications provide demonstrations of using the library and give devs a place to test new features. <tt>[FossilApp|fcli]</tt> provides a mini-framework which takes care of bootstrapping fossil for these applications, making it pretty simple to create new ones. fcli handles the CLI parsing, global flags, opening of a repo/checkout, and other "getting started" bits. If you've ever hacked on fossil(1), adding a new f-* app is very similar to adding a new command to fossil, with only a few more lines of bootstrap code (because each "command" is in its own app).