[geshi lang=sh ln=n]
Thanks for this tip, Lorna. It really helped us to come up with a release procedure that switches releases instantaneously.

It would be really useful to see an example of this technique in your post. This is what we came up with using the release date and an integer to label each release:

Move to the host directory:
$ cd /path/to/hosts

Check what the next release number should be:
$ ls -al releases

Prepare code from staging to be the next release:
$ rsync -a --exclude=.svn /path/to/hosts/staginghost/ /path/to/hosts/releases/example.com-YYYYMMDDVV

Sanity check that the new release is ready:
$ ls -al releases

Prepare a symlink to the next release:
$ ln -s releases/example.com-YYYYMMDDVV example.com_next

Switch symlinks to make new release live:
$ mv -fT example.com_next example.com