ViewVC: Frequently Asked Questions (FAQ)

On this page:

Valid XHTML 1.0 Strict

Answers

General Usage

Where does the installation documentation, if any, live?

ViewVC's installation how-to documentation lives in the INSTALL file located in the root of the ViewVC source code distribution. The most recent version of this document (which may cover unreleased ViewVC versions) can be found at http://viewvc.tigris.org/source/browse/*checkout*/viewvc/trunk/INSTALL. If you are upgrading an existing ViewVC instance, you'll also want to read the upgrade documentation, found at http://viewvc.tigris.org/source/browse/*checkout*/viewvc/trunk/docs/upgrading-howto.html.

How can I expose ViewVC at the root of a virtual host on my webserver?

If you want to dedicate a virtual host on your server just to ViewVC, such the root directory of that host maps to ViewVC's root display, you can do so by placing the following lines inside the VirtualHostApache configuration:

Alias /docroot /usr/local/viewvc/templates/docroot
ScriptAlias / /usr/local/viewvc/bin/cgi/viewvc.cgi/

The trick appears to be the presence of the trailing slash character on the ScriptAlias directive.

Does ViewVC support path-based authorization, such as Subversion's authz-file mechanism?

Yes, ViewVC 1.1.0 introduced this feature, and did so in a way that allows folks with Python programming skills to (relatively) easily drop in their own custom path-based authorization implementation modules.

What causes "Error: OSError: [Errno 2] No such file or directory: '/tmp/tmpGc-Ztj'"?

This is tracked in issue #282. While we haven't figured out how to make the error message more graceful or helpful, the basic problem seems to generally boil down to a misconfiguration of ViewVC. Make sure your helper applications are in the program search path ($PATH, e.g.) on your ViewVC server, or accurately specified in viewvc.conf.

Why does SOME-FEATURE work under standalone.py, but not under Apache (or IIS or …)?

Most of the time folks run standalone.py, they do so as a regular system user, from a shell running with any and all the environmental customizations present in their shell startup scripts. But most web server packages (like Apache) run as a different, often underprivileged, user, whose environment is stripped down to just the system-wide default state. This can cause problems for ViewVC's various helper applications, which might reside in a location that's included as part of your (and thus standalone.py's) $PATH, but not that of the user as whom the web server package runs. The solution might be as simple explicitly configuring the paths of the helper applications in viewvc.conf, or as complex as expanding the program search path used by your web server software.

How do I enable ViewVC's RSS feed capabilities?

ViewVC generates its RSS feeds from repository data mirrored in a database as part of its MySQL integration. Follow the steps in ViewVC's INSTALL file to setup and configure the MySQL integration and begin mirroring your commit metadata in the database — the RSS feed feature will then be enabled with no additional configuration.

CVS Browsing

Why can I navigate only those CVS directories that have no files in them?

ViewVC can generally display CVS directories without the use of any external tools. But unless configured to use the incomplete, experimental rcsparse module (via the use_rcsparse configuration option), it relies on either the RCS toolchain or the CVSNT tool (on Windows) to get information about versioned files. If the system is missing both of these, you'll need to remedy that. If ViewVC simply cannot find the installed tools, ensure that they are available in the system $PATH, or specify their location in the viewvc.conf file using the utilities/rcs_dir or utilities/cvsnt options. (Note that prior to ViewVC 1.1.0, these options were found at general/rcs_path and general/cvsnt_exe_path.)

What causes "Error: Rlog output ended early. Expected RCS file "/opt/cvs/project/file,v""?

This is another symptom of the basic problem described here.

What causes "Error: COMalformedOutput: Unable to find filename in co output stream"?

This is another symptom of the basic problem described here.

What causes "Error: error during rlog: 0x100"?

### TODO ###

Why do my directories have no files in them?

There are a few reasons why this can happen. Here are some of the most common ones:

  • Some folks mistakenly point ViewVC's configuration bits to their CVS working copies. But ViewVC isn't a working copy browser — it's a repository browser. If you don't know the difference, here's a tip that might help: CVS repositories are directories trees filled with files that end with ",v". If your directory isn't filled with "comma vee" files, it probably is not a CVS repository.

ViewVC doesn't show files I'm looking for, and instead displays the message "NOTE: There are N files, but none match the current selection criteria". How can I fix this?

From time to time, CVS and CVSNT add support for new keywords to the RCS backend used to house repository data. If you're running a version of ViewVC or ViewCVS that hasn't yet learned to handle those new keywords, you might get the error you're seeing. The solution is to try to get versions of CVS/CVSNT and ViewVC which are better aligned, which generally means upgrading ViewVC (which is probably less disruptive than downgrading your version control system).

Subversion Browsing

What causes "Error: ImportError: No module named svn"?

ViewVC uses Subversion's Python bindings to interact with and pull information out of your Subversion repositories. These bindings are not, however, generally provided as part of the ViewVC distribution — you have to install them yourself some other way. (For more information, contact the Subversion community.) The error you see is Python being asked to import the Subversion Python bindings and being unable to do so, typically because the bindings modules aren't found in the Python library search path.

Can I use ViewVC with remote Subversion repositories?

ViewVC prefers to have direct access to the repository (and in fact, must have that for CVS repositories), but there does exist experimental support for remote Subversion repositories. Enabling this is a fairly simple — just use the URL of the repository where you would use its path in the svn_roots configuration options (sorry, you can't use root_parents for remote repositories because Subversion doesn't expose a repository-listing repository access API).

What you should expect:

  • Near parity with local-access Subversion in terms of functionality.

  • Known shortcomings:

    • file sizes aren't reported everywhere
    • the "revision" view lacks/botches some information
    • she ain't the fastest horse on the track…
  • Lack of configury for dealing with the intricacies of remote access. If the auth credentials and such you need to access the remote repository aren't cached in ~VIEWVC_USER/.subversion (where VIEWVC_USER is the system user as whom ViewVC runs), stuff won't work.