When working on a commercial game project as a solo developer, don’t think for a minute that version control is not important. Version control isn’t just for large teams or projects managed by remote developers. In addition to being able to easily revert to older versions when a change doesn’t pan out, a source repository can also serve as a backup in case your working copy gets lost for any reason; the repository commit log serves as a reminder of changes you have made and when you made them (assuming you type good commit notes); tags and branches make it easy to maintain any different versions of a game that you may require (such as demo, OEM, full, gold, or any other version you need).
There are several different version control systems out there, but the one I prefer is Subversion. Compared to other free systems I have worked with, using Subversion is a cake walk. For developers who work on Windows boxes, TortoiseSVN makes an already easy to use system even easier. It is an SVN client that integrates with Windows Explorer. Rather than entering Subversion commands from a command prompt, you can operate on repositories through a menu interface. You can even create local repositories with TortoiseSVN.
Whichever version control system you choose, you must decide where to store the repository. If your project is open source (yes, even commercial projects can be open source), you may be able to make use of services like Sourceforge, depending upon the type of license under which you distribute the code. If you aren’t distributing under an open source license, most free services won’t host your project. In that case, if you want external hosting you will either need to pay for it or set it up yourself on a dedicated or virtual private server. If you Google for it, you may find free Subversion or CVS hosting that doesn’t have restrictions (such as project size or license).
For a solo developer, external hosting doesn’t usually make much sense (at least, not to me) except in special circumstances. In my opinion, it’s best to keep things local, in which case there are three options. The first, and the most desirable, is to set up the repository on a system separate from your work computer (on a LAN or file-sharing network). The second option is to set up the repository on an extra hard drive in your work computer. The third option, and the least desirable, is to set it up on the main hard drive of your work computer.
Option 1 is the most desirable because it provides the best redundancy. If the hard drive on your work box fails, you still have the repository box (and vice versa). Of course, you should regularly be backing up important data, including your working copy and your repository, anyway. Option 3 is the least desirable because it has one point of failure: a single hard drive. If that goes, all of your hard work is lost. Option 2 offers almost as much redundancy as option 1 since it is less likely that two hard drives will fail simultaneously. However, because both hard drives are in the same computer it is not impossible.
Obviously, an external solution provides the best redundancy because it places the repository and the working copy in separate geographical locations. A fire, or a power surge on an unprotected LAN, could wipe out all copies of the data when stored locally (along with any local backups you have). I have experienced a house fire, so I can appreciate that while such an event is unlikely it is not at all outside of the realm of possibility. However, external repositories bring other problems to the table, such as security risks. A local repository that is protected from access by the outside world is as secure as you can get.
I used to keep my repositories on a second box on my LAN. That box, unfortunately, went to computer heaven not long ago. I have a second hard drive in my work computer that I was using for Linux. Since I never use Linux anyway, I wiped it and created a new Windows partition on it. I now put all of my repositories there. If you have no spare computer and can’t afford to spend on one right now, I advise you to buy a second hard drive if you don’t have one already. You don’t need a top of the line drive for your repositories, so a cheap second-hand thing would work. If you can’t do that, or aren’t inclined to, then keeping the repository on your main hard drive is better than having no repository at all.
Once you start using a version control system for your solo projects, I assure you that you will never look back. Version control systems give you a great deal of freedom and flexibility that you wouldn’t otherwise enjoy and can provide a level of data protection even without regular backups.
Technorati Tags: version control, Subversion, TortoiseSVN
Post a Comment