Edgewall Software

Version 6 (modified by Dave Abrahams <dave@…>, 17 years ago) ( diff )

A Comprehensive Multi-Project Solution

Abstract: we present a comprehensive solution for many of the problems of maintaining or participating in multiple projects under Trac. We briefly analyze some of the other approaches and explain why we're not using them.

This method supports:

  • Cross-project ticket queries. Find out what your most important issues are in one swell foop.
  • Single login. Login once and skip around between Trac instances at will (subject to per-instance permissions, of course).

Caveats

  • This page is a work in progress. I've solved the technical issues on my local development server and am composing this page as I port my real Trac instances over to the new system.
  • This method requires the use of not-yet-released versions of Trac, Genshi, and several plugins, available from those projects' Subversion repositories.

Note: this solution obviously owes much to the work of others; I'm not claiming to be an innovator here, just an integrator.

Just How Comprehensive Is This Solution, Really?

Ticket #130 contains a long, rambling, and extremely enlightening discussion of what people need from multi-project support. Anyone who has read that thread, and the other pages proposing different ways to support multiple projects, knows that my solution isn't going to work for everyone. Nonetheless, I think I've hit a "sweet spot" that gives most people most of what they're looking for, and more importantly, can be (relatively) easily set up today by anyone. So while my claim of having a "comprehensive" solution might be seen as grandiose, I think it's supportable.

Requirements

Motivation

When you host multiple trac projects, its very common to have users that are members of more than one of these projects. If, like me, you're using your Tracs to support multiple customers, you probably need to be a member of each trac instance. Even when using a TRAC_ENV_PARENT_DIR setup, one typically ends up having to log in to three or four Trac instances a day as you review your most active projects. Just having to log in over and over is problematic in itself. Worse, if you're tracking tickets in several projects, there's no way to see them all together in stock Trac. You actually need to log into each project and check your tickets there, and it becomes very likely that you'll miss something really important.

repeating the same configuration steps over and over

It doesn't work to ask our customers to share the same Trac instance. Customers need privacy, and Trac isn't yet up to the task of managing fine-grained permissions on individual resources. Sometimes we're working on proprietary software that must be kept private, but even when we're working on open source, customers generally feel more comfortable when their issues are not exposed to the world.

Troubleshooting

I have applied a few small patches to my local trac installation to work around various bugs in Trac or in plugins. I'm not sure that these bugs will show up for you when implementing this solution (and it's very likely they've already been fixed by the trac team), but in the interest of full disclosure, here they are:

  • ticket:4547 describes a problem where python generates errors because datetime objects and numeric types such as float don't interoperate. The latest patch at the time of this writing is attached to the ticket: #4547/datefmt-r5696.diff.
  • If Trac tells you to run "trac-admin /path/to/your/environment upgrade, and it fails with "iteration over a non-sequence", apply the tiny patch shown in #5593.

Attachments (3)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.