comparison hgext/bugzilla.py @ 7504:d8cd79fbed3c

Revise Bugzilla module comments into extension help. Revise the comments detailing module usage at the start of the Bugzilla extension into extension help text. Expand the detail given on extension settings, in an attempt to permit the user to configure successfully without having to study the extension code. Show a sample configuration as well.
author Jim Hague <jim.hague@acm.org>
date Wed, 10 Dec 2008 16:29:53 +0000
parents 518afef5e350
children 6c89dd0a7797
comparison
equal deleted inserted replaced
7503:09508f8e2fa4 7504:d8cd79fbed3c
2 # 2 #
3 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com> 3 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
4 # 4 #
5 # This software may be used and distributed according to the terms 5 # This software may be used and distributed according to the terms
6 # of the GNU General Public License, incorporated herein by reference. 6 # of the GNU General Public License, incorporated herein by reference.
7 # 7
8 # hook extension to update comments of bugzilla bugs when changesets 8 '''Bugzilla integration
9 # that refer to bugs by id are seen. this hook does not change bug 9
10 # status, only comments. 10 This hook extension adds comments on bugs in Bugzilla when changesets
11 # 11 that refer to bugs by Bugzilla ID are seen. The hook does not change bug
12 # to configure, add items to '[bugzilla]' section of hgrc. 12 status.
13 # 13
14 # to use, configure bugzilla extension and enable like this: 14 The hook updates the Bugzilla database directly. Only Bugzilla installations
15 # 15 using MySQL are supported.
16 # [extensions] 16
17 # hgext.bugzilla = 17 The hook relies on a Bugzilla script to send bug change notification emails.
18 # 18 That script changes between Bugzilla versions; the 'processmail' script used
19 # [hooks] 19 prior to 2.18 is replaced in 2.18 and subsequent versions by
20 # # run bugzilla hook on every change pulled or pushed in here 20 'config/sendbugmail.pl'. Note that these will be run by Mercurial as the user
21 # incoming.bugzilla = python:hgext.bugzilla.hook 21 pushing the change; you will need to ensure the Bugzilla install file
22 # 22 permissions are set appropriately.
23 # config items: 23
24 # 24 Configuring the extension:
25 # section name is 'bugzilla'. 25
26 # [bugzilla] 26 [bugzilla]
27 # 27 host Hostname of the MySQL server holding the Bugzilla database.
28 # REQUIRED: 28 db Name of the Bugzilla database in MySQL. Default 'bugs'.
29 # host = bugzilla # mysql server where bugzilla database lives 29 user Username to use to access MySQL server. Default 'bugs'.
30 # password = ** # user's password 30 password Password to use to access MySQL server.
31 # version = 2.16 # version of bugzilla installed 31 timeout Database connection timeout (seconds). Default 5.
32 # 32 version Bugzilla version. Specify '3.0' for Bugzilla versions from
33 # OPTIONAL: 33 3.0 onwards, and '2.16' for versions prior to 3.0.
34 # bzuser = ... # fallback bugzilla user name to record comments with 34 bzuser Fallback Bugzilla user name to record comments with, if
35 # db = bugs # database to connect to 35 changeset committer cannot be found as a Bugzilla user.
36 # notify = ... # command to run to get bugzilla to send mail 36 notify The command to run to get Bugzilla to send bug change
37 # regexp = ... # regexp to match bug ids (must contain one "()" group) 37 notification emails. Substitutes one string parameter,
38 # strip = 0 # number of slashes to strip for url paths 38 the bug ID. Default 'cd /var/www/html/bugzilla && '
39 # style = ... # style file to use when formatting comments 39 './processmail %s nobody@nowhere.com'.
40 # template = ... # template to use when formatting comments 40 regexp Regular expression to match bug IDs in changeset commit message.
41 # timeout = 5 # database connection timeout (seconds) 41 Must contain one "()" group. The default expression matches
42 # user = bugs # user to connect to database as 42 'Bug 1234', 'Bug no. 1234', 'Bug number 1234',
43 # [web] 43 'Bugs 1234,5678', 'Bug 1234 and 5678' and variations thereof.
44 # baseurl = http://hgserver/... # root of hg web site for browsing commits 44 Matching is case insensitive.
45 # 45 style The style file to use when formatting comments.
46 # if hg committer names are not same as bugzilla user names, use 46 template Template to use when formatting comments. Overrides
47 # "usermap" feature to map from committer email to bugzilla user name. 47 style if specified. In addition to the usual Mercurial
48 # usermap can be in hgrc or separate config file. 48 keywords, the extension specifies:
49 # 49 {bug} The Bugzilla bug ID.
50 # [bugzilla] 50 {root} The full pathname of the Mercurial repository.
51 # usermap = filename # cfg file with "committer"="bugzilla user" info 51 {webroot} Stripped pathname of the Mercurial repository.
52 # [usermap] 52 {hgweb} Base URL for browsing Mercurial repositories.
53 # committer_email = bugzilla_user_name 53 Default 'changeset {node|short} in repo {root} refers '
54 'to bug {bug}.\\ndetails:\\n\\t{desc|tabindent}'
55 strip The number of slashes to strip from the front of {root}
56 to produce {webroot}. Default 0.
57 usermap Path of file containing Mercurial committer ID to Bugzilla user
58 ID mappings. If specified, the file should contain one mapping
59 per line, "committer"="Bugzilla user". See also the
60 [usermap] section.
61
62 [usermap]
63 Any entries in this section specify mappings of Mercurial committer ID
64 to Bugzilla user ID. See also [bugzilla].usermap.
65 "committer"="Bugzilla user"
66
67 [web]
68 baseurl Base URL for browsing Mercurial repositories. Reference from
69 templates as {hgweb}.
70
71 Activating the extension:
72
73 [extensions]
74 hgext.bugzilla =
75
76 [hooks]
77 # run bugzilla hook on every change pulled or pushed in here
78 incoming.bugzilla = python:hgext.bugzilla.hook
79
80 Example configuration:
81
82 This example configuration is for a collection of Mercurial repositories
83 in /var/local/hg/repos/ used with a local Bugzilla 3.2 installation in
84 /opt/bugzilla-3.2.
85
86 [bugzilla]
87 host=localhost
88 password=XYZZY
89 version=3.0
90 bzuser=unknown@domain.com
91 notify=cd /opt/bugzilla-3.2 && perl -T contrib/sendbugmail.pl %%s bugmail@domain.com
92 template=Changeset {node|short} in {root|basename}.\\n{hgweb}/{webroot}/rev/{node|short}\\n\\n{desc}\\n
93 strip=5
94
95 [web]
96 baseurl=http://dev.domain.com/hg
97
98 [usermap]
99 user@emaildomain.com=user.name@bugzilladomain.com
100
101 Commits add a comment to the Bugzilla bug record of the form:
102
103 Changeset 3b16791d6642 in repository-name.
104 http://dev.domain.com/hg/repository-name/rev/3b16791d6642
105
106 Changeset commit comment. Bug 1234.
107 '''
54 108
55 from mercurial.i18n import _ 109 from mercurial.i18n import _
56 from mercurial.node import short 110 from mercurial.node import short
57 from mercurial import cmdutil, templater, util 111 from mercurial import cmdutil, templater, util
58 import re, time 112 import re, time