Although we had a policy, we got bitten recently by not always being rigorous about using it, so we've reviewed it and encapsulated all the steps in a script which enforces the whole thing. We also have a dev -> staging -> live process. Each project uses its own INSTANCE_HOME, and is entirely self-sufficient. This allows clean separation of projects so there's no dependency problems concerning projects which share products. We use the CMF, which allows us to work on python scripts, dtml, etc, in the filesystem rather than via the ZODB, so we can use grep, cvs and so on. Similarly, we tend not to use zclasses. We use a script which manages projects using switches like 'zp -p <projectname>' to publish a project, for example. It forces you to stage a project before you push it live, and other stuff like that to eliminate as much human error / laziness as possible. The script uses rsync to synchronise the product directories. It also does little things like making apache configuration files, copying things which have been exported from the ZODB from 'var' on the dev server to 'import' on the staging server. This latter is the only bit which can't be automated, since the developer has to know where it needs to be imported to. The staging process backs up the live site ZODB and then uses a copy of that, so testing can be done against up-to-date data. We never use zope versions. Our script is very specific to our setup, with few concessions to generality (dev files shared over nfs, rsync uses ssh for transport, etc) so I doubt it would be much use to anyone, but if anyone wants they can have a look at it. hth seb * Meilicke, Scott <scott.meilicke@intp.com> [010830 16:21]:
The way we manage our non-zope internet site is to have three environments: dev, staging (quality) and production. Developers do unit development and testing on their own work stations, and migrate that to the development server to ensure everyone's code plays nice. Then a migration engineer moves that to staging at planned intervals. Staging is tested, and when all is good, staging is moved to production.
That said, for our Intranet we'll probably just have developer workstations, an integration/staging/quality server, and production. The plan is when we go for a release, we'll freeze staging, have our developers work on their own boxes, then migrate to production. The reason is zope's versioning and ability to import/export portions of a site makes recovering from errors and duplicating environments (or just portions) really easy.