Trac 链接
目录
TracLinks 是 Trac 的一个基本功能,允许在系统中的各种实体之间轻松创建超链接——例如工单、报告、变更集、Wiki 页面、里程碑和源文件——只要使用 WikiFormatting 的地方都可以。
TracLinks 通常采用 type:id 的形式(其中 id 表示项目的编号、名称或路径),不过一些常用项目也有简写符号。
TracLinks 的使用场景
你可以在以下地方使用 TracLinks:
- 源代码 (Subversion) 提交信息
- Wiki 页面
- 工单、报告和里程碑的完整描述
以及任何其他明确标记为支持 WikiFormatting 的文本字段。
概述
维基标记 | 显示 |
---|---|
|
|
注意: wiki:CamelCase 形式很少使用,但当页面名称不遵循 WikiPageNames 规则时(即单字、非字母字符等),使用它会很方便。有关链接到 Wiki 页面名称的特定功能,请参阅 WikiPageNames。
使用完整(非简写)表示法的 Trac 链接也可以像这样给定自定义链接标题 | |
[ticket:1 This is a link to ticket number one] or [[ticket:1|This is another link to ticket number one]]. | |
如果省略标题,则只显示 ID(冒号后面的部分) | |
[ticket:1] or [[ticket:2]] | |
如果省略完整链接的命名空间部分,则 wiki 是默认值 | |
[SandBox the sandbox] or [[SandBox|the sandbox]] | |
短形式 realm:target 也可以用 <...> 对包裹起来, 这允许使用任意字符(即除了 > 以外的任何字符) | |
<wiki:Strange(page@!)> | |
完整表示法可以使用引号来允许标签中包含括号。 | |
[TracIni#logging-log_type-option "[logging] log_type"] |
TracLinks 是一个非常简单的概念,但实际上它允许构建相当复杂的信息网络。在实践中,它使用起来非常直观和简单,我们发现“链接轨迹”对于更好地理解项目中发生的事情或为什么进行特定更改非常有帮助。
TracLinks 的高级用法
相对链接
要创建指向 SubWiki 页面的链接,只需使用 '/'
WikiPage/SubWikiPage or ./SubWikiPage
要从 SubWiki 页面链接到父级页面,只需使用 '..'
[..] or [[..]]
要从 SubWiki 页面链接到同级页面,请使用 '../'
[../Sibling see next sibling] or [[../Sibling|see next sibling]]
但在实践中,你通常不需要添加 ../
前缀来链接到同级页面。在解析 wiki 链接位置时,将选择层级结构中与链接所在页面最接近的目标页面。例如,在子层级结构中,同级页面将优先于顶层页面。这使得通过重命名将页面复制或移动到子层级结构变得容易,而无需调整链接。
要明确链接到顶层 Wiki 页面,请使用 wiki:/
前缀。请注意不要单独使用 /
前缀,因为这对应于 #服务器相对链接 语法,并且这样的链接将缺少结果 URL 中的 /wiki/
部分。诸如 [../newticket]
这样的链接将保留在 wiki 命名空间中,因此会链接到同级页面。
链接锚点
要创建指向页面中特定锚点的链接,请使用 '#'
[#Linkanchors Link anchors] or [[#Linkanchors|Link anchors]]
提示:当您将鼠标悬停在某个部分的标题上时,会显示一个 '¶' 字符。这是一个指向该特定部分的链接,您可以使用它将 #...
部分复制到锚点的相对链接中。
要创建指向页面上某个术语第一次或最后一次出现的链接,请使用以 '#/' 或 '#?' 开头的 伪锚点
[#/Milestone first occurrence of Milestone] or [#?Milestone last occurrence of Milestone]
这还会高亮显示链接页面上的所有其他匹配项。默认情况下,只考虑区分大小写的匹配项。要包含不区分大小写的匹配项,请追加 '/i'
[#/Milestone/i first occurrence of Milestone or milestone] or [#?Milestone/i last occurrence of Milestone or milestone]
(自 Trac 1.0 起)
此类锚点对于链接到源代码浏览器中文件中的特定行非常有用
[trac:source:tags/trac-0.12/trac/wiki/api.py#L127 Line 127] or [trac:source:tags/trac-0.12/trac/ticket/roadmap.py#L47 Line 47]
(提示:源代码浏览器中显示的行号是到相应行锚点的链接。)
由于此类链接在文件更改时会过时,因此使用 '#/' 伪锚点进行链接可能会很有用
[trac:source:trunk/trac/wiki/api.py#/IWikiSyntaxProvider IWikiSyntaxProvider] or [trac:source:trunk/trac/env.py#/ISystemInfoProvider ISystemInfoProvider]
InterWiki 链接
其他前缀可以自由定义,并指向其他 Web 应用程序中的资源。这些前缀的定义以及相应 Web 应用程序的 URL 在一个特殊的 Wiki 页面 InterMapTxt 页面中定义。请注意,虽然这可用于创建指向其他 Trac 环境的链接,但有一种更专业的方式来注册其他 Trac 环境,它提供了更大的灵活性。
InterTrac 链接
这可以被视为一种专门用于指向其他 Trac 项目的 InterWiki 链接。
任何类型的 Trac 链接都可以在一个 Trac 环境中编写,并实际引用另一个 Trac 环境中的资源。所需做的就是用另一个 Trac 环境的名称加上冒号作为 Trac 链接的前缀。其他 Trac 环境必须在 InterTrac 页面上注册。
InterTrac 链接相对于 InterWiki 链接的一个显著优势是,也可以使用 Trac 链接的简写形式,例如 {}
、r
、#
。例如,如果 T 被设置为 Trac 的别名,那么指向 Trac 工单的链接可以写为 #T234,指向 Trac 变更集的链接可以写为 [trac 1508]。有关完整详细信息,请参阅 InterTrac。
服务器相对链接
通常,能够链接到项目中没有内置 Trac 链接机制的对象(例如静态资源、newticket
、服务器上的共享 /register
页面等)会很有用。
要链接到项目内部的资源,可以使用项目根目录的绝对路径,或当前页面 URL 的相对链接(0.11 版更改)
[/newticket Create a new ticket] or [[//newticket|Create a new ticket]] [/ home] or [[/|home]]
要链接到服务器上的另一个位置(可能在项目外部但在同一主机上),请使用 //
前缀(0.11 版更改)
[//register Register Here] or [[//register|Register Here]]
TracLinks 中的空格引用
在 TracLinks 前缀之后,包含空格字符的目标应使用一对单引号或双引号括起来。例如:
- wiki:"空白约定"
- attachment:'the file.txt' 或
- attachment:"the file.txt"
- attachment:"the file.txt:ticket:123"
请注意,通过使用 WikiCreole 风格的链接,编写包含空格的链接非常自然
- [[The whitespace convention]]
- [[attachment:the file.txt]]
转义链接
为防止 TracLink 被解析,您可以通过在其前面加上 '!'(感叹号)来转义它。
!NoLinkHere. ![42] is not a link either.
显示
NoLinkHere。`[42]` 也不是链接。
参数化 Trac 链接
许多 Trac 资源有多种渲染方式,具体取决于一些额外参数。例如,Wiki 页面可以接受 version
或 format
参数,报告可以使用动态变量等。
Trac 链接可以支持任意数量的参数集,其编写方式与相应 URL 的参数相同。例如:
wiki:WikiStart#
ticket:1#1
[/newticket?component=module1 为 module1 创建工单]
[/newticket?summary=Add+short+description+here 创建一个带有空格 URL 的工单]
TracLinks 参考
以下各节详细描述了各种链接类型,以及链接高级用法的注意事项。
attachment: 链接
附件的链接语法如下:
- attachment:the_file.txt 创建指向当前页面附件 the_file.txt 的链接
- attachment:the_file.txt:wiki:MyPage 创建指向 MyPage wiki 页面附件 the_file.txt 的链接
- attachment:the_file.txt:ticket:753 创建指向工单 753 附件 the_file.txt 的链接
请注意,较旧的方式,即将文件名放在末尾,仍然受支持:attachment:ticket:753:the_file.txt,但不推荐使用。
如果您想直接链接到附件文件的内容而不是附件页面,只需使用 raw-attachment:
代替 attachment:
。
例如,这对于直接指向 HTML 文档很有用。请注意,对于此用例,您必须通过设置 [attachment] render_unsafe_content = enabled
来允许 Web 浏览器渲染内容,否则出于安全考虑,Trac 将强制文件作为附件下载。警告:仅在您 100% 确信可以信任能够附加文件的人员的环境中执行此操作,因为这会将您的网站暴露于 跨站脚本攻击。
另请参阅 #export:links。
comment: 链接
当您在给定工单内时,只需写入例如 comment:3 即可链接到第三个更改评论。可以使用以下任一语法从任何地方链接到特定工单的评论:
comment:3:ticket:123
ticket:123#comment:3
(请注意,不能写#123#!comment:3
!)
也可以使用以下任一语法链接到工单的描述:
comment:description
(在工单内)comment:description:ticket:123
ticket:123#comment:description
htdocs: 链接
使用 htdocs:path/to/file
引用 Trac 环境的 htdocs
目录中的文件,即 web 资源目录。
query: 链接
请参阅 TracQuery#UsingTracLinks 和 #ticket:links。
search: 链接
请参阅 TracSearch#SearchTracLinks
ticket: 链接
别名:
bug:
,issue:
除了显而易见的 ticket:id
形式外,还可以指定工单列表,甚至是工单范围,而不是 id
。这会生成指向包含此固定工单集的自定义查询视图的链接。
示例
ticket:5000-6000
ticket:1,150
timeline: 链接
可以通过指定 ISO:8601 格式的日期来创建指向时间线的链接。日期之后可以选择跟时间规范。时间被解释为 UTC 时间,但如果您不想计算 UTC 时间,则可以指定本地时间,后跟相对于 UTC 的时区偏移量。
示例
timeline:2008-01-29
timeline:2008-01-29T15:48
timeline:2008-01-29T15:48Z
timeline:2008-01-29T16:48+01
timeline:2008-01-29T16:48+0100
timeline:2008-01-29T16:48+01:00
wiki: 链接
请参阅上面的 WikiPageNames 和 TracLinks 中的空格引用。可以使用语法 WikiStart@1 创建指向特定页面修订版本的链接。
版本控制系统链接
值得注意的是,多版本库支持通过为版本化文件创建一种虚拟命名空间来实现,其中顶层文件夹对应于版本库名称。因此,在存在多个版本库的情况下,以下详细链接语法中的 /path 规范应以版本库名称开头。如果省略,则使用默认版本库。如果默认版本库的顶层文件夹与某个版本库同名,则链接会指向后者。始终可以通过完全限定来访问此类文件夹。默认版本库可以是命名版本库的别名,反之亦然,默认版本库可能有一个或多个别名,请咨询您的 Trac 管理员。
例如,source:/trunk/COPYING
指向默认版本库中的路径 /trunk/COPYING
,而 source:/projectA/trunk/COPYING
指向名为 projectA
的版本库中的路径 /trunk/COPYING
。如果 'projectA'
是默认版本库的别名,或者 ''
(默认版本库)是 'projectA'
的别名,则这可以是同一个文件。
source: 链接
别名:
browser:
,repos:
source:/some/path link
的默认行为是:如果路径指向目录,则在浏览器中打开该目录;如果路径指向文件,则显示文件的最新内容。
也可以直接链接到文件的特定修订版本,如下所示:
source:/some/file@123
- 链接到文件的修订版本 123source:/some/file@head
- 明确链接到文件的最新修订版本source:/some/file@named-branch
- 链接到named-branch
中指定文件的最新修订版本(如 Git 或 Mercurial 等 DVCS)
如果指定了修订版本,甚至可以链接到特定的行号
source:/some/file@123#L10
source:/tag/0.10@head#L10
source:/some/file@named-branch#L10
最后,还可以高亮显示任意一组行
source:/some/file@123:10-20,100,103#L99
- 高亮显示第 10 到 20 行,以及第 100 和 103 行,并定位到第 99 行- 或者不带版本号(仍需要
@
):source:/some/file@:10-20,100,103#L99
。当路径指向不再更改的源文件(如source:/tags/...
)时,可以省略版本号,否则最好指定您正在谈论的是文件的 哪个版本 的哪些行。
请注意,在存在多个版本库的情况下,版本库的名称会简单地整合到您为 source:
指定的路径中(例如 source:reponame/trunk/README
)。(自 0.12 起)
export: 链接
要强制下载版本库中的文件,而不是在浏览器中显示它,请使用 export
链接。有几种形式可用:
export:/some/file
- 获取指定文件的 HEAD 修订版本export:123:/some/file
- 获取指定文件的修订版本 123export:/some/file@123
- 获取指定文件的修订版本 123export:/some/file@named-branch
- 获取named-branch
中指定文件的最新修订版本(如 Git 或 Mercurial 等 DVCS)。
这对于显示带有正确样式表和图像的 XML 或 HTML 文档非常有用,以防它们已签入版本库。请注意,对于此用例,您必须通过设置 [browser] render_unsafe_content = enabled
来允许 Web 浏览器渲染内容,否则出于安全考虑,Trac 将强制文件作为附件下载。
如果路径是版本库中的目录而不是特定文件,则将使用源代码浏览器显示该目录(与 source:/some/dir
的结果相同)。
log: 链接
log:
链接用于显示修订版本范围。以最简单的形式,它可以链接到指定路径的最新修订版本,但它也支持显示任意一组修订版本。
log:/
- 从版本库根目录开始的最新修订版本log:/trunk/tools
-trunk/tools
中的最新修订版本log:/trunk/tools@10000
-trunk/tools
中从修订版本 10000 开始的修订版本log:@20788,20791:20795
- 列出修订版本 20788 以及从 20791 到 20795 的修订版本log:/trunk/tools@20788,20791:20795
- 列出修订版本 20788 以及影响给定路径的从 20791 到 20795 的修订版本log:/tools@named-branch
-tools
中从named-branch
中最新修订版本开始的修订版本(如 Git 或 Mercurial 等 DVCS)
修订版本范围也有简写形式
[20788,20791:20795]
[20788,20791:20795/trunk/tools]
r20791:20795
(但不能是r20788,20791:20795
也不能是r20791:20795/trunk
)
最后,请注意,在上述所有情况中,修订版本范围可以写为 x:y
或 x-y
。
多版本库链接
在存在多个版本库的情况下,版本库的名称应作为路径的第一部分指定
log:repos/branch
[20-40/repos]
r20/repos
另请参阅:WikiFormatting、TracWiki、WikiPageNames、InterTrac、InterWiki