给trac的ticket添加提交时字段验证
我们在项目管理中使用了trac系统,并且对于ticket添加了以下自定义字段并且对它们的格式都有一定要求:
- svn版本号:格式为 r1234。多个版本号之间使用半角逗号隔开。如:r1234,r5678
- 完成日期:yyyy-mm-dd的格式
- 开发周期:表示开发功能所耗费的时间,格式为数字或者一位小数后面跟上单位h或者d。
- 测试版本号:v开头的标准版本号,如:v2.3.1.5098
但是在实际操作中,很多开发人员不去阅读规范文档或者压根记不起来格式规范,随意填写,很是苦恼。
今天就先试图给完成日期添加一个日期插件让开发人员直接使用日期对话框来选择日期,同时发现它已经自带了格式验证,然后在寻找这个插件的同时发现了一个好用的格式验证插件https://trac-hacks.org/wiki/TracTicketValidatorPlugin。
如何安装此插件就不在这里描述,直奔主题看看如何实现配置trac使插件生效。
- 首先要在trac的管理-插件里勾选tracticketvalidator 0.1里的所有组件(实际上只有一个TicketsValidator)。
- 手动打开在trac.ini,修改[ticketvalidator]段里的内容。
- 添加以下配置,注意的是validates项指定了要对哪些字段进行验证,这些字段名都是添加的Custom Fields的名称。每一个字段都配置一个rule和tip。rule配置项是一个正则表达式,是插件用来对修改ticket时提交的信息进行验证的(插件源码里是这样写的?re.match(rule, fieldValue)?)。而tip是在验证出错之后,给用户的警告信息里显示的内容。
svn.rule = ^(r[0-9]+)(,r[0-9]+)*$
svn.tip = svn号请使用r开头的版本号,并且以半角逗号分割,例:r1234,r5678
needtime.rule = ^[0-9]+(.[0-9])?[h|d]$
needtime.tip = 完成时间格式:以整数或一位小数开头,以h或d结束(分别表示小时和天).示例:3.1d 或 4h
testversion.rule = ^v[0-9]+(.[0-9]+){4}$
testversion.tip = 版本号格式: vnn.nn.nn.nn, 例v2.3.1.5098
validates = svn,needtime,testversion
然后重启http服务器,配置就生效了,我们尝试以错误的格式修改ticket:
点击“提交变更”后显示错误警告,以及在页面顶部显示出配置的错误提示。