我们有一个工作流程,其中所有传入的错误都标记为已分配给其产品的默认受让人,然后它们一直处于已分配状态,直到受让人解决。
那时,他们要么从 RESOLVED 回到 ASSIGNED(例如尚未完成),要么在他们的报告者满意后转为 CLOSED。
当第一个受让人标记它已解决时,我们如何自动将错误的受让人更改为报告者?
我们有一个工作流程,其中所有传入的错误都标记为已分配给其产品的默认受让人,然后它们一直处于已分配状态,直到受让人解决。
那时,他们要么从 RESOLVED 回到 ASSIGNED(例如尚未完成),要么在他们的报告者满意后转为 CLOSED。
当第一个受让人标记它已解决时,我们如何自动将错误的受让人更改为报告者?
实际上,使用 Bugzilla 钩子很容易做到这一点。扩展代码需要放在哪里取决于您使用的版本,因为这是一项正在快速发展的功能。
在当前版本的 Bugzilla 3.6.1 中,如果您想调用您的扩展程序Local
,您将创建一个文件extensions/Local/Extension.pm
.
http://www.bugzilla.org/docs/3.6/en/html/api/Bugzilla/Extension.html是整个扩展系统的概述。
您要为此使用的钩子是bug_end_of_update
,它Bugzilla/Bug.pm
在对象更改之后但在将其写入数据库之前被调用。
对于您正在做的事情,您可能应该检查一下changes
是否bug_status
发生了变化。如果是这样,请更新bug
以将所有者设置为记者,并将该更改添加到changes
.
Bugzilla 的主要开发人员通常可以在 irc.mozilla.org 上的#mozwebtools 上找到,如果我的回答不足以让您滚动,请加入并与他们讨论细节。
这将起作用:(CustomExtension.pm)
package Bugzilla::Extension::CustomExtension;
use strict;
use base qw(Bugzilla::Extension);
our $VERSION = '1.0';
use constant NAME => 'CustomExtension';
sub object_end_of_set_all {
my ($self, $args) = @_;
my $object = $args->{'object'};
if ($object->isa('Bugzilla::Bug')) {
if ($object->{'bug_status'} eq 'RESOLVED') { # Bug has been RESOLVED
$object->{'assigned_to'} = $object->{'reporter_id'}; # re-assign to Reporter
}
}
}
__PACKAGE__->NAME;