The `fixes' attribute does show in `bzr log'.
[emacs.git] / admin / notes / bugtracker
blob859d99b03bd4478bf84ec1c06add9c1f8a34795f
1 NOTES ON THE EMACS BUG TRACKER   -*- outline -*-
3 The Emacs Bug Tracker can be found at http://debbugs.gnu.org/
5 * Quick-start guide
7 This is 95% of all you will ever need to know.
9 ** How do I report a bug?
10 Use M-x report-emacs-bug, or send mail to bug-gnu-emacs@gnu.org.
11 If you want to Cc someone, use an "X-Debbugs-CC" header instead.
13 ** How do I comment on a bug?
14 Reply to a mail on the bug-gnu-emacs list in the normal way.
15 Or send a mail to 123@debbugs.gnu.org.
17 If the bug is old and closed, you may have to unarchive it first.
18 Send a mail to control@debbugs.gnu.org with
19 unarchive 123
20 on the first line of the body.
22 ** How do I close a bug?
23 Send a mail to 123-done@debbugs.gnu.org.  In the body, explain
24 why the bug is being closed.
26 ** How do I set bug meta-data?
27 By mailing commands to control@debbugs.gnu.org.  Place commands at the
28 start of the message body, one per line.
30 severity 123 serious|important|normal|minor|wishlist
31 tags 123 moreinfo|unreproducible|wontfix|patch
33 * More detailed information
35 For a list of all bugs, see http://debbugs.gnu.org/db/pa/lemacs.html
36 This is a static page, updated once a day.  There is also a dynamic
37 list, generated on request. This accepts various options, eg to see
38 the most recent bugs:
40 http://debbugs.gnu.org/cgi/pkgreport.cgi?newest=100
42 Or follow the links on the front page http://debbugs.gnu.org .
44 ** How do I report a bug in Emacs now?
45 The same way as you always did.  Send mail to bug-gnu-emacs@gnu.org,
46 or use M-x report-emacs-bug.
48 The only differences are:
50 i) Your report will be assigned a number and generate an automatic reply.
52 ii) Optionally, you can set some database parameters when you first
53 report a bug (see "Setting bug parameters" below).
55 iii) If you want to CC: someone, use X-Debbugs-CC: (this is important;
56 see below).
58 Once your report is filed and assigned a number, it is sent out to the
59 bug mailing list.  In some cases, it may be appropriate to just file a
60 bug, without sending out a copy.  To do this, send mail to
61 quiet@debbugs.gnu.org.
63 ** How do I reply to an existing bug report?
64 Reply to 123@debbugs.gnu.org, replacing 123 with the number
65 of the bug you are interested in.  NB this only sends mail to the
66 bug-list, it does NOT (?) send a CC to the original bug submitter.
67 So you need to explicitly CC him/her (and anyone else you like).
69 (Many people think the submitter SHOULD be automatically subscribed
70 to subsequent discussion, but this does not seem to be implemented.
71 See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=37078)
72 See also http://debbugs.gnu.org/5439
74 Do NOT send a separate copy to the bug list address, since this may
75 generate a new report.  The only time to send mail to the bug list
76 address is to create a new report.
78 Gnus users can add the following to message-dont-reply-to-names;
79 similarly with Rmail and rmail-dont-reply-to-names:
81 "\\(emacs-pretest-bug\\|bug-gnu-emacs\\|bug-\\(e\\|gnu\\)macs\\)@gnu\\.org\\|\
82 \\(submit\\|control\\|owner\\)@debbugs\\.gnu\\.org"
84 The "owner@debbugs.gnu.org" entry is there because it appears in the
85 "Resent-To" header.  For a long time Rmail erroneously included such
86 headers in replies.  If you correspond with an Rmail user on a bug,
87 these addresses may end up in the Cc.  Mailing to them does nothing
88 but create duplicates and errors.  (It is possible you might want to
89 have a dialog with the owner address, outside of normal bug
90 reporting.)
92 ** When reporting a bug, to send a Cc to another address
93 (e.g. bug-cc-mode@gnu.org), do NOT just use a Cc: header.
94 Instead, use "X-Debbugs-CC:".  This ensures the Cc address will get a
95 mail with the bug report number in.  If you do not do this, each reply
96 in the subsequent discussion will end up creating a new bug.
97 This is annoying.
99 (So annoying that a form of message-id tracking has been implemented
100 to hopefully stop this happening, but it is still better to use X-Debbugs-CC.)
102 If a new report contains X-Debbugs-CC in the input, this is
103 converted to a real Cc header in the output.  (See Bug#1720).
104 It is also merged into the Resent-CC header (see below).
106 ** How does Debbugs send out mails?
108 The mails are sent out to the bug list by being resent.  The From:
109 header is unchanged.  In new reports only (at present), the To:
110 address is altered as follows.  Any "bug-gnu-emacs",
111 "emacs-pretest-bug", or "submit@debbugs" address is replaced by
112 123@debbugs in the mail that gets sent out.  (This also applies to any
113 Cc: header, though you should be using X-Debbugs-CC instead in new
114 reports).  The original header is stored as X-Debbugs-Original-To, if
115 it was changed.  Any X-Debbugs-CC is merged into the Cc.
117 Mails arriving at the bug list have the following Resent-* headers:
119 Resent-From: person who submitted the bug
120 Resent-To:   owner@debbugs.gnu.org
121 Resent-CC:   maintainer email address, plus any X-Debbugs-CC: entries
123 The "maintainer email address" is "bug-gnu-emacs@gnu.org" in most cases.
125 ** To not get acknowledgement mail from the tracker,
126 add an "X-Debbugs-No-Ack:" header (with any value).  If you use Gnus,
127 you can add an element to gnus-posting-styles to do this automatically, eg:
129 ("gnu-emacs\\(-pretest\\)?-bug"
130    ("X-Debbugs-No-Ack" "yes"))
132 (adjust the regexp according to the name you use for the bug lists)
134 ** To record a bug in the tracker without sending mail to the bug list.
135 This can be useful to make a note of something discussed on
136 emacs-devel that needs fixing.  In other words, this can be the
137 equivalent of adding something to FOR-RELEASE.
139 To: quiet@debbugs.gnu.org
140 [headers end]
141 Package: emacs
142 Version: 23.0.60
143 Severity: minor
145 Remember to fix FOO, as discussed on emacs-devel at http://... .
147 ** Not interested in tracker control messages (tags being set, etc)?
148 Discard mails matching:
150 ^X-GNU-PR-Message: (transcript|closed)
152 ** How to avoid multiple copies of mails.
153 If you reply to reports in the normal way, this should work fine.
154 Basically, reply only to the numbered bug address (and any individual
155 people's addresses). Do not send mail direct to bug-gnu-emacs or
156 emacs-pretest-bug unless you are reporting a new bug.
158 ** To close bug #123 (for example), send mail
160 To: 123-done@debbugs.gnu.org
162 with a brief explanation in the body as to why the bug was closed.
163 There is no need to cc the address without the "-done" part or the
164 submitter; they get copies anyway so this will just result in more
165 duplicate mail.
167 ** Details of closing a bug.
168 (For information only)
169 Sending a mail to 123-done does the following:
171 1) Mark the bug as closed in the database.
173 2) Send a mail to the original submitter telling them that their bug
174 has been closed.  This mail has a header:
176 X-GNU-PR-Message: they-closed 123
178 3) Send a mail to you and to the emacs-bug-tracker list confirming
179 that the bug has been closed.  This mail has a header:
181 X-GNU-PR-Message: closed 123
183 4) Send a copy of your mail to the bug-gnu-emacs list in exactly the
184 same way as if you had sent mail to "123" (sans -done). This mail has
185 headers:
187 X-GNU-PR-Message: cc-closed 123
188 Mail-Followup-To: 123@debbugs.gnu.org, person-who-closed
190 (This is Emacs-specific.  Normally the bug list gets the same mail as in 3).
192 ** Setting bug parameters.
193 There are two ways to set the parameters of bugs in the database
194 (tags, severity level, etc).  When you report a new bug, you can
195 provide a "pseudo-header" at the start of the report, eg:
197 Package: emacs
198 Version: 23.0.60
199 Severity: minor
201 This can also include tags.  Some things (e.g. submitter) don't seem to
202 work here.
204 Otherwise, send mail to the control server, control@debbugs.gnu.org.
205 At the start of the message body, supply the desired commands, one per
206 line:
208 command bug-number [arguments]
210 quit|stop|thank|thanks|thankyou|thank you
212 The control server ignores anything after the last line above.  So you
213 can place control commands at the beginning of a reply to a bug
214 report, and Bcc: the control server (note the commands have no effect
215 if you just send them to the bug-report number).  Bcc: is better than Cc:
216 in case people use Reply-to-All in response.
218 Some useful control commands:
220 *** To reopen a closed bug:
221 reopen 123
223 *** Bugs can be tagged in various ways (eg wontfix, patch, etc).
224 The available tags are:
225 patch wontfix moreinfo unreproducible fixed notabug
226 See http://debbugs.gnu.org/Developer#tags
227 The list of tags can be prefixed with +, - or =, meaning to add (the
228 default), remove, or reset the tags. E.g.:
230 tags 123 + wontfix
232 ** URL shortcuts
234 http://debbugs.gnu.org/...
236 123             # given bug number
237 123;mbox=yes    # mbox version of given bug
238 package         # bugs in given package
239 from:submitter@email.address
240 severity:severity      # all bugs of given severity
241 tag:tag                # all bugs with given tag
243 ** Usertags
245 See <http://wiki.debian.org/bugs.debian.org/usertags>
247 "Usertags" are very similar to tags: a set of labels that can be added
248 to a bug.  There are two differences between normal tags and user tags:
250 1) Anyone can define any valid usertag they like.  In contrast, only a
251 limited, predefined set of normal tags are available (see above).
253 2) A usertag is associated with a specific email address.
255 You set usertags in the same way as tags, by talking to the control
256 server.  One difference is that you can also specify the associated
257 email address.  If you don't explicitly specify an address, then it
258 will use the one from which you send the control message. The address
259 must have the form of an email address (with an "@" sign and least 4
260 characters after the "@").
262 *** Setting usertags
264 a) In a control message:
266 user bug-gnu-emacs@gnu.org
267 usertags 1234 any-tag-you-like
269 This will add a usertag "any-tag-you-like" to bug 1234.  The tag will
270 be associated with the address "bug-gnu-emacs@gnu.org".  If you omit
271 the first line, the tag will be associated with your email address.
273 The syntax of the usertags command is the same as that of tags (eg wrt
274 the optional [=+-] argument).
276 b) In an initial submission, in the pseudo-header:
278 User: bug-gnu-emacs@gnu.org
279 Usertags: a-new-tag
281 Again, the "User" is optional.
283 *** Searching by usertags
285 The search interface is not as advanced as for normal tags.  You need
286 to construct the relevant url yourself rather than just typing in a
287 search box.  The only piece you really need to add is the "users"
288 portion, the rest has the same syntax as normal.
290 **** To browse bugs by usertag:
291 http://debbugs.gnu.org/cgi/pkgindex.cgi?indexon=users
293 **** To find all bugs usertagged by a given email address:
295 http://debbugs.gnu.org/cgi/pkgreport.cgi?users=bug-gnu-emacs@gnu.org
297 (Supposedly, the "users" field can be a comma-separated list of more
298 than one email address, but it does not seem to work for me.)
300 **** To find bugs tagged with a specific usertag:
302 This works just like a normal tags search, but with the addition of a
303 "users" field.  Eg:
305 http://debbugs.gnu.org/cgi/pkgreport.cgi?users=bug-gnu-emacs@gnu.org;tag=calendar
307 *** To merge bugs:
308 Eg when bad replies create a bunch of new bugs for the same report.
309 Bugs must all be in the same state (e.g. same package(s) and severity
310 -- see `reassign' and `severity' below), but need not have the same
311 tags (tags are merged). E.g.:
313 merge 123 124 125 ...
315 Note that merging does not affect titles.  In particular, a "retitle"
316 of merged bugs only affects individual bugs, not all of them.
318 *** Forcing a merge:
319 Like `merge', but bugs need not be in the same state.  The packages
320 must still match though (see `reassign' below).  The first one listed
321 is the master.  E.g.:
323 forcemerge 123 124 125 ...
325 Note: you cannot merge with an archived bug - you must unarchive it first.
327 *** To unmerge bugs:
328 To disconnect a bug from all bugs it is merged with:
330 unmerge 123
332 This command accepts only one bug number.
334 *** To clone bugs:
335 Useful when one report refers to more than one bug.
337 clone 123 -1 [-2 ...]
338 retitle -1 second bug
339 retitle -2 third bug
341 The negative numbers provide a way to refer to the cloned bugs (which
342 will be assigned proper numbers).
344 NB you cannot clone a merged bug.  You'd think that trying to do so
345 would just give you an unmerged copy of the specified bug number, but no:
347 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=474742
349 You must unmerge, clone, then re-merge.
351 *** To set severity:
352 severity 123 critical|grave|serious|important|normal|minor|wishlist
354 See http://debbugs.gnu.org/Developer#severities for the meanings.
356 *** To set the owner of a bug:
357 owner 123 A Hacker <none@example.com>
359 The shorthand `!' means your own address.
361 *** To remove the owner of a bug:
362 noowner 123
364 *** To mark a bug as fixed in a particular version:
365 fixed 123 23.0.60
367 *** To remove a "fixed" mark:
368 notfixed 123 23.0.60
370 *** To assign or reassign a bug to a package or list of packages:
371 reassign 1234 emacs
373 ** To remove spam from the tracker, move it to the `spam' pseudo-package:
374 reassign 123 spam
376 ** To change the title of a bug:
377 retitle 123 Some New Title
379 ** To change the submitter address:
380 submitter 123 none@example.com
382 Note that it does not seem to work to specify "Submitter:" in the
383 pseudo-header when first reporting a bug.
385 ** How does archiving work?
386 You can still send mail to a bug after it is closed.  After 28 days with
387 no activity, the bug is archived, at which point no more changes can
388 be made.  If you try to send mail to the bug after that (or merge with
389 it), it will be rejected.  To make any changes, you must unarchive it first:
391 unarchive 123
393 The bug will be re-archived after the next 28 day period of no activity.
395 ** The web-page with the list of bugs is slow to load
397 It's a function of the number of displayed bugs.  You can speed things
398 up by only looking at the newest 100 bugs:
399 http://debbugs.gnu.org/cgi-bin/pkgreport.cgi?newest=100;package=emacs
401 Or use the static index:
402 http://debbugs.gnu.org/db/ix/full.html
404 ** What are those "mbox folder" links on the bug report pages?
406 "mbox folder" = messages as they arrived at the tracker
408 "status mbox" = as above, but with a fake message at the start
409     summarizing the bug status
411 "maintainer mbox" = messages as sent out from the tracker to the
412     maintainers (ie, bug-gnu-emacs).  These have some changed headers
413     (Resent-*, Subject, etc).
415 ** What do the pkgreport.cgi sort options mean?
417 "normal" = by open/closed status, then severity, then tag, then bug number
419 "oldview" = as above, but without the tag part
421 "age" = as normal, but sort in decreasing order of last modification
422 time, rather than by increasing bug number
424 "raw" = ?
426 ** ChangeLog issues
428 *** When you fix a bug, it can be helpful to put the bug number in the
429 ChangeLog entry, for example:
431    * foo.el (foofunc): Fix the `foo' case.  (Bug#123)
433 Then the relevant bug can be found for easy reference.  If it's an
434 obvious fix (e.g. a typo), there's no need to clutter the log with the
435 bug number.
437 Similarly, when you close a bug, it can be helpful to include the
438 relevant ChangeLog entry in the message to the bug tracker, so people
439 can see exactly what the fix was.
441 *** bug-reference-mode
443 Activate `bug-reference-mode' in ChangeLogs to get clickable links to
444 the bug web-pages.
446 *** Debian stuff
448 http://lists.gnu.org/archive/html/emacs-devel/2009-11/msg00440.html
450 ** Bazaar stuff
452 *** You can use `bzr commit --fixes debbugs:123' to mark that a commit fixes
453 Emacs bug 123.  You will first need to add a line to your ~/bazaar.conf
454 or ~/locations.conf:
456 bugtracker_debbugs_url = http://debbugs.gnu.org/{id}
458 Here "{id}" is a literal string, a placeholder that will be replaced
459 by the bug number you specify after `--fixes debbugs:' in the bzr
460 command line (123 in the example above).
462 In the bazaar.conf file, this setting should go into the [DEFAULTS]
463 section.
465 In the locations.conf file, it should go into the branch-specific
466 configuration section for the branch where you want this to be in
467 effect.  For example, if you want this to be in effect for the branch
468 located at `/home/projects/emacs/trunk', you need to have this in your
469 ~/locations.conf file:
471 [/home/projects/emacs/trunk]
472 bugtracker_debbugs_url = http://debbugs.gnu.org/{id}
474 If you want to use this in all Emacs branches whose common parent is
475 `/home/projects/emacs', put the setting in the [/home/projects/emacs]
476 section.  See "bzr help configuration" for more information about
477 the *.conf files, their location and formats.  See "bzr help bugs" for
478 more information about the bugtracker_debbugs_url setting.
480 See also log-edit-rewrite-fixes in .dir-locals.el.
482 Note that all this does is add some metadata to the commit, it doesn't
483 actually mark the bug as closed in the tracker.  You can see this
484 information with `bzr log', and it will show up as a link in a recent
485 loggerhead installation, or with some of the graphical frontends to
486 `bzr log'.
488 ** Gnus-specific voodoo
490 *** Put point on a bug-number and try: M-x gnus-read-ephemeral-emacs-bug-group
492 *** If the above is not available:
493 (add-hook 'gnus-article-mode-hook
494           (lambda ()
495              (setq bug-reference-url-format "http://debbugs.gnu.org/%s")
496               (bug-reference-mode 1)))
498 and you can click on the bug number in the subject header.
501 * Technical Notes
503 The following are technical notes on how it works.  These are just for
504 reference, you don't need to read these as a user of the system.
506 Getting mail from the Emacs bug list into the tracker requires the
507 assistance of sysadmin at gnu.org.  The test tracker set-up was, I
508 think, [gnu.org #359140]:
509 http://lists.gnu.org/archive/html/savannah-hackers/2008-03/msg00074.html
510 http://lists.gnu.org/archive/html/savannah-hackers/2008-04/msg00034.html
512 ** The debbugs.gnu.org setup was handled in [gnu.org #510605].
513 There are two pieces (replace AT with @ in the following):
515 i) fencepost has an /etc/aliases entry:
516 emacs-pretest-bug: submit AT debbugs.gnu.org
518 ii) An exim router:
519 emacsbugs_router:
520   driver = redirect
521   senders = !Debian-debbugs AT debbugs.gnu.org
522   local_parts = bug-gnu-emacs
523   domains = gnu.org
524   data = submit AT debbugs.gnu.org
526 This says, for mail arriving at bug-gnu-emacs, only allow it through
527 to the list if it was sent from debbugs.gnu.org.  Otherwise, send
528 it to the submit address at the bug-tracker.
530 FIXME There's probably an issue with the mail-news gateway here that
531 still needs to be addressed (bug#936).
533 ** fencepost's /etc/exim4/local_domains configuration needs a line
534 !debbugs.gnu.org adding [gnu.org #503532].  Otherwise people on
535 fencepost can't report bugs, since *.gnu.org addresses are assumed to
536 be handled locally on fencepost, unless otherwise specified.
538 ** All mail arriving at debbugs.gnu.org is first run through SpamAssassin.
539 Obvious spam is rejected, the rest is sent on to the moderated list
540 debbugs-submit.  Approved mail is passed on to the tracker.
541 (Note this means that messages may appear out of sequence in the
542 tracker, since mail from whitelisted senders goes straight through.)
544 NOTE: An alternative to this would be to use listhelper AT nongnu.org
545 as a moderator address.  Eg the emacs-bug-tracker list uses this.
546 It does basic spam processing on the moderator requests and
547 automatically rejects the obviously bogus ones.  Someone still has to
548 accept the good ones though.  The advantage of this would not be having
549 to run and tune our own spam filter.  See
550 http://savannah.nongnu.org/projects/listhelper
552 An "X-Debbugs-Envelope-To" header is used to keep track of where the
553 mail was actually bound for:
554 http://lists.gnu.org/archive/html/emacs-devel/2009-11/msg01211.html
556 ** Mailing list recipient/sender filters.
557 The following mailman filters are useful to stop messages being
558 needlessly held for moderation:
560 *** debbugs-submit
561 (quiet|control|submit)@(debbugs\.gnu\.org|emacsbugs\.donarmstrong\.com)
562 [0-9]+(-done|-quiet|-subscribe)?@(debbugs\.gnu\.org|emacsbugs\.donarmstrong\.com)
563 (bug-gnu-emacs|emacs-pretest-bug|bug-(e|gnu)macs)@gnu\.org
565 bug-emacs and bug-gnumacs are lesser-used aliases from fencepost's
566 /etc/aliases file.
568 *** emacs-bug-tracker
569 sender: bug-gnu-emacs AT gnu.org
570 recipient: emacs-bug-tracker AT debbugs\.gnu\.org
572 The latter is because that is the address that debbugs actually sends to.
573 An /etc/aliases entry redirects it to the real emacs-bug-tracker address.
575 ** Recovering from moderation mistakes
577 All discarded messages are stored in /var/lib/mailman/spam.
578 If a non-spam message accidentally gets discarded, just do:
580 cat /var/lib/mailman/spam/not-really-spam.msg | /usr/lib/debbugs/receive
581 ... check it works ...
582 mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/
584 ** Administrivia
586 The debbugs-submit list should have the administrivia option off,
587 else it can by mistake filter out requests to subscribe to bugs.
588 But, this feature doesn't work anyway (see bug#5439).
590 ** How to test changes
592 Add an entry to /etc/debbugs/Maintainers like:
594 mytest       my.email.address
596 Then if you do all your testing with 'Package: mytest', the resulting
597 mails should only go to your email address.