cvsweb – graphical interface to cvs

cvsweb – graphical interface to cvs

As you may well know, I run  On that server,
but for my own use, I use cvsweb.
  This port allows you to browse a CVS repository via the web.  When I first
encountered this tool, I thought it was great.  But recent advances have improved it.
  There is now a .conf file into which you can customize various options.
  Not to mention that the output and user interface are improved.  Personally, I
like the coloured diff output.

cvsweb is of no use to you unless you have the
following on your box:

  • a web server (presumably Apache)
  • a cvs repository

By the way, cvsweb will also run on NT according to what I’ve read.

Other reading

I suggest you have a read of these resources before you continue.  
And if you have problems, go there first.


This should be familiar to you now.  Since I have the entire ports tree installed, all I needed to do was:

make install

*** BUT: before you do the install, read about the Makefile
which allow you to customize the install. ***

There are a few things you must be careful with.  My configuration was not the
default.  Therefore, I had to move some things around.  The next few sections
deal with how I did those moves.

After I wrote this article, Akinori -Aki- MUSHA provided some feedback which included
details on the Makefile variables.

cgi-bin location

My cgi-bin directory, and indeed my Apache location, is not standard.
  The port install had put cvsweb.cgi here:


So I moved it to my actual cgi-bin directory:


But there is a better way.  See Makefile variables.

The configuration file

cvsweb uses the cvsweb.conf configuration file.  
You are supplied with an example file.  By default, this is installed to /usr/local/etc/.
  And it is up to you to take a copy of this sample file:

cp /usr/local/etc/cvsweb.conf.sample /usr/local/etc/cvsweb.conf

In the configuration file, you’ll find a section which refers to the CVSROOT
repositories which cvsweb can expect to find on your box.  By default, it
assumes you have a local cvs repository as well as the FreeBSD repository.  That is
not the case on my box.  I have only the FreeBSD repository.  So I had to remove
the references to the local repository.  Here’s what comes with the sample
configuration (this may be OK for you, maybe not).

To make it clear, the parts I changed are in bold.

# 'symbolic_name' 'path_to_the_actual_repository'
            'local'     => '/home/cvs',
            'freebsd'   => '/home/ncvs',

%CVSROOTdescr = (
                 'local'     => 'My CVS Repository',
                 'freebsd'   => 'FreeBSD',

# This tree is enabled by default when
# you enter the page
$cvstreedefault = 'local';

Then I modified this file like this.  You’ll see I removed references to local
and changed the default to FreeBSD.

# 'symbolic_name' 'path_to_the_actual_repository'
            'freebsd'   => '/nzmirror/ncvs',

%CVSROOTdescr = (
                 'freebsd'   => 'FreeBSD',

# This tree is enabled by default when
# you enter the page
$cvstreedefault = 'freebsd';

Icons and bitmaps

cvsweb uses a number of icons and bitmaps.  By default,
these were installed to /usr/local/share/apache/icons/cvsweb/.  I moved
these to where my installation of Apache could find them:

cp -R /usr/local/share/apache/icons/ /nzmirror/

But there is a better way.  See Makefile variables.

Makefile variables

The makefile for cvsweb contains two variables which specify the location of the
cgi-bin directory and the icons.  You can specify the values for these variables and
the install will use those locations.

For instance, if your cgi-bin is at /usr/local/www/cgi-bin
and your icons directory is at /usr/local/www/data/icons, then you can do like

cd /usr/ports/devel/cvsweb
make CGIDIR=www/cgi-bin ICONSDIR=www/data/icons build install

This assumes that PREFIX is /usr/local (as is the case with the default
ports tree; you’ll know if you’ve changed it).

Seeing the output

You should now be able to use cvsweb by browsing to

Problems I encountered

Along the way, I encountered this error:

Error: $CVSROOT not found!

The server on which the CVS tree lives is probably down
Please try again in a few minutes.

This means cvsweb cannot find your cvs repository.  Or, your
configuration file specifies a cvs repository which does not exist on your box.  
That’s why I removed ‘local’ from the configuration file.  
Check your settings against mine and try again.

2 thoughts on “cvsweb – graphical interface to cvs”

Leave a Comment

Scroll to Top