3 | | Trac is a '''minimalistic''' approach to '''web-based''' management of |
4 | | '''software projects'''. Its goal is to simplify effective tracking and handling of software issues, enhancements and overall progress. |
| 3 | !TracMonotone is a plugin for Trac that allows a Trac project to use a Monotone |
| 4 | instead of a Subversion repository. The plugin enables you to browse your |
| 5 | project's sourcecode, view changesets, etc., like in any other Trac project. |
| 6 | Revisions can be linked to from wiki pages, tickets, and any other place that |
| 7 | contains wiki text, e.g. commit messages, and they can be specified either |
| 8 | using their hex-id, or via a tag or branch name, and later via Monotone |
| 9 | selectors, too. |
22 | | You can use [wiki:TracAdmin trac-admin] to configure |
23 | | [http://trac.edgewall.org/ Trac] to better fit your project, especially in |
24 | | regard to ''components'', ''versions'' and ''milestones''. |
| 18 | == Prerequisites == |
| 19 | |
| 20 | * A Monotone 0.28 (or later) binary. |
| 21 | * Python 2.4. |
| 22 | * An installation of Trac. You can either use 0.10 or 0.11dev. |
| 23 | * Python setuptools >= 0.6. |
| 24 | * The Python Bindings for BerkeleyDB (pyBSDdb), if you want to use |
| 25 | the plugin together with mod_python. |
| 26 | |
| 27 | == Installation == |
| 28 | |
| 29 | * Create a Python egg: run {{{python ./setup.py bdist_egg}}} in the |
| 30 | plugin's toplevel dir. |
| 31 | * Put the generated egg into the plugins directory of your project. |
| 32 | * Add `repository_type = mtn` and `repository_dir = path_to_mtn_db` |
| 33 | options to the `[trac]` section of the conf/trac.ini file of your |
| 34 | project. |
| 35 | * Enable the plugin by adding the option `tracvc.mtn.* = enabled` to |
| 36 | the `[components]` section of the conf/trac.ini file. |
| 37 | * (Re-)start the webserver or tracd. |
| 38 | * That's it :) |
| 39 | |
| 40 | == Configuration == |
| 41 | |
| 42 | All configuration options have to be placed in the `[mtn]` section of |
| 43 | the `conf/trac.ini` file. |
| 44 | |
| 45 | * The full path to the Monotone binary can be specified using the |
| 46 | `mtn_binary` option. |
| 47 | * A caching method for Monotone manifests, certs, changesets, |
| 48 | etc. can be specified using the `cachespec` option. The format is: |
| 49 | `cachespec = backend[:option1[:option2[...]]]` |
| 50 | Currently these backends are provided: |
| 51 | * `localmem`: (default) uses local memory for caching. Takes no |
| 52 | options. |
| 53 | * `dbmshelve:prefix`: Persistent, uses Unix DBM databases named |
| 54 | `prefix*.{pag|dir}`. All directories in prefix must exist. Not suited |
| 55 | for concurrent access by more than one process. |
| 56 | * `bsddb:dir:prefix`: Uses the bsddb3 binding to a persistent |
| 57 | BerkeleyDB database. The directory 'dir' must be writable by trac. |
| 58 | |
| 59 | == Selecting the Caching Method == |
| 60 | |
| 61 | For better performance you should use a disk-based caching |
| 62 | method. If you run a standalone version of Trac (tracd), you can |
| 63 | either use 'dbmshelve' or 'bssdb'. If you use Trac via mod_python, |
| 64 | you *must* use 'bsddb', because the 'dbmshelve' method doesn't |
| 65 | support concurrent access by multiple processes. |
| 66 | |
| 67 | It is not recommended to use the 'localmem' method other than for |
| 68 | testing purposes, because it keeps all entries in memory until the |
| 69 | server process is restarted. |
| 70 | |
| 71 | == Known Problems/Missing Features == |
| 72 | |
| 73 | * Security: The monotone select functionality is exposed. Monotone |
| 74 | binaries prior to version 0.27 are susceptible for SQL injections. |
| 75 | * Revisions are almost always printed as complete 40-char string. |
| 76 | * The changeset displays doesn't show attr changes. |
| 77 | * Log on a per-file basis is missing.. |
| 78 | * The lifetime for cached data should be adjustable. |
| 79 | * Support for trac-admin is missing. (?) |
| 80 | |
| 81 | == Author == |
| 82 | |
| 83 | Thomas Moschny (thomas DOT moschny AT gmx.de) |