Looking for some good information regarding keeping development, staging, and production separate from one another in order to balance development of new features and maintenance of the current release.
Any and all info is greatly appreciated. For the record, however, we're using SVN and Django. Three developers on the project.
If you are using rails I highly recommend capistrano.
We each have our dev environment on our local machines including the DB.
We have a staging server which is at our place the staging server is the same OS (Debian), apache, ruby, rails, and updates as our production server. (We always perform system updates to this box and do test deployments before going to production).
We have our production servers off site.
deploying to either environment is fully automated with capistrano.
cap staging deploy cap production deploy
We mostly develop on the trunk, but when working on really large features that might take a few days or break significant amounts of the code / test, we then work in a branch. We often want the trunk in good shape in case any large bugs show on production and we need to start to work on fixes right away.
This works well for us, I am sure there is similar tools for Python and I do think keeping a separate staging server around your place is worth the trouble.