Re: [Revisionmanager-devel] apelib
Brought to you by:
philikon
|
From: Philipp v. W. <ph...@we...> - 2003-10-28 10:51:47
|
Jim, > the TODO file in the pre-sf distribution mentions using apelib for > zodb<->fs synchronization. Apelib is new to me, but I spent some time > reviewing the code and docs, and gave it a spin on a windows 2k > machine. > > Do you have any details, notes, or examples to clarify the idea? What > are the weak points in the current synchronization model? How would > apelib reinforce those? Note that a) ape is still experimental software and b) integration into RevisionManager is a nice thought but was never a short-term goal. RevisionManager has to make a bridge between the ZODB and the filesystem. Zope objects reside in the ZODB, CVS can only operate on filesystem files. Therefore, RevisionManager synchronizes objects to the FS before every CVS action and synchronized the FS to objects after every CVS action. This can be very expensive with a lot of objects. The idea behind ape is that ZODB objects reside on the filesystem as standard files and special mappers map objects to files and viceversa. This works quite well for standard objects already. The RevisionManager scenario looks a bit different, though. Most of the time, you already have a (often large) folder sitting in the ZODB. So in this case, something like a bridge using apelib would have to be installed. An object-FS mapper with two storages (ZODB, Filesystem). Whatever storage provides a newer version of the object, gets the precedence. The other storage is synchronized automatically. That way, you save the expensive synchronization processes before and after every CVS action. Back when I thought about this, I emailed Shane Hathaway and he told me that it might be possible to do. I looked at apelib's code and understood about two thirds. As my time was limited and I'm not a ZODB wizard, I forgot the whole idea and concentrated on fixing bugs in the already quite stable RevisionManager. Another advantage apelib had at the time was that it supported property synchronization. I implemented my own, very simple property serializer and adapters for RevMan 1.3. Apelib still has the advantage of being able to synchronize any objects, even non-textual ones. I hope that cleared it up. I have wasted a few thoughts to some kind of RevManNG using apelib and subversion. However, I might shoot for Zope3 and its filesystem-synchronization features here. If anyone is willing to sponsor that or something else, I'd be available again :) Regards, Philipp |