Multi-Developer Zope Setup
Hi. We just decided to use Zope/CMF for a large non-profit site that the agency I work for is building (wahoo!). I am trying to set things up correctly off the bat, and am struggling to understand how to incorporate version control with the Zope server. I have (re)read the chapter in "Web Application Development and Content Management" and am mostly sold on the idea of using ZCVSFolders (if its stable), but I am unclear on how to set them up (the docs here are minimal http://www.zope.org/Members/sspickle/ZCVSMixin/). Correct me if I'm wrong - I suppose the way I should do this is to add the VHM to Zope, creating a container folder underneath the Root Folder, creating folders for each of our developers below the this project folder container, and then adding the CVSFolder to each of their respective folders. (Next step will be to front Zope w/ apache to send everyone straight to their own "sandbox"). I downloaded ZCVSFolder 0.2.5 and copied it into the products directory, checked out my zopeObjects module in $ZOPE_HOME but it does not appear in the add product dropdown (I made sure to startup Zope as nobody, and nobody is in the cvs group). I Any suggestions? Am I on the right track? Thanks, Jonah
Hi, On Wed, Jul 03, 2002 at 02:10:01PM -0400, Jonah Bossewitch wrote:
We just decided to use Zope/CMF for a large non-profit site that the agency I work for is building (wahoo!).
I am trying to set things up correctly off the bat, and am struggling to understand how to incorporate version control with the Zope server.
I have (re)read the chapter in "Web Application Development and Content Management" and am mostly sold on the idea of using ZCVSFolders (if its stable), but I am unclear on how to set them up (the docs here are minimal http://www.zope.org/Members/sspickle/ZCVSMixin/).
Correct me if I'm wrong - I suppose the way I should do this is to add the VHM to Zope, creating a container folder underneath the Root Folder, creating folders for each of our developers below the this project folder container, and then adding the CVSFolder to each of their respective folders. (Next step will be to front Zope w/ apache to send everyone straight to their own "sandbox").
That sounds complicated. We (CodeWorks) use ZCVSFolder on 10 workstations here, and the setup is like this: - server exports the CVS repository (/var/lib/cvs) via NFS and all workstations mount it (I suppose you could use pserver or SSH also) - each workstation has its own working directory under /var/lib/zope/cvs/ (checked out as www-data user) - each workstation runs a separate Zope instance - at the beginning of each day a developer chooses a workstation and updates the application in it (show all modified recursively, select all, force checkout) - when the work is finished, the developer runs the test suite (we use ZUnit for this) and if all tests pass, commits her changes (show all modified recursively, select all, type commit message, click Commit) Sometimes there are minor problems (objects that just were checked out are shown as 'modified' because Zope does some internal ID renumbering of its own), and we have to repeat the 'select all, force check out' routine a couple of times. (To alleviate this problem we developed a third export format for ZCVSFolder -- plain in addition to xml and zexp. It also makes diffs readable and CVS merges possible.). BTW currently we use the CVS version of ZCVSFolder (post-0.2.7 IIUC). It contains a number of bugfixes and enhancements that we made to make this daily routine easier.
I downloaded ZCVSFolder 0.2.5 and copied it into the products directory, checked out my zopeObjects module in $ZOPE_HOME but it does not appear in the add product dropdown (I made sure to startup Zope as nobody, and nobody is in the cvs group).
You should add a 'CVS Folder' object in some Zope folder, and then specify the working directory (e.g. FS-root: /var/lib/zope/cvs (substitute that with the value of your $INSTANCE_HOME, FS-repository: modulename). One caveat: when you check out a module, do not use cvs get -d -- the directory name must match module name, or ZCVSFolder will barf. Another: do not try to share the same working directory between two or more CVS Folder instances. Combined with the restriction above this means that you should check out them to places like /var/lib/zope/cvs/johns/mymodule and /var/lib/zope/cvs/bobs/mymodule. We actually do this for our website -- we have an active version and a development one, and synchronize them through CVS.
Any suggestions?
Try a later version. ;)
Am I on the right track?
I think so, more or less. Marius Gedminas -- Bumper sticker: If you can read this, I can hit my brakes and sue you.
Hi, Thanks for the detailed reply. I was going through these contortions you describe as complicated because I only want to run one Zope development server, instead of having all of our developers (and designers) run their own zopes on their own machines. At your company, is zope itself in version control? If you add a new Product, how is it propagated to all the developer's local zopes? Also, have you investigated the use of ZCVSFile (extends xternalFile -http://www.zope.org/Members/arielpartners/CVSFile). Does anyone have any stories comparing ZCVSFile to ZCVSFolder? Thanks again, Jonah ----- Original Message ----- From: "Marius Gedminas" <marius@codeworks.lt> To: <Zope@zope.org> Sent: Thursday, July 04, 2002 4:32 AM Subject: Re: [Zope] Multi-Developer Zope Setup
Hi,
On Wed, Jul 03, 2002 at 02:10:01PM -0400, Jonah Bossewitch wrote:
We just decided to use Zope/CMF for a large non-profit site that the agency I work for is building (wahoo!).
I am trying to set things up correctly off the bat, and am struggling to understand how to incorporate version control with the Zope server.
I have (re)read the chapter in "Web Application Development and Content Management" and am mostly sold on the idea of using ZCVSFolders (if its stable), but I am unclear on how to set them up (the docs here are minimal http://www.zope.org/Members/sspickle/ZCVSMixin/).
Correct me if I'm wrong - I suppose the way I should do this is to add the VHM to Zope, creating a container folder underneath the Root Folder, creating folders for each of our developers below the this project folder container, and then adding the CVSFolder to each of their respective folders. (Next step will be to front Zope w/ apache to send everyone straight to their own "sandbox").
That sounds complicated. We (CodeWorks) use ZCVSFolder on 10 workstations here, and the setup is like this: - server exports the CVS repository (/var/lib/cvs) via NFS and all workstations mount it (I suppose you could use pserver or SSH also) - each workstation has its own working directory under /var/lib/zope/cvs/ (checked out as www-data user) - each workstation runs a separate Zope instance - at the beginning of each day a developer chooses a workstation and updates the application in it (show all modified recursively, select all, force checkout) - when the work is finished, the developer runs the test suite (we use ZUnit for this) and if all tests pass, commits her changes (show all modified recursively, select all, type commit message, click Commit)
Sometimes there are minor problems (objects that just were checked out are shown as 'modified' because Zope does some internal ID renumbering of its own), and we have to repeat the 'select all, force check out' routine a couple of times. (To alleviate this problem we developed a third export format for ZCVSFolder -- plain in addition to xml and zexp. It also makes diffs readable and CVS merges possible.).
BTW currently we use the CVS version of ZCVSFolder (post-0.2.7 IIUC). It contains a number of bugfixes and enhancements that we made to make this daily routine easier.
I downloaded ZCVSFolder 0.2.5 and copied it into the products directory, checked out my zopeObjects module in $ZOPE_HOME but it does not appear in the add product dropdown (I made sure to startup Zope as nobody, and nobody is in the cvs group).
You should add a 'CVS Folder' object in some Zope folder, and then specify the working directory (e.g. FS-root: /var/lib/zope/cvs (substitute that with the value of your $INSTANCE_HOME, FS-repository: modulename).
One caveat: when you check out a module, do not use cvs get -d -- the directory name must match module name, or ZCVSFolder will barf.
Another: do not try to share the same working directory between two or more CVS Folder instances. Combined with the restriction above this means that you should check out them to places like /var/lib/zope/cvs/johns/mymodule and /var/lib/zope/cvs/bobs/mymodule.
We actually do this for our website -- we have an active version and a development one, and synchronize them through CVS.
Any suggestions?
Try a later version. ;)
Am I on the right track?
I think so, more or less.
Marius Gedminas -- Bumper sticker: If you can read this, I can hit my brakes and sue you.
_______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
On Thu, Jul 04, 2002 at 01:20:25PM -0400, Jonah Bossewitch wrote:
Thanks for the detailed reply. I was going through these contortions you describe as complicated because I only want to run one Zope development server, instead of having all of our developers (and designers) run their own zopes on their own machines. At your company, is zope itself in version control?
No, we use Debian packages of Zope. Only additional products (+ our external methods, i.e. /var/lib/zope/Extensions) are in CVS.
If you add a new Product, how is it propagated to all the developer's local zopes?
Yes, CVS. Because our application includes a Zope product, we find it better to use separate Zope instances for each developer -- one needs to restart Zope after modifying a product, and preferably without interrupting the work of others. I've heard that ZEO can also help here.
Also, have you investigated the use of ZCVSFile (extends xternalFile -http://www.zope.org/Members/arielpartners/CVSFile).
I only read the description. The approach seems a bit more elegant and simpler (i.e. less likely to break), but it supports only a small set of objects and thus was unsuitable for our needs. Marius Gedminas -- I used to think I was indecisive, but now I'm not so sure.
In general, I've found that working on a locally modified version of a Product on a ZEO Client works quite well. The only problems I've had are when the Product changes require associated ZODB changes that are looked at by the other ZEO Clients. --On Friday, July 05, 2002 10:02:07 AM +0200 Marius Gedminas <marius@codeworks.lt> wrote:
Because our application includes a Zope product, we find it better to use separate Zope instances for each developer -- one needs to restart Zope after modifying a product, and preferably without interrupting the work of others. I've heard that ZEO can also help here.
Hi Marius, We still have not settled on a stable multi-developer solution. Code and Products we plan to manage externally with ZEO, but we were hoping to manage the cmf/plone skins and templates with CVSFolder to facilitate collaborative development. Some complications surfaced when we tried to use CVSFolder with CMF and Plone Sites. You mentioned that you are using a post-0.2.7 version of CVSFolder - I wonder if you have submitted your bug fixes and enhancments to sourceforge or if you would be willing to make them available to us? Do any of these bug fixes address using CVSFolder with CMF? Thanks again, Jonah -----Original Message----- From: zope-admin@zope.org [mailto:zope-admin@zope.org]On Behalf Of Marius Gedminas Sent: Friday, July 05, 2002 4:02 AM To: zope@zope.org Subject: Re: [Zope] Multi-Developer Zope Setup On Thu, Jul 04, 2002 at 01:20:25PM -0400, Jonah Bossewitch wrote:
Thanks for the detailed reply. I was going through these contortions you describe as complicated because I only want to run one Zope development server, instead of having all of our developers (and designers) run their own zopes on their own machines. At your company, is zope itself in version control?
No, we use Debian packages of Zope. Only additional products (+ our external methods, i.e. /var/lib/zope/Extensions) are in CVS.
If you add a new Product, how is it propagated to all the developer's local zopes?
Yes, CVS. Because our application includes a Zope product, we find it better to use separate Zope instances for each developer -- one needs to restart Zope after modifying a product, and preferably without interrupting the work of others. I've heard that ZEO can also help here.
Also, have you investigated the use of ZCVSFile (extends xternalFile -http://www.zope.org/Members/arielpartners/CVSFile).
I only read the description. The approach seems a bit more elegant and simpler (i.e. less likely to break), but it supports only a small set of objects and thus was unsuitable for our needs. Marius Gedminas -- I used to think I was indecisive, but now I'm not so sure. _______________________________________________ Zope maillist - Zope@zope.org http://lists.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope-dev )
On Wed, Jul 24, 2002 at 12:51:42PM -0400, Jonah Bossewitch wrote:
Hi Marius, [...] You mentioned that you are using a post-0.2.7 version of CVSFolder - I wonder if you have submitted your bug fixes and enhancments to sourceforge or if you would be willing to make them available to us?
Yes, all the bug fixes are in the CVS on sourceforge. (Or almost all -- I found and fixed a bug here with plain text export and proxy roles; but then plain text export is post 0.2.7)
Do any of these bug fixes address using CVSFolder with CMF?
I don't know; we don't use CMF here. Marius Gedminas -- Of course I use Microsoft. Setting up a stable unix network is no challenge ;p
participants (3)
-
Dan L. Pierson -
Jonah Bossewitch -
Marius Gedminas