[Zope] Multi-Developer Zope Setup

Marius Gedminas marius@codeworks.lt
Thu, 4 Jul 2002 10:32:10 +0200


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.