Version Control, why is it so important in software development life cycle. If you are working in a team or in a collaborative environment then you must have come across a situation where you want to manage, organize and control changes in documents, software source code or artifacts of a project. How to save multiple versions of code, or how to save stable checkpoints during development? Can multiple people work on same source code? How to keep working on multiple features or modules simultaneously? Version control and configuration management systems help to handle such most common problems systematically and in an automated way. Configuration management tools are also known as source code management, source configuration management system or ‘SCM’. SCM tools help to systematically manage changes in project development.
Good SCM tools make developers’ life easier while they are working simultaneously; they help to avoid overwriting changes made by others and maintain the history of every change. SCM tools must manage changes in space efficient way. Good SCM tools store only differences between the versions. SCM tools allow to view changelog, track previous versions, compare changes and retrieve any previous version of artifacts.
There are a number of good version control and configuration management tools available today.
Some well-known tools are
- VSS – Visual source safe
- Rational Clear Case
- IBM configuration management version management
A comprehensive list can be found at https://en.wikipedia.org/wiki/List_of_version_control_software.
Large organizations can easily afford to use or adopt one or more commercially available version management tools. Setting up version control tools becomes a daunting task for a small company or startups and that is mainly because of cost and lack of resources to manage it. There are some free and open source SCM software tools available, we will try to discuss some of them here.
Concurrent Version System (CVS)
CVS lets people work simultaneously on a group of files and directories. It is a centralized system where the most recent repository is maintained and hosted on a centralized server. Users can check out a local copy, modify files, commit to the central repository or update local copies from the central repository. It allows distributed teams or multiple people to collaborate and work on the same code base.
TortoiseCVS is easy to use free CVS client for Microsoft Windows. It allows working on local as well as server repositories. It integrates directly with Windows Explorer. A user can simply right click on file or folder and select necessary operation. TortoiseCVS do all the necessary operations.
Subversion is open source version control system. Founded in 2000 by CollabNet, Inc., Subversion also known as SVN is most popular CMS tool used for version management. It is easy to set up. SVN provides many features and advantages over other CMS tools. Check Getting Started with Subversion for more details.
SVN is originally designed to be a better CVS. It supports all the features supported by CVS and it looks very similar to CVS. SVN supports versioning of directories as well as versioning of copying, deleting and renaming operations. Branching and tagging is very easy. It supports merge tracking. File locking is also supported by SVN but it is rarely required as SVN also supports atomic merging and conflict resolution.
TortoiseSVN is a free SVN client which is Microsoft Windows shell extension.
Git is one of the most popular Source Code Management systems. It is created by Linus Torvalds. Git is also an open source software. Git is a distributed version control system which allows users to create and track local repositories. Each developer can maintain and synchronize a repository of the same codebase. Git provides features to branch, merge and push and pull directly from another developer or from central repositories.
Github is a free service provided by github.com which allows creating remote repository. It allows creating public or private repositories.
TortoiseGit is a Windows Shell Interface to Git and based on TortoiseSVN.
Mercurial is cross-platform, distributed revision control tool.
Darcs is one more distributed version control system created by David Roundy. It supports multiple platforms which include Windows, MacOS X, Solaris, Linux, AIX, NetBSD, FreeBSD, and OpenBSD. It comes with CGI script using which one can browse through repository via web.