I cant stress enough how important and more importantly how useful source control is. If you are not using source control for your projects your essentially coding drunk. There is really no excuse as most is either free or very very cheap to get amazing features. Even if you are a one man or woman coder you should be using source control, as there are a whole heap of benefits:
- You get a backup of your projects out of the box, if something goes wrong with your pc your safe (as long as your source controlling to a difference machine
- You can see what changes you made and when and the reasons why, very useful when talking to customers or trying to find an issue
- It makes you a better coder, with source control you get to see your changes and review them before you commit, removing mistakes or any test code you wrote
- You can code with confidence, try ideas out and refactor with the confidence that you can always roll back to the last version you committed.
- Patching, and quick fixes become a breeze. When you release a version of a website or system you can branch and keep a facsimile copy of what has been released. If you find a bug you can issue a bug fix rather than upgrading the entire system
- If your company grows beyond one person, or you need to get development help you can easly hive some of the work out to anyone anywhere in the world
What source control system should we use?
There are a whole heap of source control systems available but we use a SVN based system. The other alternatives include SourceSafe, CVS, Team Server, and Mercurial (In the form of VisualHG), but we are sticking with SVN for now because it is stable and mature and works. As a source control system is the gatekeeper to your code it is important to have confidence in it, SVN is old enough for this and new enough to have lots of nice features. We will probably move to VisualHG in future, or team server but for now its not worth the leap.
So what software do you need to install?
Well it kind of depends what level of integration you want but here is a quick summary of what we use:
- TortoiseSVN - Is the SVN client of choice for windows, it integrates into windows explorer and it is the only thing you need to get source control running. The best thing is it is mature, it is an opensource project but it has been running for years as SVN and before that for years as TortoiseCVS. This is the daddy of source control and its seamless integration into windows is fantastic. The best thing is you dont even need a server as you can run it against a file based SVN source repository without a server.
- Visual SVN Server - SVN will work without a server, but if you want to simplify things and increase security this is a great server that just works. Again it is free but not open source, you dont need IIS as it will install its own version of Apache when it installs.
- VisualSVN Client - If you want integrated source control in Visual Studio install this, it works in conjunction with tortoise so it is rock solid when it comes to stability. It has lots of great features when it comes to merging and branching, but it does cost. However at $49 a seat the cost is minimal to the advantages. You can download a free demo to see what you think, but you will make the small cost back in hours in increased productivity.
- Stats SVN- Is a java application which generates html stats for a SVN repository. We run this every night to generate up to date web statistics on the project.
In summary install tortoiseSVN and see what you think, it will make you more productive.