Appendix A. Free Version Control Systems

CVS’s shortcomings have inspired many efforts to replace it, and in the last few years many of these projects have reached usability. CVS’s days as the uncontested default choice are slowly coming to an end. Following are all the other open source version control systems I was aware of as of early 2005. The only one I use on a regular basis is Subversion, that’s why it’s listed first. I have no recommendations for or against any of the others; a lot of information here is taken from their web sites. See also http://en.wikipedia.org/wiki/List_of_revision_control_software.

Subversion

Subversion was written first and foremost to be a replacement for CVS—that is, to approach version control in roughly the same way CVS does, but without the problems and feature omissions that most frequently annoy users of CVS. One of Subversion’s goals is for people already accustomed to CVS to find the transition to Subversion relatively smooth. There is not space here to go into detail about Subversion’s features; see its web site for more information. [Disclaimer: I am involved in Subversion development, and it is the only one of these systems that I use on a regular basis.]

http://subversion.tigris.org/

SVK

Although it is built on top of Subversion, SVK probably resembles Arch more than it does Subversion. SVK supports distributed (noncentralized) development, sophisticated change merging, and the ability to mirror trees from non-SVK version control systems. See the web site for details.

http://svk.elixus.org/

Arch

GNU Arch supports both distributed and centralized development. Developers commit their changes to an “archive,” which may be local, and the changes can be pushed and pulled to other archives as the managers of those archives see fit. As such a methodology implies, Arch has more sophisticated merge support than CVS. Arch also allows one to easily make branches of archives to which one does not have commit access. This is only a brief summary; see the Arch web pages for details.

http://www.gnu.org/software/gnu-arch/

monotone

"monotone is a free distributed version control system. it provides a simple, single-file transactional version store, with fully disconnected operation and an efficient peer-to-peer synchronization protocol. it understands history-sensitive merging, lightweight branches, integrated code review and 3rd party testing. it uses cryptographic version naming and client-side RSA certificates. it has good internationalization support, has no external dependencies, runs on linux, solaris, OSX, and windows, and is licensed under the GNU GPL.”

http://www.venge.net/monotone/

Codeville

"Why yet another version control system? All other version control systems require that you keep careful track of the relationships between branches so as not [to] have to repeatedly merge the same conflicts. Codeville is much more anarchic. It allows you to update from or commit to any repository at any time with no unnecessary re-merges.

“Codeville works by creating an identifier for each change which is done, and remembering the list of all changes which have been applied to each file and the last change which modified each line in each file. When there’s a conflict, it checks to see if one of the two sides has already been applied to the other one, and if so makes the other side win automatically. When there’s an actual not automatically mergeable version conflict, Codeville behaves in almost exactly the same way as CVS.”

http://codeville.org/

Vesta

"Vesta is a portable SCM [Software Configuration Management] system targeted at supporting development of software systems of almost any size, from fairly small (under 10,000 source lines) to very large (10,000,000 source lines).

“Vesta is a mature system. It is the result of over 10 years of research and development at the Compaq/Digital Systems Research Center, and it was in production use by Compaq’s Alpha microprocessor group for over two and a half years. The Alpha group had over 150 active developers at two sites thousands of miles apart, on the east and west coasts of the United States. The group used Vesta to manage builds with as much as 130 MB of source data, each producing 1.5 GB of derived data. The builds done at the eastern site in an average day produced about 10-15 GB of derived data, all managed by Vesta. Although Vesta was designed with software development in mind, the Alpha group demonstrated the system’s flexibility by using it for hardware development, checking their hardware description language files into Vesta’s source code control facility and building simulators and other derived objects with Vesta’s builder. The members of the former Alpha group, now a part of Intel, are continuing to use Vesta today in a new microprocessor project.”

http://www.vestasys.org/

Darcs

"David’s Advanced Revision Control System is yet another replacement for CVS. It is written in Haskell, and has been used on Linux, MacOS X, FreeBSD, OpenBSD and Microsoft Windows. Darcs includes a cgi script, which can be used to view the contents of your repository.”

http://abridgegame.org/darcs/

Aegis

"Aegis is a transaction-based software configuration management system. It provides a framework within which a team of developers may work on many changes to a program independently, and Aegis coordinates integrating these changes back into the master source of the program, with as little disruption as possible.”

http://aegis.sourceforge.net/

CVSNT

"CVSNT is an advanced multiplatform version control system. Compatible with the industry standard CVS protocol it now supports many more features . . . CVSNT is Open Source, Free software licensed under the GNU General Public License.”

Its feature list includes authentication via all standard CVS protocols, plus Windows-specific SSPI and Active Directory; secure transport support, via sserver or encrypted SSPI; cross platform (runs in Windows or Unix environments); NT version is fully integrated with Win32 system; MergePoint processing means no more tagging to merge; under active development.

http://cvsnt.org/

Meta-CVS

"Meta-CVS is a version control system built around CVS. Although it retains most of the features of CVS, including all of the networking support, it is more capable than CVS, and easier to use.”

The features listed on Meta-CVS’s web site include: directory structure versioning, improved file type handling, simpler and more user-friendly branching and merging, support for symbolic links, property lists attached to versioned data, improved third-party data importing, and easy upgrading from stock CVS.

http://users.footprints.net/~kaz/mcvs.html

OpenCM

"OpenCM is designed as a secure, high-integrity replacement for CVS. A list of the key features can be found on the features page. While not as `feature rich’ as CVS, it supports some useful things that CVS lacks. Briefly, OpenCM provides first-class support for renames and configuration, cryptographic authentication and access control, and first-class branches.”

http://www.opencm.org/

Stellation

"Stellation is an advanced, extensible software configuration management system, originally developed at IBM Research. While Stellation provides all of the standard functions available in any SCM system, it is distinguished by a number of advanced features, such as task-oriented change management, consistent project versioning and lightweight branching, intended to ease the development of software systems by large groups of loosely coordinated developers.”

http://www.eclipse.org/stellation/

PRCS

"PRCS, the Project Revision Control System, is the front end to a set of tools that (like CVS) provide a way to deal with sets of files and directories as an entity, preserving coherent versions of the entire set . . . Its purpose is similar to that of SCCS, RCS, and CVS, but (according to its authors, at least), it is much simpler than any of those systems.”

http://prcs.sourceforge.net/

Bazaar

Bazaar is still under development. It will be an implementation of the GNU Arch protocol, will retain compatibility with the GNU Arch protocol as it evolves, and work with the GNU Arch community process for any protocol changes that might be required for user friendliness.

http://bazaar.canonical.com/

Bazaar-NG

Bazaar-NG (or bzr) is currently under development by Canonical (http://canonical.com/). It offers a choice between centralized and decentralized work within a single project. For example, when in the office, you can work on a shared central branch; for experimental changes or offline work you can make a branch on your laptop and merge back in later.

http://bazaar-ng.org/

ArX

ArX is a distributed version control system offering branching and merging features, cryptographic data integrity verification, and the ability to publish archives easily on any HTTP server.

http://www.nongnu.org/arx/

SourceJammer

"SourceJammer is a source control and versioning system written in Java. It consists of a server-side component that maintains the files and version history, and handles check-in, check-out, etc. and other commands; and a client-side component that makes requests of the server and manages the files on the client-side file system.”

http://sourcejammer.org/

FastCST

“A `modern’ system that uses changesets over file revisions and distributed operation rather than centralized control. As long as you have an e-mail account you can use FastCST. For larger distribution you only need an FTP server and/or an HTTP server or use the built in `serve’ command to serve your stuff up directly. All changesets are universally unique and have tons of meta-data . . . . Merging is done by comparing a merged changeset against the current directory contents, rather than trying to merge it with another changeset.”

http://www.zedshaw.com/projects/fastcst/index.html

GIT

GIT is a project started by Linus Torvalds to manage the Linux kernel source tree. It is very narrowly focused on the needs of kernel development, and was still under development as of this writing. It doesn’t appear to have a home page yet, but check the Wikipedia page above for updates.

http://en.wikipedia.org/wiki/Git

Superversion

"Superversion is a multiuser distributed version control system based on change sets. It aims to be an industrial-strength, open source alternative to commercial solutions that is equally easy to use (or even easier) and similarly powerful. In fact, intuitive and efficient usability has been one of the top priorities in Superversion’s development from the very beginning.”

http://www.superversion.org/

Get Producing Open Source Software now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.