This documentation is maintained in DocBook 4.1.2 XML format.
Changes are best submitted as plain text or SGML diffs, attached
to a bug filed in
- <ulink url="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla">bugzilla.mozilla.org</ulink>.
+ <ulink url="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=Documentation">mozilla.org's Bugzilla</ulink>.
</para>
</abstract>
<chapter id="administration">
<title>Administering Bugzilla</title>
- <section id="postinstall-check">
- <title>Post-Installation Checklist</title>
+ <section id="parameters">
+ <title>Bugzilla Configuration</title>
- <para>After installation, follow the checklist below.
- If you do not see a recommended
- setting for a parameter, consider leaving it at the default while you
- perform your initial tests on your Bugzilla setup.</para>
+ <para>Bugzilla is configured by changing various parameters, accessed
+ from the "Edit parameters" link in the page footer. Here are
+ some of the key parameters on that page. You should run down this
+ list and set them appropriately after installing Bugzilla.</para>
<indexterm>
<primary>checklist</primary>
</indexterm>
<procedure>
- <step>
- <para>Log in to Bugzilla using the username and password
- you defined for the administrator during installation.</para>
- </step>
-
- <step>
- <para>Bring up
- <ulink url="../../editparams.cgi">editparams.cgi</ulink>
- in your web browser (link in footer.) This screen allows you
- to change most of Bugzilla's operating parameters. Each comes
- with an explanation, and you should go down the list, deciding
- on what you want to do about each.
- </para>
- </step>
-
<step>
<para>
<command>maintainer</command>:
<step>
<para>
<command>usebuggroups</command>:
- Thisdictates whether or not to implement group-based security for
+ This dictates whether or not to implement group-based security for
Bugzilla. If set, Bugzilla bugs can have an associated 'group',
defining which users are allowed to see and edit the
bug.</para>
<step>
<para>
<command>usebuggroupsentry</command>:
- When set to <quote>on</quote>, this
- puts all bugs be placed in the group for their product immediately
- after creation.</para>
+ Bugzilla Products can have a group associated with them, so that
+ certain users can only see bugs in certain products. When this parameter
+ is set to <quote>on</quote>, this places all newly-created bugs in the
+ group for their product immediately.</para>
</step>
<step>
If you need to shut down Bugzilla to perform administration, enter
some descriptive HTML here and anyone who tries to use Bugzilla will
- receive a page to that effect.
+ receive a page to that effect. Obviously, editparams.cgi will
+ still be accessible so you can remove the HTML and re-enable Bugzilla.
+ :-)
</para>
</step>
<section id="useradmin">
<title>User Administration</title>
- <para>User administration is one of the easiest parts of Bugzilla.
- Keeping it from getting out of hand, however, can become a
- challenge.</para>
-
<section id="defaultuser">
<title>Creating the Default User</title>
<para>When you first run checksetup.pl after installing Bugzilla, it
will prompt you for the administrative username (email address) and
- password for this "super user". If for some reason you were to delete
+ password for this "super user". If for some reason you delete
the "super user" account, re-running checksetup.pl will again prompt
you for this username and password.</para>
<tip>
<para>If you wish to add more administrative users, you must use the
MySQL interface. Run "mysql" from the command line, and use these
- commands ("mysql>" denotes the mysql prompt, not something you
- should type in):
- <command>
- <prompt>mysql></prompt>
-
- use bugs;</command>
-
- <command>
- <prompt>mysql></prompt>
-
- update profiles set groupset=0x7ffffffffffffff where login_name =
- "(user's login name)";</command>
+ commands:
+ <simplelist>
+ <member>
+ <prompt>mysql></prompt>
+ <command>use bugs;</command>
+ </member>
+
+ <member>
+ <prompt>mysql></prompt>
+
+ <command>
+ update profiles set groupset=0x7ffffffffffffff where login_name =
+ "(user's login name)";
+ </command>
+ </member>
+ </simplelist>
</para>
<para>Yes, that is
<section id="manageusers">
<title>Managing Other Users</title>
- <section id="login">
- <title>Logging In</title>
-
- <orderedlist>
- <listitem>
- <para>Open the index.html page for your Bugzilla installation in
- your browser window.</para>
- </listitem>
-
- <listitem>
- <para>Click the "Query Existing Bug Reports" link.</para>
- </listitem>
-
- <listitem>
- <para>Click the "Log In" link at the foot of the page.</para>
- </listitem>
-
- <listitem>
- <para>Type your email address, and the password which was emailed
- to you when you created your Bugzilla account, into the spaces
- provided.</para>
- </listitem>
- </orderedlist>
-
- <para>Congratulations, you are logged in!</para>
- </section>
-
<section id="createnewusers">
<title>Creating new users</title>
<para>Your users can create their own user accounts by clicking the
- "New Account" link at the bottom of each page. However, should you
+ "New Account" link at the bottom of each page (assuming they
+ aren't logged in as someone else already.) However, should you
desire to create user accounts ahead of time, here is how you do
it.</para>
<orderedlist>
<listitem>
<para>After logging in, click the "Users" link at the footer of
- the query page.</para>
- </listitem>
-
- <listitem>
- <para>To see a specific user, type a portion of their login name
- in the box provided and click "submit". To see all users, simply
- click the "submit" button. You must click "submit" here to be
- able to add a new user.</para>
-
- <tip>
- <para>More functionality is available via the list on the
- right-hand side of the text entry box. You can match what you
- type as a case-insensitive substring (the default) of all users
- on your system, a case-sensitive regular expression (please see
- the
- <command>man regexp</command>
-
- manual page for details on regular expression syntax), or a
- <emphasis>reverse</emphasis>
-
- regular expression match, where every user name which does NOT
- match the regular expression is selected.</para>
- </tip>
- </listitem>
-
- <listitem>
- <para>Click the "Add New User" link at the bottom of the user
- list</para>
+ the query page, and then click "Add a new user".</para>
</listitem>
<listitem>
<para>Fill out the form presented. This page is self-explanatory.
- When done, click "submit".</para>
+ When done, click "Submit".</para>
<note>
<para>Adding a user this way will
</orderedlist>
</section>
- <section id="disableusers">
- <title>Disabling Users</title>
-
- <para>I bet you noticed that big "Disabled Text" entry box available
- from the "Add New User" screen, when you edit an account? By entering
- any text in this box and selecting "submit", you have prevented the
- user from using Bugzilla via the web interface. Your explanation,
- written in this text box, will be presented to the user the next time
- she attempts to use the system.
- <warning>
- <para>Don't disable your own administrative account, or you will
- hate life!</para>
-
- <para>At this time,
- <quote>Disabled Text</quote>
-
- does not prevent a user from using the email interface. If you have
- the email interface enabled, they can still continue to submit bugs
- and comments that way. We need a patch to fix this.</para>
- </warning>
- </para>
- </section>
-
<section id="modifyusers">
<title>Modifying Users</title>
- <para>Here I will attempt to describe the function of each option on
- the Edit User screen.</para>
+ <para>To see a specific user, search for their login name
+ in the box provided on the "Edit Users" page. To see all users,
+ leave the box blank.</para>
+
+ <para>You can search in different ways the listbox to the right
+ of the text entry box. You can match by
+ case-insensitive substring (the default),
+ regular expression, or a
+ <emphasis>reverse</emphasis>
+ regular expression match, which finds every user name which does NOT
+ match the regular expression. (Please see
+ the <command>man regexp</command>
+ manual page for details on regular expression syntax.)
+ </para>
+
+ <para>Once you have found your user, you can change the following
+ fields:</para>
<itemizedlist>
<listitem>
<para>
- <emphasis>Login Name</emphasis>
-
- : This is generally the user's email address. However, if you
- have edited your system parameters, this may just be the user's
- login name or some other identifier.
- <tip>
- <para>For compatability reasons, you should probably stick with
- email addresses as user login names. It will make your life
- easier.</para>
- </tip>
+ <emphasis>Login Name</emphasis>:
+ This is generally the user's full email address. However, if you
+ have are using the emailsuffix Param, this may just be the user's
+ login name. Note that users can now change their login names
+ themselves (to any valid email address.)
</para>
</listitem>
<listitem>
<para>
- <emphasis>Real Name</emphasis>
-
- : Duh!</para>
+ <emphasis>Real Name</emphasis>: The user's real name. Note that
+ Bugzilla does not require this to create an account.</para>
</listitem>
<listitem>
<para>
- <emphasis>Password</emphasis>
-
- : You can change the user password here. It is normal to only see
- asterisks.</para>
+ <emphasis>Password</emphasis>:
+ You can change the user's password here. Users can automatically
+ request a new password, so you shouldn't need to do this often.
+ If you want to disable an account, see Disable Text below.
+ </para>
</listitem>
<listitem>
<para>
- <emphasis>Disable Text</emphasis>
-
- : If you type anything in this box, including just a space, the
- user account is disabled from making any changes to bugs via the
- web interface, and what you type in this box is presented as the
- reason.
+ <emphasis>Disable Text</emphasis>:
+ If you type anything in this box, including just a space, the
+ user is prevented from logging in, or making any changes to
+ bugs via the web interface.
+ The HTML you type in this box is presented to the user when
+ they attempt to perform these actions, and should explain
+ why the account was disabled.
<warning>
<para>Don't disable the administrator account!</para>
</warning>
<note>
- <para>As of this writing, the user can still submit bugs via
- the e-mail gateway, if you set it up, despite the disabled text
- field. The e-mail gateway should
+ <para>The user can still submit bugs via
+ the e-mail gateway, if you set it up, even if the disabled text
+ field is filled in. The e-mail gateway should
<emphasis>not</emphasis>
-
be enabled for secure installations of Bugzilla.</para>
</note>
</para>
<listitem>
<para>
- <emphasis>CanConfirm</emphasis>
-
- : This field is only used if you have enabled "unconfirmed"
- status in your parameters screen. If you enable this for a user,
- that user can then move bugs from "Unconfirmed" to "Confirmed"
- status (e.g.: "New" status). Be judicious about allowing users to
- turn this bit on for other users.</para>
+ <emphasis><groupname></emphasis>:
+ If you have created some groups, e.g. "securitysensitive", then
+ checkboxes will appear here to allow you to add users to, or
+ remove them from, these groups.
+ </para>
</listitem>
<listitem>
<para>
- <emphasis>Creategroups</emphasis>
-
- : This option will allow a user to create and destroy groups in
- Bugzilla. Unless you are using the Bugzilla GroupSentry security
- option "usebuggroupsentry" in your parameters, this setting has
- no effect.</para>
+ <emphasis>canconfirm</emphasis>:
+ This field is only used if you have enabled the "unconfirmed"
+ status. If you enable this for a user,
+ that user can then move bugs from "Unconfirmed" to a "Confirmed"
+ status (e.g.: "New" status).</para>
</listitem>
<listitem>
<para>
- <emphasis>Editbugs</emphasis>
+ <emphasis>creategroups</emphasis>:
+ This option will allow a user to create and destroy groups in
+ Bugzilla.</para>
+ </listitem>
- : Unless a user has this bit set, they can only edit those bugs
- for which they are the assignee or the reporter.
- <note>
- <para>Leaving this option unchecked does not prevent users from
- adding comments to a bug! They simply cannot change a bug
- priority, severity, etc. unless they are the assignee or
- reporter.</para>
- </note>
+ <listitem>
+ <para>
+ <emphasis>editbugs</emphasis>:
+ Unless a user has this bit set, they can only edit those bugs
+ for which they are the assignee or the reporter. Even if this
+ option is unchecked, users can still add comments to bugs.
</para>
</listitem>
<listitem>
<para>
- <emphasis>Editcomponents</emphasis>
-
- : This flag allows a user to create new products and components,
+ <emphasis>editcomponents</emphasis>:
+ This flag allows a user to create new products and components,
as well as modify and destroy those that have no bugs associated
with them. If a product or component has bugs associated with it,
those bugs must be moved to a different product or component
- before Bugzilla will allow them to be destroyed. The name of a
- product or component can be changed without affecting the
- associated bugs, but it tends to annoy the hell out of your users
- when these change a lot.</para>
+ before Bugzilla will allow them to be destroyed.
+ </para>
</listitem>
<listitem>
<para>
- <emphasis>Editkeywords</emphasis>
-
- : If you use Bugzilla's keyword functionality, enabling this
- feature allows a user can create and destroy keywords. As always,
+ <emphasis>editkeywords</emphasis>:
+ If you use Bugzilla's keyword functionality, enabling this
+ feature allows a user to create and destroy keywords. As always,
the keywords for existing bugs containing the keyword the user
wishes to destroy must be changed before Bugzilla will allow it
- to die. You must be very careful about creating too many new
- keywords if you run a very large Bugzilla installation; keywords
- are global variables across products, and you can often run into
- a phenomenon called "keyword bloat". This confuses users, and
- then the feature goes unused.</para>
+ to die.</para>
</listitem>
<listitem>
<para>
- <emphasis>Editusers</emphasis>
-
- : This flag allows a user do what you're doing right now: edit
+ <emphasis>editusers</emphasis>:
+ This flag allows a user to do what you're doing right now: edit
other users. This will allow those with the right to do so to
remove administrator privileges from other users or grant them to
themselves. Enable with care.</para>
</listitem>
+
+ <listitem>
+ <para>
+ <emphasis>tweakparams</emphasis>:
+ This flag allows a user to change Bugzilla's Params
+ (using <filename>editparams.cgi</filename>.)</para>
+ </listitem>
+
<listitem>
<para>
- <emphasis>PRODUCT</emphasis>
-
- : PRODUCT bugs access. This allows an administrator, with
- product-level granularity, to specify in which products a user
- can edit bugs. The user must still have the "editbugs" privelege
- to edit bugs in this area; this simply restricts them from even
- seeing bugs outside these boundaries if the administrator has
- enabled the group sentry parameter "usebuggroupsentry". Unless
- you are using bug groups, this option has no effect.</para>
+ <emphasis><productname></emphasis>:
+ This allows an administrator to specify the products in which
+ a user can see bugs. The user must still have the
+ "editbugs" privilege to edit bugs in these products.</para>
</listitem>
</itemizedlist>
</section>
<section id="programadmin">
<title>Product, Component, Milestone, and Version Administration</title>
- <epigraph>
- <para>Dear Lord, we have to get our users to do WHAT?</para>
- </epigraph>
-
<section id="products">
<title>Products</title>
- <subtitle>Formerly, and in some spots still, called
- "Programs"</subtitle>
-
<para>
<glossterm linkend="gloss-product" baseform="product">
Products</glossterm>
- are the broadest category in Bugzilla, and you should have the least of
- these. If your company makes computer games, you should have one
- product per game, and possibly a few special products (website,
- meetings...)</para>
+ are the broadest category in Bugzilla, and tend to represent real-world
+ shipping products. E.g. if your company makes computer games,
+ you should have one product per game, perhaps a "Common" product for
+ units of technology used in multiple games, and maybe a few special
+ products (Website, Administration...)</para>
- <para>A Product (formerly called "Program", and still referred to that
- way in some portions of the source code) controls some very important
- functions. The number of "votes" available for users to vote for the
- most important bugs is set per-product, as is the number of votes
+ <para>Many of Bugzilla's settings are configurable on a per-product
+ basis. The number of "votes" available to users is set per-product,
+ as is the number of votes
required to move a bug automatically from the UNCONFIRMED status to the
- NEW status. One can close a Product for further bug entry and define
- various Versions available from the Edit product screen.</para>
+ NEW status.</para>
<para>To create a new product:</para>
<orderedlist>
<listitem>
- <para>Select "components" from the yellow footer</para>
+ <para>Select "products" from the footer</para>
- <tip>
- <para>It may seem counterintuitive to click "components" when you
- want to edit the properties associated with Products. This is one
- of a long list of things we want in Bugzilla 3.0...</para>
- </tip>
</listitem>
<listitem>
- <para>Select the "Add" link to the right of "Add a new
- product".</para>
+ <para>Select the "Add" link in the bottom right</para>
</listitem>
<listitem>
<para>Enter the name of the product and a description. The
- Description field is free-form.</para>
+ Description field may contain HTML.</para>
</listitem>
</orderedlist>
- <tip>
- <para>Don't worry about the "Closed for bug entry", "Maximum Votes
- per person", "Maximum votes a person can put on a single bug",
- "Number of votes a bug in this Product needs to automatically get out
- of the UNCOMFIRMED state", and "Version" options yet. We'll cover
- those in a few moments.</para>
- </tip>
+ <para>Don't worry about the "Closed for bug entry", "Maximum Votes
+ per person", "Maximum votes a person can put on a single bug",
+ "Number of votes a bug in this Product needs to automatically get out
+ of the UNCOMFIRMED state", and "Version" options yet. We'll cover
+ those in a few moments.
+ </para>
</section>
<section id="components">
<title>Components</title>
- <para>Components are subsections of a Product.
- <example>
- <title>Creating some Components</title>
-
- <informalexample>
- <para>The computer game you are designing may have a "UI"
- component, an "API" component, a "Sound System" component, and a
- "Plugins" component, each overseen by a different programmer. It
- often makes sense to divide Components in Bugzilla according to the
- natural divisions of responsibility within your Product or
- company.</para>
- </informalexample>
- </example>
-
+ <para>Components are subsections of a Product. E.g. the computer game
+ you are designing may have a "UI"
+ component, an "API" component, a "Sound System" component, and a
+ "Plugins" component, each overseen by a different programmer. It
+ often makes sense to divide Components in Bugzilla according to the
+ natural divisions of responsibility within your Product or
+ company.</para>
+
+ <para>
Each component has a owner and (if you turned it on in the parameters),
a QA Contact. The owner should be the primary person who fixes bugs in
that component. The QA Contact should be the person who will ensure
will get email when new bugs are created in this Component and when
these bugs change. Default Owner and Default QA Contact fields only
dictate the
- <emphasis>default assignments</emphasis>
-
- ; the Owner and QA Contact fields in a bug are otherwise unrelated to
- the Component.</para>
+ <emphasis>default assignments</emphasis>;
+ these can be changed on bug submission, or at any later point in
+ a bug's life.</para>
<para>To create a new Component:</para>
</listitem>
<listitem>
- <para>Select the "Add" link to the right of the "Add a new
- component" text on the "Select Component" page.</para>
+ <para>Select the "Add" link in the bottom right.</para>
</listitem>
<listitem>
- <para>Fill out the "Component" field, a short "Description", and
- the "Initial Owner". The Component and Description fields are
- free-form; the "Initial Owner" field must be that of a user ID
- already existing in the database. If the initial owner does not
- exist, Bugzilla will refuse to create the component.
- <tip>
- <para>Is your "Default Owner" a user who is not yet in the
- database? No problem.
- <orderedlist>
- <listitem>
- <para>Select the "Log out" link on the footer of the
- page.</para>
- </listitem>
-
- <listitem>
- <para>Select the "New Account" link on the footer of the
- "Relogin" page</para>
- </listitem>
-
- <listitem>
- <para>Type in the email address of the default owner you want
- to create in the "E-mail address" field, and her full name in
- the "Real name" field, then select the "Submit Query"
- button.</para>
- </listitem>
-
- <listitem>
- <para>Now select "Log in" again, type in your login
- information, and you can modify the product to use the
- Default Owner information you require.</para>
- </listitem>
- </orderedlist>
- </para>
- </tip>
+ <para>Fill out the "Component" field, a short "Description",
+ the "Initial Owner" and "Initial QA Contact" (if enabled.)
+ The Component and Description fields may contain HTML;
+ the "Initial Owner" field must be a login name
+ already existing in the database.
</para>
</listitem>
-
- <listitem>
- <para>Either Edit more components or return to the Bugzilla Query
- Page. To return to the Product you were editing, you must select
- the Components link as before.</para>
- </listitem>
</orderedlist>
</section>
<title>Versions</title>
<para>Versions are the revisions of the product, such as "Flinders
- 3.1", "Flinders 95", and "Flinders 2000". Using Versions helps you
- isolate code changes and are an aid in reporting.
- <example>
- <title>Common Use of Versions</title>
-
- <informalexample>
- <para>A user reports a bug against Version "Beta 2.0" of your
- product. The current Version of your software is "Release Candidate
- 1", and no longer has the bug. This will help you triage and
- classify bugs according to their relevance. It is also possible
- people may report bugs against bleeding-edge beta versions that are
- not evident in older versions of the software. This can help
- isolate code changes that caused the bug</para>
- </informalexample>
- </example>
-
- <example>
- <title>A Different Use of Versions</title>
-
- <informalexample>
- <para>This field has been used to good effect by an online service
- provider in a slightly different way. They had three versions of
- the product: "Production", "QA", and "Dev". Although it may be the
- same product, a bug in the development environment is not normally
- as critical as a Production bug, nor does it need to be reported
- publicly. When used in conjunction with Target Milestones, one can
- easily specify the environment where a bug can be reproduced, and
- the Milestone by which it will be fixed.</para>
- </informalexample>
- </example>
+ 3.1", "Flinders 95", and "Flinders 2000". Version is not a multi-select
+ field; the usual practice is to select the most recent version with
+ the bug.
</para>
<para>To create and edit Versions:</para>
<listitem>
<para>You will notice that the product already has the default
- version "undefined". If your product doesn't use version numbers,
- you may want to leave this as it is or edit it so that it is "---".
- You can then go back to the edit versions page and add new versions
- to your product.</para>
-
- <para>Otherwise, click the "Add" button to the right of the "Add a
- new version" text.</para>
+ version "undefined". Click the "Add" link in the bottom right.</para>
</listitem>
<listitem>
- <para>Enter the name of the Version. This can be free-form
- characters up to the limit of the text box. Then select the "Add"
- button.</para>
+ <para>Enter the name of the Version. This field takes text only.
+ Then click the "Add" button.</para>
</listitem>
- <listitem>
- <para>At this point you can select "Edit" to edit more Versions, or
- return to the "Query" page, from which you can navigate back to the
- product through the "components" link at the foot of the Query
- page.</para>
- </listitem>
</orderedlist>
</section>
<para>Milestones are "targets" that you plan to get a bug fixed by. For
example, you have a bug that you plan to fix for your 3.0 release, it
- would be assigned the milestone of 3.0. Or, you have a bug that you
- plan to fix for 2.8, this would have a milestone of 2.8.</para>
+ would be assigned the milestone of 3.0.</para>
<note>
<para>Milestone options will only appear for a Product if you turned
- the "usetargetmilestone" field in the "Edit Parameters" screen
- "On".</para>
+ on the "usetargetmilestone" Param in the "Edit Parameters" screen.
+ </para>
</note>
<para>To create new Milestones, set Default Milestones, and set
<orderedlist>
<listitem>
- <para>Select "edit milestones"</para>
+ <para>Select "Edit milestones" from the "Edit product" page.</para>
</listitem>
<listitem>
- <para>Select "Add" to the right of the "Add a new milestone"
+ <para>Select "Add" in the bottom right corner.
text</para>
</listitem>
<listitem>
<para>Enter the name of the Milestone in the "Milestone" field. You
- can optionally set the "Sortkey", which is a positive or negative
+ can optionally set the "sortkey", which is a positive or negative
number (-255 to 255) that defines where in the list this particular
- milestone appears. Select "Add".</para>
-
- <example>
- <title>Using SortKey with Target Milestone</title>
-
- <informalexample>
- <para>Let's say you create a target milestone called "Release
- 1.0", with Sortkey set to "0". Later, you realize that you will
- have a public beta, called "Beta1". You can create a Milestone
- called "Beta1", with a Sortkey of "-1" in order to ensure
- people will see the Target Milestone of "Beta1" earlier on the
- list than "Release 1.0"</para>
- </informalexample>
- </example>
+ milestone appears. This is because milestones often do not
+ occur in alphanumeric order For example, "Future" might be
+ after "Release 1.2". Select "Add".</para>
</listitem>
<listitem>
- <para>If you want to add more milestones, select the "Edit" link.
- If you don't, well shoot, you have to go back to the "query" page
- and select "components" again, and make your way back to the
- Product you were editing.
- <note>
- <para>This is another in the list of unusual user interface
- decisions that we'd like to get cleaned up. Shouldn't there be a
- link to the effect of "edit the Product I was editing when I
- ended up here"? In any case, clicking "components" in the footer
- takes you back to the "Select product" screen, from which you can
- begin editing your product again.</para>
- </note>
- </para>
- </listitem>
+ <para>From the Edit product screen, you can enter the URL of a
+ page which gives information about your milestones and what
+ they mean. </para>
- <listitem>
- <para>From the Edit product screen again (once you've made your way
- back), enter the URL for a description of what your milestones are
- for this product in the "Milestone URL" field. It should be of the
- format "http://www.foo.com/bugzilla/product_milestones.html"</para>
-
- <para>Some common uses of this field include product descriptions,
- product roadmaps, and of course a simple description of the meaning
- of each milestone.</para>
- </listitem>
-
- <listitem>
- <para>If you're using Target Milestones, the "Default Milestone"
- field must have some kind of entry. If you really don't care if
- people set coherent Target Milestones, simply leave this at the
- default, "---". However, controlling and regularly updating the
- Default Milestone field is a powerful tool when reporting the
- status of projects.</para>
-
- <para>Select the "Update" button when you are done.</para>
+ <tip>
+ <para>If you want your milestone document to be restricted so
+ that it can only be viewed by people in a particular Bugzilla
+ group, the best way is to attach the document to a bug in that
+ group, and make the URL the URL of that attachment.</para>
+ </tip>
</listitem>
</orderedlist>
</section>
<section id="voting">
<title>Voting</title>
- <para>The concept of "voting" is a poorly understood, yet powerful
- feature for the management of open-source projects. Each user is
- assigned so many Votes per product, which they can freely reassign (or
- assign multiple votes to a single bug). This allows developers to gauge
+ <para>Voting allows users to be given a pot of votes which they can allocate
+ to bugs, to indicate that they'd like them fixed.
+ This allows developers to gauge
user need for a particular enhancement or bugfix. By allowing bugs with
a certain number of votes to automatically move from "UNCONFIRMED" to
"NEW", users of the bug system can help high-priority bugs garner
attention so they don't sit for a long time awaiting triage.</para>
- <para>The daunting challenge of Votes is deciding where you draw the
- line for a "vocal majority". If you only have a user base of 100 users,
- setting a low threshold for bugs to move from UNCONFIRMED to NEW makes
- sense. As the Bugzilla user base expands, however, these thresholds
- must be re-evaluated. You should gauge whether this feature is worth
- the time and close monitoring involved, and perhaps forego
- implementation until you have a critical mass of users who demand
- it.</para>
-
<para>To modify Voting settings:</para>
<orderedlist>
</listitem>
<listitem>
- <para>Set "Maximum Votes per person" to your calculated value.
+ <para><emphasis>Maximum Votes per person</emphasis>:
Setting this field to "0" disables voting.</para>
</listitem>
<listitem>
- <para>Set "Maximum Votes a person can put on a single bug" to your
- calculated value. It should probably be some number lower than the
- "Maximum votes per person". Setting this field to "0" disables
- voting, but leaves the voting options open to the user. This is
- confusing.</para>
+ <para><emphasis>Maximum Votes a person can put on a single
+ bug"</emphasis>:
+ It should probably be some number lower than the
+ "Maximum votes per person". Don't set this field to "0" if
+ "Maximum votes per person" is non-zero; that doesn't make
+ any sense.</para>
</listitem>
<listitem>
- <para>Set "Number of votes a bug in this product needs to
- automatically get out of the UNCONFIRMED state" to your calculated
- number. Setting this field to "0" disables the automatic move of
- bugs from UNCONFIRMED to NEW. Some people advocate leaving this at
- "0", but of what use are Votes if your Bugzilla user base is unable
- to affect which bugs appear on Development radar?
- <tip>
- <para>You should probably set this number to higher than a small
- coalition of Bugzilla users can influence it. Most sites use this
- as a "referendum" mechanism -- if users are able to vote a bug
- out of UNCONFIRMED, it is a
- <emphasis>really</emphasis>
-
- bad bug!</para>
- </tip>
+ <para><emphasis>Number of votes a bug in this product needs to
+ automatically get out of the UNCONFIRMED state</emphasis>:
+ Setting this field to "0" disables the automatic move of
+ bugs from UNCONFIRMED to NEW.
</para>
</listitem>
<listitem>
- <para>Once you have adjusted the values to your preference, select
- the "Update" button.</para>
+ <para>Once you have adjusted the values to your preference, click
+ "Update".</para>
</listitem>
</orderedlist>
</section>
<section id="groups">
<title>Groups and Group Security</title>
- <para>Groups can be very useful in bugzilla, because they allow users
+ <para>Groups allow the administrator
to isolate bugs or products that should only be seen by certain people.
- Groups can also be a complicated minefield of interdependencies and
- weirdness if mismanaged.
- <example>
- <title>When to Use Group Security</title>
-
- <informalexample>
- <para>Many Bugzilla sites isolate "Security-related" bugs from all
- other bugs. This way, they can have a fix ready before the security
- vulnerability is announced to the world. You can create a
- "Security" product which, by default, has no members, and only add
- members to the group (in their individual User page, as described
- under User Administration) who should have priveleged access to
- "Security" bugs. Alternately, you may create a Group independently
- of any Product, and change the Group mask on individual bugs to
- restrict access to members only of certain Groups.</para>
- </informalexample>
- </example>
-
- Groups only work if you enable the "usebuggroups" paramater. In
- addition, if the "usebuggroupsentry" parameter is "On", one can
- restrict access to products by groups, so that only members of a
- product group are able to view bugs within that product. Group security
- in Bugzilla can be divided into two categories: Generic and
- Product-Based.</para>
-
- <note>
- <para>Groups in Bugzilla are a complicated beast that evolved out of
- very simple user permission bitmasks, apparently itself derived from
- common concepts in UNIX access controls. A "bitmask" is a
- fixed-length number whose value can describe one, and only one, set
- of states. For instance, UNIX file permissions are assigned bitmask
- values: "execute" has a value of 1, "write" has a value of 2, and
- "read" has a value of 4. Add them together, and a file can be read,
- written to, and executed if it has a bitmask of "7". (This is a
- simplified example -- anybody who knows UNIX security knows there is
- much more to it than this. Please bear with me for the purpose of
- this note.) The only way a bitmask scheme can work is by doubling the
- bit count for each value. Thus if UNIX wanted to offer another file
- permission, the next would have to be a value of 8, then the next 16,
- the next 32, etc.</para>
-
- <para>Similarly, Bugzilla offers a bitmask to define group
- permissions, with an internal limit of 64. Several are already
- occupied by built-in permissions. The way around this limitation is
- to avoid assigning groups to products if you have many products,
- avoid bloating of group lists, and religiously prune irrelevant
- groups. In reality, most installations of Bugzilla support far fewer
- than 64 groups, so this limitation has not hit for most sites, but it
- is on the table to be revised for Bugzilla 3.0 because it interferes
- with the security schemes of some administrators.</para>
- </note>
-
- <para>To enable Generic Group Security ("usebuggroups"):</para>
+ There are two types of group - Generic Groups, and Product-Based Groups.
+ </para>
+
+ <para>
+ Product-Based Groups are matched with products, and allow you to restrict
+ access to bugs on a per-product basis. They are enabled using the
+ usebuggroups Param. Turning on the usebuggroupsentry
+ Param will mean bugs automatically get added to their product group when
+ filed.
+ </para>
+
+ <para>
+ Generic Groups have no special relationship to products;
+ you create them, and put bugs in them
+ as required. One example of the use of Generic Groups
+ is Mozilla's "Security" group,
+ into which security-sensitive bugs are placed until fixed. Only the
+ Mozilla Security Team are members of this group.
+ </para>
+
+ <para>To create Generic Groups:</para>
<orderedlist>
<listitem>
- <para>Turn "On" "usebuggroups" in the "Edit Parameters"
- screen.</para>
- </listitem>
-
- <listitem>
- <para>You will generally have no groups set up. Select the "groups"
+ <para>Select the "groups"
link in the footer.</para>
</listitem>
<listitem>
<para>Take a moment to understand the instructions on the "Edit
- Groups" screen. Once you feel confident you understand what is
- expected of you, select the "Add Group" link.</para>
+ Groups" screen, then select the "Add Group" link.</para>
</listitem>
<listitem>
- <para>Fill out the "New Name" (remember, no spaces!), "New
- Description", and "New User RegExp" fields. "New User RegExp"
- allows you to automatically place all users who fulfill the Regular
- Expression into the new group.
- <example>
- <title>Creating a New Group</title>
-
- <informalexample>
- <para>I created a group called DefaultGroup with a description
- of
- <quote>This is simply a group to play with</quote>
-
- , and a New User RegExp of
- <quote>.*@mydomain.tld</quote>
-
- . This new group automatically includes all Bugzilla users with
- "@mydomain.tld" at the end of their user id. When I finished,
- my new group was assigned bit #128.</para>
- </informalexample>
- </example>
-
- When you have finished, select the Add button.</para>
+ <para>Fill out the "New Name", "New Description", and
+ "New User RegExp" fields. "New User RegExp" allows you to automatically
+ place all users who fulfill the Regular Expression into the new group.
+ When you have finished, click "Add".</para>
</listitem>
</orderedlist>
- <para>To enable Product-Based Group Security
- (usebuggroupsentry):</para>
-
- <warning>
- <para>Don't forget that you only have 64 groups masks available,
- total, for your installation of Bugzilla! If you plan on having more
- than 50 products in your individual Bugzilla installation, and
- require group security for your products, you should consider either
- running multiple Bugzillas or using Generic Group Security instead of
- Product-Based ("usebuggroupsentry") Group Security.</para>
- </warning>
+ <para>To use Product-Based Groups:</para>
<orderedlist>
<listitem>
- <para>Turn "On" "usebuggroups" and "usebuggroupsentry" in the "Edit
+ <para>Turn on "usebuggroups" and "usebuggroupsentry" in the "Edit
Parameters" screen.</para>
<warning>
- <para>"usebuggroupsentry" has the capacity to prevent the
+ <para>XXX is this still true?
+ "usebuggroupsentry" has the capacity to prevent the
administrative user from directly altering bugs because of
conflicting group permissions. If you plan on using
"usebuggroupsentry", you should plan on restricting
</listitem>
<listitem>
- <para>You will generally have no Groups set up, unless you enabled
- "usebuggroupsentry" prior to creating any Products. To create
- "Generic Group Security" groups, follow the instructions given
- above. To create Product-Based Group security, simply follow the
- instructions for creating a new Product. If you need to add users
- to these new groups as you create them, you will find the option to
- add them to the group available under the "Edit User"
- screens.</para>
+ <para>In future, when you create a Product, a matching group will be
+ automatically created. If you need to add a Product Group to
+ a Product which was created before you turned on usebuggroups,
+ then simply create a new group, as outlined above, with the
+ same name as the Product.</para>
</listitem>
</orderedlist>
- <para>You may find this example illustrative for how bug groups work.
- <example>
- <title>Bugzilla Groups</title>
-
- <literallayout>Bugzilla Groups example ----------------------- For
- this example, let us suppose we have four groups, call them Group1,
- Group2, Group3, and Group4. We have 5 users, User1, User2, User3,
- User4, User5. We have 8 bugs, Bug1, ..., Bug8. Group membership is
- defined by this chart: (X denotes that user is in that group.) (I
- apologize for the nasty formatting of this table. Try viewing it in a
- text-based browser or something for now. -MPB) G G G G r r r r o o o
- o u u u u p p p p 1 2 3 4 +-+-+-+-+ User1|X| | | | +-+-+-+-+ User2|
- |X| | | +-+-+-+-+ User3|X| |X| | +-+-+-+-+ User4|X|X|X| | +-+-+-+-+
- User5| | | | | +-+-+-+-+ Bug restrictions are defined by this chart:
- (X denotes that bug is restricted to that group.) G G G G r r r r o o
- o o u u u u p p p p 1 2 3 4 +-+-+-+-+ Bug1| | | | | +-+-+-+-+ Bug2|
- |X| | | +-+-+-+-+ Bug3| | |X| | +-+-+-+-+ Bug4| | | |X| +-+-+-+-+
- Bug5|X|X| | | +-+-+-+-+ Bug6|X| |X| | +-+-+-+-+ Bug7|X|X|X| |
- +-+-+-+-+ Bug8|X|X|X|X| +-+-+-+-+ Who can see each bug? Bug1 has no
- group restrictions. Therefore, Bug1 can be seen by any user, whatever
- their group membership. This is going to be the only bug that User5
- can see, because User5 isn't in any groups. Bug2 can be seen by
- anyone in Group2, that is User2 and User4. Bug3 can be seen by anyone
- in Group3, that is User3 and User4. Bug4 can be seen by anyone in
- Group4. Nobody is in Group4, so none of these users can see Bug4.
- Bug5 can be seen by anyone who is in _both_ Group1 and Group2. This
- is only User4. User1 cannot see it because he is not in Group2, and
- User2 cannot see it because she is not in Group1. Bug6 can be seen by
- anyone who is in both Group1 and Group3. This would include User3 and
- User4. Similar to Bug5, User1 cannot see Bug6 because he is not in
- Group3. Bug7 can be seen by anyone who is in Group1, Group2, and
- Group3. This is only User4. All of the others are missing at least
- one of those group privileges, and thus cannot see the bug. Bug8 can
- be seen by anyone who is in Group1, Group2, Group3, and Group4. There
- is nobody in all four of these groups, so nobody can see Bug8. It
- doesn't matter that User4 is in Group1, Group2, and Group3, since he
- isn't in Group4.</literallayout>
- </example>
- </para>
+ <warning>
+ <para>Bugzilla currently has a limit of 64 groups per installation. If
+ you have more than about 50 products, you should consider
+ running multiple Bugzillas. Ask in the newsgroup for other
+ suggestions for working around this restriction.</para>
+ </warning>
+
+ <para>
+ Note that group permissions are such that you need to be a member
+ of <emphasis>all</emphasis> the groups a bug is in, for whatever
+ reason, to see that bug.
+ </para>
</section>
+
<section id="security">
<title>Bugzilla Security</title>
- <epigraph>
- <para>Putting your money in a wall safe is better protection than
- depending on the fact that no one knows that you hide your money in a
- mayonnaise jar in your fridge.</para>
- </epigraph>
-
- <note>
- <para>Poorly-configured MySQL, Bugzilla, and FTP installations have
+ <warning>
+ <para>Poorly-configured MySQL and Bugzilla installations have
given attackers full access to systems in the past. Please take these
guidelines seriously, even for Bugzilla machines hidden away behind
your firewall. 80% of all computer trespassers are insiders, not
anonymous crackers.</para>
- </note>
+ </warning>
- <para>Secure your installation.
<note>
<para>These instructions must, of necessity, be somewhat vague since
Bugzilla runs on so many different platforms. If you have refinements
</para>
</note>
+ <para>To secure your installation:
+
<orderedlist>
<listitem>
<para>Ensure you are running at least MysQL version 3.22.32 or newer.
- Earlier versions had notable security holes and poorly secured
- default configuration choices.</para>
+ Earlier versions had notable security holes and (from a security
+ point of view) poor default configuration choices.</para>
</listitem>
<listitem>
system!</emphasis>
Read
- <ulink
- url="http://www.mysql.com/documentation/mysql/bychapter/manual_Privilege_system.html">
+ <ulink url="http://www.mysql.com/doc/P/r/Privilege_system.html">
The MySQL Privilege System</ulink>
-
until you can recite it from memory!</para>
-
- <para>At the very least, ensure you password the "mysql -u root"
- account and the "bugs" account, establish grant table rights (consult
- the Keystone guide in Appendix C: The Bugzilla Database for some
- easy-to-use details) that do not allow CREATE, DROP, RELOAD,
- SHUTDOWN, and PROCESS for user "bugs". I wrote up the Keystone advice
- back when I knew far less about security than I do now : )</para>
</listitem>
<listitem>
<listitem>
<para>Ensure you have adequate access controls for the
- $BUGZILLA_HOME/data/ and $BUGZILLA_HOME/shadow/ directories, as well
- as the $BUGZILLA_HOME/localconfig and $BUGZILLA_HOME/globals.pl
- files. The localconfig file stores your "bugs" user password, which
- would be terrible to have in the hands of a criminal, while the
- "globals.pl" stores some default information regarding your
- installation which could aid a system cracker. In addition, some
- files under $BUGZILLA_HOME/data/ store sensitive information, and
- $BUGZILLA_HOME/shadow/ stores bug information for faster retrieval.
- If you fail to secure these directories and this file, you will
- expose bug information to those who may not be allowed to see
- it.</para>
+ $BUGZILLA_HOME/data/ directory, as well as the
+ $BUGZILLA_HOME/localconfig file.
+ The localconfig file stores your "bugs" database account password.
+ In addition, some
+ files under $BUGZILLA_HOME/data/ store sensitive information.
+ </para>
- <note>
- <para>Bugzilla provides default .htaccess files to protect the most
- common Apache installations. However, you should verify these are
- adequate according to the site-wide security policy of your web
- server, and ensure that the .htaccess files are allowed to
- "override" default permissions set in your Apache configuration
- files. Covering Apache security is beyond the scope of this Guide;
- please consult the Apache documentation for details.</para>
-
- <para>If you are using a web server that does not support the
- .htaccess control method,
- <emphasis>you are at risk!</emphasis>
-
- After installing, check to see if you can view the file
- "localconfig" in your web browser (e.g.:
- <ulink url="http://bugzilla.mozilla.org/localconfig">
- http://bugzilla.mozilla.org/localconfig</ulink>
-
- ). If you can read the contents of this file, your web server has
- not secured your bugzilla directory properly and you must fix this
- problem before deploying Bugzilla. If, however, it gives you a
- "Forbidden" error, then it probably respects the .htaccess
- conventions and you are good to go.</para>
- </note>
+ <para>Bugzilla provides default .htaccess files to protect the most
+ common Apache installations. However, you should verify these are
+ adequate according to the site-wide security policy of your web
+ server, and ensure that the .htaccess files are allowed to
+ "override" default permissions set in your Apache configuration
+ files. Covering Apache security is beyond the scope of this Guide;
+ please consult the Apache documentation for details.</para>
+
+ <para>If you are using a web server that does not support the
+ .htaccess control method,
+ <emphasis>you are at risk!</emphasis>
+
+ After installing, check to see if you can view the file
+ "localconfig" in your web browser (e.g.:
+ <ulink url="http://bugzilla.mozilla.org/localconfig">
+ http://bugzilla.mozilla.org/localconfig</ulink>
+
+ ). If you can read the contents of this file, your web server has
+ not secured your bugzilla directory properly and you must fix this
+ problem before deploying Bugzilla. If, however, it gives you a
+ "Forbidden" error, then it probably respects the .htaccess
+ conventions and you are good to go.</para>
<para>When you run checksetup.pl, the script will attempt to modify
various permissions on files which Bugzilla uses. If you do not have
<ulink url="http://bugzilla.mozilla.org/show_bug.cgi?id=65572">Bug
65572</ulink>
- for adequate protection in your data/ and shadow/ directories.</para>
+ for adequate protection in your data/ directory.</para>
<para>Note the instructions which follow are Apache-specific. If you
use IIS, Netscape, or other non-Apache web servers, please consult
allow from all</literallayout>
</para>
- <para>Place the following text into a file named ".htaccess",
- readable by your web server, in your $BUGZILLA_HOME/shadow directory.
-
- <literallayout>deny from all</literallayout>
- </para>
</listitem>
</orderedlist>
</para>
</para>
<para>
- The other method is to copy the templates into
- <filename>template/en/custom</filename>. This method is better if
+ The other method is to copy the templates into a mirrored directory
+ structure under <filename>template/en/custom</filename>.
+ This method is better if
you are going to make major changes, because it is guaranteed that
the contents of this directory will not be touched during an upgrade,
and you can then decide whether to continue using your own templates,
this guide. It's reasonably easy to pick up by looking at the current
templates; or, you can read the manual, available on the
<ulink url="http://www.template-toolkit.org">Template Toolkit home
- page </ulink>.
+ page</ulink>.
</para>
+
+ <note>
+ <para>
+ Don't directly edit the compiled templates in
+ <filename class="directory">data/template/*</filename> - your
+ changes will be lost when Template Toolkit recompiles them.
+ </para>
+ </note>
</section>
<section>
Editing these is a way to quickly get a distinctive look and
feel for your Bugzilla installation.
</para>
+
+ <para>
+ <command>bug/create/create.html.tmpl</command> and
+ <command>bug/create/comment.txt.tmpl</command>:
+ You may wish to get bug submitters to give certain bits of structured
+ information, each in a separate input widget, for which there is not a
+ field in the database. The bug entry system has been designed in an
+ extensible fashion to enable you to define arbitrary fields and widgets,
+ and have their values appear formatted in the initial
+ Description (rather than in database fields.)
+ </para>
+
+ <para>
+ To make this work, create a custom template for
+ <filename>enter_bug.cgi</filename> (the default template, on which you
+ could base it, is <filename>create.html.tmpl</filename>),
+ and either call it <filename>create.html.tmpl</filename> or
+ <filename>create-<formatname>.html.tmpl</filename>.
+ Put it in the <filename class="directory">custom/bug/create</filename>
+ directory. In it, add widgets for each piece of information you'd like
+ collected - such as a build number, or set of steps to reproduce.
+ </para>
+
+ <para>
+ Then, create a template like
+ <filename>custom/bug/create/comment.txt.tmpl</filename>, which
+ references the form fields you have created. When a bug report is
+ submitted, the initial comment attached to the bug report will be
+ formatted according to the layout of this template.
+ </para>
+
+ <para>
+ For example, if your enter_bug template had a field
+ <programlisting>
+ <input type="text" name="buildid" size="30">
+ </programlisting>
+ and then your comment.txt.tmpl had
+ <programlisting>
+ BuildID: [% form.buildid %]
+ </programlisting>
+ then
+ <programlisting>
+ BuildID: 20020303
+ </programlisting>
+ would appear in the initial checkin comment.
+ </para>
</section>
<section>
Save the template as <filename><stubname>-<formatname>.<contenttypetag>.tmpl</filename>.
Try out the template by calling the CGI as
<filename><cginame>.cgi?format=<formatname></filename> .
- </para>
+ </para>
</section>
</section>
+ <section id="upgrading">
+ <title>Upgrading to New Releases</title>
+
+ <para>A plain Bugzilla is fairly easy to upgrade from one version to a
+ newer one. However, things get a bit more complicated if you've made
+ changes to Bugzilla's code. In this case, you may have to re-make or
+ reapply those changes. It is recommended that you take a backup of your
+ database and your entire Bugzilla installation before attempting an
+ upgrade. You can upgrade a 'clean' installation by untarring a new
+ tarball over the old installation. If you are upgrading from 2.12 or
+ later, you can type
+ <filename>cvs -z3 update</filename>,
+ and resolve conflicts if there are any.</para>
+
+ <para>Because the developers of Bugzilla are constantly adding new
+ tables, columns and fields, you'll probably get SQL errors if you just
+ update the code and attempt to use Bugzilla. Always run the
+ <filename>checksetup.pl</filename>
+ script whenever you upgrade your installation.</para>
+
+ <para>If you are running Bugzilla version 2.8 or lower, and wish to
+ upgrade to the latest version, please consult the file,
+ "UPGRADING-pre-2.8" in the Bugzilla root directory after untarring the
+ archive.</para>
+ </section>
<!-- Integrating Bugzilla with Third-Party Tools -->
&integration;
<entry>File Names</entry>
<entry>
- <filename>file.extension</filename>
+ <filename>filename</filename>
</entry>
</row>
! You should have locked your security down like the installation
instructions told you to. You can find details on locking down
your database in the Bugzilla FAQ in this directory (under
- "Security"), or more robust security generalities in the MySQL
- searchable documentation at
- http://www.mysql.com/php/manual.php3?section=Privilege_system
- .</para>
+ "Security"), or more robust security generalities in the
+ <ulink url="http://www.mysql.com/php/manual.php3?section=Privilege_system">MySQL
+ searchable documentation</ulink>.
+ </para>
</listitem>
<listitem>
<command>use bugs;</command>
</para>
- <note>
- <para>Don't forget the
- <quote>;</quote>
-
- at the end of each line, or you'll be kicking yourself
- later.</para>
- </note>
</listitem>
</orderedlist>
</para>
<para>
<prompt>mysql></prompt>
-
<command>show tables from bugs;</command>
</para>
- <para>you'll be able to see all the
+ <para>you'll be able to see the names of all the
<quote>spreadsheets</quote>
+ (tables) in your database.</para>
+
+ <para>From the command issued above, ou should have some
+ output that looks like this:
+<programlisting>
++-------------------+
+| Tables in bugs |
++-------------------+
+| attachments |
+| bugs |
+| bugs_activity |
+| cc |
+| components |
+| dependencies |
+| fielddefs |
+| groups |
+| keyworddefs |
+| keywords |
+| logincookies |
+| longdescs |
+| milestones |
+| namedqueries |
+| products |
+| profiles |
+| profiles_activity |
+| shadowlog |
+| tokens |
+| versions |
+| votes |
+| watch |
++-------------------+
+</programlisting>
+</para>
+
+<literallayout>
+ Here's an overview of what each table does. Most columns in each table have
+descriptive names that make it fairly trivial to figure out their jobs.
+
+attachments: This table stores all attachments to bugs. It tends to be your
+largest table, yet also generally has the fewest entries because file
+attachments are so (relatively) large.
+
+bugs: This is the core of your system. The bugs table stores most of the
+current information about a bug, with the exception of the info stored in the
+other tables.
+
+bugs_activity: This stores information regarding what changes are made to bugs
+when -- a history file.
+
+cc: This tiny table simply stores all the CC information for any bug which has
+any entries in the CC field of the bug. Note that, like most other tables in
+Bugzilla, it does not refer to users by their user names, but by their unique
+userid, stored as a primary key in the profiles table.
+
+components: This stores the programs and components (or products and
+components, in newer Bugzilla parlance) for Bugzilla. Curiously, the "program"
+(product) field is the full name of the product, rather than some other unique
+identifier, like bug_id and user_id are elsewhere in the database.
+
+dependencies: Stores data about those cool dependency trees.
+
+fielddefs: A nifty table that defines other tables. For instance, when you
+submit a form that changes the value of "AssignedTo" this table allows
+translation to the actual field name "assigned_to" for entry into MySQL.
+
+groups: defines bitmasks for groups. A bitmask is a number that can uniquely
+identify group memberships. For instance, say the group that is allowed to
+tweak parameters is assigned a value of "1", the group that is allowed to edit
+users is assigned a "2", and the group that is allowed to create new groups is
+assigned the bitmask of "4". By uniquely combining the group bitmasks (much
+like the chmod command in UNIX,) you can identify a user is allowed to tweak
+parameters and create groups, but not edit users, by giving him a bitmask of
+"5", or a user allowed to edit users and create groups, but not tweak
+parameters, by giving him a bitmask of "6" Simple, huh?
+ If this makes no sense to you, try this at the mysql prompt:
+mysql> select * from groups;
+ You'll see the list, it makes much more sense that way.
+
+keyworddefs: Definitions of keywords to be used
+
+keywords: Unlike what you'd think, this table holds which keywords are
+associated with which bug id's.
+
+logincookies: This stores every login cookie ever assigned to you for every
+machine you've ever logged into Bugzilla from. Curiously, it never does any
+housecleaning -- I see cookies in this file I've not used for months. However,
+since Bugzilla never expires your cookie (for convenience' sake), it makes
+sense.
+
+longdescs: The meat of bugzilla -- here is where all user comments are stored!
+You've only got 2^24 bytes per comment (it's a mediumtext field), so speak
+sparingly -- that's only the amount of space the Old Testament from the Bible
+would take (uncompressed, 16 megabytes). Each comment is keyed to the
+bug_id to which it's attached, so the order is necessarily chronological, for
+comments are played back in the order in which they are received.
+
+milestones: Interesting that milestones are associated with a specific product
+in this table, but Bugzilla does not yet support differing milestones by
+product through the standard configuration interfaces.
+
+namedqueries: This is where everybody stores their "custom queries". Very
+cool feature; it beats the tar out of having to bookmark each cool query you
+construct.
+
+products: What products you have, whether new bug entries are allowed for the
+product, what milestone you're working toward on that product, votes, etc. It
+will be nice when the components table supports these same features, so you
+could close a particular component for bug entry without having to close an
+entire product...
+
+profiles: Ahh, so you were wondering where your precious user information was
+stored? Here it is! With the passwords in plain text for all to see! (but
+sshh... don't tell your users!)
+
+profiles_activity: Need to know who did what when to who's profile? This'll
+tell you, it's a pretty complete history.
+
+shadowlog: I could be mistaken here, but I believe this table tells you when
+your shadow database is updated and what commands were used to update it. We
+don't use a shadow database at our site yet, so it's pretty empty for us.
+
+versions: Version information for every product
+
+votes: Who voted for what when
+
+watch: Who (according to userid) is watching who's bugs (according to their
+userid).
- (tables) in your database. It is similar to a file system, only
- faster and more robust for certain types of operations.</para>
-
- <para>From the command issued above, ou should have some output that
- looks like this:
- <programlisting>+-------------------+ | Tables in bugs |
- +-------------------+ | attachments | | bugs | | bugs_activity | | cc
- | | components | | dependencies | | fielddefs | | groups | |
- keyworddefs | | keywords | | logincookies | | longdescs | |
- milestones | | namedqueries | | products | | profiles | |
- profiles_activity | | shadowlog | | tokens | | versions | | votes | |
- watch | +-------------------+</programlisting>
- </para>
- <literallayout>Here's an overview of what each table does. Most
- columns in each table have descriptive names that make it fairly
- trivial to figure out their jobs. attachments: This table stores all
- attachments to bugs. It tends to be your largest table, yet also
- generally has the fewest entries because file attachments are so
- (relatively) large. bugs: This is the core of your system. The bugs
- table stores most of the current information about a bug, with the
- exception of the info stored in the other tables. bugs_activity: This
- stores information regarding what changes are made to bugs when -- a
- history file. cc: This tiny table simply stores all the CC
- information for any bug which has any entries in the CC field of the
- bug. Note that, like most other tables in Bugzilla, it does not refer
- to users by their user names, but by their unique userid, stored as a
- primary key in the profiles table. components: This stores the
- programs and components (or products and components, in newer
- Bugzilla parlance) for Bugzilla. Curiously, the "program" (product)
- field is the full name of the product, rather than some other unique
- identifier, like bug_id and user_id are elsewhere in the database.
- dependencies: Stores data about those cool dependency trees.
- fielddefs: A nifty table that defines other tables. For instance,
- when you submit a form that changes the value of "AssignedTo" this
- table allows translation to the actual field name "assigned_to" for
- entry into MySQL. groups: defines bitmasks for groups. A bitmask is a
- number that can uniquely identify group memberships. For instance,
- say the group that is allowed to tweak parameters is assigned a value
- of "1", the group that is allowed to edit users is assigned a "2",
- and the group that is allowed to create new groups is assigned the
- bitmask of "4". By uniquely combining the group bitmasks (much like
- the chmod command in UNIX,) you can identify a user is allowed to
- tweak parameters and create groups, but not edit users, by giving him
- a bitmask of "5", or a user allowed to edit users and create groups,
- but not tweak parameters, by giving him a bitmask of "6" Simple, huh?
- If this makes no sense to you, try this at the mysql prompt:
- mysql> select * from groups; You'll see the list, it makes much
- more sense that way. keyworddefs: Definitions of keywords to be used
- keywords: Unlike what you'd think, this table holds which keywords
- are associated with which bug id's. logincookies: This stores every
- login cookie ever assigned to you for every machine you've ever
- logged into Bugzilla from. Curiously, it never does any housecleaning
- -- I see cookies in this file I've not used for months. However,
- since Bugzilla never expires your cookie (for convenience' sake), it
- makes sense. longdescs: The meat of bugzilla -- here is where all
- user comments are stored! You've only got 2^24 bytes per comment
- (it's a mediumtext field), so speak sparingly -- that's only the
- amount of space the Old Testament from the Bible would take
- (uncompressed, 16 megabytes). Each comment is keyed to the bug_id to
- which it's attached, so the order is necessarily chronological, for
- comments are played back in the order in which they are received.
- milestones: Interesting that milestones are associated with a
- specific product in this table, but Bugzilla does not yet support
- differing milestones by product through the standard configuration
- interfaces. namedqueries: This is where everybody stores their
- "custom queries". Very cool feature; it beats the tar out of having
- to bookmark each cool query you construct. products: What products
- you have, whether new bug entries are allowed for the product, what
- milestone you're working toward on that product, votes, etc. It will
- be nice when the components table supports these same features, so
- you could close a particular component for bug entry without having
- to close an entire product... profiles: Ahh, so you were wondering
- where your precious user information was stored? Here it is! With the
- passwords in plain text for all to see! (but sshh... don't tell your
- users!) profiles_activity: Need to know who did what when to who's
- profile? This'll tell you, it's a pretty complete history. shadowlog:
- I could be mistaken here, but I believe this table tells you when
- your shadow database is updated and what commands were used to update
- it. We don't use a shadow database at our site yet, so it's pretty
- empty for us. versions: Version information for every product votes:
- Who voted for what when watch: Who (according to userid) is watching
- who's bugs (according to their userid). === THE DETAILS === Ahh, so
- you're wondering just what to do with the information above? At the
- mysql prompt, you can view any information about the columns in a
- table with this command (where "table" is the name of the table you
- wish to view): mysql> show columns from table; You can also view
- all the data in a table with this command: mysql> select * from
- table; -- note: this is a very bad idea to do on, for instance, the
- "bugs" table if you have 50,000 bugs. You'll be sitting there a while
- until you ctrl-c or 50,000 bugs play across your screen. You can
- limit the display from above a little with the command, where
- "column" is the name of the column for which you wish to restrict
- information: mysql> select * from table where (column = "some
- info"); -- or the reverse of this mysql> select * from table where
- (column != "some info"); Let's take our example from the
- introduction, and assume you need to change the word "verified" to
- "approved" in the resolution field. We know from the above
- information that the resolution is likely to be stored in the "bugs"
- table. Note we'll need to change a little perl code as well as this
- database change, but I won't plunge into that in this document. Let's
- verify the information is stored in the "bugs" table: mysql> show
- columns from bugs (exceedingly long output truncated here) |
- bug_status|
- enum('UNCONFIRMED','NEW','ASSIGNED','REOPENED','RESOLVED','VERIFIED','CLOSED')||MUL
- | UNCONFIRMED|| Sorry about that long line. We see from this that the
- "bug status" column is an "enum field", which is a MySQL peculiarity
- where a string type field can only have certain types of entries.
- While I think this is very cool, it's not standard SQL. Anyway, we
- need to add the possible enum field entry 'APPROVED' by altering the
- "bugs" table. mysql> ALTER table bugs CHANGE bug_status bug_status
- -> enum("UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED", "RESOLVED",
- -> "VERIFIED", "APPROVED", "CLOSED") not null; (note we can take
- three lines or more -- whatever you put in before the semicolon is
- evaluated as a single expression) Now if you do this: mysql> show
- columns from bugs; you'll see that the bug_status field has an extra
- "APPROVED" enum that's available! Cool thing, too, is that this is
- reflected on your query page as well -- you can query by the new
- status. But how's it fit into the existing scheme of things? Looks
- like you need to go back and look for instances of the word
- "verified" in the perl code for Bugzilla -- wherever you find
- "verified", change it to "approved" and you're in business (make sure
- that's a case-insensitive search). Although you can query by the enum
- field, you can't give something a status of "APPROVED" until you make
- the perl changes. Note that this change I mentioned can also be done
- by editing checksetup.pl, which automates a lot of this. But you need
- to know this stuff anyway, right? I hope this database tutorial has
- been useful for you. If you have comments to add, questions,
- concerns, etc. please direct them to mbarnson@excitehome.net. Please
- direct flames to /dev/null :) Have a nice day! === LINKS === Great
- MySQL tutorial site:
- http://www.devshed.com/Server_Side/MySQL/</literallayout>
+===
+THE DETAILS
+===
+
+ Ahh, so you're wondering just what to do with the information above? At the
+mysql prompt, you can view any information about the columns in a table with
+this command (where "table" is the name of the table you wish to view):
+
+mysql> show columns from table;
+
+ You can also view all the data in a table with this command:
+
+mysql> select * from table;
+
+ -- note: this is a very bad idea to do on, for instance, the "bugs" table if
+you have 50,000 bugs. You'll be sitting there a while until you ctrl-c or
+50,000 bugs play across your screen.
+
+ You can limit the display from above a little with the command, where
+"column" is the name of the column for which you wish to restrict information:
+
+mysql> select * from table where (column = "some info");
+
+ -- or the reverse of this
+
+mysql> select * from table where (column != "some info");
+
+ Let's take our example from the introduction, and assume you need to change
+the word "verified" to "approved" in the resolution field. We know from the
+above information that the resolution is likely to be stored in the "bugs"
+table. Note we'll need to change a little perl code as well as this database
+change, but I won't plunge into that in this document. Let's verify the
+information is stored in the "bugs" table:
+
+mysql> show columns from bugs
+
+ (exceedingly long output truncated here)
+| bug_status| enum('UNCONFIRMED','NEW','ASSIGNED','REOPENED','RESOLVED','VERIFIED','CLOSED')||MUL | UNCONFIRMED||
+
+ Sorry about that long line. We see from this that the "bug status" column is
+an "enum field", which is a MySQL peculiarity where a string type field can
+only have certain types of entries. While I think this is very cool, it's not
+standard SQL. Anyway, we need to add the possible enum field entry
+'APPROVED' by altering the "bugs" table.
+
+mysql> ALTER table bugs CHANGE bug_status bug_status
+ -> enum("UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED", "RESOLVED",
+ -> "VERIFIED", "APPROVED", "CLOSED") not null;
+
+ (note we can take three lines or more -- whatever you put in before the
+semicolon is evaluated as a single expression)
+
+Now if you do this:
+
+mysql> show columns from bugs;
+
+ you'll see that the bug_status field has an extra "APPROVED" enum that's
+available! Cool thing, too, is that this is reflected on your query page as
+well -- you can query by the new status. But how's it fit into the existing
+scheme of things?
+ Looks like you need to go back and look for instances of the word "verified"
+in the perl code for Bugzilla -- wherever you find "verified", change it to
+"approved" and you're in business (make sure that's a case-insensitive search).
+Although you can query by the enum field, you can't give something a status
+of "APPROVED" until you make the perl changes. Note that this change I
+mentioned can also be done by editing checksetup.pl, which automates a lot of
+this. But you need to know this stuff anyway, right?
+ </literallayout>
</section>
</section>
</section>
- <section id="granttables">
- <title>MySQL Permissions & Grant Tables</title>
-
- <note>
- <para>The following portion of documentation comes from my answer to an
- old discussion of Keystone, a cool product that does trouble-ticket
- tracking for IT departments. I wrote this post to the Keystone support
- group regarding MySQL grant table permissions, and how to use them
- effectively. It is badly in need of updating, as I believe MySQL has
- added a field or two to the grant tables since this time, but it serves
- as a decent introduction and troubleshooting document for grant table
- issues. I used Keynote to track my troubles until I discovered
- Bugzilla, which gave me a whole new set of troubles to work on : )
- Although it is of limited use, it still has SOME use, thus it's still
- included.</para>
-
- <para>Please note, however, that I was a relatively new user to MySQL
- at the time. Some of my suggestions, particularly in how to set up
- security, showed a terrible lack of security-related database
- experience.</para>
- </note>
-
- <literallayout>From matt_barnson@singletrac.com Wed Jul 7 09:00:07 1999
- Date: Mon, 1 Mar 1999 21:37:04 -0700 From: Matthew Barnson
- matt_barnson@singletrac.com To: keystone-users@homeport.org Subject:
- [keystone-users] Grant Tables FAQ [The following text is in the
- "iso-8859-1" character set] [Your display is set for the "US-ASCII"
- character set] [Some characters may be displayed incorrectly] Maybe we
- can include this rambling message in the Keystone FAQ? It gets asked a
- lot, and the only option current listed in the FAQ is
- "--skip-grant-tables". Really, you can't go wrong by reading section 6 of
- the MySQL manual, at http://www.mysql.com/Manual/manual.html. I am sure
- their description is better than mine. MySQL runs fine without
- permissions set up correctly if you run the mysql daemon with the
- "--skip-grant-tables" option. Running this way denies access to nobody.
- Unfortunately, unless you've got yourself firewalled it also opens the
- potential for abuse if someone knows you're running it. Additionally, the
- default permissions for MySQL allow anyone at localhost access to the
- database if the database name begins with "test_" or is named "test"
- (i.e. "test_keystone"). You can change the name of your database in the
- keystone.conf file ($sys_dbname). This is the way I am doing it for some
- of my databases, and it works fine. The methods described below assume
- you're running MySQL on the same box as your webserver, and that you
- don't mind if your $sys_dbuser for Keystone has superuser access. See
- near the bottom of this message for a description of what each field
- does. Method #1: 1. cd /var/lib #location where you'll want to run
- /usr/bin/mysql_install_db shell script from to get it to work. 2. ln -s
- mysql data # soft links the "mysql" directory to "data", which is what
- mysql_install_db expects. Alternately, you can edit mysql_install_db and
- change all the "./data" references to "./mysql". 3. Edit
- /usr/bin/mysql_install_db with your favorite text editor (vi, emacs, jot,
- pico, etc.) A) Copy the "INSERT INTO db VALUES
- ('%','test\_%','','Y','Y','Y','Y','Y','Y');" and paste it immediately
- after itself. Chage the 'test\_%' value to 'keystone', or the value of
- $sys_dbname in keystone.conf. B) If you are running your keystone
- database with any user, you'll need to copy the "INSERT INTO user VALUES
- ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');" line
- after itself and change 'root' to the name of the keystone database user
- ($sys_dbuser) in keystone.conf. # adds entries to the script to create
- grant tables for specific hosts and users. The user you set up has
- super-user access ($sys_dbuser) -- you may or may not want this. The
- layout of mysql_install_db is really very uncomplicated. 4.
- /usr/bin/mysqladmin shutdown # ya gotta shut it down before you can
- reinstall the grant tables! 5. rm -i /var/lib/mysql/mysql/*.IS?' and
- answer 'Y' to the deletion questions. # nuke your current grant tables.
- This WILL NOT delete any other databases than your grant tables. 6.
- /usr/bin/mysql_install_db # run the script you just edited to install
- your new grant tables. 7. mysqladmin -u root password (new_password) #
- change the root MySQL password, or else anyone on localhost can login to
- MySQL as root and make changes. You can skip this step if you want
- keystone to connect as root with no password. 8. mysqladmin -u
- (webserver_user_name) password (new_password) # change the password of
- the $sys_dbuser. Note that you will need to change the password in the
- keystone.conf file as well in $sys_dbpasswd, and if your permissions are
- set up incorrectly anybody can type the URL to your keystone.conf file
- and get the password. Not that this will help them much if your
- permissions are set to @localhost. Method #2: easier, but a pain
- reproducing if you have to delete your grant tables. This is the
- "recommended" method for altering grant tables in MySQL. I don't use it
- because I like the other way :) shell> mysql --user=root keystone
- mysql> GRANT
- SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP,RELOAD,SHUTDOWN,PROCESS,
- FILE, ON keystone.* TO <$sys_dbuser name>@localhost IDENTIFIED BY
- '(password)' WITH GRANT OPTION; OR mysql> GRANT ALL PRIVILEGES ON
- keystone.* TO <$sys_dbuser name>@localhost IDENTIFIED BY
- '(password)' WITH GRANT OPTION; # this grants the required permissions to
- the keystone ($sys_dbuser) account defined in keystone.conf. However, if
- you are runnning many different MySQL-based apps, as we are, it's
- generally better to edit the mysql_install_db script to be able to
- quickly reproduce your permissions structure again. Note that the FILE
- privelege and WITH GRANT OPTION may not be in your best interest to
- include. GRANT TABLE FIELDS EXPLANATION: Quick syntax summary: "%" in
- MySQL is a wildcard. I.E., if you are defining your DB table and in the
- 'host' field and enter '%', that means that any host can access that
- database. Of course, that host must also have a valid db user in order to
- do anything useful. 'db'=name of database. In our case, it should be
- "keystone". "user" should be your "$sys_dbuser" defined in keystone.conf.
- Note that you CANNOT add or change a password by using the "INSERT INTO
- db (X)" command -- you must change it with the mysql -u command as
- defined above. Passwords are stored encrypted in the MySQL database, and
- if you try to enter it directly into the table they will not match.
- TABLE: USER. Everything after "password" is a privelege granted (Y/N).
- This table controls individual user global access rights.
- 'host','user','password','select','insert','update','delete','index','alter'
- ,'create','drop','grant','reload','shutdown','process','file' TABLE: DB.
- This controls access of USERS to databases.
- 'host','db','user','select','insert','update','delete','index','alter','crea
- te','drop','grant' TABLE: HOST. This controls which HOSTS are allowed
- what global access rights. Note that the HOST table, USER table, and DB
- table are very closely connected -- if an authorized USER attempts an SQL
- request from an unauthorized HOST, she's denied. If a request from an
- authorized HOST is not an authorized USER, it is denied. If a globally
- authorized USER does not have rights to a certain DB, she's denied. Get
- the picture?
- 'host','db','select','insert','update','delete','index','alter','create','dr
- op','grant' You should now have a working knowledge of MySQL grant
- tables. If there is anything I've left out of this answer that you feel
- is pertinent, or if my instructions don't work for you, please let me
- know and I'll re-post this letter again, corrected. I threw it together
- one night out of exasperation for all the newbies who don't know squat
- about MySQL yet, so it is almost guaranteed to have errors. Once again,
- you can't go wrong by reading section 6 of the MySQL manual. It is more
- detailed than I! http://www.mysql.com/Manual/manual.html.</literallayout>
- </section>
</appendix>
<!-- Keep this comment at the end of the file
<appendix id="faq">
<title>The Bugzilla FAQ</title>
+ <para>
+ This FAQ includes questions not covered elsewhere in the Guide.
+ </para>
+
<qandaset>
</question>
<answer>
<para>
- A year has gone by, and I <emphasis>still</emphasis> can't
- find any head-to-head comparisons of Bugzilla against
- other defect-tracking software. However, from my personal
+ We can't find any head-to-head comparisons of Bugzilla against
+ other defect-tracking software. If you know of one, please
+ get in touch. However, from the author's personal
experience with other bug-trackers, Bugzilla offers
superior performance on commodity hardware, better price
(free!), more developer- friendly features (such as stored
</para>
<para>
If you happen to be a commercial bug-tracker vendor, please
- step forward with a rebuttal so I can include it in the
- FAQ. We're not in pursuit of Bugzilla ueber alles; we
- simply love having a powerful, open-source tool to get our
- jobs done.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>
- How do I change my user name (email address) in Bugzilla?
- </para>
- </question>
- <answer>
- <para>
- New in 2.16 - go to the Account section of the Preferences. You will
- be emailed at both addresses for confirmation.
+ step forward with a list of advantages your product has over
+ Bugzilla. We'd be happy to include it in the "Competitors"
+ section.
</para>
</answer>
</qandaentry>
<question>
<para>
Why MySQL? I'm interested in seeing Bugzilla run on
- Oracle/Sybase/Msql/PostgreSQL/MSSQL?
+ Oracle/Sybase/Msql/PostgreSQL/MSSQL.
</para>
</question>
<answer>
</question>
<answer>
<para>
- Mozilla.org uses /usr/bonsaitools/bin/perl. The prime rule in making
- submissions is "don't break bugzilla.mozilla.org". If it breaks it, your
- patch will be reverted faster than you can do a diff.
- </para>
- <para>
- Here's Terry Weissman's comment, for some historical context:
- <blockquote>
- <para>
- [This was] purely my own convention. I wanted a place to put a version of
- Perl and other tools that was strictly under my control for the
- various webtools, and not subject to anyone else. Edit it to point
- to whatever you like.
- </para>
- <note>
+ Mozilla.org uses /usr/bonsaitools/bin/perl, because originally
+ Terry wanted a place to put a version of Perl and other tools
+ that was strictly under his control.
+ </para>
<para>
We always recommend that, if possible, you keep the path
- as /usr/bonsaitools/bin/perl, and simply add a /usr/bonsaitools
- and /usr/bonsaitools/bin directory, then symlink your version
- of perl to /usr/bonsaitools/bin/perl. This will make upgrading
+ as /usr/bonsaitools/bin/perl, and simply add symlink.
+ This will make upgrading
your Bugzilla much easier in the future.
</para>
- </note>
- </blockquote>
- </para>
</answer>
</qandaentry>
+
+ <qandaentry>
+ <question>
+ <para>
+ Is there an easy way to change the Bugzilla cookie name?
+ </para>
+ </question>
+ <answer>
+ <para>
+ At present, no.
+ </para>
+ </answer>
+ </qandaentry>
+
</qandadiv>
<qandadiv id="faq-phb">
<qandaentry>
<question>
<para>
- Is Bugzilla web-based or do you have to have specific software or
- specific operating system on your machine?
+ Is Bugzilla web-based, or do you have to have specific software or
+ a specific operating system on your machine?
</para>
</question>
<answer>
<qandaentry>
<question>
<para>
- Has anyone you know of already done any Bugzilla integration with
+ Can Bugzilla integrate with
Perforce (SCM software)?
</para>
</question>
</question>
<answer>
<para>
- Absolutely! You can track up to a "soft-limit" of around
- 64 individual "Products", that can each be composed of as
- many "Components" as you want. Check the Administration
- section of the Bugzilla Guide for more information regarding
- setting up Products and Components.
+ Absolutely! You can track any number of Products (although you
+ are limited to about 55 or so if
+ you are using Product-Based Groups), that can each be composed of any
+ number of Components.
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>
- Does Bugzilla allow attachments (text, screenshots, urls etc)? If yes,
+ Does Bugzilla allow attachments (text, screenshots, URLs etc)? If yes,
are there any that are NOT allowed?
</para>
</question>
</answer>
</qandaentry>
-
- <qandaentry>
- <question>
- <para>
- The index.html page doesn't show the footer. It's really annoying to have
- to go to the querypage just to check my "my bugs" link.
- </para>
- </question>
- <answer>
- <para>If you upgrade to 2.16, the index page has a footer.
- </para>
- </answer>
- </qandaentry>
<qandaentry>
<question>
<para>
<question>
<para>
Is there email notification and if so, what do you see when you get an
- email? Do you see bug number and title or is it only the number?
+ email?
</para>
</question>
<answer>
<qandaentry>
<question>
<para>
- If there is email notification, do users have to have any particular
+ Do users have to have any particular
type of email application?
</para>
</question>
</answer>
</qandaentry>
- <qandaentry>
- <question>
- <para>
- If I just wanted to track certain bugs, as they go through life, can I
- set it up to alert me via email whenever that bug changes, whether it be
- owner, status or description etc.?
- </para>
- </question>
- <answer>
- <para>
- Yes. Place yourself in the "cc" field of the bug you wish to monitor.
- Then change your "Notify me of changes to" field in the Email Settings
- tab of the User Preferences screen in Bugzilla to the "Only those
- bugs which I am listed on the CC line" option.
- </para>
- </answer>
- </qandaentry>
-
<qandaentry>
<question>
<para>
</answer>
</qandaentry>
- <qandaentry>
- <question>
- <para>
- Can a user re-run a report with a new project, same query?
- </para>
- </question>
- <answer>
- <para>
- Yes.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>
- Can a user modify an existing report and then save it into another name?
- </para>
- </question>
- <answer>
- <para>
- You can save an unlimited number of queries in Bugzilla. You are free
- to modify them and rename them to your heart's desire.
- </para>
- </answer>
- </qandaentry>
-
<qandaentry>
<question>
<para>
</answer>
</qandaentry>
- <qandaentry>
- <question>
- <para>
- Can the admin person establish separate group and individual user
- privileges?
- </para>
- </question>
- <answer>
- <para>
- Yes.
- </para>
- </answer>
- </qandaentry>
-
<qandaentry>
<question>
<para>
</question>
<answer>
<para>
- If Bugzilla is set up correctly from the start, continuing maintenance needs
- are minimal and can be completed by unskilled labor. Things like rotate
- backup tapes and check log files for the word "error".
+ If Bugzilla is set up correctly from the start, continuing maintenance
+ needs
+ are minimal and can be completed by unskilled labor.
</para>
<para>
Commercial Bug-tracking software typically costs somewhere upwards
</qandaentry>
</qandadiv>
- <qandadiv id="faq-install">
- <title>Bugzilla Installation</title>
- <qandaentry>
- <question>
- <para>
- How do I download and install Bugzilla?
- </para>
- </question>
- <answer>
- <para>
- Check <ulink url="http://www.bugzilla.org/">
- http://www.bugzilla.org/</ulink> for details.
- Read the other parts of this Guide for installation instructions.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>
- How do I install Bugzilla on Windows NT?
- </para>
- </question>
- <answer>
- <para>
- Installation on Windows NT has its own section in
- this document.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>
- Is there an easy way to change the Bugzilla cookie name?
- </para>
- </question>
- <answer>
- <para>
- At present, no.
- </para>
- </answer>
- </qandaentry>
-
- </qandadiv>
-
<qandadiv id="faq-security">
<title>Bugzilla Security</title>
<question>
<para>
How do I completely disable MySQL security if it's giving me problems
- (I've followed the instructions in the installation section of this guide!)?
+ (I've followed the instructions in the installation section of this guide)?
</para>
</question>
<answer>
<para>
Run MySQL like this: "mysqld --skip-grant-tables". Please remember <emphasis>this
makes MySQL as secure as taping a $100 to the floor of a football stadium
- bathroom for safekeeping.</emphasis> Please read the Security section of the
- Administration chapter of "The Bugzilla Guide" before proceeding.
+ bathroom for safekeeping.</emphasis>
</para>
</answer>
</qandaentry>
</question>
<answer>
<para>
- Edit the "changedmail" param. Replace "To:" with "X-Real-To:",
- replace "Cc:" with "X-Real-CC:", and add a "To: (myemailaddress)".
+ Edit the "changedmail" Param. Replace "To:" with "X-Real-To:",
+ replace "Cc:" with "X-Real-CC:", and add a "To: <youremailaddress>".
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>
- I think I've set up MySQL permissions correctly, but bugzilla still can't
+ I think I've set up MySQL permissions correctly, but Bugzilla still can't
connect.
</para>
</question>
<qandadiv id="faq-use">
<title>Bugzilla Usage</title>
+ <qandaentry>
+ <question>
+ <para>
+ How do I change my user name (email address) in Bugzilla?
+ </para>
+ </question>
+ <answer>
+ <para>
+ New in 2.16 - go to the Account section of the Preferences. You will
+ be emailed at both addresses for confirmation.
+ </para>
+ </answer>
+ </qandaentry>
+
<qandaentry>
<question>
<para>
<answer>
<para>
The current behavior is acceptable to bugzilla.mozilla.org and most
- users. I personally don't like it. You have your choice of patches
+ users. You have your choice of patches
to change this behavior, however.
<simplelist>
<member><ulink url="http://bugzilla.mozilla.org/showattachment.cgi?attach_id=8029">
<member><ulink url="http://bugzilla.mozilla.org/showattachment.cgi?attach_id=8153">
"Accept" button automatically assigns to you</ulink></member>
</simplelist>
- Note that these patches are somewhat dated. You will need to do the find
- and replace manually to apply them. They are very small, though. It is easy.
+ Note that these patches are somewhat dated. You will need to apply
+ them manually.
</para>
</answer>
</qandaentry>
<answer>
<para>
Yup. Just rename it once you download it, or save it under a different
- filename. This will not be fixed anytime too soon, because it would
+ filename. This will not be fixed anytime soon, because it would
cripple some other functionality.
</para>
</answer>
http://bugzilla.mozilla.org/show_bug.cgi?id=49862</ulink>. Ultimately, it's as easy
as adding the "---" priority field to your localconfig file in the appropriate area,
re-running checksetup.pl, and then changing the default priority in your browser using
- "editparams.cgi". Hmm, now that I think about it, that is kind of a klunky way to handle
- it, but for now it's what we have! Although the bug has been closed "RESOLVED WONTFIX",
- there may be a better way to handle this...
+ "editparams.cgi".
</para>
</answer>
</qandaentry>
<listitem>
<para>
Announce your patch and the associated URL
- (http://bugzilla.mozilla.org/show_bug.cgi?id=XXXX) for discussion in
+ (http://bugzilla.mozilla.org/show_bug.cgi?id=XXXXXX) for discussion in
the newsgroup (netscape.public.mozilla.webtools). You'll get a really
good, fairly immediate reaction to the implications of your patch,
which will also give us an idea how well-received the change would
<para> If you are running the very most recent
version of Perl and MySQL (both the executables and development
libraries) on your system, you can skip these manual installation
- steps for the Perl modules by using Bundle::Bugzilla in
+ steps for the Perl modules by using Bundle::Bugzilla; see
<xref linkend="bundlebugzilla" />.
</para>
</note>
<listitem>
<para>
- Text::Wrap
+ <ulink url="http://www.cpan.org/authors/id/MUIR/modules/Text-Tabs%2BWrap-2001.0131.tar.gz">Text::Wrap</ulink>
(v2001.0131)
</para>
</listitem>
versions of MySQL store their data files in
<filename>/var</filename>.
On some Unix systems, this is part of a smaller root partition,
- and may not have room for your bug database. If you decide to build
- from sources you can easily set the dataDir as an option to
- <filename>configure</filename>.</para>
+ and may not have room for your bug database. You can set the data
+ directory as an option to <filename>configure</filename>
+ if you build MySQL from source yourself.</para>
</note>
- <para>If you install from source or non-package (RPM, deb, etc.)
- binaries you need to add
- <firstterm>mysqld</firstterm>
+ <para>If you install from something other than an RPM or Debian
+ package, you will need to add <filename>mysqld</filename>
to your init scripts so the server daemon will come back up whenever
your machine reboots. Further discussion of UNIX init sequences are
beyond the scope of this guide.
from
<glossterm linkend="gloss-cpan">CPAN</glossterm>,
- which installs all required modules for you.
- If you wish to use
- Bundle::Bugzilla, you must be using the latest version of
- Perl.</para>
+ which installs all required modules for you.</para>
<para>
<computeroutput>
<para>
All Perl modules can be found on the
- Comprehensive Perl Archive Network (CPAN) at http://www.cpan.org. The
+ <ulink url="http://www.cpan.org">Comprehensive Perl
+ Archive Network</ulink> (CPAN). The
CPAN servers have a real tendency to bog down, so please use mirrors.
</para>
<para>Quality, general Perl module installation instructions can be
found on the CPAN website, but the easy thing to do is to just use the
- CPAN shell which does all the hard work for you.</para>
-
- <para>To use the CPAN shell to install a module:
- <informalexample>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
- <command>perl -MCPAN -e 'install "<modulename>"'</command>
- </computeroutput>
- </para>
- </informalexample>
+ CPAN shell which does all the hard work for you.
+ To use the CPAN shell to install a module:
+ </para>
+ <para>
+ <computeroutput>
+ <prompt>bash#</prompt>
+ <command>perl -MCPAN -e 'install "<modulename>"'</command>
+ </computeroutput>
+ </para>
+
+ <para>
To do it the hard way:
- <informalexample>
- <para>Untar the module tarball -- it should create its own
- directory</para>
+ </para>
+
+ <para>Untar the module tarball -- it should create its own
+ directory</para>
- <para>CD to the directory just created, and enter the following
- commands:
- <orderedlist>
- <listitem>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
+ <para>CD to the directory just created, and enter the following
+ commands:
+ <orderedlist>
+ <listitem>
+ <para>
+ <computeroutput>
+ <prompt>bash#</prompt>
- <command>perl Makefile.PL</command>
- </computeroutput>
- </para>
- </listitem>
+ <command>perl Makefile.PL</command>
+ </computeroutput>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
+ <listitem>
+ <para>
+ <computeroutput>
+ <prompt>bash#</prompt>
- <command>make</command>
- </computeroutput>
- </para>
- </listitem>
+ <command>make</command>
+ </computeroutput>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
+ <listitem>
+ <para>
+ <computeroutput>
+ <prompt>bash#</prompt>
- <command>make test</command>
- </computeroutput>
- </para>
- </listitem>
+ <command>make test</command>
+ </computeroutput>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
+ <listitem>
+ <para>
+ <computeroutput>
+ <prompt>bash#</prompt>
- <command>make install</command>
- </computeroutput>
- </para>
- </listitem>
- </orderedlist>
- </para>
- </informalexample>
+ <command>make install</command>
+ </computeroutput>
+ </para>
+ </listitem>
+ </orderedlist>
</para>
<warning>
<para>You'll want to make sure that your web server will run any file
with the .cgi extension as a CGI and not just display it. If you're
- using Apache that means uncommenting the following line in the srm.conf
+ using Apache that means uncommenting the following line in the httpd.conf
file:
<programlisting>AddHandler cgi-script .cgi</programlisting>
</para>
<para>With Apache you'll also want to make sure that within the
- access.conf file the line:
+ httpd.conf file the line:
<programlisting>Options ExecCGI AllowOverride Limit</programlisting>
is in the stanza that covers the directories into which you intend to
<para>AllowOverride Limit allows the use of a Deny statement in the
.htaccess file generated by checksetup.pl</para>
- <para>Users of newer versions of Apache will generally find both of
- the above lines will be in the httpd.conf file, rather than srm.conf
- or access.conf.</para>
+ <para>Users of older versions of Apache may find the above lines
+ in the srm.conf and access.conf files, respecitvely.</para>
</note>
</para>
for the correct location of your Perl executable (probably
<filename>/usr/bin/perl</filename>).
Otherwise you must hack all the .cgi files to change where they look
- for Perl. This can be done using the following Perl one-liner.
- I suggest using the symlink approach for future release
- compatibility.
-
- <example>
- <title>Changing the path to Perl</title>
- <para>You can simply run this Perl one-liner to change
- your path to perl in all the files in your Bugzilla installation:
+ for Perl. This can be done using the following Perl one-liner, but
+ I suggest using the symlink approach to avoid upgrade hassles.
+ </para>
+
+ <para>
<programlisting>perl -pi -e
's@#\!/usr/bonsaitools/bin/perl@#\!/usr/bin/perl@' *cgi *pl Bug.pm
processmail syncshadowdb</programlisting>
Change <filename>/usr/bin/perl</filename> to match the location
- of Perl on your machine.</para>
- </example>
+ of Perl on your machine.
</para>
</section>
<listitem>
<para>server's host: just use
<quote>localhost</quote>
-
if the MySQL server is local</para>
</listitem>
<listitem>
<para>database name:
<quote>bugs</quote>
-
if you're following these directions</para>
</listitem>
<listitem>
<para>MySQL username:
<quote>bugs</quote>
-
if you're following these directions</para>
</listitem>
<listitem>
<para>Password for the
<quote>bugs</quote>
-
- MySQL account (<bugs_password>) above</para>
+ MySQL account; (<bugs_password>) above</para>
</listitem>
</orderedlist>
</para>
</orderedlist>
</para>
</section>
+
+ <section>
+ <title>Configuring Bugzilla</title>
+ <para>
+ You should run through the parameters on the Edit Parameters page
+ (link in the footer) and set them all to appropriate values.
+ They key parameters are documented in <xref linkend="parameters" />.
+ </para>
+ </section>
</section>
<section id="extraconfig">
<para>As well as the text-based dependency graphs, Bugzilla also
supports dependency graphing, using a package called 'dot'.
- Exactly how this works is controlled by the 'webdotbase' parameter.
+ Exactly how this works is controlled by the 'webdotbase' parameter,
+ which can have one of three values:
</para>
- <para>(To be written...</para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ A complete file path to the command 'dot' (part of
+ <ulink url="http://www.graphviz.org/">GraphViz</ulink>)
+ will generate the graphs locally
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A URL prefix pointing to an installation of the webdot package will
+ generate the graphs remotely
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A blank value will disable dependency graphing.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <para>So, to get this working, install
+ <ulink url="http://www.graphviz.org/">GraphViz</ulink>. If you
+ do that, you need to
+ <ulink url="http://httpd.apache.org/docs/mod/mod_imap.html">enable
+ server-side image maps</ulink> in Apache.
+ Alternatively, you could set up a webdot server, or use the AT&T
+ public webdot server (the
+ default for the webdotbase param). Note that AT&T's server won't work
+ if Bugzilla is only accessible using HTTPS.
+ </para>
</section>
<section>
"mail", but you may need to change this.
</para>
</section>
+
+ <section id="content-type"
+ xreflabel="Preventing untrusted Bugzilla content from executing malicious Javascript code">
+
+ <title>Preventing untrusted Bugzilla content from executing malicious
+ Javascript code</title>
+
+ <para>It is possible for a Bugzilla to execute malicious Javascript
+ code. Due to internationalization concerns, we are unable to
+ incorporate the code changes necessary to fulfill the CERT advisory
+ requirements mentioned in
+ <ulink
+ url="http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3">
+ http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3</ulink>.
+ Executing the following code snippet from a UNIX command shell will
+ rectify the problem if your Bugzilla installation is intended for an
+ English-speaking audience. As always, be sure your Bugzilla
+ installation has a good backup before making changes, and I recommend
+ you understand what the script is doing before executing it.</para>
+
+ <para>
+ <programlisting>bash# perl -pi -e "s/Content-Type\: text\/html/Content-Type\: text\/html\; charset=ISO-8859-1/i" *.cgi *.pl
+ </programlisting>
+ </para>
+
+ <para>All this one-liner command does is search for all instances of
+ <quote>Content-type: text/html</quote>
+
+ and replaces it with
+ <quote>Content-Type: text/html; charset=ISO-8859-1</quote>
+
+ . This specification prevents possible Javascript attacks on the
+ browser, and is suggested for all English-speaking sites. For
+ non-English-speaking Bugzilla sites, I suggest changing
+ <quote>ISO-8859-1</quote>, above, to
+ <quote>UTF-8</quote>.</para>
+ </section>
+
+ <section id="htaccess" xreflabel=".htaccess files and security">
+ <title>
+ <filename>.htaccess</filename>
+ files and security</title>
+
+ <para>To enhance the security of your Bugzilla installation, Bugzilla's
+ <filename>checksetup.pl</filename> script will generate
+ <glossterm>
+ <filename>.htaccess</filename>
+ </glossterm>
+
+ files which the Apache webserver can use to restrict access to the
+ bugzilla data files.
+ These .htaccess files will not work with Apache 1.2.x - but this
+ has security holes, so you shouldn't be using it anyway.
+ <note>
+ <para>If you are using an alternate provider of
+ <productname>webdot</productname>
+
+ services for graphing (as described when viewing
+ <filename>editparams.cgi</filename>
+
+ in your web browser), you will need to change the ip address in
+ <filename>data/webdot/.htaccess</filename>
+
+ to the ip address of the webdot server that you are using.</para>
+ </note>
+ </para>
+
+ <para>The default .htaccess file may not provide adequate access
+ restrictions, depending on your web server configuration. Be sure to
+ check the <Directory> entries for your Bugzilla directory so that
+ the
+ <filename>.htaccess</filename>
+
+ file is allowed to override web server defaults. For instance, let's
+ assume your installation of Bugzilla is installed to
+ <filename>/usr/local/bugzilla</filename>
+
+ . You should have this <Directory> entry in your
+ <filename>httpd.conf</filename>
+
+ file:</para>
+
+ <para>
+
+<programlisting><![CDATA[
+ <Directory /usr/local/bugzilla/>
+ Options +FollowSymLinks +Indexes +Includes +ExecCGI
+ AllowOverride All
+</Directory>
+]]></programlisting>
+
+ </para>
+
+ <para>The important part above is
+ <quote>AllowOverride All</quote>
+
+ . Without that, the
+ <filename>.htaccess</filename>
+
+ file created by
+ <filename>checksetup.pl</filename>
+
+ will not have sufficient permissions to protect your Bugzilla
+ installation.</para>
+
+ <para>If you are using Internet Information Server (IIS) or another
+ web server which does not observe
+ <filename>.htaccess</filename>
+ conventions, you can disable their creation by editing
+ <filename>localconfig</filename>
+ and setting the
+ <varname>$create_htaccess</varname>
+ variable to
+ <parameter>0</parameter>.
+ </para>
+ </section>
+
+ <section id="mod-throttle"
+ xreflabel="Using mod_throttle to prevent Denial of Service attacks">
+ <title>
+ <filename>mod_throttle</filename>
+
+ and Security</title>
+
+ <para>It is possible for a user, by mistake or on purpose, to access
+ the database many times in a row which can result in very slow access
+ speeds for other users. If your Bugzilla installation is experiencing
+ this problem , you may install the Apache module
+ <filename>mod_throttle</filename>
+
+ which can limit connections by ip-address. You may download this module
+ at
+ <ulink url="http://www.snert.com/Software/Throttle/">
+ http://www.snert.com/Software/Throttle/</ulink>.
+ Follow the instructions to install into your Apache install.
+ <emphasis>This module only functions with the Apache web
+ server!</emphasis>
+ You may use the
+ <command>ThrottleClientIP</command>
+
+ command provided by this module to accomplish this goal. See the
+ <ulink url="http://www.snert.com/Software/Throttle/">Module
+ Instructions</ulink>
+ for more information.</para>
+ </section>
</section>
<section id="win32" xreflabel="Win32 Installation Notes">
most of the software that it installs. This means your libraries and
headers for libgd will be at /sw/lib and /sw/include instead of /usr/lib
and /usr/local/include. Because of these changed locations for the
- libraries, the Perl GD module will not install directly via CPAN (it
+ libraries, the Perl GD module will not install directly via CPAN, because it
looks for the specific paths instead of getting them from your
- environment). But there's a way around that :-)</para>
+ environment. But there's a way around that :-)</para>
<para>Instead of typing
<quote>install GD</quote>
directory. Apply <ulink url="../sgml/gd-makefile.patch">this patch</ulink>
to the Makefile.PL file (save the
patch into a file and use the command
- <command>patch < patchfile</command>.
+ <command>patch < patchfile</command>.)
</para>
<para>Then, run these commands to finish the installation of the GD
<member>And don't forget to run
<command>exit</command>
- to get back to cpan.</member>
+ to get back to CPAN.</member>
</simplelist>
</para>
</section>
- <section id="geninstall" xreflabel="General Installation Notes">
- <title>General Installation Notes</title>
-
- <section>
- <title>Modifying Your Running System</title>
-
- <para>Bugzilla optimizes database lookups by storing all relatively
- static information in the versioncache file, located in the data/
- subdirectory under your installation directory.</para>
-
- <para>If you make a change to the structural data in your database (the
- versions table for example), or to the
- <quote>constants</quote>
-
- encoded in defparams.pl, you will need to remove the cached content
- from the data directory (by doing a
- <quote>rm data/versioncache</quote>
-
- ), or your changes won't show up.</para>
-
- <para>That file gets automatically regenerated whenever it's more than
- an hour old, so Bugzilla will eventually notice your changes by itself,
- but generally you want it to notice right away, so that you can test
- things.</para>
- </section>
-
- <section>
- <title>Upgrading From Previous Versions</title>
-
- <para>A plain Bugzilla is fairly easy to upgrade from one version to a
- newer one. However, things get a bit more complicated if you've made
- changes to Bugzilla's code. In this case, you may have to re-make or
- reapply those changes. It is recommended that you take a backup of your
- database and your entire Bugzilla installation before attempting an
- upgrade. You can upgrade a 'clean' installation by untarring a new
- tarball over the old installation. If you are upgrading from 2.12 or
- later, you can type
- <filename>cvs -z3 update</filename>
-
- , and resolve conflicts if there are any.</para>
-
- <para>Because the developers of Bugzilla are constantly adding new
- tables, columns and fields, you'll probably get SQL errors if you just
- update the code and attempt to use Bugzilla. Always run the
- checksetup.pl script whenever you upgrade your installation.</para>
-
- <para>If you are running Bugzilla version 2.8 or lower, and wish to
- upgrade to the latest version, please consult the file,
- "UPGRADING-pre-2.8" in the Bugzilla root directory after untarring the
- archive.</para>
- </section>
-
- <section id="htaccess" xreflabel=".htaccess files and security">
- <title>
- <filename>.htaccess</filename>
-
- files and security</title>
-
- <para>To enhance the security of your Bugzilla installation, Bugzilla
- will generate
- <glossterm>
- <filename>.htaccess</filename>
- </glossterm>
-
- files which the Apache webserver can use to restrict access to the
- bugzilla data files. The checksetup script will generate the
- <filename>.htaccess</filename>
-
- files. These .htaccess files will not work with Apache 1.2.x - but this
- has security holes, so you shouldn't be using it anyway.
- <note>
- <para>If you are using an alternate provider of
- <productname>webdot</productname>
-
- services for graphing (as described when viewing
- <filename>editparams.cgi</filename>
-
- in your web browser), you will need to change the ip address in
- <filename>data/webdot/.htaccess</filename>
-
- to the ip address of the webdot server that you are using.</para>
- </note>
- </para>
-
- <para>The default .htaccess file may not provide adequate access
- restrictions, depending on your web server configuration. Be sure to
- check the <Directory> entries for your Bugzilla directory so that
- the
- <filename>.htaccess</filename>
-
- file is allowed to override web server defaults. For instance, let's
- assume your installation of Bugzilla is installed to
- <filename>/usr/local/bugzilla</filename>
-
- . You should have this <Directory> entry in your
- <filename>httpd.conf</filename>
-
- file:</para>
-
- <para>
- <programlisting>
-<![CDATA[
-<Directory /usr/local/bugzilla/>
- Options +FollowSymLinks +Indexes +Includes +ExecCGI
- AllowOverride All
-</Directory>
-]]>
- </programlisting>
- </para>
-
- <para>The important part above is
- <quote>AllowOverride All</quote>
-
- . Without that, the
- <filename>.htaccess</filename>
-
- file created by
- <filename>checksetup.pl</filename>
-
- will not have sufficient permissions to protect your Bugzilla
- installation.</para>
-
- <para>If you are using Internet Information Server or other web server
- which does not observe
- <filename>.htaccess</filename>
-
- conventions, you can disable their creation by editing
- <filename>localconfig</filename>
-
- and setting the
- <varname>$create_htaccess</varname>
-
- variable to
- <parameter>0</parameter>
-
- .</para>
- </section>
-
- <section id="mod-throttle"
- xreflabel="Using mod_throttle to prevent Denial of Service attacks">
- <title>
- <filename>mod_throttle</filename>
-
- and Security</title>
-
- <para>It is possible for a user, by mistake or on purpose, to access
- the database many times in a row which can result in very slow access
- speeds for other users. If your Bugzilla installation is experiencing
- this problem , you may install the Apache module
- <filename>mod_throttle</filename>
-
- which can limit connections by ip-address. You may download this module
- at
- <ulink url="http://www.snert.com/Software/Throttle/">
- http://www.snert.com/Software/Throttle/</ulink>
-
- . Follow the instructions to install into your Apache install.
- <emphasis>This module only functions with the Apache web
- server!</emphasis>
-
- . You may use the
- <command>ThrottleClientIP</command>
-
- command provided by this module to accomplish this goal. See the
- <ulink url="http://www.snert.com/Software/Throttle/">Module
- Instructions</ulink>
-
- for more information.</para>
- </section>
-
- <section id="content-type"
- xreflabel="Preventing untrusted Bugzilla contentfrom executing malicious Javascript code">
-
- <title>Preventing untrusted Bugzilla content from executing malicious
- Javascript code</title>
-
- <para>It is possible for a Bugzilla to execute malicious Javascript
- code. Due to internationalization concerns, we are unable to
- incorporate the code changes necessary to fulfill the CERT advisory
- requirements mentioned in
- <ulink
- url="http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3">
- http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3</ulink>.
- Executing the following code snippet from a UNIX command shell will
- rectify the problem if your Bugzilla installation is intended for an
- English-speaking audience. As always, be sure your Bugzilla
- installation has a good backup before making changes, and I recommend
- you understand what the script is doing before executing it.</para>
-
- <para>
- <programlisting>bash# cd <your_bugzilla_dir>;
- for i in `ls *.cgi`; \ do
- cat $i | sed 's/Content-type\: text\/html/Content-Type: text\/html\;
- charset=ISO-8859-1/' >$i.tmp; \ mv $i.tmp $i;
- done</programlisting>
- </para>
-
- <para>All this one-liner command does is search for all instances of
- <quote>Content-type: text/html</quote>
-
- and replaces it with
- <quote>Content-Type: text/html; charset=ISO-8859-1</quote>
-
- . This specification prevents possible Javascript attacks on the
- browser, and is suggested for all English-speaking sites. For
- non-English-speaking Bugzilla sites, I suggest changing
- <quote>ISO-8859-1</quote>, above, to
- <quote>UTF-8</quote>.</para>
- </section>
- </section>
-
<section id="troubleshooting">
<title>Troubleshooting</title>
(over which the Bugzilla team have no control):
</para>
-<programlisting><![CDATA[ "DBD::Sponge::db prepare failed: Cannot determine NUM_OF_FIELDS at D:/Perl/site/lib/DBD/mysql.pm line 248.
+<programlisting><![CDATA[ DBD::Sponge::db prepare failed: Cannot determine NUM_OF_FIELDS at D:/Perl/site/lib/DBD/mysql.pm line 248.
SV = NULL(0x0) at 0x20fc444
REFCNT = 1
- FLAGS = (PADBUSY,PADMY)"
+ FLAGS = (PADBUSY,PADMY)
]]></programlisting>
<para>
- To fix this, go to <path-to-perl>/lib/DBD/sponge.pm in your Perl
- installation and replace
+ To fix this, go to
+ <filename><path-to-perl>/lib/DBD/sponge.pm</filename>
+ in your Perl installation and replace
</para>
<programlisting><![CDATA[ my $numFields;
. Using Bonsai, administrators can control open/closed status of trees,
query a fast relational database back-end for change, branch, and comment
information, and view changes made since the last time the tree was
- closed. These kinds of changes cause the engineer responsible to be
- <quote>on the hook</quote>
-
- (include cool URL link here for Hook policies at mozilla.org). Bonsai
- also includes gateways to
- <xref linkend="tinderbox" />
-
- and Bugzilla</para>
+ closed. Bonsai
+ also integrates with
+ <xref linkend="tinderbox" />.
+ </para>
</section>
<section id="cvs" xreflabel="CVS, the Concurrent Versioning System">
<title>CVS</title>
<para>CVS integration is best accomplished, at this point, using the
- Bugzilla Email Gateway. There have been some files submitted to allow
- greater CVS integration, but we need to make certain that Bugzilla is not
- tied into one particular software management package.</para>
+ Bugzilla Email Gateway.</para>
- <para>Follow the instructions in the FAQ for enabling Bugzilla e-mail
+ <para>Follow the instructions in this Guide for enabling Bugzilla e-mail
integration. Ensure that your check-in script sends an email to your
Bugzilla e-mail gateway with the subject of
- <quote>[Bug XXXX]</quote>
-
- , and you can have CVS check-in comments append to your Bugzilla bug. If
+ <quote>[Bug XXXX]</quote>,
+ and you can have CVS check-in comments append to your Bugzilla bug. If
you have your check-in script include an @resolution field, you can even
change the Bugzilla bug state.</para>
- <para>There is also a project, based upon somewhat dated Bugzilla code,
- to integrate CVS and Bugzilla through CVS' ability to email. Check it out
- at:
+ <para>There is also a CVSZilla project, based upon somewhat dated
+ Bugzilla code, to integrate CVS and Bugzilla through CVS' ability to
+ email. Check it out at:
<ulink url="http://homepages.kcbbs.gen.nz/~tonyg/">
- http://homepages.kcbbs.gen.nz/~tonyg/</ulink>
-
- , under the
- <quote>cvszilla</quote>
-
- link.</para>
+ http://homepages.kcbbs.gen.nz/~tonyg/</ulink>.
+ </para>
</section>
<section id="scm"
<section id="cmdline">
<title>Command-line Bugzilla Queries</title>
- <para>There are a suite of utilities for querying Bugzilla from the
- command line. Although there's no particular reason why they
- shouldn't work, they have not been tested with 2.16.</para>
-
- <procedure>
- <step>
- <para>Download three files:</para>
-
- <substeps>
- <step>
- <para>
- <computeroutput>
- <prompt>bash$</prompt>
-
- <command>wget -O query.conf
- 'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26157'</command>
- </computeroutput>
- </para>
- </step>
-
- <step>
- <para>
- <computeroutput>
- <prompt>bash$</prompt>
-
- <command>wget -O buglist
- 'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26944'</command>
- </computeroutput>
- </para>
- </step>
-
- <step>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
-
- <command>wget -O bugs
- 'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26215'</command>
- </computeroutput>
- </para>
- </step>
- </substeps>
- </step>
-
- <step>
- <para>Make your utilities executable:
- <computeroutput>
- <prompt>bash$</prompt>
-
- <command>chmod u+x buglist bugs</command>
- </computeroutput>
- </para>
- </step>
- </procedure>
+ <para>There are a suite of Unix utilities for querying Bugzilla from the
+ command line. They live in the
+ <filename class="directory">contrib/cmdline</filename>
+ directory. However, they
+ have not yet been updated to work with 2.16 (post-templatisation.).
+ There are three files - <filename>query.conf</filename>,
+ <filename>buglist</filename> and <filename>bugs</filename>.</para>
- <para>The query.conf file contains the mapping from options to field
+ <para><filename>query.conf</filename>
+ contains the mapping from options to field
names and comparison types. Quoted option names are "grepped" 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 "option".</para>
- <para>buglist is a shell script which submits a Bugzilla query and writes
+ <para><filename>buglist</filename>
+ is a shell script which submits a Bugzilla query and writes
the resulting HTML page to stdout. It supports both short options, (such
as "-Afoo" or "-Rbar") and long options (such as "--assignedto=foo" or
"--reporter=bar"). If the first character of an option is not "-", it is
treated as if it were prefixed with "--default=".</para>
- <para>The columlist is taken from the COLUMNLIST environment variable.
+ <para>The column list is taken from the COLUMNLIST environment variable.
This is equivalent to the "Change Columns" option when you list bugs in
- buglist.cgi. If you have already used Bugzilla, use
- <command>grep COLUMLIST ~/.netscape/cookies</command>
-
- to see your current COLUMNLIST setting.</para>
+ buglist.cgi. If you have already used Bugzilla, grep for COLUMNLIST
+ in your cookies file to see your current COLUMNLIST setting.</para>
- <para>bugs is a simple shell script which calls buglist and extracts the
+ <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
"http://bugzilla.mozilla.org/buglist.cgi?bug_id=" turns the bug list into
a working link if any bugs are found. Counting bugs is easy. Pipe the
<command>sed -e 's/,/ /g' | wc | awk '{printf $2 "\n"}'</command>
</para>
- <para>Akkana says she has good results piping buglist output through
+ <para>Akkana Peck says she has good results piping
+ <filename>buglist</filename> output through
<command>w3m -T text/html -dump</command>
</para>
<para>This section contains information for end-users of Bugzilla.
There is a Bugzilla test installation, called
<ulink url="http://landfill.tequilarista.org/">Landfill</ulink>,
- which you are welcome to play with. However, it does not necessarily
+ which you are welcome to play with (if it's up.)
+ However, it does not necessarily
have all Bugzilla features enabled, and often runs cutting-edge versions
of Bugzilla for testing, so some things may work slightly differently
than mentioned here.</para>
</listitem>
</orderedlist>
- <para>You are now logged in. Bugzilla uses cookies for authentication,
- so (unless your IP address changes) you should not have to log in
+ <para>You are now logged in. Bugzilla uses cookies for authentication
+ so, unless your IP address changes, you should not have to log in
again.</para>
</section>
is a good example. Note that the labels for most fields are hyperlinks;
clicking them will take you to context-sensitive help on that
- particular field.</para>
+ particular field. Fields marked * may not be present on every
+ installation of Bugzilla.</para>
<orderedlist>
<listitem>
<para>
- <emphasis>Product and Component</emphasis>
-
- : Bugs are divided up by Product and Component, with a Product
+ <emphasis>Product and Component</emphasis>:
+ Bugs are divided up by Product and Component, with a Product
having one or more Components in it. For example,
bugzilla.mozilla.org's "Bugzilla" Product is composed of several
Components:
<listitem>
<para>
- <emphasis>URL:</emphasis>
+ <emphasis>*URL:</emphasis>
A URL associated with the bug, if any.</para>
</listitem>
<listitem>
<para>
- <emphasis>Status Whiteboard:</emphasis>
+ <emphasis>*Status Whiteboard:</emphasis>
(a.k.a. Whiteboard) A free-form text area for adding short notes
and tags to a bug.</para>
</listitem>
<listitem>
<para>
- <emphasis>Keywords:</emphasis>
+ <emphasis>*Keywords:</emphasis>
The administrator can define keywords which you can use to tag and
categorise bugs - e.g. The Mozilla Project has keywords like crash
and regression.</para>
<listitem>
<para>
- <emphasis>Target:</emphasis>
+ <emphasis>*Target:</emphasis>
(a.k.a. Target Milestone) A future version by which the bug is to
be fixed. e.g. The Bugzilla Project's milestones for future
Bugzilla versions are 2.18, 2.20, 3.0, etc. Milestones are not
<listitem>
<para>
- <emphasis>Dependencies:</emphasis>
+ <emphasis>*Dependencies:</emphasis>
If this bug cannot be fixed unless other bugs are fixed (depends
on), or this bug stops other bugs being fixed (blocks), their
numbers are recorded here.</para>
<listitem>
<para>
- <emphasis>Votes:</emphasis>
+ <emphasis>*Votes:</emphasis>
Whether this bug has any votes.</para>
</listitem>
reading pleasure into the
<ulink
url="http://landfill.tequilarista.org/bugzilla-tip/bugwritinghelp.html">
- Bug Writing Guidelines</ulink>
-
- . While some of the advice is Mozilla-specific, the basic principles of
+ Bug Writing Guidelines</ulink>.
+ While some of the advice is Mozilla-specific, the basic principles of
reporting Reproducible, Specific bugs, isolating the Product you are
using, the Version of the Product, the Component which failed, the
Hardware Platform, and Operating System you were using at the time of
<para>Quicksearch is a single-text-box query tool which uses
metacharacters to indicate what is to be searched. For example, typing
- "foo|bar" into Quicksearch would search for "foo" or "bar" in the
- summary and status whiteboard of a bug; adding ":BazProduct" would
+ "<filename>foo|bar</filename>"
+ into Quicksearch would search for "foo" or "bar" in the
+ summary and status whiteboard of a bug; adding
+ "<filename>:BazProduct</filename>" would
search only in that product.
</para>
<para>If you are changing the fields on a bug, only comment if
either you have something pertinent to say, or Bugzilla requires it.
Otherwise, you may spam people unnecessarily with bug mail.
- To take an example: a user sets up their account to filter out messages
+ To take an example: a user can set up their account to filter out messages
where someone just adds themselves to the CC field of a bug
(which happens a lot.) If you come along, add yourself to the CC field,
and add a comment saying "Adding self to CC", then that person
you are pointing out a single-pixel problem.
</para>
- <para>Don't attach simple test cases (e.g. one html file and one
- css file and one image) as a ZIP file. Instead, upload them in
+ <para>Don't attach simple test cases (e.g. one HTML file, one
+ CSS file and an image) as a ZIP file. Instead, upload them in
reverse order and edit the referring file so that they point to the
attached files. This way, the test case works immediately
out of the bug.
"Users to watch" text entry box you can receive a copy of all the
bugmail of other users (security settings permitting.) This powerful
functionality enables seamless transitions as developers change
- projects, managers wish to get in touch with the issues faced by their
- direct reports, or users go on vacation.</para>
+ projects or users go on holiday.</para>
<note>
<para>The ability to watch other users may not be available in all
such through the <quote>jobs</quote>
functionality.</para>
- <para>
+ <para>URL:
<ulink url="http://www.perforce.com/perforce/technotes/note052.html">
+ http://www.perforce.com/perforce/technotes/note052.html
</ulink>
-
- http://www.perforce.com/perforce/technotes/note052.html</para>
+ </para>
</section>
<section id="variant-sourceforge" xreflabel="SourceForge">
This documentation is maintained in DocBook 4.1.2 XML format.
Changes are best submitted as plain text or SGML diffs, attached
to a bug filed in
- <ulink url="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla">bugzilla.mozilla.org</ulink>.
+ <ulink url="http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=Documentation">mozilla.org's Bugzilla</ulink>.
</para>
</abstract>
<chapter id="administration">
<title>Administering Bugzilla</title>
- <section id="postinstall-check">
- <title>Post-Installation Checklist</title>
+ <section id="parameters">
+ <title>Bugzilla Configuration</title>
- <para>After installation, follow the checklist below.
- If you do not see a recommended
- setting for a parameter, consider leaving it at the default while you
- perform your initial tests on your Bugzilla setup.</para>
+ <para>Bugzilla is configured by changing various parameters, accessed
+ from the "Edit parameters" link in the page footer. Here are
+ some of the key parameters on that page. You should run down this
+ list and set them appropriately after installing Bugzilla.</para>
<indexterm>
<primary>checklist</primary>
</indexterm>
<procedure>
- <step>
- <para>Log in to Bugzilla using the username and password
- you defined for the administrator during installation.</para>
- </step>
-
- <step>
- <para>Bring up
- <ulink url="../../editparams.cgi">editparams.cgi</ulink>
- in your web browser (link in footer.) This screen allows you
- to change most of Bugzilla's operating parameters. Each comes
- with an explanation, and you should go down the list, deciding
- on what you want to do about each.
- </para>
- </step>
-
<step>
<para>
<command>maintainer</command>:
<step>
<para>
<command>usebuggroups</command>:
- Thisdictates whether or not to implement group-based security for
+ This dictates whether or not to implement group-based security for
Bugzilla. If set, Bugzilla bugs can have an associated 'group',
defining which users are allowed to see and edit the
bug.</para>
<step>
<para>
<command>usebuggroupsentry</command>:
- When set to <quote>on</quote>, this
- puts all bugs be placed in the group for their product immediately
- after creation.</para>
+ Bugzilla Products can have a group associated with them, so that
+ certain users can only see bugs in certain products. When this parameter
+ is set to <quote>on</quote>, this places all newly-created bugs in the
+ group for their product immediately.</para>
</step>
<step>
If you need to shut down Bugzilla to perform administration, enter
some descriptive HTML here and anyone who tries to use Bugzilla will
- receive a page to that effect.
+ receive a page to that effect. Obviously, editparams.cgi will
+ still be accessible so you can remove the HTML and re-enable Bugzilla.
+ :-)
</para>
</step>
<section id="useradmin">
<title>User Administration</title>
- <para>User administration is one of the easiest parts of Bugzilla.
- Keeping it from getting out of hand, however, can become a
- challenge.</para>
-
<section id="defaultuser">
<title>Creating the Default User</title>
<para>When you first run checksetup.pl after installing Bugzilla, it
will prompt you for the administrative username (email address) and
- password for this "super user". If for some reason you were to delete
+ password for this "super user". If for some reason you delete
the "super user" account, re-running checksetup.pl will again prompt
you for this username and password.</para>
<tip>
<para>If you wish to add more administrative users, you must use the
MySQL interface. Run "mysql" from the command line, and use these
- commands ("mysql>" denotes the mysql prompt, not something you
- should type in):
- <command>
- <prompt>mysql></prompt>
-
- use bugs;</command>
-
- <command>
- <prompt>mysql></prompt>
-
- update profiles set groupset=0x7ffffffffffffff where login_name =
- "(user's login name)";</command>
+ commands:
+ <simplelist>
+ <member>
+ <prompt>mysql></prompt>
+ <command>use bugs;</command>
+ </member>
+
+ <member>
+ <prompt>mysql></prompt>
+
+ <command>
+ update profiles set groupset=0x7ffffffffffffff where login_name =
+ "(user's login name)";
+ </command>
+ </member>
+ </simplelist>
</para>
<para>Yes, that is
<section id="manageusers">
<title>Managing Other Users</title>
- <section id="login">
- <title>Logging In</title>
-
- <orderedlist>
- <listitem>
- <para>Open the index.html page for your Bugzilla installation in
- your browser window.</para>
- </listitem>
-
- <listitem>
- <para>Click the "Query Existing Bug Reports" link.</para>
- </listitem>
-
- <listitem>
- <para>Click the "Log In" link at the foot of the page.</para>
- </listitem>
-
- <listitem>
- <para>Type your email address, and the password which was emailed
- to you when you created your Bugzilla account, into the spaces
- provided.</para>
- </listitem>
- </orderedlist>
-
- <para>Congratulations, you are logged in!</para>
- </section>
-
<section id="createnewusers">
<title>Creating new users</title>
<para>Your users can create their own user accounts by clicking the
- "New Account" link at the bottom of each page. However, should you
+ "New Account" link at the bottom of each page (assuming they
+ aren't logged in as someone else already.) However, should you
desire to create user accounts ahead of time, here is how you do
it.</para>
<orderedlist>
<listitem>
<para>After logging in, click the "Users" link at the footer of
- the query page.</para>
- </listitem>
-
- <listitem>
- <para>To see a specific user, type a portion of their login name
- in the box provided and click "submit". To see all users, simply
- click the "submit" button. You must click "submit" here to be
- able to add a new user.</para>
-
- <tip>
- <para>More functionality is available via the list on the
- right-hand side of the text entry box. You can match what you
- type as a case-insensitive substring (the default) of all users
- on your system, a case-sensitive regular expression (please see
- the
- <command>man regexp</command>
-
- manual page for details on regular expression syntax), or a
- <emphasis>reverse</emphasis>
-
- regular expression match, where every user name which does NOT
- match the regular expression is selected.</para>
- </tip>
- </listitem>
-
- <listitem>
- <para>Click the "Add New User" link at the bottom of the user
- list</para>
+ the query page, and then click "Add a new user".</para>
</listitem>
<listitem>
<para>Fill out the form presented. This page is self-explanatory.
- When done, click "submit".</para>
+ When done, click "Submit".</para>
<note>
<para>Adding a user this way will
</orderedlist>
</section>
- <section id="disableusers">
- <title>Disabling Users</title>
-
- <para>I bet you noticed that big "Disabled Text" entry box available
- from the "Add New User" screen, when you edit an account? By entering
- any text in this box and selecting "submit", you have prevented the
- user from using Bugzilla via the web interface. Your explanation,
- written in this text box, will be presented to the user the next time
- she attempts to use the system.
- <warning>
- <para>Don't disable your own administrative account, or you will
- hate life!</para>
-
- <para>At this time,
- <quote>Disabled Text</quote>
-
- does not prevent a user from using the email interface. If you have
- the email interface enabled, they can still continue to submit bugs
- and comments that way. We need a patch to fix this.</para>
- </warning>
- </para>
- </section>
-
<section id="modifyusers">
<title>Modifying Users</title>
- <para>Here I will attempt to describe the function of each option on
- the Edit User screen.</para>
+ <para>To see a specific user, search for their login name
+ in the box provided on the "Edit Users" page. To see all users,
+ leave the box blank.</para>
+
+ <para>You can search in different ways the listbox to the right
+ of the text entry box. You can match by
+ case-insensitive substring (the default),
+ regular expression, or a
+ <emphasis>reverse</emphasis>
+ regular expression match, which finds every user name which does NOT
+ match the regular expression. (Please see
+ the <command>man regexp</command>
+ manual page for details on regular expression syntax.)
+ </para>
+
+ <para>Once you have found your user, you can change the following
+ fields:</para>
<itemizedlist>
<listitem>
<para>
- <emphasis>Login Name</emphasis>
-
- : This is generally the user's email address. However, if you
- have edited your system parameters, this may just be the user's
- login name or some other identifier.
- <tip>
- <para>For compatability reasons, you should probably stick with
- email addresses as user login names. It will make your life
- easier.</para>
- </tip>
+ <emphasis>Login Name</emphasis>:
+ This is generally the user's full email address. However, if you
+ have are using the emailsuffix Param, this may just be the user's
+ login name. Note that users can now change their login names
+ themselves (to any valid email address.)
</para>
</listitem>
<listitem>
<para>
- <emphasis>Real Name</emphasis>
-
- : Duh!</para>
+ <emphasis>Real Name</emphasis>: The user's real name. Note that
+ Bugzilla does not require this to create an account.</para>
</listitem>
<listitem>
<para>
- <emphasis>Password</emphasis>
-
- : You can change the user password here. It is normal to only see
- asterisks.</para>
+ <emphasis>Password</emphasis>:
+ You can change the user's password here. Users can automatically
+ request a new password, so you shouldn't need to do this often.
+ If you want to disable an account, see Disable Text below.
+ </para>
</listitem>
<listitem>
<para>
- <emphasis>Disable Text</emphasis>
-
- : If you type anything in this box, including just a space, the
- user account is disabled from making any changes to bugs via the
- web interface, and what you type in this box is presented as the
- reason.
+ <emphasis>Disable Text</emphasis>:
+ If you type anything in this box, including just a space, the
+ user is prevented from logging in, or making any changes to
+ bugs via the web interface.
+ The HTML you type in this box is presented to the user when
+ they attempt to perform these actions, and should explain
+ why the account was disabled.
<warning>
<para>Don't disable the administrator account!</para>
</warning>
<note>
- <para>As of this writing, the user can still submit bugs via
- the e-mail gateway, if you set it up, despite the disabled text
- field. The e-mail gateway should
+ <para>The user can still submit bugs via
+ the e-mail gateway, if you set it up, even if the disabled text
+ field is filled in. The e-mail gateway should
<emphasis>not</emphasis>
-
be enabled for secure installations of Bugzilla.</para>
</note>
</para>
<listitem>
<para>
- <emphasis>CanConfirm</emphasis>
-
- : This field is only used if you have enabled "unconfirmed"
- status in your parameters screen. If you enable this for a user,
- that user can then move bugs from "Unconfirmed" to "Confirmed"
- status (e.g.: "New" status). Be judicious about allowing users to
- turn this bit on for other users.</para>
+ <emphasis><groupname></emphasis>:
+ If you have created some groups, e.g. "securitysensitive", then
+ checkboxes will appear here to allow you to add users to, or
+ remove them from, these groups.
+ </para>
</listitem>
<listitem>
<para>
- <emphasis>Creategroups</emphasis>
-
- : This option will allow a user to create and destroy groups in
- Bugzilla. Unless you are using the Bugzilla GroupSentry security
- option "usebuggroupsentry" in your parameters, this setting has
- no effect.</para>
+ <emphasis>canconfirm</emphasis>:
+ This field is only used if you have enabled the "unconfirmed"
+ status. If you enable this for a user,
+ that user can then move bugs from "Unconfirmed" to a "Confirmed"
+ status (e.g.: "New" status).</para>
</listitem>
<listitem>
<para>
- <emphasis>Editbugs</emphasis>
+ <emphasis>creategroups</emphasis>:
+ This option will allow a user to create and destroy groups in
+ Bugzilla.</para>
+ </listitem>
- : Unless a user has this bit set, they can only edit those bugs
- for which they are the assignee or the reporter.
- <note>
- <para>Leaving this option unchecked does not prevent users from
- adding comments to a bug! They simply cannot change a bug
- priority, severity, etc. unless they are the assignee or
- reporter.</para>
- </note>
+ <listitem>
+ <para>
+ <emphasis>editbugs</emphasis>:
+ Unless a user has this bit set, they can only edit those bugs
+ for which they are the assignee or the reporter. Even if this
+ option is unchecked, users can still add comments to bugs.
</para>
</listitem>
<listitem>
<para>
- <emphasis>Editcomponents</emphasis>
-
- : This flag allows a user to create new products and components,
+ <emphasis>editcomponents</emphasis>:
+ This flag allows a user to create new products and components,
as well as modify and destroy those that have no bugs associated
with them. If a product or component has bugs associated with it,
those bugs must be moved to a different product or component
- before Bugzilla will allow them to be destroyed. The name of a
- product or component can be changed without affecting the
- associated bugs, but it tends to annoy the hell out of your users
- when these change a lot.</para>
+ before Bugzilla will allow them to be destroyed.
+ </para>
</listitem>
<listitem>
<para>
- <emphasis>Editkeywords</emphasis>
-
- : If you use Bugzilla's keyword functionality, enabling this
- feature allows a user can create and destroy keywords. As always,
+ <emphasis>editkeywords</emphasis>:
+ If you use Bugzilla's keyword functionality, enabling this
+ feature allows a user to create and destroy keywords. As always,
the keywords for existing bugs containing the keyword the user
wishes to destroy must be changed before Bugzilla will allow it
- to die. You must be very careful about creating too many new
- keywords if you run a very large Bugzilla installation; keywords
- are global variables across products, and you can often run into
- a phenomenon called "keyword bloat". This confuses users, and
- then the feature goes unused.</para>
+ to die.</para>
</listitem>
<listitem>
<para>
- <emphasis>Editusers</emphasis>
-
- : This flag allows a user do what you're doing right now: edit
+ <emphasis>editusers</emphasis>:
+ This flag allows a user to do what you're doing right now: edit
other users. This will allow those with the right to do so to
remove administrator privileges from other users or grant them to
themselves. Enable with care.</para>
</listitem>
+
+ <listitem>
+ <para>
+ <emphasis>tweakparams</emphasis>:
+ This flag allows a user to change Bugzilla's Params
+ (using <filename>editparams.cgi</filename>.)</para>
+ </listitem>
+
<listitem>
<para>
- <emphasis>PRODUCT</emphasis>
-
- : PRODUCT bugs access. This allows an administrator, with
- product-level granularity, to specify in which products a user
- can edit bugs. The user must still have the "editbugs" privelege
- to edit bugs in this area; this simply restricts them from even
- seeing bugs outside these boundaries if the administrator has
- enabled the group sentry parameter "usebuggroupsentry". Unless
- you are using bug groups, this option has no effect.</para>
+ <emphasis><productname></emphasis>:
+ This allows an administrator to specify the products in which
+ a user can see bugs. The user must still have the
+ "editbugs" privilege to edit bugs in these products.</para>
</listitem>
</itemizedlist>
</section>
<section id="programadmin">
<title>Product, Component, Milestone, and Version Administration</title>
- <epigraph>
- <para>Dear Lord, we have to get our users to do WHAT?</para>
- </epigraph>
-
<section id="products">
<title>Products</title>
- <subtitle>Formerly, and in some spots still, called
- "Programs"</subtitle>
-
<para>
<glossterm linkend="gloss-product" baseform="product">
Products</glossterm>
- are the broadest category in Bugzilla, and you should have the least of
- these. If your company makes computer games, you should have one
- product per game, and possibly a few special products (website,
- meetings...)</para>
+ are the broadest category in Bugzilla, and tend to represent real-world
+ shipping products. E.g. if your company makes computer games,
+ you should have one product per game, perhaps a "Common" product for
+ units of technology used in multiple games, and maybe a few special
+ products (Website, Administration...)</para>
- <para>A Product (formerly called "Program", and still referred to that
- way in some portions of the source code) controls some very important
- functions. The number of "votes" available for users to vote for the
- most important bugs is set per-product, as is the number of votes
+ <para>Many of Bugzilla's settings are configurable on a per-product
+ basis. The number of "votes" available to users is set per-product,
+ as is the number of votes
required to move a bug automatically from the UNCONFIRMED status to the
- NEW status. One can close a Product for further bug entry and define
- various Versions available from the Edit product screen.</para>
+ NEW status.</para>
<para>To create a new product:</para>
<orderedlist>
<listitem>
- <para>Select "components" from the yellow footer</para>
+ <para>Select "products" from the footer</para>
- <tip>
- <para>It may seem counterintuitive to click "components" when you
- want to edit the properties associated with Products. This is one
- of a long list of things we want in Bugzilla 3.0...</para>
- </tip>
</listitem>
<listitem>
- <para>Select the "Add" link to the right of "Add a new
- product".</para>
+ <para>Select the "Add" link in the bottom right</para>
</listitem>
<listitem>
<para>Enter the name of the product and a description. The
- Description field is free-form.</para>
+ Description field may contain HTML.</para>
</listitem>
</orderedlist>
- <tip>
- <para>Don't worry about the "Closed for bug entry", "Maximum Votes
- per person", "Maximum votes a person can put on a single bug",
- "Number of votes a bug in this Product needs to automatically get out
- of the UNCOMFIRMED state", and "Version" options yet. We'll cover
- those in a few moments.</para>
- </tip>
+ <para>Don't worry about the "Closed for bug entry", "Maximum Votes
+ per person", "Maximum votes a person can put on a single bug",
+ "Number of votes a bug in this Product needs to automatically get out
+ of the UNCOMFIRMED state", and "Version" options yet. We'll cover
+ those in a few moments.
+ </para>
</section>
<section id="components">
<title>Components</title>
- <para>Components are subsections of a Product.
- <example>
- <title>Creating some Components</title>
-
- <informalexample>
- <para>The computer game you are designing may have a "UI"
- component, an "API" component, a "Sound System" component, and a
- "Plugins" component, each overseen by a different programmer. It
- often makes sense to divide Components in Bugzilla according to the
- natural divisions of responsibility within your Product or
- company.</para>
- </informalexample>
- </example>
-
+ <para>Components are subsections of a Product. E.g. the computer game
+ you are designing may have a "UI"
+ component, an "API" component, a "Sound System" component, and a
+ "Plugins" component, each overseen by a different programmer. It
+ often makes sense to divide Components in Bugzilla according to the
+ natural divisions of responsibility within your Product or
+ company.</para>
+
+ <para>
Each component has a owner and (if you turned it on in the parameters),
a QA Contact. The owner should be the primary person who fixes bugs in
that component. The QA Contact should be the person who will ensure
will get email when new bugs are created in this Component and when
these bugs change. Default Owner and Default QA Contact fields only
dictate the
- <emphasis>default assignments</emphasis>
-
- ; the Owner and QA Contact fields in a bug are otherwise unrelated to
- the Component.</para>
+ <emphasis>default assignments</emphasis>;
+ these can be changed on bug submission, or at any later point in
+ a bug's life.</para>
<para>To create a new Component:</para>
</listitem>
<listitem>
- <para>Select the "Add" link to the right of the "Add a new
- component" text on the "Select Component" page.</para>
+ <para>Select the "Add" link in the bottom right.</para>
</listitem>
<listitem>
- <para>Fill out the "Component" field, a short "Description", and
- the "Initial Owner". The Component and Description fields are
- free-form; the "Initial Owner" field must be that of a user ID
- already existing in the database. If the initial owner does not
- exist, Bugzilla will refuse to create the component.
- <tip>
- <para>Is your "Default Owner" a user who is not yet in the
- database? No problem.
- <orderedlist>
- <listitem>
- <para>Select the "Log out" link on the footer of the
- page.</para>
- </listitem>
-
- <listitem>
- <para>Select the "New Account" link on the footer of the
- "Relogin" page</para>
- </listitem>
-
- <listitem>
- <para>Type in the email address of the default owner you want
- to create in the "E-mail address" field, and her full name in
- the "Real name" field, then select the "Submit Query"
- button.</para>
- </listitem>
-
- <listitem>
- <para>Now select "Log in" again, type in your login
- information, and you can modify the product to use the
- Default Owner information you require.</para>
- </listitem>
- </orderedlist>
- </para>
- </tip>
+ <para>Fill out the "Component" field, a short "Description",
+ the "Initial Owner" and "Initial QA Contact" (if enabled.)
+ The Component and Description fields may contain HTML;
+ the "Initial Owner" field must be a login name
+ already existing in the database.
</para>
</listitem>
-
- <listitem>
- <para>Either Edit more components or return to the Bugzilla Query
- Page. To return to the Product you were editing, you must select
- the Components link as before.</para>
- </listitem>
</orderedlist>
</section>
<title>Versions</title>
<para>Versions are the revisions of the product, such as "Flinders
- 3.1", "Flinders 95", and "Flinders 2000". Using Versions helps you
- isolate code changes and are an aid in reporting.
- <example>
- <title>Common Use of Versions</title>
-
- <informalexample>
- <para>A user reports a bug against Version "Beta 2.0" of your
- product. The current Version of your software is "Release Candidate
- 1", and no longer has the bug. This will help you triage and
- classify bugs according to their relevance. It is also possible
- people may report bugs against bleeding-edge beta versions that are
- not evident in older versions of the software. This can help
- isolate code changes that caused the bug</para>
- </informalexample>
- </example>
-
- <example>
- <title>A Different Use of Versions</title>
-
- <informalexample>
- <para>This field has been used to good effect by an online service
- provider in a slightly different way. They had three versions of
- the product: "Production", "QA", and "Dev". Although it may be the
- same product, a bug in the development environment is not normally
- as critical as a Production bug, nor does it need to be reported
- publicly. When used in conjunction with Target Milestones, one can
- easily specify the environment where a bug can be reproduced, and
- the Milestone by which it will be fixed.</para>
- </informalexample>
- </example>
+ 3.1", "Flinders 95", and "Flinders 2000". Version is not a multi-select
+ field; the usual practice is to select the most recent version with
+ the bug.
</para>
<para>To create and edit Versions:</para>
<listitem>
<para>You will notice that the product already has the default
- version "undefined". If your product doesn't use version numbers,
- you may want to leave this as it is or edit it so that it is "---".
- You can then go back to the edit versions page and add new versions
- to your product.</para>
-
- <para>Otherwise, click the "Add" button to the right of the "Add a
- new version" text.</para>
+ version "undefined". Click the "Add" link in the bottom right.</para>
</listitem>
<listitem>
- <para>Enter the name of the Version. This can be free-form
- characters up to the limit of the text box. Then select the "Add"
- button.</para>
+ <para>Enter the name of the Version. This field takes text only.
+ Then click the "Add" button.</para>
</listitem>
- <listitem>
- <para>At this point you can select "Edit" to edit more Versions, or
- return to the "Query" page, from which you can navigate back to the
- product through the "components" link at the foot of the Query
- page.</para>
- </listitem>
</orderedlist>
</section>
<para>Milestones are "targets" that you plan to get a bug fixed by. For
example, you have a bug that you plan to fix for your 3.0 release, it
- would be assigned the milestone of 3.0. Or, you have a bug that you
- plan to fix for 2.8, this would have a milestone of 2.8.</para>
+ would be assigned the milestone of 3.0.</para>
<note>
<para>Milestone options will only appear for a Product if you turned
- the "usetargetmilestone" field in the "Edit Parameters" screen
- "On".</para>
+ on the "usetargetmilestone" Param in the "Edit Parameters" screen.
+ </para>
</note>
<para>To create new Milestones, set Default Milestones, and set
<orderedlist>
<listitem>
- <para>Select "edit milestones"</para>
+ <para>Select "Edit milestones" from the "Edit product" page.</para>
</listitem>
<listitem>
- <para>Select "Add" to the right of the "Add a new milestone"
+ <para>Select "Add" in the bottom right corner.
text</para>
</listitem>
<listitem>
<para>Enter the name of the Milestone in the "Milestone" field. You
- can optionally set the "Sortkey", which is a positive or negative
+ can optionally set the "sortkey", which is a positive or negative
number (-255 to 255) that defines where in the list this particular
- milestone appears. Select "Add".</para>
-
- <example>
- <title>Using SortKey with Target Milestone</title>
-
- <informalexample>
- <para>Let's say you create a target milestone called "Release
- 1.0", with Sortkey set to "0". Later, you realize that you will
- have a public beta, called "Beta1". You can create a Milestone
- called "Beta1", with a Sortkey of "-1" in order to ensure
- people will see the Target Milestone of "Beta1" earlier on the
- list than "Release 1.0"</para>
- </informalexample>
- </example>
+ milestone appears. This is because milestones often do not
+ occur in alphanumeric order For example, "Future" might be
+ after "Release 1.2". Select "Add".</para>
</listitem>
<listitem>
- <para>If you want to add more milestones, select the "Edit" link.
- If you don't, well shoot, you have to go back to the "query" page
- and select "components" again, and make your way back to the
- Product you were editing.
- <note>
- <para>This is another in the list of unusual user interface
- decisions that we'd like to get cleaned up. Shouldn't there be a
- link to the effect of "edit the Product I was editing when I
- ended up here"? In any case, clicking "components" in the footer
- takes you back to the "Select product" screen, from which you can
- begin editing your product again.</para>
- </note>
- </para>
- </listitem>
+ <para>From the Edit product screen, you can enter the URL of a
+ page which gives information about your milestones and what
+ they mean. </para>
- <listitem>
- <para>From the Edit product screen again (once you've made your way
- back), enter the URL for a description of what your milestones are
- for this product in the "Milestone URL" field. It should be of the
- format "http://www.foo.com/bugzilla/product_milestones.html"</para>
-
- <para>Some common uses of this field include product descriptions,
- product roadmaps, and of course a simple description of the meaning
- of each milestone.</para>
- </listitem>
-
- <listitem>
- <para>If you're using Target Milestones, the "Default Milestone"
- field must have some kind of entry. If you really don't care if
- people set coherent Target Milestones, simply leave this at the
- default, "---". However, controlling and regularly updating the
- Default Milestone field is a powerful tool when reporting the
- status of projects.</para>
-
- <para>Select the "Update" button when you are done.</para>
+ <tip>
+ <para>If you want your milestone document to be restricted so
+ that it can only be viewed by people in a particular Bugzilla
+ group, the best way is to attach the document to a bug in that
+ group, and make the URL the URL of that attachment.</para>
+ </tip>
</listitem>
</orderedlist>
</section>
<section id="voting">
<title>Voting</title>
- <para>The concept of "voting" is a poorly understood, yet powerful
- feature for the management of open-source projects. Each user is
- assigned so many Votes per product, which they can freely reassign (or
- assign multiple votes to a single bug). This allows developers to gauge
+ <para>Voting allows users to be given a pot of votes which they can allocate
+ to bugs, to indicate that they'd like them fixed.
+ This allows developers to gauge
user need for a particular enhancement or bugfix. By allowing bugs with
a certain number of votes to automatically move from "UNCONFIRMED" to
"NEW", users of the bug system can help high-priority bugs garner
attention so they don't sit for a long time awaiting triage.</para>
- <para>The daunting challenge of Votes is deciding where you draw the
- line for a "vocal majority". If you only have a user base of 100 users,
- setting a low threshold for bugs to move from UNCONFIRMED to NEW makes
- sense. As the Bugzilla user base expands, however, these thresholds
- must be re-evaluated. You should gauge whether this feature is worth
- the time and close monitoring involved, and perhaps forego
- implementation until you have a critical mass of users who demand
- it.</para>
-
<para>To modify Voting settings:</para>
<orderedlist>
</listitem>
<listitem>
- <para>Set "Maximum Votes per person" to your calculated value.
+ <para><emphasis>Maximum Votes per person</emphasis>:
Setting this field to "0" disables voting.</para>
</listitem>
<listitem>
- <para>Set "Maximum Votes a person can put on a single bug" to your
- calculated value. It should probably be some number lower than the
- "Maximum votes per person". Setting this field to "0" disables
- voting, but leaves the voting options open to the user. This is
- confusing.</para>
+ <para><emphasis>Maximum Votes a person can put on a single
+ bug"</emphasis>:
+ It should probably be some number lower than the
+ "Maximum votes per person". Don't set this field to "0" if
+ "Maximum votes per person" is non-zero; that doesn't make
+ any sense.</para>
</listitem>
<listitem>
- <para>Set "Number of votes a bug in this product needs to
- automatically get out of the UNCONFIRMED state" to your calculated
- number. Setting this field to "0" disables the automatic move of
- bugs from UNCONFIRMED to NEW. Some people advocate leaving this at
- "0", but of what use are Votes if your Bugzilla user base is unable
- to affect which bugs appear on Development radar?
- <tip>
- <para>You should probably set this number to higher than a small
- coalition of Bugzilla users can influence it. Most sites use this
- as a "referendum" mechanism -- if users are able to vote a bug
- out of UNCONFIRMED, it is a
- <emphasis>really</emphasis>
-
- bad bug!</para>
- </tip>
+ <para><emphasis>Number of votes a bug in this product needs to
+ automatically get out of the UNCONFIRMED state</emphasis>:
+ Setting this field to "0" disables the automatic move of
+ bugs from UNCONFIRMED to NEW.
</para>
</listitem>
<listitem>
- <para>Once you have adjusted the values to your preference, select
- the "Update" button.</para>
+ <para>Once you have adjusted the values to your preference, click
+ "Update".</para>
</listitem>
</orderedlist>
</section>
<section id="groups">
<title>Groups and Group Security</title>
- <para>Groups can be very useful in bugzilla, because they allow users
+ <para>Groups allow the administrator
to isolate bugs or products that should only be seen by certain people.
- Groups can also be a complicated minefield of interdependencies and
- weirdness if mismanaged.
- <example>
- <title>When to Use Group Security</title>
-
- <informalexample>
- <para>Many Bugzilla sites isolate "Security-related" bugs from all
- other bugs. This way, they can have a fix ready before the security
- vulnerability is announced to the world. You can create a
- "Security" product which, by default, has no members, and only add
- members to the group (in their individual User page, as described
- under User Administration) who should have priveleged access to
- "Security" bugs. Alternately, you may create a Group independently
- of any Product, and change the Group mask on individual bugs to
- restrict access to members only of certain Groups.</para>
- </informalexample>
- </example>
-
- Groups only work if you enable the "usebuggroups" paramater. In
- addition, if the "usebuggroupsentry" parameter is "On", one can
- restrict access to products by groups, so that only members of a
- product group are able to view bugs within that product. Group security
- in Bugzilla can be divided into two categories: Generic and
- Product-Based.</para>
-
- <note>
- <para>Groups in Bugzilla are a complicated beast that evolved out of
- very simple user permission bitmasks, apparently itself derived from
- common concepts in UNIX access controls. A "bitmask" is a
- fixed-length number whose value can describe one, and only one, set
- of states. For instance, UNIX file permissions are assigned bitmask
- values: "execute" has a value of 1, "write" has a value of 2, and
- "read" has a value of 4. Add them together, and a file can be read,
- written to, and executed if it has a bitmask of "7". (This is a
- simplified example -- anybody who knows UNIX security knows there is
- much more to it than this. Please bear with me for the purpose of
- this note.) The only way a bitmask scheme can work is by doubling the
- bit count for each value. Thus if UNIX wanted to offer another file
- permission, the next would have to be a value of 8, then the next 16,
- the next 32, etc.</para>
-
- <para>Similarly, Bugzilla offers a bitmask to define group
- permissions, with an internal limit of 64. Several are already
- occupied by built-in permissions. The way around this limitation is
- to avoid assigning groups to products if you have many products,
- avoid bloating of group lists, and religiously prune irrelevant
- groups. In reality, most installations of Bugzilla support far fewer
- than 64 groups, so this limitation has not hit for most sites, but it
- is on the table to be revised for Bugzilla 3.0 because it interferes
- with the security schemes of some administrators.</para>
- </note>
-
- <para>To enable Generic Group Security ("usebuggroups"):</para>
+ There are two types of group - Generic Groups, and Product-Based Groups.
+ </para>
+
+ <para>
+ Product-Based Groups are matched with products, and allow you to restrict
+ access to bugs on a per-product basis. They are enabled using the
+ usebuggroups Param. Turning on the usebuggroupsentry
+ Param will mean bugs automatically get added to their product group when
+ filed.
+ </para>
+
+ <para>
+ Generic Groups have no special relationship to products;
+ you create them, and put bugs in them
+ as required. One example of the use of Generic Groups
+ is Mozilla's "Security" group,
+ into which security-sensitive bugs are placed until fixed. Only the
+ Mozilla Security Team are members of this group.
+ </para>
+
+ <para>To create Generic Groups:</para>
<orderedlist>
<listitem>
- <para>Turn "On" "usebuggroups" in the "Edit Parameters"
- screen.</para>
- </listitem>
-
- <listitem>
- <para>You will generally have no groups set up. Select the "groups"
+ <para>Select the "groups"
link in the footer.</para>
</listitem>
<listitem>
<para>Take a moment to understand the instructions on the "Edit
- Groups" screen. Once you feel confident you understand what is
- expected of you, select the "Add Group" link.</para>
+ Groups" screen, then select the "Add Group" link.</para>
</listitem>
<listitem>
- <para>Fill out the "New Name" (remember, no spaces!), "New
- Description", and "New User RegExp" fields. "New User RegExp"
- allows you to automatically place all users who fulfill the Regular
- Expression into the new group.
- <example>
- <title>Creating a New Group</title>
-
- <informalexample>
- <para>I created a group called DefaultGroup with a description
- of
- <quote>This is simply a group to play with</quote>
-
- , and a New User RegExp of
- <quote>.*@mydomain.tld</quote>
-
- . This new group automatically includes all Bugzilla users with
- "@mydomain.tld" at the end of their user id. When I finished,
- my new group was assigned bit #128.</para>
- </informalexample>
- </example>
-
- When you have finished, select the Add button.</para>
+ <para>Fill out the "New Name", "New Description", and
+ "New User RegExp" fields. "New User RegExp" allows you to automatically
+ place all users who fulfill the Regular Expression into the new group.
+ When you have finished, click "Add".</para>
</listitem>
</orderedlist>
- <para>To enable Product-Based Group Security
- (usebuggroupsentry):</para>
-
- <warning>
- <para>Don't forget that you only have 64 groups masks available,
- total, for your installation of Bugzilla! If you plan on having more
- than 50 products in your individual Bugzilla installation, and
- require group security for your products, you should consider either
- running multiple Bugzillas or using Generic Group Security instead of
- Product-Based ("usebuggroupsentry") Group Security.</para>
- </warning>
+ <para>To use Product-Based Groups:</para>
<orderedlist>
<listitem>
- <para>Turn "On" "usebuggroups" and "usebuggroupsentry" in the "Edit
+ <para>Turn on "usebuggroups" and "usebuggroupsentry" in the "Edit
Parameters" screen.</para>
<warning>
- <para>"usebuggroupsentry" has the capacity to prevent the
+ <para>XXX is this still true?
+ "usebuggroupsentry" has the capacity to prevent the
administrative user from directly altering bugs because of
conflicting group permissions. If you plan on using
"usebuggroupsentry", you should plan on restricting
</listitem>
<listitem>
- <para>You will generally have no Groups set up, unless you enabled
- "usebuggroupsentry" prior to creating any Products. To create
- "Generic Group Security" groups, follow the instructions given
- above. To create Product-Based Group security, simply follow the
- instructions for creating a new Product. If you need to add users
- to these new groups as you create them, you will find the option to
- add them to the group available under the "Edit User"
- screens.</para>
+ <para>In future, when you create a Product, a matching group will be
+ automatically created. If you need to add a Product Group to
+ a Product which was created before you turned on usebuggroups,
+ then simply create a new group, as outlined above, with the
+ same name as the Product.</para>
</listitem>
</orderedlist>
- <para>You may find this example illustrative for how bug groups work.
- <example>
- <title>Bugzilla Groups</title>
-
- <literallayout>Bugzilla Groups example ----------------------- For
- this example, let us suppose we have four groups, call them Group1,
- Group2, Group3, and Group4. We have 5 users, User1, User2, User3,
- User4, User5. We have 8 bugs, Bug1, ..., Bug8. Group membership is
- defined by this chart: (X denotes that user is in that group.) (I
- apologize for the nasty formatting of this table. Try viewing it in a
- text-based browser or something for now. -MPB) G G G G r r r r o o o
- o u u u u p p p p 1 2 3 4 +-+-+-+-+ User1|X| | | | +-+-+-+-+ User2|
- |X| | | +-+-+-+-+ User3|X| |X| | +-+-+-+-+ User4|X|X|X| | +-+-+-+-+
- User5| | | | | +-+-+-+-+ Bug restrictions are defined by this chart:
- (X denotes that bug is restricted to that group.) G G G G r r r r o o
- o o u u u u p p p p 1 2 3 4 +-+-+-+-+ Bug1| | | | | +-+-+-+-+ Bug2|
- |X| | | +-+-+-+-+ Bug3| | |X| | +-+-+-+-+ Bug4| | | |X| +-+-+-+-+
- Bug5|X|X| | | +-+-+-+-+ Bug6|X| |X| | +-+-+-+-+ Bug7|X|X|X| |
- +-+-+-+-+ Bug8|X|X|X|X| +-+-+-+-+ Who can see each bug? Bug1 has no
- group restrictions. Therefore, Bug1 can be seen by any user, whatever
- their group membership. This is going to be the only bug that User5
- can see, because User5 isn't in any groups. Bug2 can be seen by
- anyone in Group2, that is User2 and User4. Bug3 can be seen by anyone
- in Group3, that is User3 and User4. Bug4 can be seen by anyone in
- Group4. Nobody is in Group4, so none of these users can see Bug4.
- Bug5 can be seen by anyone who is in _both_ Group1 and Group2. This
- is only User4. User1 cannot see it because he is not in Group2, and
- User2 cannot see it because she is not in Group1. Bug6 can be seen by
- anyone who is in both Group1 and Group3. This would include User3 and
- User4. Similar to Bug5, User1 cannot see Bug6 because he is not in
- Group3. Bug7 can be seen by anyone who is in Group1, Group2, and
- Group3. This is only User4. All of the others are missing at least
- one of those group privileges, and thus cannot see the bug. Bug8 can
- be seen by anyone who is in Group1, Group2, Group3, and Group4. There
- is nobody in all four of these groups, so nobody can see Bug8. It
- doesn't matter that User4 is in Group1, Group2, and Group3, since he
- isn't in Group4.</literallayout>
- </example>
- </para>
+ <warning>
+ <para>Bugzilla currently has a limit of 64 groups per installation. If
+ you have more than about 50 products, you should consider
+ running multiple Bugzillas. Ask in the newsgroup for other
+ suggestions for working around this restriction.</para>
+ </warning>
+
+ <para>
+ Note that group permissions are such that you need to be a member
+ of <emphasis>all</emphasis> the groups a bug is in, for whatever
+ reason, to see that bug.
+ </para>
</section>
+
<section id="security">
<title>Bugzilla Security</title>
- <epigraph>
- <para>Putting your money in a wall safe is better protection than
- depending on the fact that no one knows that you hide your money in a
- mayonnaise jar in your fridge.</para>
- </epigraph>
-
- <note>
- <para>Poorly-configured MySQL, Bugzilla, and FTP installations have
+ <warning>
+ <para>Poorly-configured MySQL and Bugzilla installations have
given attackers full access to systems in the past. Please take these
guidelines seriously, even for Bugzilla machines hidden away behind
your firewall. 80% of all computer trespassers are insiders, not
anonymous crackers.</para>
- </note>
+ </warning>
- <para>Secure your installation.
<note>
<para>These instructions must, of necessity, be somewhat vague since
Bugzilla runs on so many different platforms. If you have refinements
</para>
</note>
+ <para>To secure your installation:
+
<orderedlist>
<listitem>
<para>Ensure you are running at least MysQL version 3.22.32 or newer.
- Earlier versions had notable security holes and poorly secured
- default configuration choices.</para>
+ Earlier versions had notable security holes and (from a security
+ point of view) poor default configuration choices.</para>
</listitem>
<listitem>
system!</emphasis>
Read
- <ulink
- url="http://www.mysql.com/documentation/mysql/bychapter/manual_Privilege_system.html">
+ <ulink url="http://www.mysql.com/doc/P/r/Privilege_system.html">
The MySQL Privilege System</ulink>
-
until you can recite it from memory!</para>
-
- <para>At the very least, ensure you password the "mysql -u root"
- account and the "bugs" account, establish grant table rights (consult
- the Keystone guide in Appendix C: The Bugzilla Database for some
- easy-to-use details) that do not allow CREATE, DROP, RELOAD,
- SHUTDOWN, and PROCESS for user "bugs". I wrote up the Keystone advice
- back when I knew far less about security than I do now : )</para>
</listitem>
<listitem>
<listitem>
<para>Ensure you have adequate access controls for the
- $BUGZILLA_HOME/data/ and $BUGZILLA_HOME/shadow/ directories, as well
- as the $BUGZILLA_HOME/localconfig and $BUGZILLA_HOME/globals.pl
- files. The localconfig file stores your "bugs" user password, which
- would be terrible to have in the hands of a criminal, while the
- "globals.pl" stores some default information regarding your
- installation which could aid a system cracker. In addition, some
- files under $BUGZILLA_HOME/data/ store sensitive information, and
- $BUGZILLA_HOME/shadow/ stores bug information for faster retrieval.
- If you fail to secure these directories and this file, you will
- expose bug information to those who may not be allowed to see
- it.</para>
+ $BUGZILLA_HOME/data/ directory, as well as the
+ $BUGZILLA_HOME/localconfig file.
+ The localconfig file stores your "bugs" database account password.
+ In addition, some
+ files under $BUGZILLA_HOME/data/ store sensitive information.
+ </para>
- <note>
- <para>Bugzilla provides default .htaccess files to protect the most
- common Apache installations. However, you should verify these are
- adequate according to the site-wide security policy of your web
- server, and ensure that the .htaccess files are allowed to
- "override" default permissions set in your Apache configuration
- files. Covering Apache security is beyond the scope of this Guide;
- please consult the Apache documentation for details.</para>
-
- <para>If you are using a web server that does not support the
- .htaccess control method,
- <emphasis>you are at risk!</emphasis>
-
- After installing, check to see if you can view the file
- "localconfig" in your web browser (e.g.:
- <ulink url="http://bugzilla.mozilla.org/localconfig">
- http://bugzilla.mozilla.org/localconfig</ulink>
-
- ). If you can read the contents of this file, your web server has
- not secured your bugzilla directory properly and you must fix this
- problem before deploying Bugzilla. If, however, it gives you a
- "Forbidden" error, then it probably respects the .htaccess
- conventions and you are good to go.</para>
- </note>
+ <para>Bugzilla provides default .htaccess files to protect the most
+ common Apache installations. However, you should verify these are
+ adequate according to the site-wide security policy of your web
+ server, and ensure that the .htaccess files are allowed to
+ "override" default permissions set in your Apache configuration
+ files. Covering Apache security is beyond the scope of this Guide;
+ please consult the Apache documentation for details.</para>
+
+ <para>If you are using a web server that does not support the
+ .htaccess control method,
+ <emphasis>you are at risk!</emphasis>
+
+ After installing, check to see if you can view the file
+ "localconfig" in your web browser (e.g.:
+ <ulink url="http://bugzilla.mozilla.org/localconfig">
+ http://bugzilla.mozilla.org/localconfig</ulink>
+
+ ). If you can read the contents of this file, your web server has
+ not secured your bugzilla directory properly and you must fix this
+ problem before deploying Bugzilla. If, however, it gives you a
+ "Forbidden" error, then it probably respects the .htaccess
+ conventions and you are good to go.</para>
<para>When you run checksetup.pl, the script will attempt to modify
various permissions on files which Bugzilla uses. If you do not have
<ulink url="http://bugzilla.mozilla.org/show_bug.cgi?id=65572">Bug
65572</ulink>
- for adequate protection in your data/ and shadow/ directories.</para>
+ for adequate protection in your data/ directory.</para>
<para>Note the instructions which follow are Apache-specific. If you
use IIS, Netscape, or other non-Apache web servers, please consult
allow from all</literallayout>
</para>
- <para>Place the following text into a file named ".htaccess",
- readable by your web server, in your $BUGZILLA_HOME/shadow directory.
-
- <literallayout>deny from all</literallayout>
- </para>
</listitem>
</orderedlist>
</para>
</para>
<para>
- The other method is to copy the templates into
- <filename>template/en/custom</filename>. This method is better if
+ The other method is to copy the templates into a mirrored directory
+ structure under <filename>template/en/custom</filename>.
+ This method is better if
you are going to make major changes, because it is guaranteed that
the contents of this directory will not be touched during an upgrade,
and you can then decide whether to continue using your own templates,
this guide. It's reasonably easy to pick up by looking at the current
templates; or, you can read the manual, available on the
<ulink url="http://www.template-toolkit.org">Template Toolkit home
- page </ulink>.
+ page</ulink>.
</para>
+
+ <note>
+ <para>
+ Don't directly edit the compiled templates in
+ <filename class="directory">data/template/*</filename> - your
+ changes will be lost when Template Toolkit recompiles them.
+ </para>
+ </note>
</section>
<section>
Editing these is a way to quickly get a distinctive look and
feel for your Bugzilla installation.
</para>
+
+ <para>
+ <command>bug/create/create.html.tmpl</command> and
+ <command>bug/create/comment.txt.tmpl</command>:
+ You may wish to get bug submitters to give certain bits of structured
+ information, each in a separate input widget, for which there is not a
+ field in the database. The bug entry system has been designed in an
+ extensible fashion to enable you to define arbitrary fields and widgets,
+ and have their values appear formatted in the initial
+ Description (rather than in database fields.)
+ </para>
+
+ <para>
+ To make this work, create a custom template for
+ <filename>enter_bug.cgi</filename> (the default template, on which you
+ could base it, is <filename>create.html.tmpl</filename>),
+ and either call it <filename>create.html.tmpl</filename> or
+ <filename>create-<formatname>.html.tmpl</filename>.
+ Put it in the <filename class="directory">custom/bug/create</filename>
+ directory. In it, add widgets for each piece of information you'd like
+ collected - such as a build number, or set of steps to reproduce.
+ </para>
+
+ <para>
+ Then, create a template like
+ <filename>custom/bug/create/comment.txt.tmpl</filename>, which
+ references the form fields you have created. When a bug report is
+ submitted, the initial comment attached to the bug report will be
+ formatted according to the layout of this template.
+ </para>
+
+ <para>
+ For example, if your enter_bug template had a field
+ <programlisting>
+ <input type="text" name="buildid" size="30">
+ </programlisting>
+ and then your comment.txt.tmpl had
+ <programlisting>
+ BuildID: [% form.buildid %]
+ </programlisting>
+ then
+ <programlisting>
+ BuildID: 20020303
+ </programlisting>
+ would appear in the initial checkin comment.
+ </para>
</section>
<section>
Save the template as <filename><stubname>-<formatname>.<contenttypetag>.tmpl</filename>.
Try out the template by calling the CGI as
<filename><cginame>.cgi?format=<formatname></filename> .
- </para>
+ </para>
</section>
</section>
+ <section id="upgrading">
+ <title>Upgrading to New Releases</title>
+
+ <para>A plain Bugzilla is fairly easy to upgrade from one version to a
+ newer one. However, things get a bit more complicated if you've made
+ changes to Bugzilla's code. In this case, you may have to re-make or
+ reapply those changes. It is recommended that you take a backup of your
+ database and your entire Bugzilla installation before attempting an
+ upgrade. You can upgrade a 'clean' installation by untarring a new
+ tarball over the old installation. If you are upgrading from 2.12 or
+ later, you can type
+ <filename>cvs -z3 update</filename>,
+ and resolve conflicts if there are any.</para>
+
+ <para>Because the developers of Bugzilla are constantly adding new
+ tables, columns and fields, you'll probably get SQL errors if you just
+ update the code and attempt to use Bugzilla. Always run the
+ <filename>checksetup.pl</filename>
+ script whenever you upgrade your installation.</para>
+
+ <para>If you are running Bugzilla version 2.8 or lower, and wish to
+ upgrade to the latest version, please consult the file,
+ "UPGRADING-pre-2.8" in the Bugzilla root directory after untarring the
+ archive.</para>
+ </section>
<!-- Integrating Bugzilla with Third-Party Tools -->
&integration;
<entry>File Names</entry>
<entry>
- <filename>file.extension</filename>
+ <filename>filename</filename>
</entry>
</row>
! You should have locked your security down like the installation
instructions told you to. You can find details on locking down
your database in the Bugzilla FAQ in this directory (under
- "Security"), or more robust security generalities in the MySQL
- searchable documentation at
- http://www.mysql.com/php/manual.php3?section=Privilege_system
- .</para>
+ "Security"), or more robust security generalities in the
+ <ulink url="http://www.mysql.com/php/manual.php3?section=Privilege_system">MySQL
+ searchable documentation</ulink>.
+ </para>
</listitem>
<listitem>
<command>use bugs;</command>
</para>
- <note>
- <para>Don't forget the
- <quote>;</quote>
-
- at the end of each line, or you'll be kicking yourself
- later.</para>
- </note>
</listitem>
</orderedlist>
</para>
<para>
<prompt>mysql></prompt>
-
<command>show tables from bugs;</command>
</para>
- <para>you'll be able to see all the
+ <para>you'll be able to see the names of all the
<quote>spreadsheets</quote>
+ (tables) in your database.</para>
+
+ <para>From the command issued above, ou should have some
+ output that looks like this:
+<programlisting>
++-------------------+
+| Tables in bugs |
++-------------------+
+| attachments |
+| bugs |
+| bugs_activity |
+| cc |
+| components |
+| dependencies |
+| fielddefs |
+| groups |
+| keyworddefs |
+| keywords |
+| logincookies |
+| longdescs |
+| milestones |
+| namedqueries |
+| products |
+| profiles |
+| profiles_activity |
+| shadowlog |
+| tokens |
+| versions |
+| votes |
+| watch |
++-------------------+
+</programlisting>
+</para>
+
+<literallayout>
+ Here's an overview of what each table does. Most columns in each table have
+descriptive names that make it fairly trivial to figure out their jobs.
+
+attachments: This table stores all attachments to bugs. It tends to be your
+largest table, yet also generally has the fewest entries because file
+attachments are so (relatively) large.
+
+bugs: This is the core of your system. The bugs table stores most of the
+current information about a bug, with the exception of the info stored in the
+other tables.
+
+bugs_activity: This stores information regarding what changes are made to bugs
+when -- a history file.
+
+cc: This tiny table simply stores all the CC information for any bug which has
+any entries in the CC field of the bug. Note that, like most other tables in
+Bugzilla, it does not refer to users by their user names, but by their unique
+userid, stored as a primary key in the profiles table.
+
+components: This stores the programs and components (or products and
+components, in newer Bugzilla parlance) for Bugzilla. Curiously, the "program"
+(product) field is the full name of the product, rather than some other unique
+identifier, like bug_id and user_id are elsewhere in the database.
+
+dependencies: Stores data about those cool dependency trees.
+
+fielddefs: A nifty table that defines other tables. For instance, when you
+submit a form that changes the value of "AssignedTo" this table allows
+translation to the actual field name "assigned_to" for entry into MySQL.
+
+groups: defines bitmasks for groups. A bitmask is a number that can uniquely
+identify group memberships. For instance, say the group that is allowed to
+tweak parameters is assigned a value of "1", the group that is allowed to edit
+users is assigned a "2", and the group that is allowed to create new groups is
+assigned the bitmask of "4". By uniquely combining the group bitmasks (much
+like the chmod command in UNIX,) you can identify a user is allowed to tweak
+parameters and create groups, but not edit users, by giving him a bitmask of
+"5", or a user allowed to edit users and create groups, but not tweak
+parameters, by giving him a bitmask of "6" Simple, huh?
+ If this makes no sense to you, try this at the mysql prompt:
+mysql> select * from groups;
+ You'll see the list, it makes much more sense that way.
+
+keyworddefs: Definitions of keywords to be used
+
+keywords: Unlike what you'd think, this table holds which keywords are
+associated with which bug id's.
+
+logincookies: This stores every login cookie ever assigned to you for every
+machine you've ever logged into Bugzilla from. Curiously, it never does any
+housecleaning -- I see cookies in this file I've not used for months. However,
+since Bugzilla never expires your cookie (for convenience' sake), it makes
+sense.
+
+longdescs: The meat of bugzilla -- here is where all user comments are stored!
+You've only got 2^24 bytes per comment (it's a mediumtext field), so speak
+sparingly -- that's only the amount of space the Old Testament from the Bible
+would take (uncompressed, 16 megabytes). Each comment is keyed to the
+bug_id to which it's attached, so the order is necessarily chronological, for
+comments are played back in the order in which they are received.
+
+milestones: Interesting that milestones are associated with a specific product
+in this table, but Bugzilla does not yet support differing milestones by
+product through the standard configuration interfaces.
+
+namedqueries: This is where everybody stores their "custom queries". Very
+cool feature; it beats the tar out of having to bookmark each cool query you
+construct.
+
+products: What products you have, whether new bug entries are allowed for the
+product, what milestone you're working toward on that product, votes, etc. It
+will be nice when the components table supports these same features, so you
+could close a particular component for bug entry without having to close an
+entire product...
+
+profiles: Ahh, so you were wondering where your precious user information was
+stored? Here it is! With the passwords in plain text for all to see! (but
+sshh... don't tell your users!)
+
+profiles_activity: Need to know who did what when to who's profile? This'll
+tell you, it's a pretty complete history.
+
+shadowlog: I could be mistaken here, but I believe this table tells you when
+your shadow database is updated and what commands were used to update it. We
+don't use a shadow database at our site yet, so it's pretty empty for us.
+
+versions: Version information for every product
+
+votes: Who voted for what when
+
+watch: Who (according to userid) is watching who's bugs (according to their
+userid).
- (tables) in your database. It is similar to a file system, only
- faster and more robust for certain types of operations.</para>
-
- <para>From the command issued above, ou should have some output that
- looks like this:
- <programlisting>+-------------------+ | Tables in bugs |
- +-------------------+ | attachments | | bugs | | bugs_activity | | cc
- | | components | | dependencies | | fielddefs | | groups | |
- keyworddefs | | keywords | | logincookies | | longdescs | |
- milestones | | namedqueries | | products | | profiles | |
- profiles_activity | | shadowlog | | tokens | | versions | | votes | |
- watch | +-------------------+</programlisting>
- </para>
- <literallayout>Here's an overview of what each table does. Most
- columns in each table have descriptive names that make it fairly
- trivial to figure out their jobs. attachments: This table stores all
- attachments to bugs. It tends to be your largest table, yet also
- generally has the fewest entries because file attachments are so
- (relatively) large. bugs: This is the core of your system. The bugs
- table stores most of the current information about a bug, with the
- exception of the info stored in the other tables. bugs_activity: This
- stores information regarding what changes are made to bugs when -- a
- history file. cc: This tiny table simply stores all the CC
- information for any bug which has any entries in the CC field of the
- bug. Note that, like most other tables in Bugzilla, it does not refer
- to users by their user names, but by their unique userid, stored as a
- primary key in the profiles table. components: This stores the
- programs and components (or products and components, in newer
- Bugzilla parlance) for Bugzilla. Curiously, the "program" (product)
- field is the full name of the product, rather than some other unique
- identifier, like bug_id and user_id are elsewhere in the database.
- dependencies: Stores data about those cool dependency trees.
- fielddefs: A nifty table that defines other tables. For instance,
- when you submit a form that changes the value of "AssignedTo" this
- table allows translation to the actual field name "assigned_to" for
- entry into MySQL. groups: defines bitmasks for groups. A bitmask is a
- number that can uniquely identify group memberships. For instance,
- say the group that is allowed to tweak parameters is assigned a value
- of "1", the group that is allowed to edit users is assigned a "2",
- and the group that is allowed to create new groups is assigned the
- bitmask of "4". By uniquely combining the group bitmasks (much like
- the chmod command in UNIX,) you can identify a user is allowed to
- tweak parameters and create groups, but not edit users, by giving him
- a bitmask of "5", or a user allowed to edit users and create groups,
- but not tweak parameters, by giving him a bitmask of "6" Simple, huh?
- If this makes no sense to you, try this at the mysql prompt:
- mysql> select * from groups; You'll see the list, it makes much
- more sense that way. keyworddefs: Definitions of keywords to be used
- keywords: Unlike what you'd think, this table holds which keywords
- are associated with which bug id's. logincookies: This stores every
- login cookie ever assigned to you for every machine you've ever
- logged into Bugzilla from. Curiously, it never does any housecleaning
- -- I see cookies in this file I've not used for months. However,
- since Bugzilla never expires your cookie (for convenience' sake), it
- makes sense. longdescs: The meat of bugzilla -- here is where all
- user comments are stored! You've only got 2^24 bytes per comment
- (it's a mediumtext field), so speak sparingly -- that's only the
- amount of space the Old Testament from the Bible would take
- (uncompressed, 16 megabytes). Each comment is keyed to the bug_id to
- which it's attached, so the order is necessarily chronological, for
- comments are played back in the order in which they are received.
- milestones: Interesting that milestones are associated with a
- specific product in this table, but Bugzilla does not yet support
- differing milestones by product through the standard configuration
- interfaces. namedqueries: This is where everybody stores their
- "custom queries". Very cool feature; it beats the tar out of having
- to bookmark each cool query you construct. products: What products
- you have, whether new bug entries are allowed for the product, what
- milestone you're working toward on that product, votes, etc. It will
- be nice when the components table supports these same features, so
- you could close a particular component for bug entry without having
- to close an entire product... profiles: Ahh, so you were wondering
- where your precious user information was stored? Here it is! With the
- passwords in plain text for all to see! (but sshh... don't tell your
- users!) profiles_activity: Need to know who did what when to who's
- profile? This'll tell you, it's a pretty complete history. shadowlog:
- I could be mistaken here, but I believe this table tells you when
- your shadow database is updated and what commands were used to update
- it. We don't use a shadow database at our site yet, so it's pretty
- empty for us. versions: Version information for every product votes:
- Who voted for what when watch: Who (according to userid) is watching
- who's bugs (according to their userid). === THE DETAILS === Ahh, so
- you're wondering just what to do with the information above? At the
- mysql prompt, you can view any information about the columns in a
- table with this command (where "table" is the name of the table you
- wish to view): mysql> show columns from table; You can also view
- all the data in a table with this command: mysql> select * from
- table; -- note: this is a very bad idea to do on, for instance, the
- "bugs" table if you have 50,000 bugs. You'll be sitting there a while
- until you ctrl-c or 50,000 bugs play across your screen. You can
- limit the display from above a little with the command, where
- "column" is the name of the column for which you wish to restrict
- information: mysql> select * from table where (column = "some
- info"); -- or the reverse of this mysql> select * from table where
- (column != "some info"); Let's take our example from the
- introduction, and assume you need to change the word "verified" to
- "approved" in the resolution field. We know from the above
- information that the resolution is likely to be stored in the "bugs"
- table. Note we'll need to change a little perl code as well as this
- database change, but I won't plunge into that in this document. Let's
- verify the information is stored in the "bugs" table: mysql> show
- columns from bugs (exceedingly long output truncated here) |
- bug_status|
- enum('UNCONFIRMED','NEW','ASSIGNED','REOPENED','RESOLVED','VERIFIED','CLOSED')||MUL
- | UNCONFIRMED|| Sorry about that long line. We see from this that the
- "bug status" column is an "enum field", which is a MySQL peculiarity
- where a string type field can only have certain types of entries.
- While I think this is very cool, it's not standard SQL. Anyway, we
- need to add the possible enum field entry 'APPROVED' by altering the
- "bugs" table. mysql> ALTER table bugs CHANGE bug_status bug_status
- -> enum("UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED", "RESOLVED",
- -> "VERIFIED", "APPROVED", "CLOSED") not null; (note we can take
- three lines or more -- whatever you put in before the semicolon is
- evaluated as a single expression) Now if you do this: mysql> show
- columns from bugs; you'll see that the bug_status field has an extra
- "APPROVED" enum that's available! Cool thing, too, is that this is
- reflected on your query page as well -- you can query by the new
- status. But how's it fit into the existing scheme of things? Looks
- like you need to go back and look for instances of the word
- "verified" in the perl code for Bugzilla -- wherever you find
- "verified", change it to "approved" and you're in business (make sure
- that's a case-insensitive search). Although you can query by the enum
- field, you can't give something a status of "APPROVED" until you make
- the perl changes. Note that this change I mentioned can also be done
- by editing checksetup.pl, which automates a lot of this. But you need
- to know this stuff anyway, right? I hope this database tutorial has
- been useful for you. If you have comments to add, questions,
- concerns, etc. please direct them to mbarnson@excitehome.net. Please
- direct flames to /dev/null :) Have a nice day! === LINKS === Great
- MySQL tutorial site:
- http://www.devshed.com/Server_Side/MySQL/</literallayout>
+===
+THE DETAILS
+===
+
+ Ahh, so you're wondering just what to do with the information above? At the
+mysql prompt, you can view any information about the columns in a table with
+this command (where "table" is the name of the table you wish to view):
+
+mysql> show columns from table;
+
+ You can also view all the data in a table with this command:
+
+mysql> select * from table;
+
+ -- note: this is a very bad idea to do on, for instance, the "bugs" table if
+you have 50,000 bugs. You'll be sitting there a while until you ctrl-c or
+50,000 bugs play across your screen.
+
+ You can limit the display from above a little with the command, where
+"column" is the name of the column for which you wish to restrict information:
+
+mysql> select * from table where (column = "some info");
+
+ -- or the reverse of this
+
+mysql> select * from table where (column != "some info");
+
+ Let's take our example from the introduction, and assume you need to change
+the word "verified" to "approved" in the resolution field. We know from the
+above information that the resolution is likely to be stored in the "bugs"
+table. Note we'll need to change a little perl code as well as this database
+change, but I won't plunge into that in this document. Let's verify the
+information is stored in the "bugs" table:
+
+mysql> show columns from bugs
+
+ (exceedingly long output truncated here)
+| bug_status| enum('UNCONFIRMED','NEW','ASSIGNED','REOPENED','RESOLVED','VERIFIED','CLOSED')||MUL | UNCONFIRMED||
+
+ Sorry about that long line. We see from this that the "bug status" column is
+an "enum field", which is a MySQL peculiarity where a string type field can
+only have certain types of entries. While I think this is very cool, it's not
+standard SQL. Anyway, we need to add the possible enum field entry
+'APPROVED' by altering the "bugs" table.
+
+mysql> ALTER table bugs CHANGE bug_status bug_status
+ -> enum("UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED", "RESOLVED",
+ -> "VERIFIED", "APPROVED", "CLOSED") not null;
+
+ (note we can take three lines or more -- whatever you put in before the
+semicolon is evaluated as a single expression)
+
+Now if you do this:
+
+mysql> show columns from bugs;
+
+ you'll see that the bug_status field has an extra "APPROVED" enum that's
+available! Cool thing, too, is that this is reflected on your query page as
+well -- you can query by the new status. But how's it fit into the existing
+scheme of things?
+ Looks like you need to go back and look for instances of the word "verified"
+in the perl code for Bugzilla -- wherever you find "verified", change it to
+"approved" and you're in business (make sure that's a case-insensitive search).
+Although you can query by the enum field, you can't give something a status
+of "APPROVED" until you make the perl changes. Note that this change I
+mentioned can also be done by editing checksetup.pl, which automates a lot of
+this. But you need to know this stuff anyway, right?
+ </literallayout>
</section>
</section>
</section>
- <section id="granttables">
- <title>MySQL Permissions & Grant Tables</title>
-
- <note>
- <para>The following portion of documentation comes from my answer to an
- old discussion of Keystone, a cool product that does trouble-ticket
- tracking for IT departments. I wrote this post to the Keystone support
- group regarding MySQL grant table permissions, and how to use them
- effectively. It is badly in need of updating, as I believe MySQL has
- added a field or two to the grant tables since this time, but it serves
- as a decent introduction and troubleshooting document for grant table
- issues. I used Keynote to track my troubles until I discovered
- Bugzilla, which gave me a whole new set of troubles to work on : )
- Although it is of limited use, it still has SOME use, thus it's still
- included.</para>
-
- <para>Please note, however, that I was a relatively new user to MySQL
- at the time. Some of my suggestions, particularly in how to set up
- security, showed a terrible lack of security-related database
- experience.</para>
- </note>
-
- <literallayout>From matt_barnson@singletrac.com Wed Jul 7 09:00:07 1999
- Date: Mon, 1 Mar 1999 21:37:04 -0700 From: Matthew Barnson
- matt_barnson@singletrac.com To: keystone-users@homeport.org Subject:
- [keystone-users] Grant Tables FAQ [The following text is in the
- "iso-8859-1" character set] [Your display is set for the "US-ASCII"
- character set] [Some characters may be displayed incorrectly] Maybe we
- can include this rambling message in the Keystone FAQ? It gets asked a
- lot, and the only option current listed in the FAQ is
- "--skip-grant-tables". Really, you can't go wrong by reading section 6 of
- the MySQL manual, at http://www.mysql.com/Manual/manual.html. I am sure
- their description is better than mine. MySQL runs fine without
- permissions set up correctly if you run the mysql daemon with the
- "--skip-grant-tables" option. Running this way denies access to nobody.
- Unfortunately, unless you've got yourself firewalled it also opens the
- potential for abuse if someone knows you're running it. Additionally, the
- default permissions for MySQL allow anyone at localhost access to the
- database if the database name begins with "test_" or is named "test"
- (i.e. "test_keystone"). You can change the name of your database in the
- keystone.conf file ($sys_dbname). This is the way I am doing it for some
- of my databases, and it works fine. The methods described below assume
- you're running MySQL on the same box as your webserver, and that you
- don't mind if your $sys_dbuser for Keystone has superuser access. See
- near the bottom of this message for a description of what each field
- does. Method #1: 1. cd /var/lib #location where you'll want to run
- /usr/bin/mysql_install_db shell script from to get it to work. 2. ln -s
- mysql data # soft links the "mysql" directory to "data", which is what
- mysql_install_db expects. Alternately, you can edit mysql_install_db and
- change all the "./data" references to "./mysql". 3. Edit
- /usr/bin/mysql_install_db with your favorite text editor (vi, emacs, jot,
- pico, etc.) A) Copy the "INSERT INTO db VALUES
- ('%','test\_%','','Y','Y','Y','Y','Y','Y');" and paste it immediately
- after itself. Chage the 'test\_%' value to 'keystone', or the value of
- $sys_dbname in keystone.conf. B) If you are running your keystone
- database with any user, you'll need to copy the "INSERT INTO user VALUES
- ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');" line
- after itself and change 'root' to the name of the keystone database user
- ($sys_dbuser) in keystone.conf. # adds entries to the script to create
- grant tables for specific hosts and users. The user you set up has
- super-user access ($sys_dbuser) -- you may or may not want this. The
- layout of mysql_install_db is really very uncomplicated. 4.
- /usr/bin/mysqladmin shutdown # ya gotta shut it down before you can
- reinstall the grant tables! 5. rm -i /var/lib/mysql/mysql/*.IS?' and
- answer 'Y' to the deletion questions. # nuke your current grant tables.
- This WILL NOT delete any other databases than your grant tables. 6.
- /usr/bin/mysql_install_db # run the script you just edited to install
- your new grant tables. 7. mysqladmin -u root password (new_password) #
- change the root MySQL password, or else anyone on localhost can login to
- MySQL as root and make changes. You can skip this step if you want
- keystone to connect as root with no password. 8. mysqladmin -u
- (webserver_user_name) password (new_password) # change the password of
- the $sys_dbuser. Note that you will need to change the password in the
- keystone.conf file as well in $sys_dbpasswd, and if your permissions are
- set up incorrectly anybody can type the URL to your keystone.conf file
- and get the password. Not that this will help them much if your
- permissions are set to @localhost. Method #2: easier, but a pain
- reproducing if you have to delete your grant tables. This is the
- "recommended" method for altering grant tables in MySQL. I don't use it
- because I like the other way :) shell> mysql --user=root keystone
- mysql> GRANT
- SELECT,INSERT,UPDATE,DELETE,INDEX,ALTER,CREATE,DROP,RELOAD,SHUTDOWN,PROCESS,
- FILE, ON keystone.* TO <$sys_dbuser name>@localhost IDENTIFIED BY
- '(password)' WITH GRANT OPTION; OR mysql> GRANT ALL PRIVILEGES ON
- keystone.* TO <$sys_dbuser name>@localhost IDENTIFIED BY
- '(password)' WITH GRANT OPTION; # this grants the required permissions to
- the keystone ($sys_dbuser) account defined in keystone.conf. However, if
- you are runnning many different MySQL-based apps, as we are, it's
- generally better to edit the mysql_install_db script to be able to
- quickly reproduce your permissions structure again. Note that the FILE
- privelege and WITH GRANT OPTION may not be in your best interest to
- include. GRANT TABLE FIELDS EXPLANATION: Quick syntax summary: "%" in
- MySQL is a wildcard. I.E., if you are defining your DB table and in the
- 'host' field and enter '%', that means that any host can access that
- database. Of course, that host must also have a valid db user in order to
- do anything useful. 'db'=name of database. In our case, it should be
- "keystone". "user" should be your "$sys_dbuser" defined in keystone.conf.
- Note that you CANNOT add or change a password by using the "INSERT INTO
- db (X)" command -- you must change it with the mysql -u command as
- defined above. Passwords are stored encrypted in the MySQL database, and
- if you try to enter it directly into the table they will not match.
- TABLE: USER. Everything after "password" is a privelege granted (Y/N).
- This table controls individual user global access rights.
- 'host','user','password','select','insert','update','delete','index','alter'
- ,'create','drop','grant','reload','shutdown','process','file' TABLE: DB.
- This controls access of USERS to databases.
- 'host','db','user','select','insert','update','delete','index','alter','crea
- te','drop','grant' TABLE: HOST. This controls which HOSTS are allowed
- what global access rights. Note that the HOST table, USER table, and DB
- table are very closely connected -- if an authorized USER attempts an SQL
- request from an unauthorized HOST, she's denied. If a request from an
- authorized HOST is not an authorized USER, it is denied. If a globally
- authorized USER does not have rights to a certain DB, she's denied. Get
- the picture?
- 'host','db','select','insert','update','delete','index','alter','create','dr
- op','grant' You should now have a working knowledge of MySQL grant
- tables. If there is anything I've left out of this answer that you feel
- is pertinent, or if my instructions don't work for you, please let me
- know and I'll re-post this letter again, corrected. I threw it together
- one night out of exasperation for all the newbies who don't know squat
- about MySQL yet, so it is almost guaranteed to have errors. Once again,
- you can't go wrong by reading section 6 of the MySQL manual. It is more
- detailed than I! http://www.mysql.com/Manual/manual.html.</literallayout>
- </section>
</appendix>
<!-- Keep this comment at the end of the file
<appendix id="faq">
<title>The Bugzilla FAQ</title>
+ <para>
+ This FAQ includes questions not covered elsewhere in the Guide.
+ </para>
+
<qandaset>
</question>
<answer>
<para>
- A year has gone by, and I <emphasis>still</emphasis> can't
- find any head-to-head comparisons of Bugzilla against
- other defect-tracking software. However, from my personal
+ We can't find any head-to-head comparisons of Bugzilla against
+ other defect-tracking software. If you know of one, please
+ get in touch. However, from the author's personal
experience with other bug-trackers, Bugzilla offers
superior performance on commodity hardware, better price
(free!), more developer- friendly features (such as stored
</para>
<para>
If you happen to be a commercial bug-tracker vendor, please
- step forward with a rebuttal so I can include it in the
- FAQ. We're not in pursuit of Bugzilla ueber alles; we
- simply love having a powerful, open-source tool to get our
- jobs done.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>
- How do I change my user name (email address) in Bugzilla?
- </para>
- </question>
- <answer>
- <para>
- New in 2.16 - go to the Account section of the Preferences. You will
- be emailed at both addresses for confirmation.
+ step forward with a list of advantages your product has over
+ Bugzilla. We'd be happy to include it in the "Competitors"
+ section.
</para>
</answer>
</qandaentry>
<question>
<para>
Why MySQL? I'm interested in seeing Bugzilla run on
- Oracle/Sybase/Msql/PostgreSQL/MSSQL?
+ Oracle/Sybase/Msql/PostgreSQL/MSSQL.
</para>
</question>
<answer>
</question>
<answer>
<para>
- Mozilla.org uses /usr/bonsaitools/bin/perl. The prime rule in making
- submissions is "don't break bugzilla.mozilla.org". If it breaks it, your
- patch will be reverted faster than you can do a diff.
- </para>
- <para>
- Here's Terry Weissman's comment, for some historical context:
- <blockquote>
- <para>
- [This was] purely my own convention. I wanted a place to put a version of
- Perl and other tools that was strictly under my control for the
- various webtools, and not subject to anyone else. Edit it to point
- to whatever you like.
- </para>
- <note>
+ Mozilla.org uses /usr/bonsaitools/bin/perl, because originally
+ Terry wanted a place to put a version of Perl and other tools
+ that was strictly under his control.
+ </para>
<para>
We always recommend that, if possible, you keep the path
- as /usr/bonsaitools/bin/perl, and simply add a /usr/bonsaitools
- and /usr/bonsaitools/bin directory, then symlink your version
- of perl to /usr/bonsaitools/bin/perl. This will make upgrading
+ as /usr/bonsaitools/bin/perl, and simply add symlink.
+ This will make upgrading
your Bugzilla much easier in the future.
</para>
- </note>
- </blockquote>
- </para>
</answer>
</qandaentry>
+
+ <qandaentry>
+ <question>
+ <para>
+ Is there an easy way to change the Bugzilla cookie name?
+ </para>
+ </question>
+ <answer>
+ <para>
+ At present, no.
+ </para>
+ </answer>
+ </qandaentry>
+
</qandadiv>
<qandadiv id="faq-phb">
<qandaentry>
<question>
<para>
- Is Bugzilla web-based or do you have to have specific software or
- specific operating system on your machine?
+ Is Bugzilla web-based, or do you have to have specific software or
+ a specific operating system on your machine?
</para>
</question>
<answer>
<qandaentry>
<question>
<para>
- Has anyone you know of already done any Bugzilla integration with
+ Can Bugzilla integrate with
Perforce (SCM software)?
</para>
</question>
</question>
<answer>
<para>
- Absolutely! You can track up to a "soft-limit" of around
- 64 individual "Products", that can each be composed of as
- many "Components" as you want. Check the Administration
- section of the Bugzilla Guide for more information regarding
- setting up Products and Components.
+ Absolutely! You can track any number of Products (although you
+ are limited to about 55 or so if
+ you are using Product-Based Groups), that can each be composed of any
+ number of Components.
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>
- Does Bugzilla allow attachments (text, screenshots, urls etc)? If yes,
+ Does Bugzilla allow attachments (text, screenshots, URLs etc)? If yes,
are there any that are NOT allowed?
</para>
</question>
</answer>
</qandaentry>
-
- <qandaentry>
- <question>
- <para>
- The index.html page doesn't show the footer. It's really annoying to have
- to go to the querypage just to check my "my bugs" link.
- </para>
- </question>
- <answer>
- <para>If you upgrade to 2.16, the index page has a footer.
- </para>
- </answer>
- </qandaentry>
<qandaentry>
<question>
<para>
<question>
<para>
Is there email notification and if so, what do you see when you get an
- email? Do you see bug number and title or is it only the number?
+ email?
</para>
</question>
<answer>
<qandaentry>
<question>
<para>
- If there is email notification, do users have to have any particular
+ Do users have to have any particular
type of email application?
</para>
</question>
</answer>
</qandaentry>
- <qandaentry>
- <question>
- <para>
- If I just wanted to track certain bugs, as they go through life, can I
- set it up to alert me via email whenever that bug changes, whether it be
- owner, status or description etc.?
- </para>
- </question>
- <answer>
- <para>
- Yes. Place yourself in the "cc" field of the bug you wish to monitor.
- Then change your "Notify me of changes to" field in the Email Settings
- tab of the User Preferences screen in Bugzilla to the "Only those
- bugs which I am listed on the CC line" option.
- </para>
- </answer>
- </qandaentry>
-
<qandaentry>
<question>
<para>
</answer>
</qandaentry>
- <qandaentry>
- <question>
- <para>
- Can a user re-run a report with a new project, same query?
- </para>
- </question>
- <answer>
- <para>
- Yes.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>
- Can a user modify an existing report and then save it into another name?
- </para>
- </question>
- <answer>
- <para>
- You can save an unlimited number of queries in Bugzilla. You are free
- to modify them and rename them to your heart's desire.
- </para>
- </answer>
- </qandaentry>
-
<qandaentry>
<question>
<para>
</answer>
</qandaentry>
- <qandaentry>
- <question>
- <para>
- Can the admin person establish separate group and individual user
- privileges?
- </para>
- </question>
- <answer>
- <para>
- Yes.
- </para>
- </answer>
- </qandaentry>
-
<qandaentry>
<question>
<para>
</question>
<answer>
<para>
- If Bugzilla is set up correctly from the start, continuing maintenance needs
- are minimal and can be completed by unskilled labor. Things like rotate
- backup tapes and check log files for the word "error".
+ If Bugzilla is set up correctly from the start, continuing maintenance
+ needs
+ are minimal and can be completed by unskilled labor.
</para>
<para>
Commercial Bug-tracking software typically costs somewhere upwards
</qandaentry>
</qandadiv>
- <qandadiv id="faq-install">
- <title>Bugzilla Installation</title>
- <qandaentry>
- <question>
- <para>
- How do I download and install Bugzilla?
- </para>
- </question>
- <answer>
- <para>
- Check <ulink url="http://www.bugzilla.org/">
- http://www.bugzilla.org/</ulink> for details.
- Read the other parts of this Guide for installation instructions.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>
- How do I install Bugzilla on Windows NT?
- </para>
- </question>
- <answer>
- <para>
- Installation on Windows NT has its own section in
- this document.
- </para>
- </answer>
- </qandaentry>
-
- <qandaentry>
- <question>
- <para>
- Is there an easy way to change the Bugzilla cookie name?
- </para>
- </question>
- <answer>
- <para>
- At present, no.
- </para>
- </answer>
- </qandaentry>
-
- </qandadiv>
-
<qandadiv id="faq-security">
<title>Bugzilla Security</title>
<question>
<para>
How do I completely disable MySQL security if it's giving me problems
- (I've followed the instructions in the installation section of this guide!)?
+ (I've followed the instructions in the installation section of this guide)?
</para>
</question>
<answer>
<para>
Run MySQL like this: "mysqld --skip-grant-tables". Please remember <emphasis>this
makes MySQL as secure as taping a $100 to the floor of a football stadium
- bathroom for safekeeping.</emphasis> Please read the Security section of the
- Administration chapter of "The Bugzilla Guide" before proceeding.
+ bathroom for safekeeping.</emphasis>
</para>
</answer>
</qandaentry>
</question>
<answer>
<para>
- Edit the "changedmail" param. Replace "To:" with "X-Real-To:",
- replace "Cc:" with "X-Real-CC:", and add a "To: (myemailaddress)".
+ Edit the "changedmail" Param. Replace "To:" with "X-Real-To:",
+ replace "Cc:" with "X-Real-CC:", and add a "To: <youremailaddress>".
</para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para>
- I think I've set up MySQL permissions correctly, but bugzilla still can't
+ I think I've set up MySQL permissions correctly, but Bugzilla still can't
connect.
</para>
</question>
<qandadiv id="faq-use">
<title>Bugzilla Usage</title>
+ <qandaentry>
+ <question>
+ <para>
+ How do I change my user name (email address) in Bugzilla?
+ </para>
+ </question>
+ <answer>
+ <para>
+ New in 2.16 - go to the Account section of the Preferences. You will
+ be emailed at both addresses for confirmation.
+ </para>
+ </answer>
+ </qandaentry>
+
<qandaentry>
<question>
<para>
<answer>
<para>
The current behavior is acceptable to bugzilla.mozilla.org and most
- users. I personally don't like it. You have your choice of patches
+ users. You have your choice of patches
to change this behavior, however.
<simplelist>
<member><ulink url="http://bugzilla.mozilla.org/showattachment.cgi?attach_id=8029">
<member><ulink url="http://bugzilla.mozilla.org/showattachment.cgi?attach_id=8153">
"Accept" button automatically assigns to you</ulink></member>
</simplelist>
- Note that these patches are somewhat dated. You will need to do the find
- and replace manually to apply them. They are very small, though. It is easy.
+ Note that these patches are somewhat dated. You will need to apply
+ them manually.
</para>
</answer>
</qandaentry>
<answer>
<para>
Yup. Just rename it once you download it, or save it under a different
- filename. This will not be fixed anytime too soon, because it would
+ filename. This will not be fixed anytime soon, because it would
cripple some other functionality.
</para>
</answer>
http://bugzilla.mozilla.org/show_bug.cgi?id=49862</ulink>. Ultimately, it's as easy
as adding the "---" priority field to your localconfig file in the appropriate area,
re-running checksetup.pl, and then changing the default priority in your browser using
- "editparams.cgi". Hmm, now that I think about it, that is kind of a klunky way to handle
- it, but for now it's what we have! Although the bug has been closed "RESOLVED WONTFIX",
- there may be a better way to handle this...
+ "editparams.cgi".
</para>
</answer>
</qandaentry>
<listitem>
<para>
Announce your patch and the associated URL
- (http://bugzilla.mozilla.org/show_bug.cgi?id=XXXX) for discussion in
+ (http://bugzilla.mozilla.org/show_bug.cgi?id=XXXXXX) for discussion in
the newsgroup (netscape.public.mozilla.webtools). You'll get a really
good, fairly immediate reaction to the implications of your patch,
which will also give us an idea how well-received the change would
<para> If you are running the very most recent
version of Perl and MySQL (both the executables and development
libraries) on your system, you can skip these manual installation
- steps for the Perl modules by using Bundle::Bugzilla in
+ steps for the Perl modules by using Bundle::Bugzilla; see
<xref linkend="bundlebugzilla" />.
</para>
</note>
<listitem>
<para>
- Text::Wrap
+ <ulink url="http://www.cpan.org/authors/id/MUIR/modules/Text-Tabs%2BWrap-2001.0131.tar.gz">Text::Wrap</ulink>
(v2001.0131)
</para>
</listitem>
versions of MySQL store their data files in
<filename>/var</filename>.
On some Unix systems, this is part of a smaller root partition,
- and may not have room for your bug database. If you decide to build
- from sources you can easily set the dataDir as an option to
- <filename>configure</filename>.</para>
+ and may not have room for your bug database. You can set the data
+ directory as an option to <filename>configure</filename>
+ if you build MySQL from source yourself.</para>
</note>
- <para>If you install from source or non-package (RPM, deb, etc.)
- binaries you need to add
- <firstterm>mysqld</firstterm>
+ <para>If you install from something other than an RPM or Debian
+ package, you will need to add <filename>mysqld</filename>
to your init scripts so the server daemon will come back up whenever
your machine reboots. Further discussion of UNIX init sequences are
beyond the scope of this guide.
from
<glossterm linkend="gloss-cpan">CPAN</glossterm>,
- which installs all required modules for you.
- If you wish to use
- Bundle::Bugzilla, you must be using the latest version of
- Perl.</para>
+ which installs all required modules for you.</para>
<para>
<computeroutput>
<para>
All Perl modules can be found on the
- Comprehensive Perl Archive Network (CPAN) at http://www.cpan.org. The
+ <ulink url="http://www.cpan.org">Comprehensive Perl
+ Archive Network</ulink> (CPAN). The
CPAN servers have a real tendency to bog down, so please use mirrors.
</para>
<para>Quality, general Perl module installation instructions can be
found on the CPAN website, but the easy thing to do is to just use the
- CPAN shell which does all the hard work for you.</para>
-
- <para>To use the CPAN shell to install a module:
- <informalexample>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
- <command>perl -MCPAN -e 'install "<modulename>"'</command>
- </computeroutput>
- </para>
- </informalexample>
+ CPAN shell which does all the hard work for you.
+ To use the CPAN shell to install a module:
+ </para>
+ <para>
+ <computeroutput>
+ <prompt>bash#</prompt>
+ <command>perl -MCPAN -e 'install "<modulename>"'</command>
+ </computeroutput>
+ </para>
+
+ <para>
To do it the hard way:
- <informalexample>
- <para>Untar the module tarball -- it should create its own
- directory</para>
+ </para>
+
+ <para>Untar the module tarball -- it should create its own
+ directory</para>
- <para>CD to the directory just created, and enter the following
- commands:
- <orderedlist>
- <listitem>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
+ <para>CD to the directory just created, and enter the following
+ commands:
+ <orderedlist>
+ <listitem>
+ <para>
+ <computeroutput>
+ <prompt>bash#</prompt>
- <command>perl Makefile.PL</command>
- </computeroutput>
- </para>
- </listitem>
+ <command>perl Makefile.PL</command>
+ </computeroutput>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
+ <listitem>
+ <para>
+ <computeroutput>
+ <prompt>bash#</prompt>
- <command>make</command>
- </computeroutput>
- </para>
- </listitem>
+ <command>make</command>
+ </computeroutput>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
+ <listitem>
+ <para>
+ <computeroutput>
+ <prompt>bash#</prompt>
- <command>make test</command>
- </computeroutput>
- </para>
- </listitem>
+ <command>make test</command>
+ </computeroutput>
+ </para>
+ </listitem>
- <listitem>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
+ <listitem>
+ <para>
+ <computeroutput>
+ <prompt>bash#</prompt>
- <command>make install</command>
- </computeroutput>
- </para>
- </listitem>
- </orderedlist>
- </para>
- </informalexample>
+ <command>make install</command>
+ </computeroutput>
+ </para>
+ </listitem>
+ </orderedlist>
</para>
<warning>
<para>You'll want to make sure that your web server will run any file
with the .cgi extension as a CGI and not just display it. If you're
- using Apache that means uncommenting the following line in the srm.conf
+ using Apache that means uncommenting the following line in the httpd.conf
file:
<programlisting>AddHandler cgi-script .cgi</programlisting>
</para>
<para>With Apache you'll also want to make sure that within the
- access.conf file the line:
+ httpd.conf file the line:
<programlisting>Options ExecCGI AllowOverride Limit</programlisting>
is in the stanza that covers the directories into which you intend to
<para>AllowOverride Limit allows the use of a Deny statement in the
.htaccess file generated by checksetup.pl</para>
- <para>Users of newer versions of Apache will generally find both of
- the above lines will be in the httpd.conf file, rather than srm.conf
- or access.conf.</para>
+ <para>Users of older versions of Apache may find the above lines
+ in the srm.conf and access.conf files, respecitvely.</para>
</note>
</para>
for the correct location of your Perl executable (probably
<filename>/usr/bin/perl</filename>).
Otherwise you must hack all the .cgi files to change where they look
- for Perl. This can be done using the following Perl one-liner.
- I suggest using the symlink approach for future release
- compatibility.
-
- <example>
- <title>Changing the path to Perl</title>
- <para>You can simply run this Perl one-liner to change
- your path to perl in all the files in your Bugzilla installation:
+ for Perl. This can be done using the following Perl one-liner, but
+ I suggest using the symlink approach to avoid upgrade hassles.
+ </para>
+
+ <para>
<programlisting>perl -pi -e
's@#\!/usr/bonsaitools/bin/perl@#\!/usr/bin/perl@' *cgi *pl Bug.pm
processmail syncshadowdb</programlisting>
Change <filename>/usr/bin/perl</filename> to match the location
- of Perl on your machine.</para>
- </example>
+ of Perl on your machine.
</para>
</section>
<listitem>
<para>server's host: just use
<quote>localhost</quote>
-
if the MySQL server is local</para>
</listitem>
<listitem>
<para>database name:
<quote>bugs</quote>
-
if you're following these directions</para>
</listitem>
<listitem>
<para>MySQL username:
<quote>bugs</quote>
-
if you're following these directions</para>
</listitem>
<listitem>
<para>Password for the
<quote>bugs</quote>
-
- MySQL account (<bugs_password>) above</para>
+ MySQL account; (<bugs_password>) above</para>
</listitem>
</orderedlist>
</para>
</orderedlist>
</para>
</section>
+
+ <section>
+ <title>Configuring Bugzilla</title>
+ <para>
+ You should run through the parameters on the Edit Parameters page
+ (link in the footer) and set them all to appropriate values.
+ They key parameters are documented in <xref linkend="parameters" />.
+ </para>
+ </section>
</section>
<section id="extraconfig">
<para>As well as the text-based dependency graphs, Bugzilla also
supports dependency graphing, using a package called 'dot'.
- Exactly how this works is controlled by the 'webdotbase' parameter.
+ Exactly how this works is controlled by the 'webdotbase' parameter,
+ which can have one of three values:
</para>
- <para>(To be written...</para>
+ <para>
+ <orderedlist>
+ <listitem>
+ <para>
+ A complete file path to the command 'dot' (part of
+ <ulink url="http://www.graphviz.org/">GraphViz</ulink>)
+ will generate the graphs locally
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A URL prefix pointing to an installation of the webdot package will
+ generate the graphs remotely
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ A blank value will disable dependency graphing.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+
+ <para>So, to get this working, install
+ <ulink url="http://www.graphviz.org/">GraphViz</ulink>. If you
+ do that, you need to
+ <ulink url="http://httpd.apache.org/docs/mod/mod_imap.html">enable
+ server-side image maps</ulink> in Apache.
+ Alternatively, you could set up a webdot server, or use the AT&T
+ public webdot server (the
+ default for the webdotbase param). Note that AT&T's server won't work
+ if Bugzilla is only accessible using HTTPS.
+ </para>
</section>
<section>
"mail", but you may need to change this.
</para>
</section>
+
+ <section id="content-type"
+ xreflabel="Preventing untrusted Bugzilla content from executing malicious Javascript code">
+
+ <title>Preventing untrusted Bugzilla content from executing malicious
+ Javascript code</title>
+
+ <para>It is possible for a Bugzilla to execute malicious Javascript
+ code. Due to internationalization concerns, we are unable to
+ incorporate the code changes necessary to fulfill the CERT advisory
+ requirements mentioned in
+ <ulink
+ url="http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3">
+ http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3</ulink>.
+ Executing the following code snippet from a UNIX command shell will
+ rectify the problem if your Bugzilla installation is intended for an
+ English-speaking audience. As always, be sure your Bugzilla
+ installation has a good backup before making changes, and I recommend
+ you understand what the script is doing before executing it.</para>
+
+ <para>
+ <programlisting>bash# perl -pi -e "s/Content-Type\: text\/html/Content-Type\: text\/html\; charset=ISO-8859-1/i" *.cgi *.pl
+ </programlisting>
+ </para>
+
+ <para>All this one-liner command does is search for all instances of
+ <quote>Content-type: text/html</quote>
+
+ and replaces it with
+ <quote>Content-Type: text/html; charset=ISO-8859-1</quote>
+
+ . This specification prevents possible Javascript attacks on the
+ browser, and is suggested for all English-speaking sites. For
+ non-English-speaking Bugzilla sites, I suggest changing
+ <quote>ISO-8859-1</quote>, above, to
+ <quote>UTF-8</quote>.</para>
+ </section>
+
+ <section id="htaccess" xreflabel=".htaccess files and security">
+ <title>
+ <filename>.htaccess</filename>
+ files and security</title>
+
+ <para>To enhance the security of your Bugzilla installation, Bugzilla's
+ <filename>checksetup.pl</filename> script will generate
+ <glossterm>
+ <filename>.htaccess</filename>
+ </glossterm>
+
+ files which the Apache webserver can use to restrict access to the
+ bugzilla data files.
+ These .htaccess files will not work with Apache 1.2.x - but this
+ has security holes, so you shouldn't be using it anyway.
+ <note>
+ <para>If you are using an alternate provider of
+ <productname>webdot</productname>
+
+ services for graphing (as described when viewing
+ <filename>editparams.cgi</filename>
+
+ in your web browser), you will need to change the ip address in
+ <filename>data/webdot/.htaccess</filename>
+
+ to the ip address of the webdot server that you are using.</para>
+ </note>
+ </para>
+
+ <para>The default .htaccess file may not provide adequate access
+ restrictions, depending on your web server configuration. Be sure to
+ check the <Directory> entries for your Bugzilla directory so that
+ the
+ <filename>.htaccess</filename>
+
+ file is allowed to override web server defaults. For instance, let's
+ assume your installation of Bugzilla is installed to
+ <filename>/usr/local/bugzilla</filename>
+
+ . You should have this <Directory> entry in your
+ <filename>httpd.conf</filename>
+
+ file:</para>
+
+ <para>
+
+<programlisting><![CDATA[
+ <Directory /usr/local/bugzilla/>
+ Options +FollowSymLinks +Indexes +Includes +ExecCGI
+ AllowOverride All
+</Directory>
+]]></programlisting>
+
+ </para>
+
+ <para>The important part above is
+ <quote>AllowOverride All</quote>
+
+ . Without that, the
+ <filename>.htaccess</filename>
+
+ file created by
+ <filename>checksetup.pl</filename>
+
+ will not have sufficient permissions to protect your Bugzilla
+ installation.</para>
+
+ <para>If you are using Internet Information Server (IIS) or another
+ web server which does not observe
+ <filename>.htaccess</filename>
+ conventions, you can disable their creation by editing
+ <filename>localconfig</filename>
+ and setting the
+ <varname>$create_htaccess</varname>
+ variable to
+ <parameter>0</parameter>.
+ </para>
+ </section>
+
+ <section id="mod-throttle"
+ xreflabel="Using mod_throttle to prevent Denial of Service attacks">
+ <title>
+ <filename>mod_throttle</filename>
+
+ and Security</title>
+
+ <para>It is possible for a user, by mistake or on purpose, to access
+ the database many times in a row which can result in very slow access
+ speeds for other users. If your Bugzilla installation is experiencing
+ this problem , you may install the Apache module
+ <filename>mod_throttle</filename>
+
+ which can limit connections by ip-address. You may download this module
+ at
+ <ulink url="http://www.snert.com/Software/Throttle/">
+ http://www.snert.com/Software/Throttle/</ulink>.
+ Follow the instructions to install into your Apache install.
+ <emphasis>This module only functions with the Apache web
+ server!</emphasis>
+ You may use the
+ <command>ThrottleClientIP</command>
+
+ command provided by this module to accomplish this goal. See the
+ <ulink url="http://www.snert.com/Software/Throttle/">Module
+ Instructions</ulink>
+ for more information.</para>
+ </section>
</section>
<section id="win32" xreflabel="Win32 Installation Notes">
most of the software that it installs. This means your libraries and
headers for libgd will be at /sw/lib and /sw/include instead of /usr/lib
and /usr/local/include. Because of these changed locations for the
- libraries, the Perl GD module will not install directly via CPAN (it
+ libraries, the Perl GD module will not install directly via CPAN, because it
looks for the specific paths instead of getting them from your
- environment). But there's a way around that :-)</para>
+ environment. But there's a way around that :-)</para>
<para>Instead of typing
<quote>install GD</quote>
directory. Apply <ulink url="../sgml/gd-makefile.patch">this patch</ulink>
to the Makefile.PL file (save the
patch into a file and use the command
- <command>patch < patchfile</command>.
+ <command>patch < patchfile</command>.)
</para>
<para>Then, run these commands to finish the installation of the GD
<member>And don't forget to run
<command>exit</command>
- to get back to cpan.</member>
+ to get back to CPAN.</member>
</simplelist>
</para>
</section>
- <section id="geninstall" xreflabel="General Installation Notes">
- <title>General Installation Notes</title>
-
- <section>
- <title>Modifying Your Running System</title>
-
- <para>Bugzilla optimizes database lookups by storing all relatively
- static information in the versioncache file, located in the data/
- subdirectory under your installation directory.</para>
-
- <para>If you make a change to the structural data in your database (the
- versions table for example), or to the
- <quote>constants</quote>
-
- encoded in defparams.pl, you will need to remove the cached content
- from the data directory (by doing a
- <quote>rm data/versioncache</quote>
-
- ), or your changes won't show up.</para>
-
- <para>That file gets automatically regenerated whenever it's more than
- an hour old, so Bugzilla will eventually notice your changes by itself,
- but generally you want it to notice right away, so that you can test
- things.</para>
- </section>
-
- <section>
- <title>Upgrading From Previous Versions</title>
-
- <para>A plain Bugzilla is fairly easy to upgrade from one version to a
- newer one. However, things get a bit more complicated if you've made
- changes to Bugzilla's code. In this case, you may have to re-make or
- reapply those changes. It is recommended that you take a backup of your
- database and your entire Bugzilla installation before attempting an
- upgrade. You can upgrade a 'clean' installation by untarring a new
- tarball over the old installation. If you are upgrading from 2.12 or
- later, you can type
- <filename>cvs -z3 update</filename>
-
- , and resolve conflicts if there are any.</para>
-
- <para>Because the developers of Bugzilla are constantly adding new
- tables, columns and fields, you'll probably get SQL errors if you just
- update the code and attempt to use Bugzilla. Always run the
- checksetup.pl script whenever you upgrade your installation.</para>
-
- <para>If you are running Bugzilla version 2.8 or lower, and wish to
- upgrade to the latest version, please consult the file,
- "UPGRADING-pre-2.8" in the Bugzilla root directory after untarring the
- archive.</para>
- </section>
-
- <section id="htaccess" xreflabel=".htaccess files and security">
- <title>
- <filename>.htaccess</filename>
-
- files and security</title>
-
- <para>To enhance the security of your Bugzilla installation, Bugzilla
- will generate
- <glossterm>
- <filename>.htaccess</filename>
- </glossterm>
-
- files which the Apache webserver can use to restrict access to the
- bugzilla data files. The checksetup script will generate the
- <filename>.htaccess</filename>
-
- files. These .htaccess files will not work with Apache 1.2.x - but this
- has security holes, so you shouldn't be using it anyway.
- <note>
- <para>If you are using an alternate provider of
- <productname>webdot</productname>
-
- services for graphing (as described when viewing
- <filename>editparams.cgi</filename>
-
- in your web browser), you will need to change the ip address in
- <filename>data/webdot/.htaccess</filename>
-
- to the ip address of the webdot server that you are using.</para>
- </note>
- </para>
-
- <para>The default .htaccess file may not provide adequate access
- restrictions, depending on your web server configuration. Be sure to
- check the <Directory> entries for your Bugzilla directory so that
- the
- <filename>.htaccess</filename>
-
- file is allowed to override web server defaults. For instance, let's
- assume your installation of Bugzilla is installed to
- <filename>/usr/local/bugzilla</filename>
-
- . You should have this <Directory> entry in your
- <filename>httpd.conf</filename>
-
- file:</para>
-
- <para>
- <programlisting>
-<![CDATA[
-<Directory /usr/local/bugzilla/>
- Options +FollowSymLinks +Indexes +Includes +ExecCGI
- AllowOverride All
-</Directory>
-]]>
- </programlisting>
- </para>
-
- <para>The important part above is
- <quote>AllowOverride All</quote>
-
- . Without that, the
- <filename>.htaccess</filename>
-
- file created by
- <filename>checksetup.pl</filename>
-
- will not have sufficient permissions to protect your Bugzilla
- installation.</para>
-
- <para>If you are using Internet Information Server or other web server
- which does not observe
- <filename>.htaccess</filename>
-
- conventions, you can disable their creation by editing
- <filename>localconfig</filename>
-
- and setting the
- <varname>$create_htaccess</varname>
-
- variable to
- <parameter>0</parameter>
-
- .</para>
- </section>
-
- <section id="mod-throttle"
- xreflabel="Using mod_throttle to prevent Denial of Service attacks">
- <title>
- <filename>mod_throttle</filename>
-
- and Security</title>
-
- <para>It is possible for a user, by mistake or on purpose, to access
- the database many times in a row which can result in very slow access
- speeds for other users. If your Bugzilla installation is experiencing
- this problem , you may install the Apache module
- <filename>mod_throttle</filename>
-
- which can limit connections by ip-address. You may download this module
- at
- <ulink url="http://www.snert.com/Software/Throttle/">
- http://www.snert.com/Software/Throttle/</ulink>
-
- . Follow the instructions to install into your Apache install.
- <emphasis>This module only functions with the Apache web
- server!</emphasis>
-
- . You may use the
- <command>ThrottleClientIP</command>
-
- command provided by this module to accomplish this goal. See the
- <ulink url="http://www.snert.com/Software/Throttle/">Module
- Instructions</ulink>
-
- for more information.</para>
- </section>
-
- <section id="content-type"
- xreflabel="Preventing untrusted Bugzilla contentfrom executing malicious Javascript code">
-
- <title>Preventing untrusted Bugzilla content from executing malicious
- Javascript code</title>
-
- <para>It is possible for a Bugzilla to execute malicious Javascript
- code. Due to internationalization concerns, we are unable to
- incorporate the code changes necessary to fulfill the CERT advisory
- requirements mentioned in
- <ulink
- url="http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3">
- http://www.cet.org/tech_tips/malicious_code_mitigation.html/#3</ulink>.
- Executing the following code snippet from a UNIX command shell will
- rectify the problem if your Bugzilla installation is intended for an
- English-speaking audience. As always, be sure your Bugzilla
- installation has a good backup before making changes, and I recommend
- you understand what the script is doing before executing it.</para>
-
- <para>
- <programlisting>bash# cd <your_bugzilla_dir>;
- for i in `ls *.cgi`; \ do
- cat $i | sed 's/Content-type\: text\/html/Content-Type: text\/html\;
- charset=ISO-8859-1/' >$i.tmp; \ mv $i.tmp $i;
- done</programlisting>
- </para>
-
- <para>All this one-liner command does is search for all instances of
- <quote>Content-type: text/html</quote>
-
- and replaces it with
- <quote>Content-Type: text/html; charset=ISO-8859-1</quote>
-
- . This specification prevents possible Javascript attacks on the
- browser, and is suggested for all English-speaking sites. For
- non-English-speaking Bugzilla sites, I suggest changing
- <quote>ISO-8859-1</quote>, above, to
- <quote>UTF-8</quote>.</para>
- </section>
- </section>
-
<section id="troubleshooting">
<title>Troubleshooting</title>
(over which the Bugzilla team have no control):
</para>
-<programlisting><![CDATA[ "DBD::Sponge::db prepare failed: Cannot determine NUM_OF_FIELDS at D:/Perl/site/lib/DBD/mysql.pm line 248.
+<programlisting><![CDATA[ DBD::Sponge::db prepare failed: Cannot determine NUM_OF_FIELDS at D:/Perl/site/lib/DBD/mysql.pm line 248.
SV = NULL(0x0) at 0x20fc444
REFCNT = 1
- FLAGS = (PADBUSY,PADMY)"
+ FLAGS = (PADBUSY,PADMY)
]]></programlisting>
<para>
- To fix this, go to <path-to-perl>/lib/DBD/sponge.pm in your Perl
- installation and replace
+ To fix this, go to
+ <filename><path-to-perl>/lib/DBD/sponge.pm</filename>
+ in your Perl installation and replace
</para>
<programlisting><![CDATA[ my $numFields;
. Using Bonsai, administrators can control open/closed status of trees,
query a fast relational database back-end for change, branch, and comment
information, and view changes made since the last time the tree was
- closed. These kinds of changes cause the engineer responsible to be
- <quote>on the hook</quote>
-
- (include cool URL link here for Hook policies at mozilla.org). Bonsai
- also includes gateways to
- <xref linkend="tinderbox" />
-
- and Bugzilla</para>
+ closed. Bonsai
+ also integrates with
+ <xref linkend="tinderbox" />.
+ </para>
</section>
<section id="cvs" xreflabel="CVS, the Concurrent Versioning System">
<title>CVS</title>
<para>CVS integration is best accomplished, at this point, using the
- Bugzilla Email Gateway. There have been some files submitted to allow
- greater CVS integration, but we need to make certain that Bugzilla is not
- tied into one particular software management package.</para>
+ Bugzilla Email Gateway.</para>
- <para>Follow the instructions in the FAQ for enabling Bugzilla e-mail
+ <para>Follow the instructions in this Guide for enabling Bugzilla e-mail
integration. Ensure that your check-in script sends an email to your
Bugzilla e-mail gateway with the subject of
- <quote>[Bug XXXX]</quote>
-
- , and you can have CVS check-in comments append to your Bugzilla bug. If
+ <quote>[Bug XXXX]</quote>,
+ and you can have CVS check-in comments append to your Bugzilla bug. If
you have your check-in script include an @resolution field, you can even
change the Bugzilla bug state.</para>
- <para>There is also a project, based upon somewhat dated Bugzilla code,
- to integrate CVS and Bugzilla through CVS' ability to email. Check it out
- at:
+ <para>There is also a CVSZilla project, based upon somewhat dated
+ Bugzilla code, to integrate CVS and Bugzilla through CVS' ability to
+ email. Check it out at:
<ulink url="http://homepages.kcbbs.gen.nz/~tonyg/">
- http://homepages.kcbbs.gen.nz/~tonyg/</ulink>
-
- , under the
- <quote>cvszilla</quote>
-
- link.</para>
+ http://homepages.kcbbs.gen.nz/~tonyg/</ulink>.
+ </para>
</section>
<section id="scm"
<section id="cmdline">
<title>Command-line Bugzilla Queries</title>
- <para>There are a suite of utilities for querying Bugzilla from the
- command line. Although there's no particular reason why they
- shouldn't work, they have not been tested with 2.16.</para>
-
- <procedure>
- <step>
- <para>Download three files:</para>
-
- <substeps>
- <step>
- <para>
- <computeroutput>
- <prompt>bash$</prompt>
-
- <command>wget -O query.conf
- 'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26157'</command>
- </computeroutput>
- </para>
- </step>
-
- <step>
- <para>
- <computeroutput>
- <prompt>bash$</prompt>
-
- <command>wget -O buglist
- 'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26944'</command>
- </computeroutput>
- </para>
- </step>
-
- <step>
- <para>
- <computeroutput>
- <prompt>bash#</prompt>
-
- <command>wget -O bugs
- 'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26215'</command>
- </computeroutput>
- </para>
- </step>
- </substeps>
- </step>
-
- <step>
- <para>Make your utilities executable:
- <computeroutput>
- <prompt>bash$</prompt>
-
- <command>chmod u+x buglist bugs</command>
- </computeroutput>
- </para>
- </step>
- </procedure>
+ <para>There are a suite of Unix utilities for querying Bugzilla from the
+ command line. They live in the
+ <filename class="directory">contrib/cmdline</filename>
+ directory. However, they
+ have not yet been updated to work with 2.16 (post-templatisation.).
+ There are three files - <filename>query.conf</filename>,
+ <filename>buglist</filename> and <filename>bugs</filename>.</para>
- <para>The query.conf file contains the mapping from options to field
+ <para><filename>query.conf</filename>
+ contains the mapping from options to field
names and comparison types. Quoted option names are "grepped" 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 "option".</para>
- <para>buglist is a shell script which submits a Bugzilla query and writes
+ <para><filename>buglist</filename>
+ is a shell script which submits a Bugzilla query and writes
the resulting HTML page to stdout. It supports both short options, (such
as "-Afoo" or "-Rbar") and long options (such as "--assignedto=foo" or
"--reporter=bar"). If the first character of an option is not "-", it is
treated as if it were prefixed with "--default=".</para>
- <para>The columlist is taken from the COLUMNLIST environment variable.
+ <para>The column list is taken from the COLUMNLIST environment variable.
This is equivalent to the "Change Columns" option when you list bugs in
- buglist.cgi. If you have already used Bugzilla, use
- <command>grep COLUMLIST ~/.netscape/cookies</command>
-
- to see your current COLUMNLIST setting.</para>
+ buglist.cgi. If you have already used Bugzilla, grep for COLUMNLIST
+ in your cookies file to see your current COLUMNLIST setting.</para>
- <para>bugs is a simple shell script which calls buglist and extracts the
+ <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
"http://bugzilla.mozilla.org/buglist.cgi?bug_id=" turns the bug list into
a working link if any bugs are found. Counting bugs is easy. Pipe the
<command>sed -e 's/,/ /g' | wc | awk '{printf $2 "\n"}'</command>
</para>
- <para>Akkana says she has good results piping buglist output through
+ <para>Akkana Peck says she has good results piping
+ <filename>buglist</filename> output through
<command>w3m -T text/html -dump</command>
</para>
<para>This section contains information for end-users of Bugzilla.
There is a Bugzilla test installation, called
<ulink url="http://landfill.tequilarista.org/">Landfill</ulink>,
- which you are welcome to play with. However, it does not necessarily
+ which you are welcome to play with (if it's up.)
+ However, it does not necessarily
have all Bugzilla features enabled, and often runs cutting-edge versions
of Bugzilla for testing, so some things may work slightly differently
than mentioned here.</para>
</listitem>
</orderedlist>
- <para>You are now logged in. Bugzilla uses cookies for authentication,
- so (unless your IP address changes) you should not have to log in
+ <para>You are now logged in. Bugzilla uses cookies for authentication
+ so, unless your IP address changes, you should not have to log in
again.</para>
</section>
is a good example. Note that the labels for most fields are hyperlinks;
clicking them will take you to context-sensitive help on that
- particular field.</para>
+ particular field. Fields marked * may not be present on every
+ installation of Bugzilla.</para>
<orderedlist>
<listitem>
<para>
- <emphasis>Product and Component</emphasis>
-
- : Bugs are divided up by Product and Component, with a Product
+ <emphasis>Product and Component</emphasis>:
+ Bugs are divided up by Product and Component, with a Product
having one or more Components in it. For example,
bugzilla.mozilla.org's "Bugzilla" Product is composed of several
Components:
<listitem>
<para>
- <emphasis>URL:</emphasis>
+ <emphasis>*URL:</emphasis>
A URL associated with the bug, if any.</para>
</listitem>
<listitem>
<para>
- <emphasis>Status Whiteboard:</emphasis>
+ <emphasis>*Status Whiteboard:</emphasis>
(a.k.a. Whiteboard) A free-form text area for adding short notes
and tags to a bug.</para>
</listitem>
<listitem>
<para>
- <emphasis>Keywords:</emphasis>
+ <emphasis>*Keywords:</emphasis>
The administrator can define keywords which you can use to tag and
categorise bugs - e.g. The Mozilla Project has keywords like crash
and regression.</para>
<listitem>
<para>
- <emphasis>Target:</emphasis>
+ <emphasis>*Target:</emphasis>
(a.k.a. Target Milestone) A future version by which the bug is to
be fixed. e.g. The Bugzilla Project's milestones for future
Bugzilla versions are 2.18, 2.20, 3.0, etc. Milestones are not
<listitem>
<para>
- <emphasis>Dependencies:</emphasis>
+ <emphasis>*Dependencies:</emphasis>
If this bug cannot be fixed unless other bugs are fixed (depends
on), or this bug stops other bugs being fixed (blocks), their
numbers are recorded here.</para>
<listitem>
<para>
- <emphasis>Votes:</emphasis>
+ <emphasis>*Votes:</emphasis>
Whether this bug has any votes.</para>
</listitem>
reading pleasure into the
<ulink
url="http://landfill.tequilarista.org/bugzilla-tip/bugwritinghelp.html">
- Bug Writing Guidelines</ulink>
-
- . While some of the advice is Mozilla-specific, the basic principles of
+ Bug Writing Guidelines</ulink>.
+ While some of the advice is Mozilla-specific, the basic principles of
reporting Reproducible, Specific bugs, isolating the Product you are
using, the Version of the Product, the Component which failed, the
Hardware Platform, and Operating System you were using at the time of
<para>Quicksearch is a single-text-box query tool which uses
metacharacters to indicate what is to be searched. For example, typing
- "foo|bar" into Quicksearch would search for "foo" or "bar" in the
- summary and status whiteboard of a bug; adding ":BazProduct" would
+ "<filename>foo|bar</filename>"
+ into Quicksearch would search for "foo" or "bar" in the
+ summary and status whiteboard of a bug; adding
+ "<filename>:BazProduct</filename>" would
search only in that product.
</para>
<para>If you are changing the fields on a bug, only comment if
either you have something pertinent to say, or Bugzilla requires it.
Otherwise, you may spam people unnecessarily with bug mail.
- To take an example: a user sets up their account to filter out messages
+ To take an example: a user can set up their account to filter out messages
where someone just adds themselves to the CC field of a bug
(which happens a lot.) If you come along, add yourself to the CC field,
and add a comment saying "Adding self to CC", then that person
you are pointing out a single-pixel problem.
</para>
- <para>Don't attach simple test cases (e.g. one html file and one
- css file and one image) as a ZIP file. Instead, upload them in
+ <para>Don't attach simple test cases (e.g. one HTML file, one
+ CSS file and an image) as a ZIP file. Instead, upload them in
reverse order and edit the referring file so that they point to the
attached files. This way, the test case works immediately
out of the bug.
"Users to watch" text entry box you can receive a copy of all the
bugmail of other users (security settings permitting.) This powerful
functionality enables seamless transitions as developers change
- projects, managers wish to get in touch with the issues faced by their
- direct reports, or users go on vacation.</para>
+ projects or users go on holiday.</para>
<note>
<para>The ability to watch other users may not be available in all
such through the <quote>jobs</quote>
functionality.</para>
- <para>
+ <para>URL:
<ulink url="http://www.perforce.com/perforce/technotes/note052.html">
+ http://www.perforce.com/perforce/technotes/note052.html
</ulink>
-
- http://www.perforce.com/perforce/technotes/note052.html</para>
+ </para>
</section>
<section id="variant-sourceforge" xreflabel="SourceForge">