ViewCVS: Repository Browsing

On this page:


ViewCVS Users Group

What Is ViewCVS?

ViewCVS is a browser interface for CVS and Subversion version control repositories. It generates templatized HTML to present navigable directory, revision, and change log listings. It can display specific versions of files as well as diffs between those versions. Basically, ViewCVS provides the bulk of the report-like functionality you expect out of your version control tool, but much more prettily than the average textual command-line program output.

Here are some of the additional features of ViewCVS:

  • Support for filesystem-accessible CVS and Subversion repositories.
  • Individually configurable virtual host support.
  • Line-based annotation/blame display (CVS only).
  • Revision graph capabilities (via integration with CvsGraph) (CVS only).
  • Syntax highlighting support (via integration with GNU enscript).
  • Bonsai-like repository query facilities.
  • Template-driven output generation.
  • Colorized, side-by-side differences.
  • Tarball generation (by tag/branch for CVS, by revision for Subversion).
  • I18N support based on the Accept-Language request header.
  • Ability to run either as CGI script or as a standalone server.
  • Regexp-based file searching.
  • INI-like configuration file (as opposed to requiring actual code tweaks).

And the best feature of them all — ViewCVS is written in Python, so it doesn't suffer from the "unmaintainable code effect" that hits most Perl projects (like its predecessor, CvsWeb) sooner or later:

"[Perl] combines all the worst aspects of C and Lisp: a billion different sublanguages in one monolithic executable. It combines the power of C with the readability of PostScript." — Jamie Zawinski

For a complete list of changes present in each release, see ViewCVS's CHANGES file.

Requirements

The only hard software requirement for running ViewCVS is Python 1.5.2 or later. All other requirements depend on what you want to do with the tool.

If you plan to use ViewCVS with CVS repositories, you need the following things:

  • RCS (Revision Control System)
  • GNU diff
  • Read-only, physical access to a CVS repository.

For use with Subversion repositories, you need these things:

  • Subversion 1.0 or later and its SWIG Python bindings.
  • GNU diff
  • Physical access to a Subversion repository (though there is limited, use-at-your-risk support for remote access, too).

ViewCVS integrates with additional pieces of software to provide certain bits of optional functionality:

  • MySQL — Needed to use the commit database query functionality.
  • GNU enscript — Needed for syntax highlighting in versioned file contents displays
  • CvsGraph — Needed for version graph displays.
  • Apache HTTP Server, or another server capable of running CGI programs — unless you just want ViewCVS to run in standalone server mode.

Future Plans

ViewCVS is a Open Source project. So any future development depends on the contributions that will be made by its user community. Certainly working patches have a greater chance to become realized quickly than feature requests, but please don't hesitate to submit your suggestions to our issue tracker.

Some things we're thinking about include:

  • UI streamlining/simplification.
  • Integration with CVS and Subversion commit mail scripts.
  • Integration with an indexer such as LXR.