I want to add pagehistory (a'la [http://mini.net/tclhist]) directly to the wikit. I don't think storing each revision in full is a particularly good idea, something like the way RCS does it seems like a better idea: store the last version in full, backtracking to the first version using diffs. My first idea(s): '''Storage:''' * 3 storage options: store history in wikit.tkd, store in history.tkd store in filesystem * Full version and diffs are separate files (RCS stores them in one file) * Diffs in last-first order in the $page.history file, in the order you need them. '''Access mostly like tclhist:''' * Get a specific version, page 0, revision 50: http://my/wiki/0.50 * Version summary: http://my/wiki/0^ * Diff mode 1: http://my/wiki/0-48 Returns the diff between the latest version and revision 48. * Diff mode 2: http://my/wiki/0--3 Returns the diff between the latest and 3 revisions prior. * Diff mode 3: http://my/wiki/0-48-40 Returns differences between version 48 and 40. * Diff raw mode modifier: http://my/wiki/0--1# Returns the raw diff output, no wiki formatting is done. * Diff context mode modifier: http://my/wiki/0--1~ Shows a raw (the way wikidiff does) listing of changes * Diff context mode modifier: http://my/wiki/0--5~~ Shows a raw chain of changes, each revision in a separate block. These should all just be links on existing pages. Diff is going to be a bit of a problem, as windows systems do not have it. There are precompiled binaries (68Kb), which we could store in the wikit. But I would prefer to use an all Tcl solution, but the current (working) [diff in tcl] is a tad slow (unworkable for word level diff like [wikidiff] does). It is fast enough for doing the history line-by-line diff, so I'll start using that for the history storage. But the fancy [wikidiff]/[worddiff] output will have to be done with external diff. Thoughts, anyone? - [PS]. As with all good things - there seem to be three sides to this, and I think they are mostly independent: * how to do the diff * how and where to store the diff * what URL scheme to use as "API" Picking (puretcl, history.tkd, urls-as-above) might be a nice starting point -[jcw] The CVS wiki history is currently under 30 Mb, that includes a copy of the latest pages. If we just consider changes, and then zlib-compress each, that will be even less. ---- [[ [Category Wikit] - [Category Tcler's Wiki] ]]