如何修改trac以创建自己的自定义链接格式(TracLinks)

时间:2011-05-14 14:18:01

标签: python customization trac issue-tracking

在开源trac issue tracking software中,当您在Wiki或票证评论中撰写文本时,您可以使用#1234链接到故障单,也可以使用{{1}链接到代码更改集}。这是文档:http://trac.edgewall.org/wiki/TracLinks

我想定义自己的链接格式。我想做的3个例子:

  1. 我希望r1234链接到acunote票证(它补充了trac,但在我们的trac安装之外)。
  2. 我希望a1234链接到github提交(即https://github.com/peritor/webistrano/commit/e2a1b3caadd0986e3e3d316c01965a2495329b87)。
  3. 我希望ge2a1b3caadd0986e3e3d316c01965a2495329b87链接到Yii文档(即http://www.yiiframework.com/doc/api/1.1/CComponent
  4. 有没有人知道如何使用trac v0.12做到这一点。我应该使用宏吗?一个插件?一个Genshi template?如果你知道怎么做,这对我来说可能很简单?


2 个答案:

答案 0 :(得分:4)

如果您需要这种确切的语法,除了创建插件并拥有实现Component interfaceIWikiSyntaxProvider之外别无选择。

如果您可以使用稍微不同的语法,例如[a:1234]用于非公开售票,[g:e2a1b3caadd0986e3e3d316c01965a2495329b87]用于github变更集,[y:CComponent]用于Yii文档,则可以添加以下条目到Trac安装的InterMapTxt页面:

a    http://my.acunote.site/ticket/$1                  # Acunote ticket $1
g    https://github.com/peritor/webistrano/commit/$1   # Changeset $1 on Github
y    http://www.yiiframework.com/doc/api/1.1/$1        # Yii documentation for $1

答案 1 :(得分:1)

Remy是正确的,因为你的语法可能会使这更加困难。链接的标准Trac语法是resource_type:link_specifier。如果您能够使用该语法,那么使用Inter-Wiki链接来完成您想要的工作是相当简单的。

如果这不是一个选项,您可以使用自定义构建的插件执行您所描述的操作。它并不像听起来那么困难,您可以使用现有插件中的源代码作为示例。我以前做了好几次,你真正需要的是一个表示你想要使用的语法的正则表达式,一个表示结果链接格式的表达式,以及一个Python代码页。

更新:有关如何通过Trac插件执行此操作的示例,official Trac documentation中有示例代码和说明。