summaryrefslogtreecommitdiff
path: root/doc/en/admin-guide/code-browsing.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/en/admin-guide/code-browsing.txt')
-rw-r--r--doc/en/admin-guide/code-browsing.txt128
1 files changed, 128 insertions, 0 deletions
diff --git a/doc/en/admin-guide/code-browsing.txt b/doc/en/admin-guide/code-browsing.txt
new file mode 100644
index 0000000..d1bf238
--- /dev/null
+++ b/doc/en/admin-guide/code-browsing.txt
@@ -0,0 +1,128 @@
+Web-based code browsing
+=======================
+
+Browsing the history of a project online is an important part of version
+control, since it allows people to easily see what happens in a branch
+without having to have a local, up-to-date copy of that branch. There are a
+number of possible choices for browsing Bazaar branches on the web, but we
+will cover one of them in particular detail and briefly mention the other
+choices where they differ.
+
+Loggerhead
+----------
+
+Loggerhead_ is a code browsing interface for Bazaar branches (now used in
+Launchpad). To see an example of Loggerhead in action, browse to
+http://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev/files which is the loggerhead
+view of Bazaar's trunk branch. Loggerhead runs as a web application on the
+server which is accessed over HTTP via a RESTful interface. It is possible to
+run this application on its own dedicated port as
+``http://www.example.com:8080`` or to proxy this location behind a separate web
+server, for example at ``http://www.example.com/loggerhead/``. We will discuss
+both of these configurations below.
+
+.. _Loggerhead: http://launchpad.net/loggerhead
+
+Requirements
+~~~~~~~~~~~~
+
+Loggerhead depends on a number of other Python packages for the various Web
+technologies that it builds on. Some of these must be installed to use
+loggerhead, although some of them are optional. From the loggerhead `README`
+file, these are
+
+1) SimpleTAL for templating.
+ On Ubuntu, `sudo apt-get install python-simpletal`
+ or download from http://www.owlfish.com/software/simpleTAL/download.html
+2) simplejson for producing JSON data.
+ On Ubuntu, `sudo apt-get install python-simplejson`
+ or use `easy_install simplejson`.
+3) Paste for the server. (You need version 1.2 or newer of Paste.)
+ On Ubuntu, `sudo apt-get install python-paste`
+ or use `easy_install Paste`
+4) Paste Deploy (optional, needed when proxying through Apache)
+ On Ubuntu, `sudo apt-get install python-pastedeploy`
+ or use `easy_install PasteDeploy`
+5) flup (optional, needed to use FastCGI, SCGI or AJP)
+ On Ubuntu, `sudo apt-get install python-flup`
+ or use `easy_install flup`
+
+Although directions for installing these on Ubuntu are given, most other
+GNU/Linux distributions should package these dependencies, making installation
+easy. For Windows and Mac OS X, they should all be ``easy_install``-able or at
+worst installable from the Python sources.
+
+Built-in Web Server
+~~~~~~~~~~~~~~~~~~~
+
+Loggerhead has a built-in web server and when started with the
+``serve-branches`` command, that web server is started on a default port
+listening on the localhost. If port 8080 (the default) is accessible on
+``www.example.com``, then running
+
+::
+
+ $ serve-branches --host=www.example.com --port=8080 /srv/bzr
+
+will list all of the available branches under that directory on
+``http://www.example.com:8080/``, so that the ProjectX trunk could be browsed
+at ``http://www.example.com:8080/projectx/trunk``. Note that loggerhead
+provides HTTP access to the underlying Bazaar branches (similar to that
+described in `Smart server over HTTP(S)
+<other-setups.html#smart-server-over-http-s>`_), so this command should be run
+as a user without write privileges in ``/srv/bzr``. By default, loggerhead
+only listens on the localhost, not any external ports, unless specified as
+above.
+
+Behind a Proxy
+~~~~~~~~~~~~~~
+
+A more common and more safe way to run loggerhead is behind another web server
+which will proxy certain requests to the loggerhead server on the localhost.
+To do this, you need to have PasteDeploy installed (see `Requirements`_).
+Assuming that your server has Apache running, you need to add configuration
+such as this to set up the proxy
+
+::
+
+ <Location "/loggerhead/">
+ ProxyPass http://127.0.0.1:8080/
+ ProxyPassReverse http://127.0.0.1:8080/
+ </Location>
+
+If your proxy runs at some path within the server, then the ``serve-branches``
+command must be started with the ``--prefix`` option. For this example, we
+could start loggerhead with the command
+
+::
+
+ $ serve-branches --prefix=/loggerhead /srv/bzr
+
+This would allow the trunk branch of ProjectX to be browsed at
+``http://www.example.com/loggerhead/projectx/trunk``.
+
+Loggerhead comes with a script allowing it to run as a service on
+``init.d`` based Unix systems. Contributions to do a similar thing on
+Windows servers would be welcomed at http://launchpad.net/loggerhead.
+
+
+Other web interfaces
+--------------------
+
+There are a number of other web interfaces available for Bazaar branches (see
+the list at http://wiki.bazaar.canonical.com/WebInterfaces) and we will just
+mention a couple of them here for their advantages in particular situations.
+
+trac+bzr (http://launchpad.net/trac-bzr)
+ Trac is a popular web app that integrates a browser for branches, an issue
+ tracker and a wiki. trac+bzr is a trac extension that allows for the
+ trac to be used with Bazaar.
+
+webbzr (http://thoughts.enseed.com/webbzr)
+ This is a notable solution because it is written in pure PHP for web hosts
+ that don't provide a way to run arbitrary Python applications such as Trac
+ or Loggerhead.
+
+Redmine (http://redmine.org/)
+ Like trac, Redmine is a full project management application using the Ruby
+ on Rails framework. It includes support for Bazaar branches.