Things look quiet here. But I've been doing a lot of blogging at
dan.langille.org because I prefer WordPress now.
Not all my posts there are FreeBSD related.
I am in the midst of migrating The FreeBSD Diary over to WordPress
(and you can read about that here).
Once the migration is completed, I'll move the FreeBSD posts into the
new FreeBSD Diary website.
As you may well know, I run cvsup.nz.freebsd.org. 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:
This should be familiar to you now. Since I have the entire ports tree installed, all I needed to do was:
/usr/ports/devel/cvsweb
make
make install
*** BUT: before you do the install, read about the Makefile
variables 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:
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:
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'
%CVSROOT = (
'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'
%CVSROOT = (
'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:
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
this:
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
http://localhost/cgi-bin/cvsweb.cgi.
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.