May
07
2009

What is version control software?

Photo by acme - CC-BY

Photo by acme - CC-BY

Version control software (VCS, also known as revision control software, RCM, and software configuration management software, SCM) is a tool used during software development to help track and control the process of making changes to the programming code and other files associated with the application.

A software application consists of files of program code plus text files such as specification documents, and binary files such as the graphical elements that make up the user interface. Any change to the application (to implement additional functionality, or to correct a defect) may involve changes to several of these files.

Instead of working on the master copy of the software, a programmer who is using version control will make changes to a working copy of the application that they have checked out of a repository managed by their version control application. When all of the changes associated with a task have been completed, the developer checks in those changes together with a descriptive note.

The revision control software applies those changes to the repository in such a way that every past set of changes can be isolated, listed with its description, examined, and reversed if necessary.

Version control software can also help manage changes made by multiple programmers. More rigid systems require each programmer to lock the files on which they intend to work, which blocks other programmers from working on them. This can be an impediment to efficient development, because two programmers may need to make a change to different parts of the same file, and this cannot be done if the file is locked for the exclusive use of one of the programmers.

Most modern systems are more flexible. They dispense with the locking step, and keep track of the checked-in changes, automatically merging them if they don’t conflict. If two programmers make changes to the same lines of code in a file, the software will detect and flag this conflict. It’s then up to the programmers to resolve the conflict. This sounds like it might be awkward, but it’s usually straightforward. If two programmers are modifying the same functionality, they should already be talking to each other to avoid conflicts, so the version control software simply flags what should be happening anyway.

The repository can be on the programmer’s own machine, but it doesn’t need to be. It can be anywhere on a network, or anywhere on the internet. You can run your own version control server, or you can use a hosted service.

More recent VCS is likely to be distributed—any copy can act as a client or a server, and developers can “mix-and-match” changes from any other copy. This is very flexible, and the approach is growing rapidly in popularity, particularly outside of corporate settings. The Linux kernel, for example, is developed using the Git distributed version control system. Other distributed systems include darcs, mercurial and monotone. All of these are open source; free as in speech and free as in beer.

An extremely popular VCS is subversion (svn). It’s client-server, full-featured, more-or-less ubiquitous and open source. It has largely taken over from an older application, cvs. We use subversion ourselves, at Quezi and uclue.

Proprietary software includes Perforce, BitMover’s BitKeeper, IBM Rational’s ClearCase, and Microsoft’s Team Foundation Server.

Related questions:

  Need research? Quezi's researchers can answer your questions at uclue.com

Written by eiffel | 268 views | Tags: , , , ,

No Comments »

RSS feed for comments on this post.


Leave a Reply

Privacy Policy | Acknowledgements