【问题标题】:Letting CommitTicketUpdater work in trac with svn使用 svn 让 CommitTicketUpdater 在 trac 中工作
【发布时间】:2012-12-12 05:04:00
【问题描述】:

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

这是安装在 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 身份提交工作,作为我自己 - 不是。

这是我停止尝试的地方,并寻求您的帮助。

【问题讨论】:

  • 为了正确起见:您最初关于 CommitTicketUpdater 功能外观的断言是错误的。它存在的时间要长得多 - 即我已经在 0.10dev 中看到它。

标签: svn trac post-commit


【解决方案1】:

CommitTicketUpdater 将变更集的作者用于权限检查(并且您无论如何都禁用了权限检查)。它不使用 UNIX 用户做任何事情。

TRAC_ADMIN 赋予anonymous 也不会做任何事情,因为经过身份验证的用户继承了authenticated 的权限,而不是anonymous

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

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

我建议将您的日志记录级别提高到 DEBUG 并查看日志是否告诉您任何信息。我还建议加入 trac-users 邮件列表并在那里询问。您将接触到更多熟悉 Trac 设置的人。此外,SO 是一个很好的提问平台,但它并不适合调试安装。

【讨论】:

  • 您好雷米,感谢您的回答。删除trac.ini 文件以某种方式解决了该问题。我不知道为什么,因为旧的配置文件不见了。无论哪种方式,我都会考虑加入邮件列表以解决进一步的调试问题。
猜你喜欢
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多