Shane, Thanks for the extra tips, I'll check out those interfaces! I'm also getting up to speed on the whole mapper concept, where the work regarding properties handling seems to be ?
I've done some reading, and I need to do some more, but I'll get there :) As for the seperation of code ... I now have a "subversion" directory as a sibbling to "fs" ... I had to edit a couple of files outside that directory, but still the seperation is nicer. eventually I'd have to make it into a product, is that doable ? J.F. -----Original Message----- From: Shane Hathaway To: [EMAIL PROTECTED] Cc: [EMAIL PROTECTED] Sent: 13/04/2004 11:43 AM Subject: Re: Zope + Ape + Subversion (was: RE: [Zope-dev] Using a truely revis ion based storage for Zope ?) On Mon, 12 Apr 2004 [EMAIL PROTECTED] wrote: > 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: To take this to the next level, you need to implement IFSReader and IFSWriter instead of the more basic file operations interface. See Ape/lib/apelib/fs/interfaces.py. In IFSReader/IFSWriter, you're a little closer to objects, and you work with OIDs instead of paths. I expect that history and version support will require us to augment IFSReader or add another interface. > - 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 ?) These seem doable. > 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. This could be complicated, because after the merge you have to be sure Zope caches the merged state rather than either of the intermediate states. The idea has potential, though! > - 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. Sounds neat. Fortunately, Ape doesn't have to be aware of this. :-) > - 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 ! I think you'll find this easy to do once you implement IFSReader/IFSWriter. > 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 ? Well, CMFStaging is designed to address this need. To do this at the database level, you could use versions. > 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 ?? ;) You can add a new module, perhaps 'svnops.py', to the 'fs' package. Then we should make the choice between fileops and svnops configurable. Shane _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] 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 )