1
2
3
4
5
6
7
8
9
10
11
12
13
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
-
+
+
|
<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).
* <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 display.
* <tt>[/finfo?name=f-timeline.c|f-timeline]</tt> provides a simple timeline
* <tt>[/finfo?name=f-resolve.c|f-resolve]</tt> resolves symbol checkin names and partial UUIDs to their full UUIDs and RIDs.
These applications provide demonstrations of using the library and give devs a place to test new features. <tt>[/finfo?name=FossilApp.c|FossilApp.c]</tt> provides a mini-framework which takes care of bootstrapping fossil for these applications, making it pretty simple to create new ones. FossilApp handles the CLI parsing, global flags, opening of a repo/checkout, and other "getting started" bits.
<h2>Demos</h2>
<nowiki><pre>
[stephan@host:~/cvs/fossil/f2]$ ./f-tag -a tip -t demo-tag -v "demo for prosperity purposes" --trace-sql
|
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
+
+
+
+
+
|
[stephan@host:~/cvs/fossil/f2]$ ./f-timeline -n 1 --trace-sql
SQL TRACE #1: SELECT '/home/stephan/cvs/fossil/f2' || '/' || value FROM vvar WHERE name='repository';
SQL TRACE #2: ATTACH DATABASE '/home/stephan/cvs/fossil/f2.fsl' AS repo;
SQL TRACE #3: SELECT substr(uuid,1,12) AS uuid, <...BIG SNIP...> ORDER BY event.mtime DESC LIMIT 1;
g [daa063582c2c] @ 2013-08-12 16:49:17 by [stephan]
Edit [2a84ad39]: Add "demo-tag" with value "demo for prosperity purposes".
SQL TRACE #4: DETACH DATABASE repo;
[stephan@host:~/cvs/fossil/f2]$ ./f-resolve current prev
b170fb24fe5d94a5b7fa7a00a9911083bf69b27b 1466 current
1ec904fa6a54b45b0a35cd14bab41af138584e45 1461 prev
</pre></nowiki>
<h2>f-tag</h2>
f-tag can be used to add and cancel tags on arbitrary repository artifacts. Tags in fossil are actually key/value pairs, but the value is optional. The ability to tag arbitrary artifacts, including other tags, allows (in principal) for applying arbitrary key/value-pair metadata to arbitrary artifacts. This can be used for a great many things above and beyond what fossil currently uses tags for. For example, tags could be used to implement a simple form of comment thread system, by implementing comments as tags, and replies as tags to those comment tags, ad nauseum.
|