~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/bugtracker.py

  • Committer: Vincent Ladeuil
  • Date: 2011-08-20 09:28:27 UTC
  • mfrom: (5050.78.2 2.2)
  • mto: (5609.48.8 2.3)
  • mto: This revision was merged to the branch mainline in revision 6090.
  • Revision ID: v.ladeuil+lp@free.fr-20110820092827-9dyakfslp0r3hb1k
Merge 2.2 into 2.3 (including fix for #614713, #609187 and #812928)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2007 Canonical Ltd
 
1
# Copyright (C) 2007-2010 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
 
from bzrlib import registry, help_topics
 
17
from bzrlib import registry
18
18
from bzrlib.lazy_import import lazy_import
19
19
lazy_import(globals(), """
20
20
from bzrlib import errors, urlutils
39
39
 
40
40
_bugs_help = \
41
41
"""When making a commit, metadata about bugs fixed by that change can be
42
 
recorded by using the --fixes option. For each bug marked as fixed, an
 
42
recorded by using the ``--fixes`` option. For each bug marked as fixed, an
43
43
entry is included in the 'bugs' revision property stating '<url> <status>'.
44
44
(The only ``status`` value currently supported is ``fixed.``)
45
45
 
46
 
The --fixes option allows you to specify a bug tracker and a bug identifier
47
 
rather than a full URL. This looks like
 
46
The ``--fixes`` option allows you to specify a bug tracker and a bug identifier
 
47
rather than a full URL. This looks like::
48
48
 
49
49
    bzr commit --fixes <tracker>:<id>
50
50
 
56
56
use this feature, you just need to know the tracker identifier to use.
57
57
These are the bugtrackers that are built in:
58
58
 
59
 
     URL                          | Abbreviation | Example
60
 
     https://bugs.launchpad.net/  | lp           | lp:12345
61
 
     http://bugs.debian.org/      | deb          | deb:12345
62
 
     http://bugzilla.gnome.org/   | gnome        | gnome:12345
 
59
  ============================ ============ ============
 
60
  URL                          Abbreviation Example
 
61
  ============================ ============ ============
 
62
  https://bugs.launchpad.net/  lp           lp:12345
 
63
  http://bugs.debian.org/      deb          deb:12345
 
64
  http://bugzilla.gnome.org/   gnome        gnome:12345
 
65
  ============================ ============ ============
63
66
 
64
67
For the bug trackers not listed above configuration is required.
65
68
Support for generating the URLs for any project using Bugzilla or Trac
82
85
 
83
86
Use ``bzr commit --fixes lp:2`` to record that this commit fixes bug 2.
84
87
 
85
 
bugzilla_<tracker_abbreviation>_url
86
 
-----------------------------------
 
88
bugzilla_<tracker>_url
 
89
----------------------
87
90
 
88
91
If present, the location of the Bugzilla bug tracker referred to by
89
 
<tracker_abbreviation>. This option can then be used together with ``bzr commit
 
92
<tracker>. This option can then be used together with ``bzr commit
90
93
--fixes`` to mark bugs in that tracker as being fixed by that commit. For
91
94
example::
92
95
 
93
 
    bugzilla_squid_url = http://www.squid-cache.org/bugs
 
96
    bugzilla_squid_url = http://bugs.squid-cache.org
94
97
 
95
98
would allow ``bzr commit --fixes squid:1234`` to mark Squid's bug 1234 as
96
99
fixed.
97
100
 
98
 
trac_<tracker_abbrevation>_url
99
 
------------------------------
 
101
trac_<tracker>_url
 
102
------------------
100
103
 
101
104
If present, the location of the Trac instance referred to by
102
 
<tracker_abbreviation>. This option can then be used together with ``bzr commit
 
105
<tracker>. This option can then be used together with ``bzr commit
103
106
--fixes`` to mark bugs in that tracker as being fixed by that commit. For
104
107
example::
105
108
 
108
111
would allow ``bzr commit --fixes twisted:1234`` to mark Twisted's bug 1234 as
109
112
fixed.
110
113
 
111
 
bugtracker_<tracker_abbrevation>_url
112
 
------------------------------------
 
114
bugtracker_<tracker>_url
 
115
------------------------
113
116
 
114
117
If present, the location of a generic bug tracker instance referred to by
115
 
<tracker_abbreviation>. The location must contain an ``{id}`` placeholder,
 
118
<tracker>. The location must contain an ``{id}`` placeholder,
116
119
which will be replaced by a specific bug ID. This option can then be used
117
120
together with ``bzr commit --fixes`` to mark bugs in that tracker as being
118
121
fixed by that commit. For example::
124
127
 
125
128
    bugtracker_cpan_url = http://rt.cpan.org/Public/Bug/Display.html?id={id}
126
129
 
127
 
for CPAN's RT bug tracker.
 
130
would allow ``bzr commit --fixes cpan:1234`` to mark bug 1234 in CPAN's
 
131
RT bug tracker as fixed, or::
 
132
 
 
133
    bugtracker_hudson_url = http://issues.hudson-ci.org/browse/{id}
 
134
 
 
135
would allow ``bzr commit --fixes hudson:HUDSON-1234`` to mark bug HUDSON-1234
 
136
in Hudson's JIRA bug tracker as fixed.
128
137
"""
129
138
 
130
139
 
225
234
    UniqueIntegerBugTracker('gnome', 'http://bugzilla.gnome.org/show_bug.cgi?id='))
226
235
 
227
236
 
228
 
class URLParametrizedIntegerBugTracker(IntegerBugTracker):
 
237
class URLParametrizedBugTracker(BugTracker):
229
238
    """A type of bug tracker that can be found on a variety of different sites,
230
239
    and thus needs to have the base URL configured.
231
240
 
232
241
    Looks for a config setting in the form '<type_name>_<abbreviation>_url'.
233
 
    `type_name` is the name of the type of tracker (e.g. 'bugzilla' or 'trac')
234
 
    and `abbreviation` is a short name for the particular instance (e.g.
235
 
    'squid' or 'apache').
 
242
    `type_name` is the name of the type of tracker and `abbreviation`
 
243
    is a short name for the particular instance.
236
244
    """
237
245
 
238
246
    def get(self, abbreviation, branch):
253
261
        return urlutils.join(self._base_url, self._bug_area) + str(bug_id)
254
262
 
255
263
 
 
264
class URLParametrizedIntegerBugTracker(IntegerBugTracker, URLParametrizedBugTracker):
 
265
    """A type of bug tracker that can be found on a variety of different sites,
 
266
    and thus needs to have the base URL configured, but only allows integer bug IDs.
 
267
 
 
268
    Looks for a config setting in the form '<type_name>_<abbreviation>_url'.
 
269
    `type_name` is the name of the type of tracker (e.g. 'bugzilla' or 'trac')
 
270
    and `abbreviation` is a short name for the particular instance (e.g.
 
271
    'squid' or 'apache').
 
272
    """
 
273
 
256
274
tracker_registry.register(
257
275
    'trac', URLParametrizedIntegerBugTracker('trac', 'ticket/'))
258
276
 
261
279
    URLParametrizedIntegerBugTracker('bugzilla', 'show_bug.cgi?id='))
262
280
 
263
281
 
264
 
class GenericBugTracker(URLParametrizedIntegerBugTracker):
 
282
class GenericBugTracker(URLParametrizedBugTracker):
265
283
    """Generic bug tracker specified by an URL template."""
266
284
 
267
285
    def __init__(self):