Source Control

Direct Source Control Access

[NOTE: The CVS server is shut down; I can't keep worrying about pserver security.]

We are currently using CVS for source control. You can perform a readonly checkout of our source control repository via:

   # cvs -d login
   # cvs -d co .

If you are a committer you would do this:

  # CVS_RSH=ssh cvs -d co .

Browser Sources via CVSTrac

You can view the latest sources via CVSTrac:

You can also view a timeline of recent changes via CVSTrac:

Browse Sources directly Online

You can also just navigate the source files directly online, in the directory hosting this site:

Aside: Why CVS?

I know as well as anyone the defects of CVS.

For example, in a project with many active committers, the lack of atomic checkins would be catastrophic. But in a situation with just a few committers (or just one), who will never attempt branching, the fundamental defects of CVS aren't as crippling.

Let us not lose track of the many benefits of CVS:

Perforce is arguably the best (certainly, among the best) of all available source control systems, both open source and commercial. They give gratis licenses to any open source project. Perforce is available for all operating systems of (my) interest. It is easy to install, use, and administer. It has several good GUIs, good integrations, and excellent documentation and support. But they don't have anything like "CVSTrac".

Subversion is on a crusade to rid the world of CVS. They aren't there yet. Certainly, its fundamental operations may be markedly superior to CVS, but that is already true of practically every CVS alternative available, except Visual SourceSafe. It does have "Trac", which is similar to CVSTrac; this is one of Subversion's few distinguishable benefits over other source control systems.

Unfortunately, Subversion is a complete bear to install and set up:

  # sudo fink install svn
  The following package will be installed or updated:
  The following 44 additional packages will be installed:
    apache2 apache2-common apache2-dev apache2-mpm-worker apr apr-common
    apr-shlibs daemonic db42 db42-shlibs expat expat-shlibs gawk gdbm
    gdbm-shlibs gdbm3 gdbm3-shlibs gmp gmp-shlibs guile guile-dev guile-shlibs
    libxml2 libxml2-bin libxml2-shlibs neon24 neon24-shlibs python python23
    python23-shlibs python23-socket readline readline-shlibs ruby ruby18
    ruby18-dev ruby18-shlibs svn-shlibs swig swig-shlibs tcltk tcltk-dev
    tcltk-shlibs texinfo

Most people don't want to upgrade their OS to the bleeding-edge versions of these many common libraries that Subversion requires. Most people also do not want to wrestle with building it from source, and the project does not offer binary packages for a wide spectrum of operating systems. Subversion also does not yet have the breadth or quality of GUIs and integrations as CVS. For example, Apple Xcode only supports CVS and Perforce.

Lastly, there are quite a few interesting "boutique" source control projects now, such as monotone, arch, darcs. However, these are all lacking in associated web interfaces, IDE integrations, and so on.

Fortunately, because CVS is so ubiquitous, all alternatives support CVS import. So it won't be hard to migrate when a compelling alternative arrives.