如何让Trac(CommitTicketUpdater)在提交时用Mercurial关闭|解决工单?

4 投票
1 回答
1246 浏览
提问于 2025-04-16 20:37

我有个简单的问题: 一切看起来都正常,除了Trac的工单在提交后没有状态更新。变更集的备注会添加到工单上,但工单本身并没有被解决


我刚刚完成了这个设置:

  • Windows 7 x64
  • IIS 7.5
  • isapi-wsgi 0.4.2
  • Python27 32
  • Mercurial 1.8
  • Trac 0.12

我已经让Trac运行起来,并且和代码库连接上了(我可以查看变更集,浏览等)
我使用AD进行身份验证,所以我的用户名都是这种格式:MYDOMAIN\bbarker

按照说明设置了CommitTicketUpdater,具体可以参考这里

当我提交新代码并链接到一个工单时:

$ hg commit -m "[fixes #1] - blah blah blah..."
$ hg push

Trac会把一个变更集添加到工单上:

5秒前由 MYDOMAIN\bbarker 修改
在 [29283792837498273948729374]:
[fixes #1] - blah blah blah...

(上面的#1是指向工单的链接)
但是工单的状态从来没有更新,无论我尝试什么方法。
我还需要做什么才能让这个功能正常工作吗?

以下是我的设置的一些片段


trac.ini

[components]
tracext.hg.* = enabled
tracopt.ticket.commit_updater.* = enabled
tracopt.ticket.commit_updater.committicketreferencemacro = enabled
tracopt.ticket.commit_updater.committicketupdater = enabled

[hg]
node_format = short
show_rev = yes

[ticket]
...
commit_ticket_update_envelope = []
commit_ticket_update_commands.close =
commit_ticket_update_commands.refs = <ALL>
commit_ticket_update_check_perms = true
commit_ticket_update_notify = true

[trac]
...
repository_dir = C:\repositories\project
repository_sync_per_request = default
repository_type = hg

.hg/hgrc

[hooks]
; 如果在Trac插件目录中安装了mercurial插件
commit = python:C:\Trac\hooks.py:add_changesets
changegroup = python:C:\Trac\hooks.py:add_changesets

[trac]
env = C:\Trac\tracproject
trac-admin = C:\Python27\Scripts\trac-admin.exe

1 个回答

4

呼!终于搞定了...

我之前完全按照Trac网站上的指示来操作,结果出错了。
嗯,算是吧。

我基本上是把网站上的内容复制到了我的trac.ini文件里:

commit_ticket_update_envelope = []
commit_ticket_update_commands.close =
commit_ticket_update_commands.refs =
commit_ticket_update_check_perms = true
commit_ticket_update_notify = true

看下面的内容时,我以为把commit_ticket_update_commands.close留空就会用默认设置。
其实这样会把默认值覆盖成空值,这就是为什么我的命令都没用,但我的提交信息还是被加到了对应的票据上。

所以简单地删除或者注释掉那一行就解决了我的问题。
(也就是没有覆盖默认值)

commit_ticket_update_envelope = []
;commit_ticket_update_commands.close =
commit_ticket_update_commands.refs =
commit_ticket_update_check_perms = true
commit_ticket_update_notify = true

经过一些调试、测试和网上查找后,我发现我只需要重新看看Trac提供的说明。现在回头看,这点真是显而易见 :)

撰写回答