Hi devs,

I'd like to brainstorm about the idea of having global versioning in XE. 

First here is a use case:
* I have a given state in my wiki with pages in different versions
* I add some pages or make modifications to existing pages
* I want to go back to the previous state

A good use case could be for example to return to a state before one or several 
applications have been installed.

Proposed solution
==============

* Store a global version number in the DB. Let's call it VERSION
* Whenever a doc is modified, use VERSION + 1 as the new doc version
* When we rollback (to say version OLDVERSION) do a query on all docs in the 
wiki having a version > OLDVERSION and for each of them rollback to their last 
version <= OLDVERSION
* Write a migrator that runs the whole wiki history by looking at all versions 
of all docs (map in memory) and recompute the new version starting a VERSION = 
1 and incrementing.
* We would also need to modify the XAR importer so that importing a XAR with an 
older versioning scheme will work. BTW knowing that it's an old scheme is 
relatively easy since all old versions have a dot in their name.

More notes:
* This would also allow us to rollback before a given date
* If we wanted we could easily add the notion of Tags later on, i.e. to 
associate a name with a VERSION
* I've been thinking about this in the context of the new model but it's 
probably easier to implement it first with the old model
* JRCS uses the format X.Y for versions but we could decide to only use the 
major, i.e always have versions of the form X.0
* In order to continue to support minor edits we would need a way to save that 
information. One solution is to use the minor to signify a minor edit, for ex: 
X.1 would mean that X is a minor. Another, probably better solution would be to 
store that information in the DB in the xwikircs table

WDYT? Do you see any drawback of using a global versioning scheme? Do you think 
this is doable or too much work?

Is there anything Git can tell us re managing versions that would be useful to 
this discussion? 

Thanks
-Vincent
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to