[dokuwiki] Re: Using Git as DokuWiki Backend

  • From: Michael Hamann <michael@xxxxxxxxxxxxxxxx>
  • To: dokuwiki@xxxxxxxxxxxxx
  • Date: Sun, 5 Feb 2012 15:46:14 +0100

Hi,

On Sun, Feb 5, 2012 at 3:11 PM, José Carlos de Campos
<zecapistolas@xxxxxxxxxxxxxx> wrote:
[...]
> But how can this lead with old installations of DW, convert history of
> all pages on data/attic directory to a git history?

At least my idea, as outlined on the page in the wiki, would be to
keep the current backend and just make it possible to replace it. If
you want to get deeper into this topic it might be nice to make a list
of all places where files in the attic directory or the changelog are
accessed directly and make a plan how these things could be replaced,
e.g. using a global object that implements a certain interface that
can be replaced or also simple events like we have them now. The focus
should be on keeping things simple and not introducing too much
overhead. I think the goal shouldn't be to make git the default
storage option of DokuWiki but rather to make it possible to add
different storages and then of course a plugin for adding git could
also be implemented.

Btw. DokuWiki supports media revisions now so they should probably be
taken into consideration, too

> And about interface for this, users can create branches of pages from
> DW interface? or using command line and this is
> only backend idea for DW?

I think branches are a concept that is very difficult to convey in the
user interface, maybe one could make a simple option in the admin
backend which branch should be used with the option when changing
branches to either commit the current pages to the new branch or to
discard the current data and to check it out from the new branch.

I think the main use-case for branches is to duplicate a certain
namespace (or page) and to merge changes between these namespaces (or
pages). This isn't something that git supports as with git you always
get branches for the whole repository, at least when you want to keep
that compatible with other git implementations. However I think it
wouldn't be that difficult to implement branches for namespaces, you
would need to have some way to store the complete histories of two
namespaces and then merge changes either using 3-way-merging or by
simply applying the diff. I think the most important and maybe also
most difficult thing here is to identify the changes that have already
been applied on both namespaces in order to present the two histories
in some comparison view where the user can decide which changes should
be merged. It would be a bit similar to what the sync plugin does
already provide, just that the source and the target would be in the
same wiki and there might be more options for merging individual
editing steps without merging the whole history. I could imagine this
as a (GSoC) project of its own, independent from git.

Michael
--
DokuWiki mailing list - more info at
http://www.dokuwiki.org/mailinglist

Other related posts: