2012-12-11 54 views
2

我使用trac作为我的问题跟踪系统和svn一起使用。最近我发现提交消息也可以使用分布式CommitTicketUpdater(出现在tracopt中)从trac 0.12(我使用的版本)开始修改票证(添加注释,关闭它们)。让CommitTicketUpdater在svn的trac中工作

这是安装在Ubuntu 12.04上。我的提交后代码非常简单:

REV="$2" 
/usr/bin/trac-admin /var/trac/proj changeset added robo $REV 

其中'robo'是我的存储库的名称,如trac中所定义。这实际上工作得很好;变更集以及在svn commit期间写入的提交消息一起出现在trac中。问题不在这里。

插件(http://trac.edgewall.org/wiki/CommitTicketUpdater)应该在提交信息中查找诸如“请参阅#22”或“修复#23”等字符串,并更新/关闭相关故障单。这在语法上非常灵活。我已经从admin web选项卡启用了插件(和应用的更改),甚至尝试升级(尽管不需要升级)。

我已经在我的trac.ini文件,以便配置[票]下的插件:

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服务器进行身份验证......但还有其他方法可以完成吗?

所以我已经与根,并且它的工作。所以这是关于linux权限的。虽然,我的用户属于'svn'组,它拥有对我的项目文件夹的全部写入权限。但这并不足够,但是,以作为的工作。

我的下一个方向是将自己(和任何其他提交者)添加到sudoers中,并且没有该钩子操作的密码。我已经添加了'hansz debi = NOPASSWD:/ usr/bin/trac-admin'(其中debi是服务器名称,hansz是我的用户名),并修改了提交后的行:

sudo -u root /usr/bin/trac-admin /var/trac/proj changeset added robo $REV 

这并没有帮助。作为根作品,并作为我自己 - 不是。

这是我停止尝试,并寻求你的帮助。

+0

为了正确:您关于CommitTicketUpdater功能外观的初始断言是错误的。它已经存在很久了 - 也就是我已经在0.10dev中看到它了。 – hasienda

回答

2

CommitTicketUpdater需要变更集的作者进行权限检查(并且无论如何您都禁用了权限检查)。它不使用UNIX用户进行任何操作。

给予TRAC_ADMINanonymous也不会做任何事情,因为身份验证的用户继承authenticated,不anonymous权限。

以root用户身份运行trac-admin $ENV changeset added时更新故障单工作的事实确实指向(文件系统)权限问题。为什么它不适用于sudo有点神秘。请注意,运行trac-admin的用户需要对所有Trac环境的读写权限。

是否使用存储库类型svn作为存储库或svn-direct?在后一种情况下,即使您没有写入环境的权限,变更集也会出现在Trac中。

我建议把你的日志级别改为DEBUG,看看日志是否告诉你任何东西。我还建议加入trac用户邮件列表并在那里询问。您将接触到更多熟悉Trac设置的人员。此外,SO是提出问题的绝佳平台,但它不适合调试安装。

+0

你好雷米,我感谢你的回答。删除'trac.ini'文件以某种方式解决了问题。我不知道为什么,因为旧的配置文件不见了。无论如何,我会考虑加入邮件列表以进一步调试问题。 – Bach