*Mike*: I think Edward’s explanation was pretty much spot on. When I’m deploying a website, I use Subversion more or less just like I’d use rsync.
I have Apache/PHP/MySQL (or Django, or Rails, etc.) running locally on my home computer, with a virtual host pointing at the trunk of my working copy. As I work, I use Subversion to manage the important changes to the code, committing or rolling back as necessary. When I’m ready to deploy my changes to the production server, I make sure that everything locally is safely committed, and then *tag* the current revision as “YYYY-MM-DD_Deployment”.
Pushing out my changes to production is then a pretty trivial task. I ssh into the production server, navigate to the document root, and check out that tagged release by running *svn co*. That merges all the changes into production, so all that’s left is to test one last time to make sure everything worked, and then you’re good to go.
This is generally _faster_ for me than uploading changes via FTP, because I don’t have to play around in various directories trying to remember all the files I changed. The repository keeps track of that information _for me_, all I have to do is ask it nicely.
The value added by _always_ being able to roll back to a previous release by checking out the previous tag is immense. It does _sound_ like a little extra work, but the overhead is minimal. I find that working through this process, even for one-off changes, quickly fades into the background.
As an aside, if you do use Subversion to deploy your sites, I’d suggest reading “Preventing SVN Exposure”:http://hivelogic.com/articles/2006/04/30/preventing_svn_exposure to make sure you’re not inadvertently making sensitive information available.
*Edward*: I agree with your assessment of the article; it’s very much focused on advocating the use of revision control to people who currently aren’t using it. Unfortunately, that’s a _huge_ group of people.
*Walter*: You’re right! It’s a habit you’ve got to adopt to get the most benefit. That said, even only _periodically_ committing your files back to a repository is better than never using it in the first place. :)