On Fri, May 6, 2011 at 3:32 PM, Jay Ashworth <jra(a)baylink.com> wrote:
----- Original Message -----
From: "Heiko Nardmann"
<heiko.nardmann(a)itechnical.de>
Is it possible to have a version control system,
e.g. Subversion or
Git, as the backend for MediaWiki instead of a DBMS ?
So far I did not found anything in this direction ...
Github has a wiki based on git as part of the package it supplies to
its subscribers. I've been working with it a bit, writing and expanding
the doco for the K-9 android email client, and I'm *incredibly* unhappy
with it; it violates the Principle of Least Astonishment in so many, many
different ways.
I think that's more to do with their implementation & UI than the actual
storage; git should in fact be a very nice, flexible backend for something
like a wiki. I've actually been thinking about ways to use git or git-like
storage for a multi-user wiki-like environment, and may end up exploring
that in some side projects.
As for MediaWiki itself, it would be a bit awkward to hook an entirely
alternate storage & versioning engine in for page revisions as a lot of code
assumes being able to work with the revision table -- lots of things fetch
data directly from the database which has a single-branch CVS-like
versioning model already baked in (each page has a bunch of linear versions
on it).
The low-level text storage itself is pluggable and access to text is
encapsulated through the Revision class; the 'external storage' system
allows an extensible way of storing raw or compressed page text.
But, this has a different level of abstraction from what you'd want for SVN
or Git integration. The low-level storage only is given particular blobs of
text, without any revision or page context information. You can find out
which revisions are 'adjacent' in the versioning system after the fact by
going through the page/revision tables later -- this is used to optimize
bulk storage by rolling over old individual texts and migrating them to new
entries that combine diffing or compression for similar texts.
-- brion