Forum OpenACS Q&A: Upgrade Stategies 3.2.2 to 3.2.4 and Generally
Ok, the new version 3.2.4 will be here "real soon now". Great!
I've made a number of changes to a number of tcl files in my operational 3.2.2 system, mostly in the /www directory and a few files in /tcl directory and of course nsd.tcl and server1.ini. Also, I've made sql changes to the pg database which is version 7.0.
What are the best strategies for upgrading? This is a production system.
Can I just copy whole branches, say /tcl minus my changed files, and then manually paste my changes into the new file versions?
How about modules like /bboard? Will it just run fine if copied, assuming that the /tcl direcory is upgraded? Are there other dependencies that I'm missing?
Do some people copy files from the CVS? http://sourceforge.net/cvs/?group_id=490 I haven't done this and I'm concerned about dependencies... What's the big picture here?
What about the database? Are there any table/view/... changes in version 3.2.4 that are new since 3.2.2?
Ideally I should have a development system that mirrors the production system. If so, how are people using production and development systems. Are you copying the production data and restoring it to the development system. It seems like this would also be a good backup strategy.
Your best bet is to stage your upgrade. Make a copy of your entire system (hopefully you edited a CVS-linked checkout of the code), and do a cvs update. Resolve whatever conflicts you have. Try the DB upgrade script on a "test" database that contains a clone of your production DB. Find out what conflicts you have there. In general, you're going to have a hard time if you've done significant edits to the system. That is the endless pain of customizing complex software apps: there is no easy upgrade path. Hopefully, the modularization of 4.0 and the move towards more complete templating will minimize these issues, but don't expect an upgrade of a customized system to ever be a simple command line.