Revision Control Overview
In computer software engineering, revision
control is any practice which tracks and provides controls over changes to a project's
Software developers sometimes use revision control
software to maintain documentation and configuration files as well as source code.
In theory, revision control can be applied to any type of
information record. In practice, however, the more sophisticated techniques and tools for
revision control have rarely been used outside software development circles (though they
could actually be of benefit in many other areas). However, they are beginning to be used
for the electronic tracking of changes to CAD files, supplanting the "manual"
electronic implementation of traditional revision control.
As software is developed and deployed, it is extremely
common for multiple versions of the same software to be deployed in different sites, and
for the software's developers to be working privately on updates.
Bugs and other issues with software are often only present in certain
versions (because of the fixing of some problems and the introduction of others as the
program evolves). Therefore, for the purposes of locating and fixing bugs, it is vitally
important for the debugger to be able to retrieve and run different versions of the
software to determine in which version(s) the problem occurs. It may also be necessary to
develop two versions of the software concurrently (for instance, where one version has
bugs fixed, but no new features, where the other is where new features are worked on).
Another problem that occurs in large software development
projects is that of multiple developers seeking to work on the program at the same
time. If two developers try to change the same file at the same time, without
some method of managing access the developers may well end up overwriting each other's
Some systems attempt to manage who is allowed to make
changes to different aspects of the program, for instance, allowing changes to a file to
be checked by a designated reviewer before being added.
At the simplest level, users can simply retain multiple
copies of the different versions of the program, and number them appropriately. This
simple approach has been used on many large software projects. Whilst this method can
work, it is inefficient (as many near-identical copies of the program will be kept
around), requires a lot of self-discipline on the part of developers, and often leads to
mistakes. Consequently, systems to automate some or all of the revision control process
have been developed.
Most revision control systems use a system called delta
compression, in which only the differences between successive versions of files are
retained, thus allowing the efficient storage of many, many different versions of files.
Some systems also provide methods for preventing
"concurrent access" problems, by simply locking files so that only one developer
has write access to the central "repository" at once; others, such as CVS,
provide facilities to automatically or semi-automatically merge changes. In the
latter type, the concept of a reserved edit means to explicitly lock a file for exclusive
write access, even though a merging capability exists.
The merits and risks for file locking are hotly debated;
while it can provide some protection against difficult-to-resolve merge conflicts when a
user is making radical changes to many sections of a large file (or group of files) that
is constantly being maintained, if the files are left exclusively locked for too long,
other developers can be tempted to simply bypass the revision control software and change
the files locally anyway; this can lead to more serious problems.
Some of the more advanced version control tools offer
many other facilities, allowing deeper integration with other tools and software
engineering processes. Plug-ins are often available for IDEs such as Visual Studio.
In particular the Wikipedia:Page history features of
Wikipedia are identical in concept and practice to the revision control software discussed
above, which was developed for source code control, in the decades before the inception of
Popular Version Control Software
This article is licensed under the GNU Free
Documentation License. It uses material from the Wikipedia article Technical
What are your thoughts on this? Drop me a line at ivan
at klariti dot com