/loggerhead/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/loggerhead/trunk
401.2.7 by Tres Seaver
Use 'Loggerhead' as the display name; fix typos.
1
Loggerhead:  A web viewer for ``bzr`` branches
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
2
==============================================
3
491.2.62 by Jelmer Vernooij
Review comments.
4
Loggerhead is a web viewer for projects in Breezy. It can be used to navigate
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
5
a branch history, annotate files, view patches, perform searches, etc.
401.2.7 by Tres Seaver
Use 'Loggerhead' as the display name; fix typos.
6
Loggerhead is heavily based on `bazaar-webserve
401.2.4 by Tres Seaver
Move cross-ref of bazaar-webserve and hgweb to intro graph; remove dead modindex and search.
7
<https://launchpad.net/bzr-webserve>`_, which was, in turn, loosely
8
based on `hgweb <http://mercurial.selenic.com/wiki/HgWebDirStepByStep>`_.
9
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
10
11
Getting Started
12
---------------
13
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
14
Loggerhead depends on the following Python libraries.:
15
16
- SimpleTAL for templating.
17
401.2.8 by Tres Seaver
Consistent punctuation.
18
- Paste for the server. (You need version 1.2 or newer of Paste).
19
20
- Paste Deploy  (optional, needed when proxying through Apache).
21
22
- flup (optional, needed to use FastCGI, SCGI or AJP).
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
23
24
25
Installing Dependencies Using Ubuntu Packages
26
#############################################
27
28
.. code-block:: sh
29
30
   $ sudo apt-get install python-simpletal
31
   $ sudo apt-get install python-paste
32
   $ sudo apt-get install python-pastedeploy
33
   $ sudo apt-get install python-flup
34
35
Installing Dependencies Using :command:`easy_install`
36
#####################################################
37
38
.. code-block:: sh
39
40
   $ easy_install \
41
     -f http://www.owlfish.com/software/simpleTAL/py2compatible/download.html \
42
     SimpleTAL
43
   $ easy_install Paste
44
   $ easy_install PasteDeploy
45
   $ easy_install flup
46
47
48
Running the Standalone Loggerhead Server
49
----------------------------------------
50
51
After installing all the dependencies, you should be able to run
491.2.45 by Jelmer Vernooij
Rename serve-branches to loggerhead-serve.
52
:command:`loggerhead-serve` with the branch you want to serve on the
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
53
command line:
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
54
55
.. code-block:: sh
56
491.2.45 by Jelmer Vernooij
Rename serve-branches to loggerhead-serve.
57
    ./loggerhead-serve ~/path/to/branch
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
58
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
59
By default, the script listens on port 8080, so head to
60
http://localhost:8080/ in your browser to see the branch.
61
62
You can also pass a directory that contains branches to the script,
63
and it will serve a very simple directory listing at other pages.
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
64
65
You may update the Bazaar branches being viewed at any time.
66
Loggerhead will notice and refresh, and Bazaar uses its own branch
67
locking to prevent corruption.
68
491.2.45 by Jelmer Vernooij
Rename serve-branches to loggerhead-serve.
69
See :doc:`loggerhead-serve` for all command line options.
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
70
71
Running Loggerhead as a Daemon
72
------------------------------
73
401.2.7 by Tres Seaver
Use 'Loggerhead' as the display name; fix typos.
74
To run Loggerhead as a linux daemon:
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
75
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
76
1) Copy the ``loggerheadd`` scipt to ``/etc/init.d``
77
78
.. code-block:: sh
79
80
   $ sudo cp ./loggerheadd /etc/init.d
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
81
401.2.7 by Tres Seaver
Use 'Loggerhead' as the display name; fix typos.
82
2) Edit the file to configure where your Loggerhead is installed, and which
491.2.45 by Jelmer Vernooij
Rename serve-branches to loggerhead-serve.
83
   loggerhead-serve options you would like.
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
84
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
85
.. code-block:: sh
86
87
   $ sudo vim /etc/init.d/loggerheadd
88
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
89
3) Register the service
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
90
91
.. code-block:: sh
92
401.2.7 by Tres Seaver
Use 'Loggerhead' as the display name; fix typos.
93
   # on upstart based systems like Ubuntu run: 
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
94
   $ sudo update-rc.d loggerheadd defaults
95
401.2.7 by Tres Seaver
Use 'Loggerhead' as the display name; fix typos.
96
   # on Sysvinit based systems like Centos or SuSE run:
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
97
   $ sudo chkconfig --add loggerheadd
98
99
491.2.8 by Jelmer Vernooij
Update references to breezy.
100
Using Loggerhead as a Breezy Plugin
101
-----------------------------------
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
102
491.2.8 by Jelmer Vernooij
Update references to breezy.
103
This branch contains experimental support for using Loggerhead as a Breezy
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
104
plugin.  To use it, place the top-level Loggerhead directory (the one
491.2.8 by Jelmer Vernooij
Update references to breezy.
105
containing COPYING.txt) at ``~/.config/breezy/plugins/loggerhead``.  E.g.:
401.2.3 by Tres Seaver
Explain plugin usage, link bazaar-webserve and hgweb.
106
107
.. code-block:: sh
108
491.2.8 by Jelmer Vernooij
Update references to breezy.
109
   $ bzr branch lp:loggerhead ~/.config/breezy/plugins/loggerhead
401.2.3 by Tres Seaver
Explain plugin usage, link bazaar-webserve and hgweb.
110
   $ cd ~/myproject
111
   $ bzr serve --http
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
112
113
114
Using a Config File
115
-------------------
116
491.2.8 by Jelmer Vernooij
Update references to breezy.
117
To hide branches from being displayed, add to ``~/.config/breezy/locations.conf``,
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
118
under the branch's section:
119
120
.. code-block:: ini
121
122
    [/path/to/branch]
123
    http_serve = False
124
125
More configuration options to come soon.
126
127
401.2.6 by Tres Seaver
Better section title.
128
Serving Loggerhead behind Apache
129
--------------------------------
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
130
491.2.8 by Jelmer Vernooij
Update references to breezy.
131
If you want to view Breezy branches from your existing Apache
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
132
installation, you'll need to configure Apache to proxy certain
401.2.11 by Ian Clatworthy
Minor tweaks to Tres' content
133
requests to Loggerhead.  Adding lines like this to your Apache
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
134
configuration is one way to do this:
135
136
.. code-block:: apache
137
138
    <Location "/branches/">
139
        ProxyPass http://127.0.0.1:8080/branches/
140
        ProxyPassReverse http://127.0.0.1:8080/branches/
141
    </Location>
142
491.2.45 by Jelmer Vernooij
Rename serve-branches to loggerhead-serve.
143
If Paste Deploy is installed, the :command:`loggerhead-serve` script can be
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
144
run behind a proxy at the root of a site, but if you're running it at
401.2.11 by Ian Clatworthy
Minor tweaks to Tres' content
145
some path into the site, you'll need to specify it using
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
146
``--prefix=/some_path``.
147
407.2.3 by Toshio Kuratomi
Merge README.mod_wsgi into the installation instructions in docs/index.rst and add mod_wsgi note to NEWS
148
Serving Loggerhead with mod_wsgi
149
--------------------------------
150
407.2.7 by Toshio Kuratomi
mispellings/capitalization of Loggerhead.
151
A second method for using Loggerhead with apache is to have apache itself
152
execute Loggerhead via mod_wsgi.  You need to add configuration for apache and
491.2.8 by Jelmer Vernooij
Update references to breezy.
153
for breezy to make this work.  Example config files are in the Loggerhead doc
154
directory as apache-loggerhead.conf and breezy.conf.  You can copy them into
407.2.3 by Toshio Kuratomi
Merge README.mod_wsgi into the installation instructions in docs/index.rst and add mod_wsgi note to NEWS
155
place and use them as a starting point following these directions:
156
157
1) Install mod_wsgi.  On Ubuntu and other Debian derived distros::
158
159
    sudo apt-get install libapache2-mod-wsgi
160
161
   On Fedora-derived distros::
162
163
    su -c yum install mod_wsgi
164
491.2.8 by Jelmer Vernooij
Update references to breezy.
165
2) Copy the breezy.conf file where apache will find it (May be done for you if
407.2.7 by Toshio Kuratomi
mispellings/capitalization of Loggerhead.
166
   you installed Loggerhead from a distribution package)::
407.2.3 by Toshio Kuratomi
Merge README.mod_wsgi into the installation instructions in docs/index.rst and add mod_wsgi note to NEWS
167
168
    # install -d -o apache -g apache -m 0755 /etc/loggerhead
491.2.8 by Jelmer Vernooij
Update references to breezy.
169
    # cp -p /usr/share/doc/loggerhead*/breezy.conf /etc/loggerhead/
170
    # mkdir -p /var/www/.config
171
    # ln -s /etc/loggerhead /var/www/.config/breezy
407.2.3 by Toshio Kuratomi
Merge README.mod_wsgi into the installation instructions in docs/index.rst and add mod_wsgi note to NEWS
172
407.2.7 by Toshio Kuratomi
mispellings/capitalization of Loggerhead.
173
3) Create the cache directory (May be done for you if you installed Loggerhead
407.2.3 by Toshio Kuratomi
Merge README.mod_wsgi into the installation instructions in docs/index.rst and add mod_wsgi note to NEWS
174
   from a distribution package)::
175
176
    # install -d -o apache -g apache -m 0700 /var/cache/loggerhead/
177
491.2.8 by Jelmer Vernooij
Update references to breezy.
178
4) Edit /etc/loggerhead/breezy.conf.  You need to set http_root_dir to the filesystem
407.2.3 by Toshio Kuratomi
Merge README.mod_wsgi into the installation instructions in docs/index.rst and add mod_wsgi note to NEWS
179
   path that you will find your bzr branches under.  Note that normal
407.2.7 by Toshio Kuratomi
mispellings/capitalization of Loggerhead.
180
   directories under that path will also be visible in Loggerhead.
407.2.3 by Toshio Kuratomi
Merge README.mod_wsgi into the installation instructions in docs/index.rst and add mod_wsgi note to NEWS
181
182
5) Install the apache conf file::
183
184
     # cp -p /usr/share/doc/loggerhead*/apache-loggerhead.conf /etc/httpd/conf.d/loggerhead.conf
185
186
6) Edit /etc/httpd/conf.d/loggerhead.conf to point to the url you desire to
407.2.7 by Toshio Kuratomi
mispellings/capitalization of Loggerhead.
187
   serve Loggerhead on.  This should match with the setting for
491.2.8 by Jelmer Vernooij
Update references to breezy.
188
   http_user_prefix in breezy.conf
407.2.3 by Toshio Kuratomi
Merge README.mod_wsgi into the installation instructions in docs/index.rst and add mod_wsgi note to NEWS
189
190
7) Restart apache and you should be able to start browsing
191
192
.. note:: If you have SELinux enabled on your system you may need to allow
193
   apache to execute files in temporary directories.  You will get a
194
   MemoryError traceback from python if this is the case.  This is because of
195
   the way that python ctypes interacts with libffi.  To rectify this, you may
196
   have to do several things, such as mounting tmpdirs so programs can be
197
   executed on them and setting this SELinux boolean::
198
199
       setsebool httpd_tmp_exec on
200
201
   This bug has information about how python and/or Linux distros might solve
202
   this issue permanently and links to bugs which diagnose the root cause.
203
   https://bugzilla.redhat.com/show_bug.cgi?id=582009
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
204
205
Search
206
------
207
208
Search is currently supported by using the bzr-search plugin (available
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
209
at: https://launchpad.net/bzr-search ).
210
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
211
You need to have the plugin installed and each branch indexed to allow
212
searching on branches.
213
401.2.5 by Tres Seaver
Better section title.
214
Command-Line Reference
215
----------------------
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
216
217
.. toctree::
218
   :maxdepth: 2
219
491.2.45 by Jelmer Vernooij
Rename serve-branches to loggerhead-serve.
220
   loggerhead-serve
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
221
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
222
223
Support
224
-------
225
401.2.3 by Tres Seaver
Explain plugin usage, link bazaar-webserve and hgweb.
226
Discussion should take place on the bazaar-dev mailing list at
227
mailto:bazaar@lists.canonical.com.  You can join the list at
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
228
<https://lists.ubuntu.com/mailman/listinfo/bazaar>.  You don't need to
229
subscribe to post, but your first post will be held briefly for manual
230
moderation.
231
401.2.11 by Ian Clatworthy
Minor tweaks to Tres' content
232
Bugs, support questions and merge proposals are tracked on Launchpad, e.g:
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
233
234
    https://bugs.launchpad.net/loggerhead
235
236
237
Hacking
238
-------
239
401.2.7 by Tres Seaver
Use 'Loggerhead' as the display name; fix typos.
240
To run Loggerhead tests, you will need to install the package ``python-nose``,
241
and run its :command:`nosetests` script in the Loggerhead directory:
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
242
243
.. code-block:: sh
244
245
    nosetests
246
401.2.2 by Tres Seaver
ReST fixups, better cross-references.
247
401.2.1 by Tres Seaver
Add Sphinx-based documentation.
248
License
249
-------
250
251
GNU GPLv2 or later.
252
253
See Also
254
--------
255
256
https://launchpad.net/loggerhead
257
401.2.4 by Tres Seaver
Move cross-ref of bazaar-webserve and hgweb to intro graph; remove dead modindex and search.
258
Index
259
=====
260
261
- :ref:`genindex`