The Need for Source Code Control

Reading through some articles on Source Code Control , I ran into an article by a person from SourceGear and I certainly agree with his introduction. Never had I learn something about source code management in school . Yes , they did talk about the infamous SDLC but not on SCM or CVS or SVN . Of course any one from the industry knows Source Code Control is a vital part of any development.

Back when I was starting development in USL where most of my skills was gained through constant reading , reseach and unpaid overtimes , I never thought of SCM . I know Visual Studio has a Visual Source Safe , but its actual use Im really clueless (or maybe just plain uninterested). One of the main reasons I never really dug into t is because I was the only developer for the application, I was the source code and the source code was me. It was only during my remaining quarter in USL that I made some effort to look into it. Mainly because some works are now being done by other programmers plus the thought of turn over was making sense. It was only on my second company that I got exposed to this process ( SourceOffSite and Vault was the main tools). My current company uses another , unfortunately I am yet to be exposed to it.

Source Code Control has undergone several innovations. Here are some list of terms use to describe them:
1. "Manual" Version Control - The simplest kind of version control consists of using the organization’s shared file storage system (e.g. networked file server) as the source code repository.
2. Microsoft Visual Source Safe . For larger projects and to solve the corrupted repository risk, Microsoft recommends the source code control functionality built into the Visual Studio Team Foundation (a suite of software configuration management and development technologies). Visual Studio 2010 Team Foundation has been previewed on some sites.
3. Concurrent Version System (CVS) - CVS is the dominant free open-source multi-platform client-server version control system.
4. Subversion (SVN) - Subversion is an open source project, actively maintained by Collabnet/Tigris, whose goal is to supercede CVS.
5. Revision Control System (RCS) - RCS is one of the oldest open-source version control systems and only implemented exclusive locking mode, so CVS was developed to supersede it by providing concurrent versioning instead.

Given those options , plus a dozen even more , different implementation can be adapted basing on the need of a particular team or company. I ran into a white paper discussion listing the pros and cons of each options above ( be warned that the document is somewhat outdated ).

Why do we neecd it? In my point of view , here are some reasons why Source Code Control is important.

A. Developers Point of View .

1. It serves as a central repository of source codes and other important data . Database changes are also placed in the repository. Not the MDF but the SQL (fro SQL Server) code (which is in text format , thus , diff can be done)is stored. You can use the SQL Server Data Publishing Wizard to generate the code if you are working on SQL Server.
2. Changes are easily tracked. This is very important on a project where several people are working together.
3. Ease of Backup and Restoration.
4. Updated Source Codes can easily move from one machine to the other.
5. Security on source code access can be easily done.

B. Management Point Of View

1. More secured respository for source codes.
2. Tracking of changes can be done easily.
3. Ease of Source Code turn overs.

Of course, there are other benefits of Source Code Control . Just feel free to comment on the post if you want to add or question some things.

Source code control is not just for team or groups, it can also be helpful for individual developers. This can be very helpful if you want to track changes in your code or move your code from one PC to the other.Currently , at home , I am using VisualSVN Server(free) , TortoiseSVN (free) and VisualSVN (not free). Luckily , for MonoDevelop users for Linux , SVN functionality is integrated in the IDE. (a blog that i will be posting later).