storing wiki history inside wikit

I want to add pagehistory (a'la [L1 ]) 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:

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:

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 ]