Before I decided to take the leap of faith and code on two machines — using svn as my go-between, I was coding on a single machine and I needed some type of version control system for my projects. In this article I will share this system; and while I’m using a variation of it now that I’m running subversion, the core principles are still relevant and useful. To see my updated system, and my article series about using svn for web development, you can start with the first article here.
1. Create a separate folder for each client on your hard drive, preferably keeping all of these client folders on a separate partition You may even consider having a /clients folder to hold all of your client directories.
2. Make sure you have a /web directory in the client folder (among many other directories as needed). I always put the website itself in the /web directory. All supporting files are somewhere else in the client directory tree. Also make sure you create a /webBackups directory. Here is where you will store all of the iterations of the website.
3. Once I start coding I create versions, or snapshots as I move along in the process in case I ever want to move back. So I will copy the /web folder to the /webBackups folder and I change the name.; usually I rename it to something like /[client]webBK_v1.2.5, or whatever number is next in the iteration scheme.
4. Of critical importance is this step — in addition to having these backups, I also keep a log in Excel describing each version. In this manner I can quickly see what changes were made.
One of the problems with the system (or reliefs if you ask me) — is that each version contains a full version of the website. Now some will criticize that this is unncessary — if you have a site with 200 images and you are simply adding a line of text to an about page, do you really need to create an entire new version with an entire copy? In my opinon – and with this system, the answer is yes. Disk space is cheap and problems with clients are expensive. With this system I rest assured that no matter what happens, I always have a full copy of every version of the site that ever existed (development and production).
Using subversion pretty much accomplishes the same goals that I wanted with the “manual” system I describe above. But if you are a one -person show, or you only develop off of one machine, a system like the above may be useful. I’ve gone back to backups before and they’ve saved my skin on multiple occasions.