Description
There should be a way to browse history and files in the repository from the web.
At a minimum, this means:
- Browse through the repository directory structure
- View a revision log of changes to a file or directory
- View all the changes made in a single commit
Ideally, the web interface would be customisable, allowing us to tailor it to the FreeBSD site look-and-feel. Similarly, it should be possible to localise the interface to multiple languages, as the rest of the FreeBSD web site is also localised.
Current Implementation
Currently cvsweb.cgi is used, as can be seen at freebsd.org
SVN Implementation
One of the access mechanisms that can be enabled for a Subversion repository is http (or https). This does not have to be enabled, but if it is it would provide a basic web interface for free. This interface would allow browsers to see the most recent version of files and directories and check them out, but not view diffs, changelogs, and so on, in the browser.
There are a large number of third party applications that generate prettier web interfaces to Subversion repositories.
NikClayton is the maintainer of SVN::Web, a Perl implementation that runs as either a CGI or a FastCGI script under any web server, and as both a mod_perl1 and mod_perl2 handler with Apache. SVN::Web's interface is template driven (making it easy to adapt to the FreeBSD web site look and feel), can apply regular expressions to log messages before they are output (making it easy to create links between log messages and GNATS tickets, or other web pages) and is fully localised, making it a simple matter of translating doc strings to render the interface in multiple languages. An example of SVN::Web in action can be seen at http://jc.ngo.org.uk/svnweb/.
There are many other Subversion web interfaces listed at http://subversion.tigris.org/links.html
Hg Implementation
There are several ways to browse a Hg repository through the web:
Hg itself includes a bare-bone web server started by hg serve. However it is single threaded is more for a quick browse than anything else.
There are two CGI scripts: hgweb.cgi and hgwebdir. The latter is used for multiple repository access. These two are really simple to install. Different style can be used and while the default theme is simple, many people prefer a port of the gitweb style.
See examples on http://hg.fr.freebsd.org/ and http://archives.keltia.net/hg/
Git Implementation
The canonical git web interface is gitweb. Examples can be seen at kernel.org or freedesktop.org