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. ---- '''[[EE]]''': This: * Diff raw mode modifier: http://my/wiki/0--1# Returns the raw diff output, no wiki formatting is done. will NOT work. The URL "http://foo.example.com/this/page#" does not send a request for "/this/page#" to the foo.example.com webserver, it sends a request for "/this/page", and your web browser attempts to position the beginning of the visible page at an anchor named "". Is there another piece of line-noise you can use instead? ---- 19feb03 [jcw] - I've updated the Tclers' Wiki to the latest CVS code. Reason to mention it here is that the latest rev no longer has history at all. Not to move away from it, but because the current history has been a separate CVS-based mechanism for some time now anyway. With the "archive" view dropped, things have become lean-and-mean, ready to deal with history in a modular fashion. Also gone is the "format" flag - there are no longer special pages, every page is assumed to use wiki markup. ---- [[ [Category Wikit] - [Category Tcler's Wiki] ]]