Cyclic cvsweb page

The cvsweb package allows users to browse the revision history of a CVS tree with a web browser. It is a single file written in the perl scripting language and installs using the CGI mechanism supplied by most web servers.

Example of cvsweb in action

There are too many public web sites using cvsweb to list them all, but see for example the current working version of CVS.

Mailing lists and newsgroups

The most appropriate mailing list is info-cvs which also covers CVS itself in addition to cvsweb. To subscribe send mail to Traffic has been something like 5-10 messages per day.

The newsgroup for cvsweb (and other bug tracking and version control systems) is

For more information

There is a packaged version of cvsweb as part of Cyclic Gallery for Linux, both on CD-ROM and for download. This includes both the original cvsweb from Bill Fenner ("cvsweb"), and the enhanced cvsweb from Henner Zeller ("hencvs"). The cvsweb package contains the "nogzip" and "dollar" patches mentioned below.

See the cvsweb page from Bill Fenner, the author of cvsweb.

Patches to cvsweb 1.0

When cvsweb 1.0 sends entire files, it compresses them with gzip, which is not supported by all web browsers. This patch just sends uncompressed files, which makes it work with most browsers but which of course will tend to use more network bandwidth. It can probably be considered official in the sense that the latest FreeBSD development sources for cvsweb contain such a change.

This patch allows cvsweb to operate on files whose names contain '$'.

Development of cvsweb

Here is a patch to add "cvs annotate" functionality to cvsweb 1.0. The implementation of that patch is all wrong; you are better off with Henner Zeller's hencvs, which has annotate as of Oct 1998, or Bonsai, which also has annotate ("cvsblame").

Here are some ideas for new cvsweb features. The descriptions are somewhat sketchy; feel free to ask Jim Kingdon if you are having trouble making sense of them.

  - upload entire files (or directory trees?).  Form-based?  PUT?  etc?
    (Is this based soley on HTTP authentication or does auth (e.g. HTTP)
     interact with readers/writers/etc?  Implementation detail: does cvsweb
     try to check things like readers, or does it get CVS to check for it
     somehow or what?).  Is there any hot-link style technology which is
     interesting here (I don't know much about it...)
  - Form-based edit of document (for FAQ-O-Matic-style applications, but
    works on any text files).  Of course binary documents want more of an
    upload interface.
  - understand branches
      shows revisions only on that branch.  Picks which files to show based
      on that ("nonexistent files" or "deleted files" or some such instead
      of "Attic"; I guess semantics would be analogous: file
      shows up there iff the head revision on that branch is dead).
    Some/all of this is implemented in the version of cvsweb from 
    FreeBSD-current mentioned below.
  - Some nice way to browse head revisions (e.g. "_log_ _head_" to the right
    of the filename.  Click on log to get the log (the current behavior for
    clicking on the filename) or on head to get the head revision.  This
    sort of goes together with lxr (linux cross-ref) type stuff.  Or this
    might be a separate screen ("log directory" where clicking on filenames
    gets logs, vs. "head directory" where clicking on filenames get heads).
  - Show changes in last ___ days (diffs and/or logs).
  - Show recent changes (last 20 log entries, or whatever; then a link
    for older changes (cutoff in "?foo" would be a date, I guess)).
  - Think a little bit about how this functions as groupware?  Do people
    need to keep leaning on "reload" (e.g. in a meeting)?  Do some of the
    push/etc extensions to HTTP/HTML help?

Martin Cleaver's cvsweb is available; it features capabilities for file upload as well as file browsing.

The latest and greatest (potentially experimental) cvsweb from FreeBSD is available in FreeBSD-current. Click here for a demo of the branch features in this version.

Henner Zeller's cvsweb has a few enhancements, for example the ability to see a directory listing, which directly shows the latest revision and log message for each file.

Old information

Here are versions of cvswebedit from Jan 1998 and Feb 1998; for the most up to date version see Martin Cleaver's site mentioned above.