On Fri, May 6, 2011 at 3:32 PM, Jay Ashworth jra@baylink.com wrote:
----- Original Message -----
From: "Heiko Nardmann" heiko.nardmann@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