We’ve tried several ways of using SVN to manage Answerbag. Here’s a brief overview.

  1. We work out of the trunk for very small projects (under a few hours)

  2. We create branches to deal with larger projects, and merge those changes back into the trunk when they are done and tested.

  3. When we do a code push, we always push a branch called “production”. When it’s time to push, we run a script called “mkprod” that will rename the existing production branch, and create a new production branch off of the trunk. We then export that branch and push it to each of our web servers.

  4. We continue new development in the trunk. If we find any major bugs, we switch to the production branch, fix it, push the branch, and immediately merge our changes back into the trunk.

This system has proven to be very effective.