From NAMIC Wiki
Jump to: navigation, search
Home < VersionControlSummary


A core functionality of any software engineering process is the use of version control systems for tracking changes to source code, web pages, data, mailing list additions and so on. In this section we are focusing on version control systems for source code.

Source code revision control offers some of the following capabilities:

  • the ability to track changes on a per line basis to each and every file making up the source code (i.e., maintain history);
  • at a minimum, the ability to "stamp" particular versions of the code corresponding to a particular release, date and/or time (i.e., recover the state of the code at any point in its history, including the ability to resurrect previous releases);
  • the ability to provide status inforation about files making up the source code;
  • the ability to merge changes into files from several, distributed developers, and to "back out" changes that prove to be problematic;
  • the ability to "branch" from the main development trunk to maintain specific, separate features (as in a release that needs to be maintained independent of the main development effort);
  • the ability to maintain directory structures as part of the repository; and
  • the ability to provide secure access to the repository.


ITK, VTK and CMake software systems. It will likely be the predominant versioning system used by NAMIC. CVS satisfies the requirements listed previously, is free, solid, with many supporting tools and documentation resources.

Subversion is a system very much like CVS with the following added features:

  • Directories, renames, and file meta-data are versioned.
  • Commits are truly atomic.
  • Apache network server option, with WebDAV/DeltaV protocol.
  • Standalone server option (including ssh tunnelling).
  • Branching and tagging are cheap (constant time) operations
  • Natively client/server, layered library design
  • Client/server protocol sends diffs in both directions
  • Costs are proportional to change size, not data size
  • Choice of database or plain-file repository implementations
  • Versioning of symbolic links
  • Efficient handling of binary files
  • Parseable output
  • Localized messages


The CVS book Open Source Development with CVS is available from

A SubVersion book is available online or for purchase.


  • CVS - GNU Public License
  • SubVersion - Apache-style license