Version Control
Version Control refers to the process of managing a history of changes to one or more files over time. This is generally used in the context of project management for software development and other projects involving collaborative changes to files or other resources.
There are many different software packages available which implement version control systems in many different ways. A couple of the most well-known early version control systems were SCCS (the Source Code Control System) and RCS (the Revision Control System), which allowed users to "check out" files, make changes, and then check them back in. While this was an effective way of recording changes to files and reducing the problems which arise from multiple people working on the same files, it did have its limitations when it came to widespread development of many people working on a group of files (such as a project) together, and in response to many of these limitations, a tool known as CVS (the Concurrent Versions System) was developed, which has since become arguably the most popular version control system in use to this day.
CVS uses a somewhat different model to RCS/SCCS, in that it is explicitly designed to allow multiple people to check out files from a central repository at the same time, and work on them in their own working directories, concurrently. It does this by using a technique known as "merging" to resolve conflicts. When two people modify the same file at the same time, CVS is able to detect this and will attempt to automatically merge the results into one version of the file which reflects both users' changes. In many cases, CVS is able to do this automatically and nearly transparently to the users. In some cases, when two developers modify exactly the same part of a file in incompatible ways, a conflict can occur. If this happens, CVS will require one developer or another to manually resolve the conflict before allowing them to check their changes back into the repository.
The CVS "merging" model is what has come to be used by a large number of version control systems in use today, although some other systems are designed around a more traditional one-person-at-a-time locking model. Both models can be useful in different scenarios, and when choosing a version control system it is important to understand the subtleties of how the model it uses will work in the context of the project you will be using it with.
Open Source Version Control Systems
(The following list is only a small portion of the open-source version control systems available)
- RCS
- The Revision Control System, one of the first widespread version control systems and still in use to this day in some environments. Its usefulness is arguably limited, however, as other products such as CVS are much better for most applications.
http://www.cs.purdue.edu/homes/trinkle/RCS/ - CVS
- The Concurrent Versions System is extremely popular and has been tried and tested over many years (this Wiki system itself is built on top of a CVS repository).
http://www.cvshome.org/ - Subversion
- Subversion is a relatively new system which is intended to solve some of the few lingering problems with CVS.
http://subversion.tigris.org/
Commercial Server/Client Products
- SCCS
- The Source Code Control System was originally developed as part of AT&T UNIX. This product is rarely used anymore, and is mostly of interest for historical value.
http://cssc.sourceforge.net/old-cyclic/sccs.html - NXN Alienbrain
- Asset managment system designed for PC-based 3D, digital entertainment and simulation projects and provides efficient management for 3D models, textures, video, audio, and source code. Typical projects running on NXN alienbrain range from 5 to 100 users. It is integrated with Microsoft's Visual Studio, Metrowerks' CodeWarrior , 3DSMax, Maya, Softimage|XSI, Photoshop.
http://www.alienbrain.com - Perforce
- The Perforce SCM system features comprehensive software configuration management capabilities built around a scalable client/server architecture. Requiring only TCP/IP, developers can access the Perforce Server through a variety of Perforce clients. Perforce can be deployed quickly and easily, and requires minimal administration, even for large sites. Available on over 50 operating systems, Perforce includes version control, workspace management, atomic change transactions and a powerful branching model to develop and maintain multiple codelines. Perforce client/server is free for 2 client usage.
http://www.perforce.com - Microsoft Visual SourceSafe
- Visual SourceSafe is a version control system with integration for Microsoft Visual Studio.
http://msdn.microsoft.com/ssafe