What I do on my server is checking the code on the server.
Therefore, instead of using ftp to move things to the server, I just connected to it and started svn up . Thus, you get several advantages, including the ability to roll back in case of a faulty code.
I also recommend using the db migration system (assuming you are using a database). This will allow you to easily roll back db schema changes to make sure your code will continue to work if rolled back.
Combining them with a tool like Fabric or Capistrano will give you a very reliable and powerful deployment system.
Note about DVCS:
Some people mentioned using distributed vcs . Some of the most popular examples of them are: git and mercurial (there are others).
Both of them have a different usage pattern than svn, but this does not apply to this issue directly. The biggest gain you can have is that if you make tags for every click on a live server, then the cost is minimal compared to the traditional svn template.
If you would like to expire with any of these GitHub and BitBucket both offer free repository hosting for git and mercurial respectively.
Saying that I am a huge proponent of using dvcs, and my personal preferences are mercurial .
Bryan mclemore
source share