APE and version control?
Hi Shane, I'm a bit interested in what you meen by "apply version control to your objects". How would this work? Ape/doc/outline.txt : """ Finally, the framework is useful for many purposes outside ZODB. Once you have built a system of mappers, you can use those mappers to import and export objects, synchronize with a data store, and apply version control to your objects. The concepts behind ApeLib open exciting possibilities. """ Best Regards, Johan Carlsson -- Johan Carlsson Tel: + 46 8 31 24 94 Colliberty Mob: + 46 70 558 25 24 Torsgatan 72 Email: johanc@easypublisher.com SE-113 37 STOCKHOLM
On Mon, 20 Oct 2003, Johan Carlsson wrote:
I'm a bit interested in what you meen by "apply version control to your objects". How would this work?
Ape/doc/outline.txt : """ Finally, the framework is useful for many purposes outside ZODB. Once you have built a system of mappers, you can use those mappers to import and export objects, synchronize with a data store, and apply version control to your objects. The concepts behind ApeLib open exciting possibilities. """
Well, there is a strong distinction between the ZODB parts of Ape and the actual serialization layer. You can use the serialization layer for purposes other than storing in a database. You could write some code that listens to events notifying that objects have changed. The event handler could serialize the objects to a version control system. Shane
Shane Hathaway wrote:
On Mon, 20 Oct 2003, Johan Carlsson wrote:
I'm a bit interested in what you meen by "apply version control to your objects". How would this work?
Well, there is a strong distinction between the ZODB parts of Ape and the actual serialization layer. You can use the serialization layer for purposes other than storing in a database. You could write some code that listens to events notifying that objects have changed. The event handler could serialize the objects to a version control system.
Ok. Let me put it in this way :-) What I’m looking for is the possibility to implement an application level version control inside Zope. I guess revision could be handle in the same way as OID are handled and guide the gateways what revision to get? Would this be possible with the scenario you describe? Also would it be possible to use a ZODB storage from the gateways? In other words stack a version-aware storage on top of another storage that implements the revision repository. Regards, Johan PS. I keep this discussion on zope@zope.org, but next question I will send to zodb-dev@zope.org. -- Johan Carlsson Tel: + 46 8 31 24 94 Colliberty Mob: + 46 70 558 25 24 Torsgatan 72 Email: johanc@easypublisher.com SE-113 37 STOCKHOLM
On Mon, 20 Oct 2003, Johan Carlsson wrote:
Shane Hathaway wrote:
On Mon, 20 Oct 2003, Johan Carlsson wrote:
I'm a bit interested in what you meen by "apply version control to your objects". How would this work?
Well, there is a strong distinction between the ZODB parts of Ape and the actual serialization layer. You can use the serialization layer for purposes other than storing in a database. You could write some code that listens to events notifying that objects have changed. The event handler could serialize the objects to a version control system.
Ok. Let me put it in this way :-)
What I’m looking for is the possibility to implement an application level version control inside Zope.
Have you looked at the ZopeVersionControl product? It gives you version control, storing all revisions in ZODB.
I guess revision could be handle in the same way as OID are handled and guide the gateways what revision to get?
Would this be possible with the scenario you describe?
I think so.
Also would it be possible to use a ZODB storage from the gateways? In other words stack a version-aware storage on top of another storage that implements the revision repository.
If I understand the question correctly, yes. You could make gateways store in ZODB. OTOH, you could just use the ZopeVersionControl product instead. It would be much simpler. Shane
Shane Hathaway wrote:
On Mon, 20 Oct 2003, Johan Carlsson wrote:
Shane Hathaway wrote:
On Mon, 20 Oct 2003, Johan Carlsson wrote:
I'm a bit interested in what you meen by "apply version control to your objects". How would this work?
Well, there is a strong distinction between the ZODB parts of Ape and the actual serialization layer. You can use the serialization layer for purposes other than storing in a database. You could write some code that listens to events notifying that objects have changed. The event handler could serialize the objects to a version control system.
Ok. Let me put it in this way :-)
What I’m looking for is the possibility to implement an application level version control inside Zope.
Have you looked at the ZopeVersionControl product? It gives you version control, storing all revisions in ZODB.
I guess revision could be handle in the same way as OID are handled and guide the gateways what revision to get?
Would this be possible with the scenario you describe?
I think so.
Ok. Very cool :-)
Also would it be possible to use a ZODB storage from the gateways? In other words stack a version-aware storage on top of another storage that implements the revision repository.
If I understand the question correctly, yes. You could make gateways store in ZODB. OTOH, you could just use the ZopeVersionControl product instead. It would be much simpler.
It might just be that :-) I will have a look at it, thanks. -- Johan Carlsson Tel: + 46 8 31 24 94 Colliberty Mob: + 46 70 558 25 24 Torsgatan 72 Email: johanc@easypublisher.com SE-113 37 STOCKHOLM
Shane Hathaway wrote:
On Mon, 20 Oct 2003, Johan Carlsson wrote: If I understand the question correctly, yes. You could make gateways store in ZODB. OTOH, you could just use the ZopeVersionControl product instead. It would be much simpler.
Hi again, ZopeVersionControl lacks the ability to track subobject changes. Is this something that is planed for future versions of ZopeVersionControl? If I have understod APE correctly, subobjects are retrieved from folderaware gateways and inserted by folderaware serializers? This is something I expect out of (at least) a branchaware version control system (that can do staging). But if you recommend it I'll dive in to the ZopeVersionControl code and try to figure out what I can do :-) Are there any plans for ZopeVersionControl? Who's manager for it? -- Johan Carlsson Tel: + 46 8 31 24 94 Colliberty Mob: + 46 70 558 25 24 Torsgatan 72 Email: johanc@easypublisher.com SE-113 37 STOCKHOLM
On Mon, 20 Oct 2003, Johan Carlsson wrote:
Shane Hathaway wrote:
On Mon, 20 Oct 2003, Johan Carlsson wrote: If I understand the question correctly, yes. You could make gateways store in ZODB. OTOH, you could just use the ZopeVersionControl product instead. It would be much simpler.
ZopeVersionControl lacks the ability to track subobject changes. Is this something that is planed for future versions of ZopeVersionControl?
Applications that use ZopeVersionControl are supposed to track subobjects for themselves. This won't change.
If I have understod APE correctly, subobjects are retrieved from folderaware gateways and inserted by folderaware serializers?
That sounds right.
This is something I expect out of (at least) a branchaware version control system (that can do staging).
Have you looked at CMFStaging? Maybe you should look at that first. It's a layer on top of ZopeVersionControl.
But if you recommend it I'll dive in to the ZopeVersionControl code and try to figure out what I can do :-)
Are there any plans for ZopeVersionControl? Who's manager for it?
Are you volunteering? ;-) Just kidding. We use it in our consulting projects. We haven't had a need to change it for a while, so no one in particular manages it. Shane
Shane Hathaway wrote:
On Mon, 20 Oct 2003, Johan Carlsson wrote:
Shane Hathaway wrote: ZopeVersionControl lacks the ability to track subobject changes. Is this something that is planed for future versions of ZopeVersionControl?
Applications that use ZopeVersionControl are supposed to track sub objects for themselves. This won't change.
Ok. I need to look closer on how ZopeVersionControl works to understand that :-) But it sounds to me like the inability of CVS to handle folders? (I'm not a fan of that particular feature :-)
If I have understood APE correctly, subobjects are retrieved from folderaware gateways and inserted by folderaware serializers?
That sounds right.
This is something I expect out of (at least) a branchaware version control system (that can do staging).
Have you looked at CMFStaging? Maybe you should look at that first. It's a layer on top of ZopeVersionControl.
Does CMFStaging require CMF?
But if you recommend it I'll dive in to the ZopeVersionControl code and try to figure out what I can do :-)
Are there any plans for ZopeVersionControl? Who's manager for it?
Are you volunteering? ;-) Just kidding.
I'm "maybe" volunteering to submit code :-) But maybe it should be made a separate package such as CMFStaging or equivalent. If found some possible bugs, I might post fixes for.
We use it in our consulting projects. We haven't had a need to change it for a while, so no one in particular manages it.
-- Johan Carlsson Tel: + 46 8 31 24 94 Colliberty Mob: + 46 70 558 25 24 Torsgatan 72 Email: johanc@easypublisher.com SE-113 37 STOCKHOLM
On Mon, 20 Oct 2003, Johan Carlsson wrote:
Ok. I need to look closer on how ZopeVersionControl works to understand that :-)
But it sounds to me like the inability of CVS to handle folders? (I'm not a fan of that particular feature :-)
No. You could version a folder by storing the version history identifiers for each subobject. We haven't done this yet ;-) but it ought to work fine.
Does CMFStaging require CMF?
Superficially, yes, but it wouldn't be difficult to replace the CMF specifics with simpler Zope equivalents. Shane
Shane Hathaway wrote: ZopeVersionControl lacks the ability to track subobject changes. Is this something that is planed for future versions of ZopeVersionControl?
Applications that use ZopeVersionControl are supposed to track sub objects for themselves. This won't change.
Ok. I need to look closer on how ZopeVersionControl works to understand that :-)
In case it helps, the WebDAV versioning spec does a reasonable job of explaining the approach required for "sane" container versioning (you can read a lot of the justifications for the decisions in subversion in this). At a very high level, you really need to be able to treat containers as containers of "bindings" or references rather than as containers of real objects. Doing that in a backward compatible way with current Zope apps is a tough task (which is why we haven't tried for a fits-all solution).
But if you recommend it I'll dive in to the ZopeVersionControl code and try to figure out what I can do :-)
Are there any plans for ZopeVersionControl? Who's manager for it?
Are you volunteering? ;-) Just kidding.
I have that sinking feeling that I may have been the last to touch some parts of it, which according to our grand tradition may make me the owner :) I'm pretty familiar with the internals, and I don't think that those have changed much. Let me know if you have any questions and I'll do everything I can to help. HTH, Brian Lloyd brian@zope.com V.P. Engineering 540.361.1716 Zope Corporation http://www.zope.com
Brian Lloyd wrote:
Ok. I need to look closer on how ZopeVersionControl works to understand that :-)
In case it helps, the WebDAV versioning spec does a reasonable job of explaining the approach required for "sane" container versioning (you can read a lot of the justifications for the decisions in subversion in this).
At a very high level, you really need to be able to treat containers as containers of "bindings" or references rather than as containers of real objects. Doing that in a backward compatible way with current Zope apps is a tough task (which is why we haven't tried for a fits-all solution).
Thanks Brian. I will have a look at the WebDAV spec. My idea has been to somehow add another dimension (sessions) to navigate the hierarcy of containers. The subobjects would differ according to the current session. As I understood the code so far a container can implement its own IVersionedContainer interface which could handle this "on the application level" as Shane told me?
But if you recommend it I'll dive in to the ZopeVersionControl code and try to figure out what I can do :-)
Are there any plans for ZopeVersionControl? Who's manager for it?
Are you volunteering? ;-) Just kidding.
I have that sinking feeling that I may have been the last to touch some parts of it, which according to our grand tradition may make me the owner :)
Oh, I see :-)
I'm pretty familiar with the internals, and I don't think that those have changed much. Let me know if you have any questions and I'll do everything I can to help.
Thanks. I will do. Regards, Johan Carlsson -- Johan Carlsson Tel: + 46 8 31 24 94 Colliberty Mob: + 46 70 558 25 24 Torsgatan 72 Email: johanc@easypublisher.com SE-113 37 STOCKHOLM
participants (3)
-
Brian Lloyd -
Johan Carlsson -
Shane Hathaway