5.25. 与 BUG 跟踪系统/问题跟踪集成

在软件开发中,修改依赖于一个bug或问题编号是很常见的。bug跟踪系统的用户(问题跟踪者)喜欢在问题跟踪中将Subversion的修改与一个指定编号联系起来。因此很多问题跟踪者提供了一个预提交钩子脚本,分析日志,查找提交相关的bug编号。这稍微有些不可靠,因为它依赖于用户写完全的日志,预提交钩子才能正确分析。

TortoiseSVN可以在两个方面帮助用户:

  1. 当用户输入日志信息时,一个定义良好,包含问题编号,与此提交相关的的行,会自动增加。这样减少了用户输入的问题编号不能比bug跟踪系统正确分析的风险。

    或者TortoiseSVN高亮显示日志消息中能被问题跟踪者识别的部分。这样,用户就知道日志消息能被正确解析。

  2. 当用户浏览日志信息,TortoiseSVN在日志信息中创建指向每个bug标示的链接,它可以用浏览器打开。

你可以在TortoiseSVN中集成bug跟踪工具。为了使用这个特性,你要定义一些以bugtraq:开始的属性,它们只能在文件夹上设置 (第 5.15 节 “项目设置”)。

有两个方法集成TortoiseSVN 和问题跟踪。一个基于简单字符串,另一个基于正则表达式。它们的用法是:

bugtraq:url

将这个属性设置为你的bug跟踪工具的地址。它必须编码并且包含%BUGID%%BUGID%用你输入的问题编号替换。它允许TortoiseSVN 在日志对话框中显示链接,于是你可以在察看版本日志时直接进入bug跟踪工具。你可以不提供这个属性,但是这样TortoiseSVN就不能显示链接了,只能显示问题编号。例如TortoiseSVN 使用http://issues.tortoisesvn.net/?do=details&id=%BUGID%

bugtraq:warnifnoissue

如果你想TortoiseSVN给出空问题编号的警告,就设置为 。有效取值是 真/假如果没有定义,那么假定为

在最简单的方法里,TortoiseSVN为用户显示了一个单独的bug ID输入字段,然后后面预计会追加一个用户输入日志信息的行。

bugtraq:message

这个属性将问题追踪系统激活为输入框模式。 如果设置了这个属性,在拟提交时,TortoiseSVN会提示你输入问题单号码。它通常会在日志信息后面添加一行。必须包含%BUGID%,在提交时会被替换为问题单号。这确保了你的提交日志包含了问题单号,保证了单号可以被问题追踪工具解析,从而与提交关联。例如TortoiseSVN项目使用Issue : %BUGID%,但是这依赖于你的工具。

bugtraq:append

这个属性定义了bug-ID。是追加到(true)日志信息的末尾,还是插入到(false)日志信息的开始。有效的值包括true/false如果没有定义,默认是true ,所以现存的项目不会被打破。

bugtraq:label

是TortoiseSVN的提交对话框中用来输入问题单号码的输入项,如果没有设置,将会显示Bug-ID / Issue-Nr:,要记住窗口不会为适应标签而改变大小,所以请保持标签的小于20-25个字符。

bugtraq:number

如果设置为true,问题单号文本框只能输入数字,一个例外是逗号,所以你可以使用逗号分割输入的多个号码。合法的值包括true/false 如果没有设置,默认是true

在使用正则表达式的方法中,TortoiseSVN不会显示一个单独的输入框,而是标记用户输入的日志信息,认为这些标志可以被问题追踪工具识别。这是在用户编写日志信息的时候完成的,这也意味着bug ID可以出现在日志信息的任何位置!这种方法非常灵活,也是TortoiseSVN项目本身使用的方法。

如果同时设置了bugtraq:messagebugtraq:logregex属性,日志正则表达式会优先使用。

[提示]提示

即使你的问题追踪工具没有pre-commit钩子来解析日志信息,你仍然可以使用这个功能将日志信息中的问题单转化为链接!

一些 tsvn: 属性需要 true/false 值。它也理解 yestrue 的同义词,nofalse的同义词。

[重要]设置文件夹的属性

为了系统能够工作,这个属性必须设置到文件夹上。当你提交文件或文件夹,属性会从文件夹上读取。如果没有发现属性,TortoiseSVN会向上级查找,直到发现一个没有版本控制的文件夹或根目录(例如C:\)才会停止,如果你能够确定每个用户只从trunk/检出,而不是其他目录,你可以直接在trunk/上使用这个属性,而不必每个子目录都设置。如果你不能确定,你必须为每个子目录设置这些属性。一个深级目录的设置会覆盖高级目录(离trunk/更近的)。

对于tsvn:属性,你只能对于所有子目录使用递归检查框设置属性,不能设置文件的属性。

问题追踪集成并没有限制在TortoiseSVN,可以用于所有的Subversion客户端,更多信息可以看Issuetracker Integration Specification