Source control is such a crucial tool that I will not develop without that I forgot about it when doing the “Thing’s I Can’t Develop Without” series.

For those of you that have never heard of source control (most people have but just in case you have not). It is a simple tool that allows you to check in code to a central repository that records your changes. This allows for several nice features.

  1. Versioning. You can easily view or rollback to old versions of code. This allows us to change or delete whatever we want knowing we can easily rollback the code to its previous state.
  2. Collaboration. It is really easy for multiple people to work on the same code base as the source control system is our central repository. Users can each work on their own tasks and then commit it to the central repository.
  3. Change Tracking. Comments can be added to checkins so that we can see who changed what and why (if the person who checked in the code actually put a comment in that is)
  4. Backup. The code is not just held on one place anymore. It is at least on the source control server and on one (or more) developers machines.

For me a project can not exist without being under source control. Even at home I have a source control system for my projects. I can not tell you the number of times I have used it’s functionality for even the simplest of projects.

There are lots of choices out there. The most common ones in the .NET community are Visual Source Safe, Team Foundation Server, and Subversion. Subversion is our choice so far as it is free and we find it much easier to work with than VSS or TFS. One that is growing in popularity is Git but I have not had the time to play with it yet.

There are lots of great articles out there on all these source control solutions so I will not repeat them.