Attention: Recent changes in feature sets now make the "git" version control to be the best choice.
2002-11-12 (outdated 2018-09-13)
Prepared by Ralph L. Vinciguerra
Disclaimer: This report represents the individual opinions of the author and should not be construed to be an official or complete comparison of Configuration Management software tools. The author has experience using the solutions described here from a day-to-day perspective of an experienced cross-platform software developer. This author is biased by the efficiency in using each solution.
A Configuration Management system (or version control system) provides a means to manage the evolution of data files (source code, text files, etc) or any other documents that change over time, and require the maintenance of a history of the changes, and the special ability to recover old versions of the files for comparison or recovery.
This comparison does not address the topic of issue management (bug reporting and tracking) which is handled by either add on products or independent solutions. This comparison is focused solely on the effectiveness of the CM solutions. Bear in mind that if any tool is intimate with the developer's minute to minute activity, editors and compilers not withstanding, it is the CM system. It must be efficient or the developer pays a constant overhead cost in time wasted.
Table 1 identifies the possible solutions with a short descriptions. See the following section for details on how features are addressed.
|CVS||Concurrent Version System, an open source solution that have evolved over several years and is in heavy use in the internet community.|
|ClearCase||Clearcase is a mature and feature rich CM systems available for many platforms, although it is expensive.|
|Razor||Razor is a CM system available from Visible Systems.|
Many CM solutions are not considered since they ave some critical deficiency that removes them from consideration. Examples include:
Also, the author only has experience with the selected solutions, and it would be inappropriate to list them in this comparison without having used them regularly.
Table 2 shows a feature by feature comparison of several solutions and how well they address particular needs. Each rating contains a mark from one to five, indicating least to most effective. The yellow colored bars "" indicate serious defficiencies, and the green colored bars "" are normal.
|Size of user community||5||4||4|
|Efficiency of license cost||5||1||3|
|Ease of installation and deployment||4||3||4|
|Ease of training||4||3||4|
|Ability to work with slow remote networks||5||2||3|
|Efficiency of file access during builds||5||2||5|
|Ease in synchronizing with repository||5||5||1|
|Support for concurrent development||5||2||3|
|Versioning of directories along with files||1||5||5|
|Efficient support for a constellation of repositories||5||2||2|
|Effective default behavior||5||4||2|
|Availability of GUI interfaces||5||5||5|
|Bulk checkout efficiency||5||4||3|
CVS is a widely known and heavily used solution in the Open Source development community. Examples include the Apache Web Server, Linux, CVS itself, and many other open source tools. As such, many developers already know how to use CVS and getting a team up and running with CVS is very efficient. Even the command line interface for normal day-to-day operations is straightforward once a repository is checkout out.
Decent documentation, and online discussion groups form the basis of support for this non-commercial tool.
Also, CVS is excellent for support of periodically disconnected developers (laptop developers who connect periodically) or those separated over wide area networks, since it maintains local copies of the files in use, and makes it easy to resynchronize large directory trees of files.
CVS is also able to blend the checkouts from multiple repositories in a seamless manner, with each directly tree that is checked out automatically managing the path to it's own repository that is established when it is first checked out.
Merging is challenging unless specific additional tools are brought to bear. Gnudiff can provide effective difference analysis. And CVS's own in-file merge strategy, although not advanced, is highly functional and only requires viewing and editing the merged result with a text editor, thanks to in file merge marks.
CVS does not version directories, and this can pose problems if the system is not used properly, but in practice, this is not a serious problem.
Clearcase is a very mature commercial solution that applies advanced file system technology to the management of file versions. Unfortunately, it is expensive, and is also complex to install and administer since it uses proprietary layered file systems. This implementation has a significant performance impact.
The merge tool is very well implemented.
Razor is a capable product. Its GUI is effective and easy to use for simple operations involving small numbers of files, but requires extensive scripting to customize it for efficient use by teams of concurrent developers.
It is particularly difficult to synchronize sets of files effectively, or to assess the current state of multiple file changes. This could be worked around with the creation of some specialized scripts, but this requires an expect to modify the Razor installation.
Razor's default directories for checkout are often wrong and cause files to be checked out in the wrong locations. The merge tool is difficult to use, with a sometimes confusing GUI design (when compared to ClearCase or recent Gnu utilities).
If you have the financial resources to extensively support your development teams, and the developers are connected by fast and steady networking, Clearcase is a reliable and mature solution with many features.
If you have limited funds but still want to make a wise choice for a CM system that many other development teams use and many developers are immediately familiar with, CVS is an excellent lightweight and efficient choice. Your developers can also be mobile or remotely connected and still work with nearly the same efficiency.
Razor is an intermediate cost option, but it requires that you also establish an expert toolsmith to make specific modifications to support it's efficient use.
Although CVS is a very common and effective CM solution at the current time and is sufficient for everyday use, a promising future replacement for CVS named Subversion is under development. Time will tell whether it can achieve the critical popularity with the open source development community to displace CVS.
It is being carefully developed as a comfortable and feature complete replacement CVS. Its design allows users experienced in the use of CVS to transition quickly to Subversion. Also, the careful effort to specifically address the shortcomings of CVS and yet keep its best features is a compelling approach.
Subversion has these special features: