summaryrefslogtreecommitdiffstats
path: root/docs/en/xml/patches.xml
blob: e5a6a8c47f10bd7350bae2d58783ff795dae40f7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?xml version="1.0"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
                      "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
    <!ENTITY % myents SYSTEM "bugzilla.ent">
    %myents;
]>

<appendix id="patches" xreflabel="Useful Patches and Utilities for Bugzilla">
  <title>Contrib</title>

  <para>
    There are a number of unofficial Bugzilla add-ons in the 
    <filename class="directory">$BUGZILLA_ROOT/contrib/</filename>
    directory. This section documents them.
  </para>

  <section id="cmdline">
    <title>Command-line Search Interface</title>

    <para>
      There are a suite of Unix utilities for searching Bugzilla from the 
      command line. They live in the 
      <filename class="directory">contrib/cmdline</filename> directory.
      There are three files - <filename>query.conf</filename>,
      <filename>buglist</filename> and <filename>bugs</filename>.
    </para>

    <warning>
      <para>
        These files pre-date the templatization work done as part of the
        2.16 release, and have not been updated.
      </para>
    </warning>
    
    <para>
      <filename>query.conf</filename> contains the mapping from
      options to field names and comparison types. Quoted option names
      are <quote>grepped</quote> for, so it should be easy to edit this
      file. Comments (#) have no effect; you must make sure these lines
      do not contain any quoted <quote>option</quote>.
    </para>

    <para>
      <filename>buglist</filename> is a shell script that submits a
      Bugzilla query and writes the resulting HTML page to stdout.
      It supports both short options, (such as <quote>-Afoo</quote>
      or <quote>-Rbar</quote>) and long options (such
      as <quote>--assignedto=foo</quote> or <quote>--reporter=bar</quote>).
      If the first character of an option is not <quote>-</quote>, it is
      treated as if it were prefixed with <quote>--default=</quote>.
    </para>

    <para>
      The column list is taken from the COLUMNLIST environment variable.
      This is equivalent to the <quote>Change Columns</quote> option
      that is available when you list bugs in buglist.cgi. If you have
      already used Bugzilla, grep for COLUMNLIST in your cookies file
      to see your current COLUMNLIST setting.
    </para>

    <para>
      <filename>bugs</filename> is a simple shell script which calls
      <filename>buglist</filename> and extracts the
      bug numbers from the output. Adding the prefix
      <quote>http://bugzilla.mozilla.org/buglist.cgi?bug_id=</quote>
      turns the bug list into a working link if any bugs are found.
      Counting bugs is easy. Pipe the results through 
      <command>sed -e 's/,/ /g' | wc | awk '{printf $2 "\n"}'</command>
    </para>

    <para>
      Akkana Peck says she has good results piping 
      <filename>buglist</filename> output through 
      <command>w3m -T text/html -dump</command>
    </para>

  </section>

  <section id="cmdline-bugmail">
    <title>Command-line 'Send Unsent Bug-mail' tool</title>

    <para>
      Within the <filename class="directory">contrib</filename> directory
      exists a utility with the descriptive (if compact) name
      of <filename>sendunsentbugmail.pl</filename>. The purpose of this
      script is, simply, to send out any bug-related mail that should
      have been sent by now, but for one reason or another has not.
    </para>

    <para>
      To accomplish this task, <filename>sendunsentbugmail.pl</filename> uses
      the same mechanism as the <filename>sanitycheck.cgi</filename> script;
      it scans through the entire database looking for bugs with changes that
      were made more than 30 minutes ago, but where there is no record of
      anyone related to that bug having been sent mail. Having compiled a list,
      it then uses the standard rules to determine who gets mail, and sends it
      out.
    </para>

    <para>
      As the script runs, it indicates the bug for which it is currently
      sending mail; when it has finished, it gives a numerical count of how
      many mails were sent and how many people were excluded. (Individual
      user names are not recorded or displayed.) If the script produces
      no output, that means no unsent mail was detected.
    </para>

    <para>
      <emphasis>Usage</emphasis>: move the sendunsentbugmail.pl script
      up into the main directory, ensure it has execute permission, and run it
      from the command line (or from a cron job) with no parameters.
    </para>
  </section>

</appendix>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-always-quote-attributes:t
sgml-auto-insert-required-elements:t
sgml-balanced-tag-edit:t
sgml-exposed-tags:nil
sgml-general-insert-case:lower
sgml-indent-data:t
sgml-indent-step:2
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
sgml-minimize-attributes:nil
sgml-namecase-general:t
sgml-omittag:t
sgml-parent-document:("Bugzilla-Guide.xml" "book" "chapter")
sgml-shorttag:t
sgml-tag-region-if-active:t
End:
-->