我使用 trac 作为我的问题跟踪系统,以及 svn。最近我发现,从 trac 0.12(我使用的版本)开始,提交消息也可以使用分布式 CommitTicketUpdater(出现在 tracopt 中)修改票证(添加评论,关闭它们)。
这是安装在 ubuntu 12.04 上的。我的提交后代码就这么简单:
REV="$2"
/usr/bin/trac-admin /var/trac/proj changeset added robo $REV
其中 'robo' 是我的存储库的名称,如 trac 中所定义。这实际上效果很好;变更集与 svn 提交期间写入的提交消息一起出现在 trac 中。问题不在这里。
插件 (http://trac.edgewall.org/wiki/CommitTicketUpdater) 应在提交消息中查找诸如“see #22”或“fix #23”之类的字符串,并更新/关闭相关票证。这在语法上非常灵活。我已经从管理 web 选项卡启用了插件(并应用了更改),甚至尝试升级(虽然,不需要升级)。
我已经在我的 trac.ini 文件中的 [ticket] 下配置了插件,因此:
commit_ticket_update_envelope =
commit_ticket_update_commands.close = close closed closes fix fixed fixes
commit_ticket_update_commands.refs = <ALL>
commit_ticket_update_check_perms = false
commit_ticket_update_notify = false
但我尝试了许多其他变体,包括评论其中一些行。我也尝试将 [] 放入信封选项中,但这并没有改变。
底线是,虽然添加了变更集,但工单中没有任何变化。
我在想这可能是一个权限问题。因此,我已将 TRAC_ADMIN 添加到匿名中,但这并没有改变任何东西。我意识到我不确定 trac 如何处理 linux 用户;他们不会以任何方式对 Web 服务器进行身份验证......但是还能做到这一点吗?
所以我已经用root提交了,它奏效了。所以这都是关于linux权限的。虽然,我的用户属于“svn”组,但在我的项目文件夹中都具有写入权限。但是,这还不够,使用 root 提交确实有效。
我的下一个方向是将我自己(和任何其他提交者)添加到 sudoers 中,并且没有操作该钩子的密码。
这是这样做的:我添加了 'hansz debi = NOPASSWD: /usr/bin/trac-admin' (其中 debi 是服务器名称,hansz 是我的用户名),并将提交后行修改为:
sudo -u root /usr/bin/trac-admin /var/trac/proj changeset added robo $REV
这也没有帮助。以 root 身份提交工作,作为我自己 - 不是。
这是我停止尝试的地方,并寻求您的帮助。