Login
Changes To f-tools
Login

Changes to "f-tools" between 2013-08-14 19:38:05 and 2013-08-15 14:37:24

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, &lt;...BIG SNIP...&gt; 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.