bugzilla: allow change comment to mark bugs fixed
Add a second regular expression used when scanning change comments.
Bugs matched by this new regular expression have the bug comments and
optionally hours updated as with the first regular expression, but they
are also marked as fixed.
The bug status and resolution to set to mark a bug as fixed can be
configured. By default status is set to RESOLVED and resolution to
FIXED, the default Bugzilla settings.
For example, a change comment containing 'Fixes 1234 h1.5' will be
added to bug 1234, the bug will have its working time increased by
1.65 hours, and the bug will be marked RESOLVED/FIXED.
Change comments may contain both bug update and fix instructions. If
the same bug ID occurs in both, the last instruction found takes
precedence.
The patch adds new bug states 'bug_status' and 'resolution' and actions
to update them to the XMLRPC and XMLRPC/email access methods. XMLRPC does
not support marking bugs as fixed when used with Bugzilla versions prior
to 4.0. When used with an earlier Bugzilla version, a warning is issued
and only comment and hours updated.
$ cat > engine.py << EOF
>
> from mercurial import templater
>
> class mytemplater(object):
> def __init__(self, loader, filters, defaults):
> self.loader = loader
>
> def process(self, t, map):
> tmpl = self.loader(t)
> for k, v in map.iteritems():
> if k in ('templ', 'ctx', 'repo', 'revcache', 'cache'):
> continue
> if hasattr(v, '__call__'):
> v = v(**map)
> v = templater.stringify(v)
> tmpl = tmpl.replace('{{%s}}' % k, v)
> yield tmpl
>
> templater.engines['my'] = mytemplater
> EOF
$ hg init test
$ echo '[extensions]' > test/.hg/hgrc
$ echo "engine = `pwd`/engine.py" >> test/.hg/hgrc
$ cd test
$ cat > mymap << EOF
> changeset = my:changeset.txt
> EOF
$ cat > changeset.txt << EOF
> {{rev}} {{node}} {{author}}
> EOF
$ hg ci -Ama
adding changeset.txt
adding mymap
$ hg log --style=./mymap
0 97e5f848f0936960273bbf75be6388cd0350a32b test