Edgewall Software

Version 9 (modified by Christian Boos, 19 years ago) ( diff )

Updated to reflect the current implemention status in r1912 - Please test and provide feedback!

This page documents the 1.4 (latest stable) release. Documentation for other releases can be found here.

InterTrac and InterWiki Extension for TracLinks

This is a proposal for implementing #234, #40 and #1414 I think it's now ready for testing (see r1912)

Definitions

InterTrac

An InterTrac link is used for referring to a Trac object (Wiki page, changeset, ticket, …) located in another Trac environment.

InterWiki

An InterWiki link can be used for referring to a Wiki page located in another Wiki system, and by extension, to any object located in any other Web application, provided a simple URL mapping can be done.

Link Syntax

InterTrac

<target_environment>:<TracLinks>

The link is composed by the target environment name, followed by a colon (e.g. trac:), followed by a regular TracLinks, of any flavor.

That target environment name is either the real name of the environment, or an alias for it. The aliases are defined in trac.ini (see below). The prefix is case insensitive.

For convenience, there's also an alternative short-hand form, where one can use an alias as an immediate prefix for the identifier of a ticket, changeset or report: (e.g. #T234, [T1508]…) That alias must be at most 3 letters long.

InterWiki

<target_wiki>(:<identifier>)+

The link is composed by the targeted Wiki (or system) name, followed by a column (e.g. MeatBall:), followed by a page specification in the target.

The target Wiki URL is looked up in a the InterMapTxt wiki page, modelled after MeatBall:InterMapTxt.

An addition to traditional InterWiki links, where the target is simply appended to the URL, Trac supports parametric InterWiki URLs: identifiers $1, $2, … in the URL will be replaced by corresponding arguments from a list made up from the page specification split by the ':' token.

Examples

InterTrac

Besides the other environments run by the same server process (called sibling environments), which are automatically detected, (Note: currently only in tracd), it is necessary to setup a configuration for the InterTrac facility:

  • in order to refer to a remote Trac
  • for defining environment aliases

This is done quite simply in an [intertrac] section within the trac.ini file.

Example configuration:

...
[intertrac]
## -- Example of setting up an alias:
t.key = trac

## -- Link to an external Trac:
trac.title = Edgewall's Trac for Trac
trac.url = http://projects.edgewall.com/trac

#trac.svn = http://repos.edgewall.com/projects/trac 
# Hint: .svn information could be used in the future to support svn:externals...

Now, given this configuration, one could create the following links:

InterWiki

The following would be an excerpt of the InterMapTxt page:

= InterWiki Map =

This is the InterMapTxt wiki page,
modelled after the MeatBall:InterMapTxt page.
----
{{{
...
LiveJournal http://livejournal.com/users/
Login http://www.usemod.com/cgi-bin/mb.pl?action=login&p_userid=
MbTest http://www.usemod.com/cgi-bin/mbtest.pl?
MeatBall http://www.usemod.com/cgi-bin/mb.pl?
MetaWiki http://sunir.org/apps/meta.pl?
MetaWikiPedia http://meta.wikipedia.org/wiki/
Mineralienatlas http://www.mineralienatlas.de/lexikon/index.php/
MoinMoin http://moinmoin.wikiwikiweb.de/
...
}}}

Implementation Notes

Currently, the [intertrac] configuration has to be repeated for each Trac environment, but there's work in progress concerning a centralized trac.ini, which would help greatly here.

This idea was first proposed as a patch for #234, and has been implemented in the following branch: source:branches/cboos-dev/intertrac-branch

In particular, [1912] should implement the behavior described in version 9 of this page.

The general idea is that any [a-zA-Z][a-zA-Z0-9]*: prefix, followed by anything which is not a space, has to be interpreted as:

  1. maybe an alias to something else; it yes, it is dereferenced before going on
  2. either a link prefix given by an IWikiSyntaxProvider component
  3. if not found, an environment name (InterTrac link)
  4. if not found, an external system name (InterWiki link)
  5. if not found, it is left unchanged

This order enables one to configure Trac for using another ticket system: first disable the [ticket] component and setup a ticket InterWiki link pointing to the other BugTrackingSystem.

Note: See TracWiki for help on using the wiki.