Zope + Ape + Subversion (was: RE: [Zope-dev] Using a truely revis ion based storage for Zope ?)

Jean-Francois.Doyon at CCRS.NRCan.gc.ca Jean-Francois.Doyon at CCRS.NRCan.gc.ca
Mon Apr 12 18:03:19 EDT 2004


G'Day,

Well, step one is done ... I now have Zope + Ape using Subversion as it's
"filesystem" !!

This is step one because, as Shawn suggested (Thanks for the pointer, that's
what I needed!), this simply means that Zope uses SVN purely as a
filesystem.

Because of subversion's nature, I want to look at 2 things beyond this that
traditional filesystems don't support:

- Use zope's username for SVN logging.
- History/Undo support: View past revisions of an object, and revert to such
a past revision.
- Zope Version support: SVN is fully transactional and atomic, this should
allow for support of Zope versions (I think ?)

In the longer term, there's great opportunity for:

- "Built-in" conflict management and resolution: No more need for a
"SafetyBelt" type approach.  Right now I haven't looked at this at all.  I
plan to implement smart merging where possible (It might work already
actually, I just need to test it).  True conflicts (Where a merge can't be
accomplished withouth user interaction) would raise some sort of conflict
error.

- Editing Zope content objects through interaction with the svn repository.
I can checkout the repository, edit some objects, and chek them back in,
never interacting with Zope directly ... I've already tried this !  Works
great for text based content types such as PageTemplates or DTML Documents
and so on ... I even did it with a JPG, though because the properties hold
width and height, you get some weird looking pictures :) The concept is
valid though.  There may someday be a way to leverage this functionality
better with a purpose built client of some sort.

- Leveraging SVN's property management.  Content in SVN has properties, much
like Zope does.  I haven't looked at it yet, but I've noticed ".properties"
file appearing ... I'm guessing those are the Zope properties, which would
be better handled by subversion's property mechanism.  And properties are
versioned too !

In the realm of the wishful thinking, there's even more:

Right now, HEAD (Latest/youngest revision) is always used and worked with.
The really powerful feature I want to eventually get to is publsihing
something of a given revision, while editing another.  One potential
paradigm for distiguishing between the two modes of operation could be to
use anonymous vs. authenticated.  This is not useful to everyone, but can be
in certain circumstances, most notably where authenticated =
authors/developpers and anonymous = normal users.  This however requires ZMI
interfaces, and in my case CMF ones as well ... This would be global though
... Eventually it'd be nice to have per object control of this stuff.  Andy
McKay says it can't be done, anybody care to contradict him ? :P I image I'd
have to monkey pathc something DEEP in the Zope code base, but I find the
mix-in class that's the commonn denominator ... why not ?

Right now I've been working within the "fs" module of apelib.  I'm going to
split it off into a seperate one so that it's a clean merge with Ape's code
base, in case someone wants to try it, or it eventually makes into Ape's
default distribution ?? ;)

Anyways, I'm just rambling by now ... Comments, thoughts and constructive
criticism welcome !

Thanks,
J.F.

-----Original Message-----
From: zope-dev-bounces at zope.org [mailto:zope-dev-bounces at zope.org]On
Behalf Of Shane Hathaway
Sent: April 8, 2004 11:20 AM
To: Jean-Francois.Doyon at ccrs.nrcan.gc.ca
Cc: zope-dev at zope.org
Subject: Re: [Zope-dev] Using a truely revision based storage for Zope ?


Jean-Francois.Doyon at CCRS.NRCan.gc.ca wrote:
> I've started looking at the ZODB and APE packages to try and get some
> understanding of how the whole storage interaction works, but it'll take
me
> some time to figure it all out ... So I thought I'd get feedback on the
idea
> first ...

Sounds great!  If I were you, I would start by replacing 
Ape/lib/apelib/fs/fileops.py with something that uses the Subversion 
module.  It's a very simple module and you should be able to get pretty 
far that way.

Shane

_______________________________________________
Zope-Dev maillist  -  Zope-Dev at zope.org
http://mail.zope.org/mailman/listinfo/zope-dev
**  No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-announce
 http://mail.zope.org/mailman/listinfo/zope )



More information about the Zope-Dev mailing list