CVS-Summary is a program that generates an HTML summary of CVS activity, very
similar to that provided by the popular ViewCVS script. CVS-Summary differs
from ViewCVS in that it dumps the summary information to static HTML files
which can be served by non-CGI capable web servers.
Requirements
Python is required to run CVS-Summary. CVS-Summary has been tested on with
Python versions 1.5.2, 2.1.3, and 2.2.1.
Installation of CVS-Summary is simple. Just unpack all the files in the
tarball to a convenient location; as long as you keep all the .py files
together, it doesn't matter where you put them. There is also a dir.gif
file in the tarball that should be copied to a convenient place on your
web server (e.g. a central image directory).
Setup
CVS-Summary has a couple of parameters that can be tuned by modifying
constants at the top of the cvs-summary.py script. These parameters are
described below:
DIRIMG
On the index screens, directories are displayed with a little folder
icon next to them. The DIRIMG parameter specifies what URL the
icon can be found at (e.g. http://www.xyz.com/dir/to/image/dir.gif).
dir.gif is included in the distribution tarball and should be copied
to a convenient location.
UMASK
The umask value is used for calculating what files file permissions
will be used on created files and directories. If you don't know what
this should be, just leave it at 022). Note that a leading 0 is
necessary to specify octal file permissions.
MAXDIFFS
If we made diffs of every single file revision against every other
revision, we could eat up *a lot* of disk space on large projects.
Setting this limits the number of diffs made per file. By default,
only the 10 most recent diffs will be created for each file.
Usage
CVS-Summary must be invoked from within your CVS working directory (sandbox).
The cvs-summary.py script currently takes two command line parameters:
-o output_directory(required)
The -o switch specifies where the generated summary files should be
placed. If your CVS repository is on the same filesystem used by
your web server, this will generally be a subdirectory under your
website's document root.
-t title(optional)
The -t switch applies a title to your project. This title appears on
some of the index and summary pages.
Example usage
/path/to/cvs-summary -o ~/public_html/project-cvs -t "My Project"
FAQ
Why should I use CVS-Summary instead of ViewCVS?
If you work in an environment where ViewCVS is able to run (i.e. you have
access to a webserver with CGI support or can run your own server process),
then you should probably be using ViewCVS. CVS-Summary is intended for
environments where users do not have these luxuries (university computer
systems are one prime target).
CVS-Summary only lets me see diffs between file revisions. Why can't I
view the full text of my files?
CVS-Summary was initially created for use in a university setting so one
of my main goals was to keep the size of the summaries relatively low.
I will probably add support for viewing a file/revision's full text in
a future version of CVS-Summary.
Thanks
I'd like to thank the following people/groups for directly or indirectly
playing a role in the development of CVS-Summary
ViewCVS is a wonderful system and I tried to make CVS-Summary as
similar to ViewCVS as possible. I also borrowed the version of
difflib.py used by ViewCVS (which they backported from Python2
to Python 1.5)
CVS-Summary includes an RCS file parser created with PLY. I was
very impressed by how well-designed and easy to use PLY was compared
to some of the other parser generators I came across. Although PLY
requires Python 2, I was able to hack it up so that it would run on
Python 1.5. The backported versions of lex.py and yacc.py are
included in the distribution tarball.
Olaf Groeger
Olaf submitted the first few bug reports for CVS-Summary as well as
patches to fix them.
License
CVS-Summary is distributed under the GNU General Public License. Click
here to see the full text.
A version of Python Lex/Yacc (PLY) which has been backported to Python 1.5 is
included with CVS-Summary. PLY is licensed under the LGPL. Click
here to see the full text.