This plugin is based on earlier plugins. Its main innovation is to make
multiple branches available, the way Trac normally does.
Copyright (C) 2005 Edgewall Software
All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Basically the Plugins section of the Trac Guide applies to the
installation of trac-bzr as well.
It gives you several options how to install a plugin.
Executing the command “easy_install TracBzr” as root should install
the plugin system-wide, making it available to all trac environments
on that system.
You can download the egg file corresponding to your python version and
place it in the plugins directory of a Trac environment.
If you want to build trac-bzr from source, you can either grab a
source release tarball or a checkout of a development branch. Many
development branches are listed on launchpad. Once you have
obtained such a source tree, execute “python setup.py install” to
install the plugin system-wide, or “python setup.py bdist_egg” to
obtain an egg file for installation in a single Trac environment.
In order to function properly, trac-bzr requires the packages listed below.
These dependencies are not handled by setuptools, because otherwise
the plugin would fail to load if one of the dependencies wasn’t
installed with setuptools or similar.
- Python 2.4
This plugin uses bzrlib directly, so it requires Python 2.4 or greater.
- Trac 0.10
Some features may only work with Trac 0.11.
Trac 0.12 isn’t officially supported (yet).
- Bazaar 2.0
This plugin should work with Bazaar 2.0.
Earlier versions may or may not work.
To configure trac-bzr, you’ll have to edit the trac.ini file of
your Trac environment.
After installing, you’ll want to set the following values:
[components]
tracbzr.* = enabled
[trac]
repository_type = bzr
repository_dir = /path/to/collection/of/bzr/branches
This should include “tracbzr.* = enabled” to enable all features
provided by the plugin.
As an alternative, you can enable or disable specific components
providing specific features, e.g. in order to disable the wiki macro
provider.
Use the Trac 0.11 web admin plugin interface or have a look at the
sources to find out which components are available.
This should point at the directory containing your branches. This directory
does not have to be a repository. trac-bzr doesn’t require branches to
be related, though that is permitted, of course.
There are some optional settings you can configure for trac-bzr.
If you do not specify them, the following defaults will be used instead:
[tracbzr]
primary_branches = ,trunk
This is a comma-separated ordered list of the main branches of your project.
You may also specify glob patterns in this list to match multiple branches.
Note that the pattern must match from the root of repository_dir, so if you
set it to e.g. a directory containing sub-directories which in turn contain
branches, you should set primary_branches to */BRANCH.
The Branches wiki macro will list branches in the order specified by this list.
The timeline view will try to associate changesets with branches in the
specified order.
In both cases, branches not matched by any list item will be inserted at the
end of the list, as if you had ended the list with ,*.
Branches matched by a single list item will be sorted alphabetically.
This plugin introduces the bogus changeset “current:”, which is used as
the last-revision for directories that are not branches. It also provides
“null:”, which is part of Bazaar’s theoretical model, but usually hidden.
Because Trac, like Subversion, doesn’t differentiate between “source file
namespace” and “branch namespace”, it is impossible to view branches whose
directories are directly inside other branches’ directories.
Some user-level operations are rather slow, because Trac’s assumptions
about which repository operations are cheap vs expensive doesn’t match Bazaar’s
design. In particular, Bzr doesn’t track “which revision last modified files
in this directory.” In theory, this can be solved by caching the results of
expensive operations.
If two changesets are not related to one another by some direct ancestry,
i.e. if neither one is an ancestor of the other, then revisions are sorted by
timestamp instead.
In case of a clock skew this can lead to inconcistent results,
as transitivity isn’t guaranteed for this approach.
Trac does not to recognize bzr revision strings in its bracket notation,
e.g. [tree,25].
However, you can use the changeset notation instead, e.g.
changeset:tree,25.
Using download links in source browser (under “Download in other formats”
heading) is not supported. For details see bug 394204, in short this is
a problem which should be addressed in Trac itself.
In fact an upstream bug report is already filled in and a patch is
available, so if you’re interested in this feature check it out and discuss
any issues with it upstream.
Because at the moment Bazaar does not store information about encoding of text
files, you may want to change the default character set used by trac.
By default trac use encoding iso-8895-15 to show content of your files.
If you need to change this option, you need to edit trac.ini of your project.
In section “trac” you need to change parameter named “default_charset”. E.g.
for russian files:
[trac]
default_charset = cp1251