I added related information to the Bugzilla Guide, and tacked in a couple of last-minute additions. Also fixed the annoying "Tip: HINT:" thing. git-svn-id: svn://10.0.0.236/trunk@93103 18797224-902f-48f8-a5cc-f745e15eee43
5432 lines
242 KiB
Plaintext
5432 lines
242 KiB
Plaintext
|
|
The Bugzilla Guide
|
|
|
|
Matthew P. Barnson
|
|
|
|
barnboy@trilobyte.net
|
|
Revision History
|
|
Revision v2.11 20 December 2000 Revised by: MPB
|
|
Converted the README, FAQ, and DATABASE information into SGML docbook
|
|
format.
|
|
Revision 2.11.1 06 March 2001 Revised by: MPB
|
|
Took way too long to revise this for 2.12 release. Updated FAQ to use
|
|
qandaset tags instead of literallayout, cleaned up administration
|
|
section, added User Guide section, miscellaneous FAQ updates and
|
|
third-party integration information. From this point on all new tags
|
|
are lowercase in preparation for the 2.13 release of the Guide in XML
|
|
format instead of SGML.
|
|
Revision 2.12.0 24 April 2001 Revised by: MPB
|
|
Things fixed this release: Elaborated on queryhelp interface, added
|
|
FAQ regarding moving bugs from one keyword to another, clarified
|
|
possible problems with the Landfill tutorial, fixed a boatload of
|
|
typos and unclear sentence structures. Incorporated the README into
|
|
the UNIX installation section, and changed the README to indicate the
|
|
deprecated status. Things I know need work: Used "simplelist" a lot,
|
|
where I should have used "procedure" to tag things. Need to lowercase
|
|
all tags to be XML compliant.
|
|
|
|
This is the documentation for Bugzilla, the Mozilla bug-tracking
|
|
system.
|
|
_________________________________________________________________
|
|
|
|
Table of Contents
|
|
1. About This Guide
|
|
|
|
1.1. Purpose and Scope of this Guide
|
|
1.2. Copyright Information
|
|
1.3. Disclaimer
|
|
1.4. New Versions
|
|
1.5. Credits
|
|
1.6. Contributors
|
|
1.7. Feedback
|
|
1.8. Translations
|
|
1.9. Document Conventions
|
|
|
|
2. Installing Bugzilla
|
|
|
|
2.1. UNIX Installation
|
|
|
|
2.1.1. ERRATA
|
|
2.1.2. Step-by-step Install
|
|
|
|
2.1.2.1. Introduction
|
|
2.1.2.2. Installing the Prerequisites
|
|
2.1.2.3. Installing MySQL Database
|
|
2.1.2.4. Perl (5.004 or greater)
|
|
2.1.2.5. DBI Perl Module
|
|
2.1.2.6. Data::Dumper Perl Module
|
|
2.1.2.7. MySQL related Perl Module Collection
|
|
2.1.2.8. TimeDate Perl Module Collection
|
|
2.1.2.9. GD Perl Module (1.8.3)
|
|
2.1.2.10. Chart::Base Perl Module (0.99c)
|
|
2.1.2.11. DB_File Perl Module
|
|
2.1.2.12. HTTP Server
|
|
2.1.2.13. Installing the Bugzilla Files
|
|
2.1.2.14. Setting Up the MySQL Database
|
|
2.1.2.15. Tweaking "localconfig"
|
|
2.1.2.16. Setting Up Maintainers Manually (Optional)
|
|
2.1.2.17. The Whining Cron (Optional)
|
|
2.1.2.18. Bug Graphs (Optional)
|
|
2.1.2.19. Securing MySQL
|
|
2.1.2.20. Installation General Notes
|
|
|
|
2.2. Win32 (Win98+/NT/2K) Installation
|
|
|
|
2.2.1. Win32 Installation: Step-by-step
|
|
2.2.2. Additional Windows Tips
|
|
|
|
3. Administering Bugzilla
|
|
|
|
3.1. Post-Installation Checklist
|
|
3.2. User Administration
|
|
|
|
3.2.1. Creating the Default User
|
|
3.2.2. Managing Other Users
|
|
|
|
3.2.2.1. Logging In
|
|
3.2.2.2. Creating new users
|
|
3.2.2.3. Disabling Users
|
|
3.2.2.4. Modifying Users
|
|
|
|
3.3. Product, Component, Milestone, and Version Administration
|
|
|
|
3.3.1. Products
|
|
3.3.2. Components
|
|
3.3.3. Versions
|
|
3.3.4. Milestones
|
|
3.3.5. Voting
|
|
3.3.6. Groups and Group Security
|
|
|
|
3.4. Bugzilla Security
|
|
|
|
4. Using Bugzilla
|
|
|
|
4.1. What is Bugzilla?
|
|
4.2. Why Should We Use Bugzilla?
|
|
4.3. How do I use Bugzilla?
|
|
|
|
4.3.1. Create a Bugzilla Account
|
|
4.3.2. The Bugzilla Query Page
|
|
4.3.3. Creating and Managing Bug Reports
|
|
|
|
4.3.3.1. Writing a Great Bug Report
|
|
4.3.3.2. Managing your Bug Reports
|
|
|
|
4.4. What's in it for me?
|
|
|
|
4.4.1. Account Settings
|
|
4.4.2. Email Settings
|
|
|
|
4.4.2.1. Email Notification
|
|
4.4.2.2. New Email Technology
|
|
4.4.2.3. "Watching" Users
|
|
|
|
4.4.3. Page Footer
|
|
4.4.4. Permissions
|
|
|
|
4.5. Using Bugzilla-Conclusion
|
|
|
|
5. Integrating Bugzilla with Third-Party Tools
|
|
|
|
5.1. Bonsai
|
|
5.2. CVS
|
|
5.3. Perforce SCM
|
|
5.4. Tinderbox
|
|
|
|
6. The Future of Bugzilla
|
|
|
|
6.1. Reducing Spam
|
|
6.2. Better Searching
|
|
6.3. Description Flags and Tracking Bugs
|
|
6.4. Bug Issues
|
|
6.5. Database Integrity
|
|
6.6. Bugzilla 3.0
|
|
|
|
A. The Bugzilla FAQ
|
|
B. Software Download Links
|
|
C. The Bugzilla Database
|
|
|
|
C.1. Database Schema Chart
|
|
C.2. MySQL Bugzilla Database Introduction
|
|
C.3. MySQL Permissions & Grant Tables
|
|
C.4. Cleaning up after mucking with Bugzilla
|
|
|
|
7. Bugzilla Variants
|
|
|
|
7.1. Red Hat Bugzilla
|
|
|
|
D. Useful Patches and Utilities for Bugzilla
|
|
|
|
D.1. The setperl.csh Utility
|
|
D.2. Command-line Bugzilla Queries
|
|
D.3. The Quicksearch Utility
|
|
|
|
E. GNU Free Documentation License
|
|
|
|
0. PREAMBLE
|
|
1. APPLICABILITY AND DEFINITIONS
|
|
2. VERBATIM COPYING
|
|
3. COPYING IN QUANTITY
|
|
4. MODIFICATIONS
|
|
5. COMBINING DOCUMENTS
|
|
6. COLLECTIONS OF DOCUMENTS
|
|
7. AGGREGATION WITH INDEPENDENT WORKS
|
|
8. TRANSLATION
|
|
9. TERMINATION
|
|
10. FUTURE REVISIONS OF THIS LICENSE
|
|
How to use this License for your documents
|
|
|
|
Glossary
|
|
|
|
List of Examples
|
|
2-1. Setting up bonsaitools symlink
|
|
2-2. Running checksetup.pl as the web user
|
|
2-3. Removing encrypt() for Windows NT installations
|
|
3-1. Creating some Components
|
|
3-2. Common Use of Versions
|
|
3-3. A Different Use of Versions
|
|
3-4. Using SortKey with Target Milestone
|
|
3-5. When to Use Group Security
|
|
3-6. Creating a New Group
|
|
4-1. Some Famous Software Versions
|
|
4-2. Mozilla Webtools Components
|
|
D-1. Using Setperl to set your perl path
|
|
1. A Sample Product
|
|
|
|
] >
|
|
_________________________________________________________________
|
|
|
|
Chapter 1. About This Guide
|
|
|
|
1.1. Purpose and Scope of this Guide
|
|
|
|
This document was started on September 17, 2000 by Matthew P. Barnson
|
|
after a great deal of procrastination updating the Bugzilla FAQ, which
|
|
I left untouched for nearly half a year. After numerous complete
|
|
rewrites and reformatting, it is the document you see today.
|
|
|
|
Despite the lack of updates, Bugzilla is simply the best piece of
|
|
bug-tracking software the world has ever seen. This document is
|
|
intended to be the comprehensive guide to the installation,
|
|
administration, maintenance, and use of the Bugzilla bug-tracking
|
|
system.
|
|
|
|
This release of the Bugzilla Guide is the 2.11 release. It is so named
|
|
that it may match the current version of Bugzilla. The numbering
|
|
tradition stems from that used for many free software projects, in
|
|
which even-numbered point releases (1.2, 1.14, etc.) are considered
|
|
"stable releases", intended for public consumption; on the other hand,
|
|
odd-numbered point releases (1.3, 2.09, etc.) are considered unstable
|
|
development releases intended for advanced users, systems
|
|
administrators, developers, and those who enjoy a lot of pain.
|
|
|
|
Newer revisions of the Bugzilla Guide will follow the numbering
|
|
conventions of the main-tree Bugzilla releases, available at
|
|
Mozilla.org, with the exception that intermediate releases will have a
|
|
minor revision number following a period. For instance, if the current
|
|
version of Bugzilla is 4.2, the current "stable" version of the
|
|
Bugzilla guide, in, say, it's fifth revision, would be numbered
|
|
"4.2.5". Got it? Good.
|
|
|
|
I wrote this in response to the enormous demand for decent Bugzilla
|
|
documentation. I have incorporated instructions from the Bugzilla
|
|
README, Frequently Asked Questions, Database Schema Document, and
|
|
various mailing lists to create it. Chances are, there are glaring
|
|
errors in this documentation; please contact <barnboy@trilobyte.net>
|
|
to correct them.
|
|
_________________________________________________________________
|
|
|
|
1.2. Copyright Information
|
|
|
|
|
|
|
|
Permission is granted to copy, distribute and/or modify this document
|
|
under thei terms of the GNU Free Documentation License, Version 1.1 or
|
|
any later version published by the Free Software Foundation; with no
|
|
Invariant Sections, no Front-Cover Texts, and with no Back-Cover
|
|
Texts. A copy of the license is included in the section entitled "GNU
|
|
Free Documentation LIcense".
|
|
|
|
--Copyright (c) 2000-2001 Matthew P. Barnson
|
|
|
|
If you have any questions regarding this document, its' copyright, or
|
|
publishing this document in non-electronic form, please contact
|
|
<barnboy@trilobyte.net>
|
|
_________________________________________________________________
|
|
|
|
1.3. Disclaimer
|
|
|
|
No liability for the contents of this document can be accepted. Use
|
|
the concepts, examples, and other content at your own risk. As this is
|
|
a new edition of this document, there may be errors and inaccuracies
|
|
that may damage your system. Use of this document may cause your
|
|
girlfriend to leave you, your cats to pee on your furniture and
|
|
clothing, your computer to cease functioning, your boss to fire you,
|
|
and global thermonuclear war. Proceed with caution.
|
|
|
|
All copyrights are held by their respective owners, unless
|
|
specifically noted otherwise. Use of a term in this document should
|
|
not be regarded as affecting the validity of any trademark or service
|
|
mark. In particular, I like to put down Microsoft(tm). Live with it.
|
|
|
|
Naming of particular products or brands should not be seen as
|
|
endorsements, with the exception of the term "GNU/Linux". Use
|
|
GNU/Linux. Love it. Bathe with it. It is life and happiness. I endorse
|
|
it wholeheartedly and encourage you to do the same.
|
|
|
|
You are strongly recommended to make a backup of your system before
|
|
installing Bugzilla and at regular intervals thereafter. Heaven knows
|
|
it's saved my bacon time after time; if you implement any suggestion
|
|
in this Guide, implement this one!
|
|
|
|
Bugzilla has not undergone a complete security review. Security holes
|
|
probably exist in the code. Great care should be taken both in the
|
|
installation and usage of this software. Carefully consider the
|
|
implications of installing other network services with Bugzilla.
|
|
_________________________________________________________________
|
|
|
|
1.4. New Versions
|
|
|
|
This is the initial release of the Bugzilla Guide.
|
|
|
|
This document can be found in the following places:
|
|
|
|
* TriloBYTE
|
|
* Mozilla.org
|
|
* The Linux Documentation Project
|
|
|
|
The latest version of this document can be checked out via CVS. Please
|
|
follow the instructions available at the Mozilla CVS page, and check
|
|
out the mozilla/webtools/bugzilla/docs/ branch.
|
|
_________________________________________________________________
|
|
|
|
1.5. Credits
|
|
|
|
The people listed below have made enormous contributions to the
|
|
creation of this Guide, through their dedicated hacking efforts,
|
|
numerous e-mail and IRC support sessions, and overall excellent
|
|
contribution to the Bugzilla community:
|
|
|
|
Terry Weissman for initially converting Bugzilla from BugSplat! and
|
|
writing the README upon which this documentation is largely based.
|
|
|
|
Tara Hernandez for keeping Bugzilla development going strong after
|
|
Terry left Mozilla.org
|
|
|
|
Dave Lawrence for providing insight into the key differences between
|
|
Red Hat's customized Bugzilla, and being largely responsible for the
|
|
"Red Hat Bugzilla" appendix
|
|
|
|
Dawn Endico for being a hacker extraordinaire and putting up with my
|
|
incessant questions and arguments on irc.mozilla.org in #mozwebtools
|
|
|
|
Last but not least, all the members of the
|
|
netscape.public.mozilla.webtools newsgroup. Without your discussions,
|
|
insight, suggestions, and patches, this could never have happened.
|
|
_________________________________________________________________
|
|
|
|
1.6. Contributors
|
|
|
|
Thanks go to these people for significant contributions to this
|
|
documentation (in no particular order):
|
|
|
|
Zach Lipton (significant textual contributions), Andrew Pearson,
|
|
Spencer Smith, Eric Hanson, Kevin Brannen,
|
|
_________________________________________________________________
|
|
|
|
1.7. Feedback
|
|
|
|
I welcome feedback on this document. Without your submissions and
|
|
input, this Guide cannot continue to exist. Please mail additions,
|
|
comments, criticisms, etc. to <barnboy@trilobyte.net>. Please send
|
|
flames to <devnull@localhost>
|
|
_________________________________________________________________
|
|
|
|
1.8. Translations
|
|
|
|
The Bugzilla Guide needs translators! Please volunteer your
|
|
translation into the language of your choice. If you will translate
|
|
this Guide, please notify the members of the mozilla-webtools mailing
|
|
list at <mozilla-webtools@mozilla.org>. Since The Bugzilla Guide is
|
|
also hosted on the Linux Documentation Project, you would also do well
|
|
to notify
|
|
_________________________________________________________________
|
|
|
|
1.9. Document Conventions
|
|
|
|
This document uses the following conventions
|
|
|
|
Descriptions Appearance
|
|
Warnings
|
|
|
|
Caution
|
|
|
|
Warnings.
|
|
Hint
|
|
|
|
Tip: Hint.
|
|
|
|
Notes
|
|
|
|
Note: Note.
|
|
|
|
Information requiring special attention
|
|
|
|
Warning
|
|
|
|
Warning.
|
|
File Names file.extension
|
|
Directory Names directory
|
|
Commands to be typed command
|
|
Applications Names application
|
|
Prompt of users command under bash shell bash$
|
|
Prompt of root users command under bash shell bash#
|
|
Prompt of user command under tcsh shell tcsh$
|
|
Environment Variables VARIABLE
|
|
Emphasized word word
|
|
Code Example
|
|
<para>Beginning and end of paragraph</para>
|
|
_________________________________________________________________
|
|
|
|
Chapter 2. Installing Bugzilla
|
|
|
|
2.1. UNIX Installation
|
|
|
|
2.1.1. ERRATA
|
|
|
|
Note: If you are installing Bugzilla on S.u.S.e. Linux, or some
|
|
other distributions with "paranoid" security options, it is
|
|
possible that the checksetup.pl script may fail with the error:
|
|
cannot chdir(/var/spool/mqueue): Permission denied This is because
|
|
your /var/spool/mqueue directory has a mode of "drwx------". Type
|
|
chmod 755 /var/spool/mqueue as root to fix this problem.
|
|
|
|
Note: Release Notes for Bugzilla 2.12 are available at
|
|
docs/rel_notes.txt
|
|
|
|
Note: The preferred documentation for Bugzilla is available in
|
|
docs/, with a variety of document types available. Please refer to
|
|
these documents when installing, configuring, and maintaining your
|
|
Bugzilla installation.
|
|
|
|
Warning
|
|
|
|
Bugzilla is not a package where you can just plop it in a directory,
|
|
twiddle a few things, and you're off. Installing Bugzilla assumes you
|
|
know your variant of UNIX or Microsoft Windows well, are familiar with
|
|
the command line, and are comfortable compiling and installing a
|
|
plethora of third-party utilities. To install Bugzilla on Win32
|
|
requires fair Perl proficiency, and if you use a webserver other than
|
|
Apache you should be intimately familiar with the security mechanisms
|
|
and CGI environment thereof.
|
|
|
|
Warning
|
|
|
|
Bugzilla has not undergone a complete security review. Security holes
|
|
may exist in the code. Great care should be taken both in the
|
|
installation and usage of this software. Carefully consider the
|
|
implications of installing other network services with Bugzilla.
|
|
_________________________________________________________________
|
|
|
|
2.1.2. Step-by-step Install
|
|
|
|
2.1.2.1. Introduction
|
|
|
|
Installation of bugzilla is pretty straightforward, particularly if
|
|
your machine already has MySQL and the MySQL-related perl packages
|
|
installed. If those aren't installed yet, then that's the first order
|
|
of business. The other necessary ingredient is a web server set up to
|
|
run cgi scripts. While using Apache for your webserver is not
|
|
required, it is recommended.
|
|
|
|
Bugzilla has been successfully installed under Solaris, Linux, and
|
|
Win32. The peculiarities of installing on Win32 (Win98+/NT/2K) are not
|
|
included in this section of the Guide; please check out the "Win32
|
|
Installation Instructions" for further advice on getting Bugzilla to
|
|
work on Microsoft Windows.
|
|
|
|
The Bugzilla Guide is contained in the "docs/" folder. It is available
|
|
in plain text (docs/txt), HTML (docs/html), or SGML source
|
|
(docs/sgml).
|
|
_________________________________________________________________
|
|
|
|
2.1.2.2. Installing the Prerequisites
|
|
|
|
The software packages necessary for the proper running of bugzilla
|
|
are:
|
|
|
|
1. MySQL database server and the mysql client (3.22.5 or greater)
|
|
2. Perl (5.004 or greater)
|
|
3. DBI Perl module
|
|
4. Data::Dumper Perl module
|
|
5. DBD::mySQL
|
|
6. TimeDate Perl module collection
|
|
7. GD perl module (1.8.3) (optional, for bug charting)
|
|
8. Chart::Base Perl module (0.99c) (optional, for bug charting)
|
|
9. DB_File Perl module (optional, for bug charting)
|
|
10. The web server of your choice. Apache is recommended.
|
|
11. MIME::Parser Perl module (optional, for contrib/bug_email.pl
|
|
interface)
|
|
|
|
Note: You must run Bugzilla on a filesystem that supports file
|
|
locking via flock(). This is necessary for Bugzilla to operate
|
|
safely with multiple instances.
|
|
|
|
Warning
|
|
|
|
It is a good idea, while installing Bugzilla, to ensure it is not
|
|
accessible by other machines on the Internet. Your machine may be
|
|
vulnerable to attacks while you are installing. In other words, ensure
|
|
there is some kind of firewall between you and the rest of the
|
|
Internet. Many installation steps require an active Internet
|
|
connection to complete, but you must take care to ensure that at no
|
|
point is your machine vulnerable to an attack.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.3. Installing MySQL Database
|
|
|
|
Visit MySQL homepage at http://www.mysql.org/ and grab the latest
|
|
stable release of the server. Both binaries and source are available
|
|
and which you get shouldn't matter. Be aware that many of the binary
|
|
versions of MySQL store their data files in /var which on many
|
|
installations (particularly common with linux installations) is part
|
|
of a smaller root partition. If you decide to build from sources you
|
|
can easily set the dataDir as an option to configure.
|
|
|
|
If you've installed from source or non-package (RPM, deb, etc.)
|
|
binaries you'll want to make sure to add mysqld to your init scripts
|
|
so the server daemon will come back up whenever your machine reboots.
|
|
You also may want to edit those init scripts, to make sure that mysqld
|
|
will accept large packets. By default, mysqld is set up to only accept
|
|
packets up to 64K long. This limits the size of attachments you may
|
|
put on bugs. If you add something like "-O max_allowed_packet=1M" to
|
|
the command that starts mysqld (or safe_mysqld), then you will be able
|
|
to have attachments up to about 1 megabyte.
|
|
|
|
Note: If you plan on running Bugzilla and MySQL on the same
|
|
machine, consider using the "--skip-networking" option in the init
|
|
script. This enhances security by preventing network access to
|
|
MySQL.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.4. Perl (5.004 or greater)
|
|
|
|
Any machine that doesn't have perl on it is a sad machine indeed. Perl
|
|
for *nix systems can be gotten in source form from
|
|
http://www.perl.com.
|
|
|
|
Perl is now a far cry from the the single compiler/interpreter binary
|
|
it once was. It now includes a great many required modules and quite a
|
|
few other support files. If you're not up to or not inclined to build
|
|
perl from source, you'll want to install it on your machine using some
|
|
sort of packaging system (be it RPM, deb, or what have you) to ensure
|
|
a sane install. In the subsequent sections you'll be installing quite
|
|
a few perl modules; this can be quite ornery if your perl installation
|
|
isn't up to snuff.
|
|
|
|
Tip: You can skip the following Perl module installation steps by
|
|
installing "Bundle::Bugzilla" from CPAN, which includes them. All
|
|
Perl module installation steps require you have an active Internet
|
|
connection.
|
|
|
|
bash# perl -MCPAN -e 'install "Bundle::Bugzilla"'
|
|
|
|
Bundle::Bugzilla doesn't include GD, Chart::Base, or MIME::Parser,
|
|
which are not essential to a basic Bugzilla install. If installing
|
|
this bundle fails, you should install each module individually to
|
|
isolate the problem.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.5. DBI Perl Module
|
|
|
|
The DBI module is a generic Perl module used by other database related
|
|
Perl modules. For our purposes it's required by the MySQL-related
|
|
modules. As long as your Perl installation was done correctly the DBI
|
|
module should be a breeze. It's a mixed Perl/C module, but Perl's
|
|
MakeMaker system simplifies the C compilation greatly.
|
|
|
|
Like almost all Perl modules DBI can be found on the Comprehensive
|
|
Perl Archive Network (CPAN) at http://www.cpan.org. The CPAN servers
|
|
have a real tendency to bog down, so please use mirrors. The current
|
|
location at the time of this writing (02/17/99) can be found in
|
|
Appendix A.
|
|
|
|
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.
|
|
|
|
To use the CPAN shell to install DBI:
|
|
|
|
bash# perl -MCPAN -e 'install "DBI"'
|
|
|
|
Note: Replace "DBI" with the name of whichever module you wish to
|
|
install, such as Data::Dumper, TimeDate, GD, etc.
|
|
|
|
To do it the hard way:
|
|
|
|
Untar the module tarball -- it should create its own directory
|
|
|
|
CD to the directory just created, and enter the following commands:
|
|
|
|
1. bash# perl Makefile.PL
|
|
2. bash# make
|
|
3. bash# make test
|
|
4. bash# make install
|
|
|
|
If everything went ok that should be all it takes. For the vast
|
|
majority of perl modules this is all that's required.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.6. Data::Dumper Perl Module
|
|
|
|
The Data::Dumper module provides data structure persistence for Perl
|
|
(similar to Java's serialization). It comes with later sub-releases of
|
|
Perl 5.004, but a re-installation just to be sure it's available won't
|
|
hurt anything.
|
|
|
|
Data::Dumper is used by the MySQL related Perl modules. It can be
|
|
found on CPAN (link in Appendix A) and can be installed by following
|
|
the same four step make sequence used for the DBI module.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.7. MySQL related Perl Module Collection
|
|
|
|
The Perl/MySQL interface requires a few mutually-dependent perl
|
|
modules. These modules are grouped together into the the
|
|
Msql-Mysql-modules package. This package can be found at CPAN. After
|
|
the archive file has been downloaded it should be untarred.
|
|
|
|
The MySQL modules are all built using one make file which is generated
|
|
by running: bash# perl Makefile.pl
|
|
|
|
The MakeMaker process will ask you a few questions about the desired
|
|
compilation target and your MySQL installation. For many of the
|
|
questions the provided default will be adequate.
|
|
|
|
When asked if your desired target is the MySQL or mSQL packages
|
|
selected the MySQL related ones. Later you will be asked if you wish
|
|
to provide backwards compatibility with the older MySQL packages; you
|
|
must answer YES to this question. The default will be no, and if you
|
|
select it things won't work later.
|
|
|
|
A host of 'localhost' should be fine and a testing user of 'test' and
|
|
a null password should find itself with sufficient access to run tests
|
|
on the 'test' database which MySQL created upon installation. If 'make
|
|
test' and 'make install' go through without errors you should be ready
|
|
to go as far as database connectivity is concerned.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.8. TimeDate Perl Module Collection
|
|
|
|
Many of the more common date/time/calendar related Perl modules have
|
|
been grouped into a bundle similar to the MySQL modules bundle. This
|
|
bundle is stored on the CPAN under the name TimeDate. A (hopefully
|
|
current) link can be found in Appendix A. The component module we're
|
|
most interested in is the Date::Format module, but installing all of
|
|
them is probably a good idea anyway. The standard Perl module
|
|
installation instructions should work perfectly for this simple
|
|
package.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.9. GD Perl Module (1.8.3)
|
|
|
|
The GD library was written by Thomas Boutell a long while ago to
|
|
programatically generate images in C. Since then it's become almost a
|
|
defacto standard for programatic image construction. The Perl bindings
|
|
to it found in the GD library are used on a million web pages to
|
|
generate graphs on the fly. That's what bugzilla will be using it for
|
|
so you'd better install it if you want any of the graphing to work.
|
|
|
|
Actually bugzilla uses the Graph module which relies on GD itself, but
|
|
isn't that always the way with OOP. At any rate, you can find the GD
|
|
library on CPAN (link in Appendix "Required Software").
|
|
|
|
Note: The Perl GD library requires some other libraries that may or
|
|
may not be installed on your system, including "libpng" and
|
|
"libgd". The full requirements are listed in the Perl GD library
|
|
README. Just realize that if compiling GD fails, it's probably
|
|
because you're missing a required library.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.10. Chart::Base Perl Module (0.99c)
|
|
|
|
The Chart module provides bugzilla with on-the-fly charting abilities.
|
|
It can be installed in the usual fashion after it has been fetched
|
|
from CPAN where it is found as the Chart-x.x... tarball in a directory
|
|
to be listed in Appendix "Required Software". Note that as with the GD
|
|
perl module, only the specific versions listed above (or newer) will
|
|
work. Earlier versions used GIF's, which are no longer supported by
|
|
the latest versions of GD.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.11. DB_File Perl Module
|
|
|
|
DB_File is a module which allows Perl programs to make use of the
|
|
facilities provided by Berkeley DB version 1.x. This module is
|
|
required by collectstats.pl which is used for bug charting. If you
|
|
plan to make use of bug charting, you must install this module.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.12. HTTP Server
|
|
|
|
You have a freedom of choice here - Apache, Netscape or any other
|
|
server on UNIX would do. You can easily run the web server on a
|
|
different machine than MySQL, but need to adjust the MySQL "bugs" user
|
|
permissions accordingly.
|
|
|
|
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
|
|
file: AddHandler cgi-script .cgi
|
|
|
|
With apache you'll also want to make sure that within the access.conf
|
|
file the line: Options ExecCGI is in the stanza that covers the
|
|
directories you intend to put the bugzilla .html and .cgi files into.
|
|
|
|
If you are using a newer version of Apache, both of the above lines
|
|
will be (or will need to be) in the httpd.conf file, rather than
|
|
srm.conf or access.conf.
|
|
|
|
Warning
|
|
|
|
There are two critical directories and a file that should not be a
|
|
served by the HTTP server. These are the 'data' and 'shadow'
|
|
directories and the 'localconfig' file. You should configure your HTTP
|
|
server to not serve content from these files. Failure to do so will
|
|
expose critical passwords and other data. Please see your HTTP server
|
|
configuration manual on how to do this. If you use quips (at the top
|
|
of the buglist pages) you will want the 'data/comments' file to still
|
|
be served. This file contains those quips.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.13. Installing the Bugzilla Files
|
|
|
|
You should untar the Bugzilla files into a directory that you're
|
|
willing to make writable by the default web server user (probably
|
|
'nobody'). You may decide to put the files off of the main web space
|
|
for your web server or perhaps off of /usr/local with a symbolic link
|
|
in the web space that points to the bugzilla directory. At any rate,
|
|
just dump all the files in the same place (optionally omitting the CVS
|
|
directories if they were accidentally tarred up with the rest of
|
|
Bugzilla) and make sure you can access the files in that directory
|
|
through your web server.
|
|
|
|
Tip: If you symlink the bugzilla directory into your Apache's HTML
|
|
heirarchy, you may receive "Forbidden" errors unless you add the
|
|
"FollowSymLinks" directive to the <Directory> entry for the HTML
|
|
root.
|
|
|
|
Once all the files are in a web accessible directory, make that
|
|
directory writable by your webserver's user (which may require just
|
|
making it world writable). This is a temporary step until you run the
|
|
post-install "checksetup.pl" script, which locks down your
|
|
installation.
|
|
|
|
Lastly, you'll need to set up a symbolic link to
|
|
/usr/bonsaitools/bin/perl for the correct location of your perl
|
|
executable (probably /usr/bin/perl). Otherwise you must hack all the
|
|
.cgi files to change where they look for perl. To make future upgrades
|
|
easier, you should use the symlink approach.
|
|
|
|
Example 2-1. Setting up bonsaitools symlink
|
|
|
|
Here's how you set up the Perl symlink on Linux to make Bugzilla work.
|
|
Your mileage may vary; if you are running on Solaris, you probably
|
|
need to subsitute "/usr/local/bin/perl" for "/usr/bin/perl" below; if
|
|
on certain other UNIX systems, Perl may live in weird places like
|
|
"/opt/perl". As root, run these commands:
|
|
bash# mkdir /usr/bonsaitools
|
|
bash# mkdir /usr/bonsaitools/bin
|
|
bash# ln -s /usr/bin/perl /usr/bosaitools/bin/perl
|
|
|
|
Tip: If you don't have root access to set this symlink up, check
|
|
out the "setperl.csh" utility, listed in the Patches section of
|
|
this Guide. It will change the path to perl in all your Bugzilla
|
|
files for you.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.14. Setting Up the MySQL Database
|
|
|
|
After you've gotten all the software installed and working you're
|
|
ready to start preparing the database for its life as a the back end
|
|
to a high quality bug tracker.
|
|
|
|
First, you'll want to fix MySQL permissions to allow access from
|
|
Bugzilla. For the purpose of this Installation section, the Bugzilla
|
|
username will be "bugs", and will have minimal permissions. Bugzilla
|
|
has not undergone a thorough security audit. It may be possible for a
|
|
system cracker to somehow trick Bugzilla into executing a command such
|
|
as "; DROP DATABASE mysql".
|
|
|
|
That would be bad.
|
|
|
|
Give the MySQL root user a password. MySQL passwords are limited to 16
|
|
characters.
|
|
|
|
bash# mysql -u root mysql
|
|
mysql> UPDATE user SET Password=PASSWORD ('new_password') WHERE
|
|
user='root';
|
|
mysql> FLUSH PRIVILEGES;
|
|
|
|
From this point on, if you need to access MySQL as the MySQL root
|
|
user, you will need to use "mysql -u root -p" and enter your
|
|
new_password. Remember that MySQL user names have nothing to do with
|
|
Unix user names (login names).
|
|
|
|
Next, we create the "bugs" user, and grant sufficient permissions for
|
|
checksetup.pl, which we'll use later, to work its magic. This also
|
|
restricts the "bugs" user to operations within a database called
|
|
"bugs", and only allows the account to connect from "localhost".
|
|
Modify it to reflect your setup if you will be connecting from another
|
|
machine or as a different user.
|
|
|
|
Remember to set bugs_password to some unique password.
|
|
|
|
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,INDEX,
|
|
ALTER,CREATE,DROP,REFERENCES ON bugs.* TO bugs@localhost IDENTIFIED BY
|
|
'bugs_password';
|
|
mysql> FLUSH PRIVILEGES;
|
|
|
|
Next, run the magic checksetup.pl script. (Many thanks to Holger
|
|
Schurig <holgerschurig@nikocity.de> for writing this script!) It will
|
|
make sure Bugzilla files and directories have reasonable permissions,
|
|
set up the "data" directory, and create all the MySQL tables.
|
|
|
|
bash# ./checksetup.pl
|
|
|
|
The first time you run it, it will create a file called "localconfig".
|
|
_________________________________________________________________
|
|
|
|
2.1.2.15. Tweaking "localconfig"
|
|
|
|
This file contains a variety of settings you may need to tweak
|
|
including how Bugzilla should connect to the MySQL database.
|
|
|
|
The connection settings include:
|
|
|
|
1. server's host: just use "localhost" if the MySQL server is local
|
|
2. database name: "bugs" if you're following these directions
|
|
3. MySQL username: "bugs" if you're following these directions
|
|
4. Password for the "bugs" MySQL account above
|
|
|
|
Once you are happy with the settings, re-run checksetup.pl. On this
|
|
second run, it will create the database and an administrator account
|
|
for which you will be prompted to provide information.
|
|
|
|
When logged into an administrator account once Bugzilla is running, if
|
|
you go to the query page (off of the bugzilla main menu), you'll find
|
|
an 'edit parameters' option that is filled with editable treats.
|
|
|
|
Should everything work, you should have a nearly empty copy of the bug
|
|
tracking setup.
|
|
|
|
The second time around, checksetup.pl will stall if it is on a
|
|
filesystem that does not fully support file locking via flock(), such
|
|
as NFS mounts. This support is required for Bugzilla to operate safely
|
|
with multiple instances. If flock() is not fully supported, it will
|
|
stall at: Now regenerating the shadow database for all bugs.
|
|
|
|
Note: The second time you run checksetup.pl, you should become the
|
|
user your web server runs as, and that you ensure you have set the
|
|
"webservergroup" parameter in localconfig to match the web server's
|
|
group name, if any. I believe, for the next release of Bugzilla,
|
|
this will be fixed so that Bugzilla supports a "webserveruser"
|
|
parameter in localconfig as well.
|
|
|
|
Example 2-2. Running checksetup.pl as the web user
|
|
|
|
Assuming your web server runs as user "apache", and Bugzilla is
|
|
installed in "/usr/local/bugzilla", here's one way to run
|
|
checksetup.pl as the web server user. As root, for the second run of
|
|
checksetup.pl, do this:
|
|
bash# chown -R apache:apache /usr/local/bugzilla
|
|
bash# su - apache
|
|
bash# cd /usr/local/bugzilla
|
|
bash# ./checksetup.pl
|
|
|
|
Note: The checksetup.pl script is designed so that you can run it
|
|
at any time without causing harm. You should run it after any
|
|
upgrade to Bugzilla.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.16. Setting Up Maintainers Manually (Optional)
|
|
|
|
If you want to add someone else to every group by hand, you can do it
|
|
by typing the appropriate MySQL commands. Run ' mysql -u root -p bugs'
|
|
(you may need different parameters, depending on your security
|
|
settings according to section 3, above). Then:
|
|
|
|
mysql> update profiles set groupset=0x7fffffffffffffff where
|
|
login_name = 'XXX';
|
|
|
|
replacing XXX with the Bugzilla email address.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.17. The Whining Cron (Optional)
|
|
|
|
By now you've got a fully functional bugzilla, but what good are bugs
|
|
if they're not annoying? To help make those bugs more annoying you can
|
|
set up bugzilla's automatic whining system. This can be done by adding
|
|
the following command as a daily crontab entry (for help on that see
|
|
that crontab man page):
|
|
|
|
cd <your-bugzilla-directory> ; ./whineatnews.pl
|
|
_________________________________________________________________
|
|
|
|
2.1.2.18. Bug Graphs (Optional)
|
|
|
|
As long as you installed the GD and Graph::Base Perl modules you might
|
|
as well turn on the nifty bugzilla bug reporting graphs.
|
|
|
|
Add a cron entry like this to run collectstats daily at 5 after
|
|
midnight:
|
|
|
|
bash# crontab -e
|
|
5 0 * * * cd <your-bugzilla-directory> ; ./collectstats.pl
|
|
|
|
After two days have passed you'll be able to view bug graphs from the
|
|
Bug Reports page.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.19. Securing MySQL
|
|
|
|
If you followed the README for setting up your "bugs" and "root" user
|
|
in MySQL, much of this should not apply to you. If you are upgrading
|
|
an existing installation of Bugzilla, you should pay close attention
|
|
to this section.
|
|
|
|
Most MySQL installs have "interesting" default security parameters:
|
|
|
|
mysqld defaults to running as root
|
|
it defaults to allowing external network connections
|
|
it has a known port number, and is easy to detect
|
|
it defaults to no passwords whatsoever
|
|
it defaults to allowing "File_Priv"
|
|
|
|
This means anyone from anywhere on the internet can not only drop the
|
|
database with one SQL command, and they can write as root to the
|
|
system.
|
|
|
|
To see your permissions do:
|
|
|
|
bash# mysql -u root -p
|
|
mysql> use mysql;
|
|
mysql> show tables;
|
|
mysql> select * from user;
|
|
mysql> select * from db;
|
|
|
|
To fix the gaping holes:
|
|
|
|
DELETE FROM user WHERE User='';
|
|
UPDATE user SET Password=PASSWORD('new_password') WHERE user='root';
|
|
FLUSH PRIVILEGES;
|
|
|
|
If you're not running "mit-pthreads" you can use:
|
|
|
|
GRANT USAGE ON *.* TO bugs@localhost;
|
|
GRANT ALL ON bugs.* TO bugs@localhost;
|
|
REVOKE DROP ON bugs.* FROM bugs@localhost;
|
|
FLUSH PRIVILEGES;
|
|
|
|
With "mit-pthreads" you'll need to modify the "globals.pl"
|
|
Mysql->Connect line to specify a specific host name instead of
|
|
"localhost", and accept external connections:
|
|
|
|
GRANT USAGE ON *.* TO bugs@bounce.hop.com;
|
|
GRANT ALL ON bugs.* TO bugs@bounce.hop.com;
|
|
REVOKE DROP ON bugs.* FROM bugs@bounce.hop.com;
|
|
FLUSH PRIVILEGES;
|
|
|
|
Consider also:
|
|
|
|
1. Turning off external networking with "--skip-networking", unless
|
|
you have "mit-pthreads", in which case you can't. Without
|
|
networking, MySQL connects with a Unix domain socket.
|
|
2. using the --user= option to mysqld to run it as an unprivileged
|
|
user.
|
|
3. starting MySQL in a chroot jail
|
|
4. running the httpd in a "chrooted" jail
|
|
5. making sure the MySQL passwords are different from the OS
|
|
passwords (MySQL "root" has nothing to do with system "root").
|
|
6. running MySQL on a separate untrusted machine
|
|
7. making backups ;-)
|
|
_________________________________________________________________
|
|
|
|
2.1.2.20. Installation General Notes
|
|
|
|
2.1.2.20.1. Modifying Your Running System
|
|
|
|
Bugzilla optimizes database lookups by storing all relatively static
|
|
information in the versioncache file, located in the data/
|
|
subdirectory under your installation directory (we said before it
|
|
needs to be writable, right?!)
|
|
|
|
If you make a change to the structural data in your database (the
|
|
versions table for example), or to the "constants" encoded in
|
|
defparams.pl, you will need to remove the cached content from the data
|
|
directory (by doing a "rm data/versioncache"), or your changes won't
|
|
show up!
|
|
|
|
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.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.20.2. Upgrading From Previous Versions
|
|
|
|
The developers of Bugzilla are constantly adding new tables, columns
|
|
and fields. You'll get SQL errors if you just update the code. The
|
|
strategy to update is to simply always run the checksetup.pl script
|
|
whenever you upgrade your installation of Bugzilla. If you want to see
|
|
what has changed, you can read the comments in that file, starting
|
|
from the end.
|
|
_________________________________________________________________
|
|
|
|
2.1.2.20.3. UNIX Installation Instructions History
|
|
|
|
This document was originally adapted from the Bonsai installation
|
|
instructions by Terry Weissman <terry@mozilla.org>.
|
|
|
|
The February 25, 1999 re-write of this page was done by Ry4an Brase
|
|
<ry4an@ry4an.org>, with some edits by Terry Weissman, Bryce Nesbitt,
|
|
Martin Pool, & Dan Mosedale (But don't send bug reports to them!
|
|
Report them using bugzilla, at
|
|
http://bugzilla.mozilla.org/enter_bug.cgi , project Webtools,
|
|
component Bugzilla).
|
|
|
|
This document was heavily modified again Wednesday, March 07 2001 to
|
|
reflect changes for Bugzilla 2.12 release by Matthew P. Barnson. The
|
|
securing MySQL section should be changed to become standard procedure
|
|
for Bugzilla installations.
|
|
|
|
Finally, the README in its entirety was marked up in SGML and included
|
|
into the Guide on April 24, 2001.
|
|
|
|
Comments from people using this Guide for the first time are
|
|
particularly welcome.
|
|
_________________________________________________________________
|
|
|
|
2.2. Win32 (Win98+/NT/2K) Installation
|
|
|
|
These directions have not been extensively tested. We need testers!
|
|
Please try these out and post any changes to the newsgroup.
|
|
_________________________________________________________________
|
|
|
|
2.2.1. Win32 Installation: Step-by-step
|
|
|
|
Note: You should be familiar with, and cross-reference, the UNIX
|
|
README while performing your Win32 installation. Unfortunately,
|
|
Win32 directions are not yet as detailed as those for UNIX.
|
|
|
|
The most critical difference for Win32 users is the lack of support
|
|
for a crypt() function in MySQL for Windows. It does not have it!
|
|
All ENCRYPT statements must be modified.
|
|
|
|
1. Install Apache Web Server for Windows.
|
|
|
|
Note: You may also use Internet Information Server or Personal Web
|
|
Server for this purpose. However, setup is slightly more difficult.
|
|
If ActivePerl doesn't seem to handle your file associations
|
|
correctly (for .cgi and .pl files), please consult the FAQ, in the
|
|
"Win32" section.
|
|
If you are going to use IIS, if on Windows NT you must be updated
|
|
to at least Service Pack 4.
|
|
2. Install ActivePerl
|
|
Please also check the following links to fully understand the
|
|
status of ActivePerl on Win32: Perl Porting, and Hixie Click Here
|
|
3. Use ppm from your perl\bin directory to install the following
|
|
packs: DBI, DBD-Mysql, TimeDate, Chart, Date-Calc, Date-Manip, and
|
|
GD. You may need to extract them from .zip format using Winzip or
|
|
other unzip program first. These additional ppm modules can be
|
|
downloaded from ActiveState.
|
|
The syntax for ppm is: C:> ppm install <module>.ppd
|
|
You can find ActiveState ppm modules at
|
|
http://www.activestate.com/PPMPackages/5.6plus
|
|
4. Download and install the Windows GNU tools from www.cygwin.com.
|
|
Make sure the GNU utilities are in your $PATH.
|
|
5. Install MySQL for NT.
|
|
|
|
Note: Your configuration file for MySQL must be named C:\MY.CNF.
|
|
6. Setup MySQL
|
|
a. C:> C:\mysql\bin\mysql -u root mysql
|
|
b. mysql> DELETE FROM user WHERE Host='localhost' AND User='';
|
|
c. mysql> UPDATE user SET Password=PASSWORD ('new_password')
|
|
WHERE user='root';
|
|
d. mysql> GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER,
|
|
CREATE, DROP, REFERENCES ON bugs.* to bugs@localhost
|
|
IDENTIFIED BY 'bugs_password';
|
|
e. mysql> FLUSH PRIVILEGES;
|
|
f. mysql> create database bugs;
|
|
g. mysql> exit
|
|
h. C:> C:\mysql\bin\mysqladmin -u root -p reload
|
|
7. Configure Bugzilla. For Win32, this involves editing
|
|
"defparams.pl" and "localconfig" to taste. Running "checksetup.pl"
|
|
should create localconfig for you. Note that getgrnam() doesn't
|
|
work, and should be deleted. Change this line: "my $webservergid =
|
|
getgrnam($my_webservergroup); " to "my $webservergid =
|
|
$my_webservergroup; "
|
|
8.
|
|
|
|
Note: There are several alternatives to Sendmail that will work on
|
|
Win32. The one mentioned here is a suggestion, not a requirement.
|
|
Some other mail packages that can work include BLAT, Windmail,
|
|
Mercury Sendmail, and the CPAN Net::SMTP Perl module (available in
|
|
.ppm). Every option requires some hacking of the Perl scripts for
|
|
Bugzilla to make it work. The option here simply requires the
|
|
least.
|
|
Download NTsendmail, available from www.ntsendmail.com. In order
|
|
for it to work, you must set up some new environment variables
|
|
(detailed on the ntsendmail home page). Figuring out where to put
|
|
those variables is left as an exercise for the reader. You must
|
|
have a "real" mail server which allows you to relay off it in your
|
|
$ENV{"NTsendmail"} (which you should probably place in globals.pl)
|
|
Once downloaded and installed, modify all open(SENDMAIL) calls to
|
|
open "| c:\ntsendmail\ntsendmail -t" instead of
|
|
"|/usr/lib/sendmail -t".
|
|
|
|
Note: We need someone to test this and make sure this works as
|
|
advertised.
|
|
9. Modify globals.pl and CGI.pl to remove the word "encrypt".
|
|
|
|
Note: I'm not sure this is all that is involved to remove crypt.
|
|
Any NT Bugzilla hackers want to pipe up?
|
|
10. Change all references to "processmail" to "processmail.pl" in all
|
|
files, and rename "processmail" to "processmail.pl"
|
|
|
|
Note: I really think this may be a change we want to make for
|
|
main-tree Bugzilla. It's painless for the UNIX folks, and will make
|
|
the Win32 people happier.
|
|
11. Modify the path to perl on the first line (#!) of all files to
|
|
point to your Perl installation, and add "perl" to the beginning
|
|
of all Perl system calls that use a perl script as an argument.
|
|
This may take you a while. There is a "setperl.pl" utility to
|
|
speed part of this procedure, available in the "Patches and
|
|
Utilities" section of The Bugzilla Guide.
|
|
12. In processmail.pl, add "binmode(HANDLE)" before all read() calls.
|
|
This may not be necessary, but in some cases the read() under
|
|
Win32 doesn't count the EOL's without using a binary read().
|
|
_________________________________________________________________
|
|
|
|
2.2.2. Additional Windows Tips
|
|
|
|
Tip: From Andrew Pearson:
|
|
|
|
"You can make Bugzilla work with Personal Web Server for Windows 98
|
|
and higher, as well as for IIS 4.0. Microsoft has information
|
|
available at
|
|
http://support.microsoft.com/support/kb/articles/Q231/9/98.ASP
|
|
|
|
Basically you need to add two String Keys in the registry at the
|
|
following location:
|
|
|
|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Paramete
|
|
rs\ScriptMap
|
|
|
|
The keys should be called ".pl" and ".cgi", and both should have a
|
|
value something like: c:/perl/bin/perl.exe "%s" "%s"
|
|
|
|
The KB article only talks about .pl, but it goes into more detail
|
|
and provides a perl test script.
|
|
|
|
Tip: "Brian" had this to add, about upgrading to Bugzilla 2.12 from
|
|
previous versions:
|
|
|
|
Hi - I am updating bugzilla to 2.12 so I can tell you what I did
|
|
(after I deleted the current dir and copied the files in).
|
|
|
|
In checksetup.pl, I did the following...
|
|
|
|
1.
|
|
|
|
my $webservergid = getgrnam($my_webservergroup);
|
|
|
|
|
|
to
|
|
|
|
my $webservergid = 'Administrators'
|
|
|
|
|
|
2. I then ran checksetup.pl
|
|
3. I removed all the encrypt()
|
|
Example 2-3. Removing encrypt() for Windows NT installations
|
|
Replace this:
|
|
|
|
SendSQL("SELECT encrypt(" . SqlQuote($enteredpwd) . ", " .
|
|
SqlQuote(substr($realcryptpwd, 0, 2)) . ")");
|
|
my $enteredcryptpwd = FetchOneColumn();
|
|
|
|
|
|
with this:
|
|
|
|
my $enteredcryptpwd = $enteredpwd
|
|
|
|
|
|
in cgi.pl.
|
|
4. I renamed processmail to processmail.pl
|
|
5. I altered the sendmail statements to windmail:
|
|
|
|
|
|
open SENDMAIL, "|\"C:/General/Web/tools/Windmail 4.0 Beta/windmail\" -t > mail.
|
|
log";
|
|
|
|
The quotes around the dir is for the spaces. mail.log is for the
|
|
output
|
|
|
|
Tip: This was some late breaking information from Jan Evert. Sorry
|
|
for the lack of formatting.
|
|
|
|
I'm busy installing bugzilla on a WinNT machine and I thought I'd n
|
|
otify you
|
|
at this moment of the commments I have to section 2.2.1 of the bugz
|
|
illa
|
|
guide (at http://www.trilobyte.net/barnsons/html/).
|
|
Step 1:
|
|
I've used apache, installation is really straightforward.
|
|
After reading the Unix installation instructions, I found that it i
|
|
s
|
|
necessary to add the ExecCGI option to the bugzilla directory. Also
|
|
the
|
|
'AddHandler' line for .cgi is by default commented out.
|
|
Step 3: although just a detail, 'ppm install <module%gt;' will also
|
|
work
|
|
(wihtout .ppd). And, it can also download these automatically from
|
|
ActiveState.
|
|
Step 4: although I have cygwin installed, it seems that it is not n
|
|
ecessary.
|
|
On my machine cygwin is not in the PATH and everything seems to wor
|
|
k as
|
|
expected.
|
|
However, I've not used everything yet.
|
|
Step 6: the 'bugs_password' given in SQL command d needs to be edit
|
|
ed into
|
|
localconfig later on (Step 7) if the password is not empty. I've al
|
|
so edited
|
|
it into globals.pl, but I'm not sure that is needed. In both places
|
|
, the
|
|
variable is named db_pass.
|
|
Step 8: all the sendmail replacements mentioned are not as simple a
|
|
s
|
|
described there. Since I am not familiar (yet) with perl, I don't h
|
|
ave any
|
|
mail working yet.
|
|
Step 9: in globals.pl the encrypt() call can be replaced by just th
|
|
e
|
|
unencrypted password. In CGI.pl, the complete SQL command can be re
|
|
moved.
|
|
Step 11: I've only changed the #! lines in *.cgi. I haven't noticed
|
|
problems
|
|
with the system() call yet.
|
|
There seem to be only four system() called programs: processmail.pl
|
|
(handled
|
|
by step 10), syncshadowdb (which should probably get the same treat
|
|
ment as
|
|
processmail.pl), diff and mysqldump. The last one is only needed wi
|
|
th the
|
|
shadowdb feature (which I don't use).
|
|
There seems to be one step missing: copying the bugzilla files some
|
|
hwere
|
|
that apache can serve them.
|
|
Just noticed the updated guide... Brian's comment is new. His first
|
|
comment
|
|
will work, but opens up a huge security hole.
|
|
_________________________________________________________________
|
|
|
|
Chapter 3. Administering Bugzilla
|
|
|
|
Or, I just got this cool thing installed. Now what the heck do I do
|
|
with it?
|
|
|
|
So you followed the README isntructions to the letter, and just logged
|
|
into bugzilla with your super-duper god account and you are sitting at
|
|
the query screen. Yet, you have nothing to query. Your first act of
|
|
business needs to be to setup the operating parameters for bugzilla.
|
|
_________________________________________________________________
|
|
|
|
3.1. Post-Installation Checklist
|
|
|
|
After installation, follow the checklist below to ensure that you have
|
|
a successful installation. 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.
|
|
1. Bring up "editparams.cgi" in your web browser. For instance, to
|
|
edit parameters at mozilla.org, the URL would be
|
|
http://bugzilla.mozilla.org/editparams.cgi, also available under
|
|
the "edit parameters" link on your query page.
|
|
2. Set "maintainer" to your email address. This allows Bugzilla's
|
|
error messages to display your email address and allow people to
|
|
contact you for help.
|
|
3. Set "urlbase" to the URL reference for your Bugzilla installation.
|
|
If your bugzilla query page is at
|
|
http://www.foo.com/bugzilla/query.cgi, your url base is
|
|
http://www.foo.com/bugzilla/
|
|
4. Set "usebuggroups" to "1" only if you need to restrict access to
|
|
products. I suggest leaving this parameter off while initially
|
|
testing your Bugzilla.
|
|
5. Set "usebuggroupsentry" to "1" if you want to restrict access to
|
|
products. Once again, if you are simply testing your installation,
|
|
I suggest against turning this parameter on; the strict security
|
|
checking may stop you from being able to modify your new entries.
|
|
6. Set "shadowdb" to "bug_shadowdb" if you will be running a *very*
|
|
large installation of Bugzilla. The shadow database enables many
|
|
simultaneous users to read and write to the database without
|
|
interfering with one another.
|
|
|
|
Note: Enabling "shadowdb" can adversely affect the stability of
|
|
your installation of Bugzilla. You may frequently need to manually
|
|
synchronize your databases, or schedule nightly syncs via "cron"
|
|
Once again, in testing you should avoid this option -- use it if
|
|
or when you need to use it, and have repeatedly run into the
|
|
problem it was designed to solve -- very long wait times while
|
|
attempting to commit a change to the database.
|
|
If you use the "shadowdb" option, it is only natural that you
|
|
should turn the "queryagainstshadowdb" option "On" as well.
|
|
Otherwise you are replicating data into a shadow database for no
|
|
reason!
|
|
7. If you have custom logos or HTML you must put in place to fit
|
|
within your site design guidelines, place the code in the
|
|
"headerhtml", "footerhtml", "errorhtml", "bannerhtml", or
|
|
"blurbhtml" text boxes.
|
|
|
|
Note: The "headerhtml" text box is the HTML printed out before any
|
|
other code on the page. If you have a special banner, put the code
|
|
for it in "bannerhtml". You may want to leave these settings at the
|
|
defaults initially.
|
|
8. Add any text you wish to the "passwordmail" parameter box. For
|
|
instance, many people choose to use this box to give a quick
|
|
training blurb about how to use Bugzilla at your site.
|
|
9. Ensure "newemailtech" is "on". Your users will thank you. This is
|
|
the default in the post-2.12 world, and is only an issue if you
|
|
are upgrading.
|
|
10. Do you want to use the qa contact ("useqacontact") and status
|
|
whiteboard ("usestatuswhiteboard") fields? These fields are useful
|
|
because they allow for more flexibility, particularly when you
|
|
have an existing Quality Assurance and/or Release Engineering
|
|
team, but they may not be needed for smaller installations.
|
|
11. Set "whinedays" to the amount of days you want to let bugs go in
|
|
the "New" or "Reopened" state before notifying people they have
|
|
untouched new bugs. If you do not plan to use this feature, simply
|
|
do not set up the whining cron job described in the README, or set
|
|
this value to "0".
|
|
12. Set the "commenton" options according to your site policy. It is a
|
|
wise idea to require comments when users resolve, reassign, or
|
|
reopen bugs.
|
|
|
|
Note: It is generally far better to require a developer comment
|
|
when resolving bugs than not. Few things are more annoying to bug
|
|
database users than having a developer mark a bug "fixed" without
|
|
any comment as to what the fix was (or even that it was truly
|
|
fixed!)
|
|
13. Set "supportwatchers" to "On". This feature is helpful for team
|
|
leads to monitor progress in their respective areas, and can offer
|
|
many other benefits, such as allowing a developer to pick up a
|
|
former engineer's bugs without requiring her to change all the
|
|
information in the bug.
|
|
_________________________________________________________________
|
|
|
|
3.2. User Administration
|
|
|
|
User administration is one of the easiest parts of Bugzilla. Keeping
|
|
it from getting out of hand, however, can become a challenge.
|
|
_________________________________________________________________
|
|
|
|
3.2.1. Creating the Default User
|
|
|
|
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
|
|
the "super user" account, re-running checksetup.pl will again prompt
|
|
you for this username and password.
|
|
|
|
Tip: 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): mysql> use bugs; mysql> update profiles set
|
|
groupset=0x7ffffffffffffff where login_name = "(user's login
|
|
name)";
|
|
_________________________________________________________________
|
|
|
|
3.2.2. Managing Other Users
|
|
|
|
3.2.2.1. Logging In
|
|
|
|
1. Open the index.html page for your Bugzilla installation in your
|
|
browser window.
|
|
2. Click the "Query Existing Bug Reports" link.
|
|
3. Click the "Log In" link at the foot of the page.
|
|
4. Type your email address, and the password which was emailed to you
|
|
when you created your Bugzilla account, into the spaces provided.
|
|
|
|
Congratulations, you are logged in!
|
|
_________________________________________________________________
|
|
|
|
3.2.2.2. Creating new users
|
|
|
|
Your users can create their own user accounts by clicking the "New
|
|
Account" link at the bottom of each page. However, should you desire
|
|
to create user accounts ahead of time, here is how you do it.
|
|
|
|
1. After logging in, click the "Users" link at the footer of the
|
|
query page.
|
|
2. 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.
|
|
|
|
Tip: 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 "man
|
|
regexp" manual page for details on regular expression syntax), or a
|
|
reverse regular expression match, where every user name which does
|
|
NOT match the regular expression is selected.
|
|
3. Click the "Add New User" link at the bottom of the user list
|
|
4. Fill out the form presented. This page is self-explanatory. When
|
|
done, click "submit".
|
|
|
|
Note: Adding a user this way will not send an email informing them
|
|
of their username and password. In general, it is preferable to log
|
|
out and use the "New Account" button to create users, as it will
|
|
pre-populate all the required fields and also notify the user of
|
|
her account name and password.
|
|
_________________________________________________________________
|
|
|
|
3.2.2.3. Disabling Users
|
|
|
|
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
|
|
|
|
Don't disable your own administrative account, or you will hate life!
|
|
_________________________________________________________________
|
|
|
|
3.2.2.4. Modifying Users
|
|
|
|
Here I will attempt to describe the function of each option on the
|
|
user edit screen.
|
|
|
|
* Login Name: 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: For compatability reasons, you should probably stick with
|
|
email addresses as user login names. It will make your life easier.
|
|
* Real Name: Duh!
|
|
* Password: You will only see asterisks in versions of Bugzilla
|
|
newer than 2.10 or early 2.11. You can change the user password
|
|
here.
|
|
* Email Notification: You may choose from one of three options:
|
|
1. All qualifying bugs except those which I change: The user
|
|
will be notified of any change to any bug for which she is
|
|
the reporter, assignee, Q/A contact, CC recipient, or
|
|
"watcher".
|
|
2. Only those bugs which I am listed on the CC line: The user
|
|
will not be notified of changes to bugs where she is the
|
|
assignee, reporter, or Q/A contact, but will receive them if
|
|
she is on the CC list.
|
|
|
|
Note: She will still receive whining cron emails if you set up the
|
|
"whinemail" feature.
|
|
3. All Qualifying Bugs: This user is a glutton for punishment.
|
|
If her name is in the reporter, Q/A contact, CC, assignee, or
|
|
is a "watcher", she will get email updates regarding the bug.
|
|
Disable Text: 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.
|
|
|
|
Warning
|
|
Don't disable the administrator account!
|
|
|
|
Note: 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 not be enabled for secure installations
|
|
of Bugzilla.
|
|
* CanConfirm: 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 (ergo: "New" status). Be judicious about
|
|
allowing users to turn this bit on for other users.
|
|
* Creategroups: 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.
|
|
* Editbugs: Unless a user has this bit set, they can only edit those
|
|
bugs for which they are the assignee or the reporter.
|
|
|
|
Note: 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.
|
|
* Editcomponents: 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.
|
|
* Editkeywords: If you use Bugzilla's keyword functionality,
|
|
enabling this feature allows a user can 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.
|
|
* Editusers: This flag allows a user do what you're doing right now:
|
|
edit other users. This will allow those with the right to do so to
|
|
remove administrator priveleges from other users or grant them to
|
|
themselves. Enable with care.
|
|
* PRODUCT: 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.
|
|
_________________________________________________________________
|
|
|
|
3.3. Product, Component, Milestone, and Version Administration
|
|
|
|
|
|
|
|
Dear Lord, we have to get our users to do WHAT?
|
|
_________________________________________________________________
|
|
|
|
3.3.1. Products
|
|
|
|
Formerly, and in some spots still, called "Programs"
|
|
|
|
Products 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...)
|
|
|
|
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
|
|
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.
|
|
|
|
To create a new product:
|
|
|
|
1. Select "components" from the yellow footer
|
|
|
|
Tip: 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...
|
|
2. Select the "Add" link to the right of "Add a new product".
|
|
3. Enter the name of the product and a description. The Description
|
|
field is free-form.
|
|
|
|
Tip: 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.
|
|
_________________________________________________________________
|
|
|
|
3.3.2. Components
|
|
|
|
Components are subsections of a Product.
|
|
|
|
Example 3-1. Creating some Components
|
|
|
|
The computer game you are designing may 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.
|
|
|
|
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 these bugs are completely fixed. The Owner, QA Contact,
|
|
and Reporter 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 default assignments; the Owner and Q/A
|
|
Contact fields in a bug are otherwise unrelated to the Component.
|
|
|
|
To create a new Component:
|
|
|
|
1. Select the "Edit components" link from the "Edit Product" page
|
|
2. Select the "Add" link to the right of the "Add a new component"
|
|
text on the "Select Component" page.
|
|
3. Fill out the "Component" field, a short "Description", and the
|
|
"Initial Owner". The "Component" field should not contain a space.
|
|
The "Description" field is free-form. The "Initial Owner" field
|
|
must be that of a valid user already existing in the database. If
|
|
the initial owner does not exist, Bugzilla will refuse to create
|
|
the component.
|
|
|
|
Tip: Is your "Default Owner" a user who is not yet in the database?
|
|
No problem.
|
|
a. Select the "Log out" link on the footer of the page.
|
|
b. Select the "New Account" link on the footer of the "Relogin"
|
|
page
|
|
c. 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.
|
|
d. Now select "Log in" again, type in your login information,
|
|
and you can modify the product to use the Default Owner
|
|
information you require.
|
|
|
|
4. Either "edit" more components or return to the "query" page on the
|
|
ensuing "Addming new component" page. To return to the Product you
|
|
were editing, you must select the "components" link as before.
|
|
_________________________________________________________________
|
|
|
|
3.3.3. Versions
|
|
|
|
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 3-2. Common Use of Versions
|
|
|
|
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
|
|
|
|
Example 3-3. A Different Use of Versions
|
|
|
|
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.
|
|
|
|
To create and edit Versions:
|
|
|
|
1. From the "Edit Product" screen, select "Edit Versions"
|
|
2. 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.
|
|
Otherwise, click the "Add" button to the right of the "Add a new
|
|
version" text.
|
|
3. 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.
|
|
4. 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.
|
|
_________________________________________________________________
|
|
|
|
3.3.4. Milestones
|
|
|
|
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.
|
|
|
|
Note: Milestone options will only appear for a Product if you
|
|
turned the "usetargetmilestone" field in the "Edit Parameters"
|
|
screen "On".
|
|
|
|
To create new Milestones, set Default Milestones, and set Milestone
|
|
URL:
|
|
|
|
1. Select "edit milestones"
|
|
2. Select "Add" to the right of the "Add a new milestone" text
|
|
3. Enter the name of the Milestone in the "Milestone" field. You 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".
|
|
Example 3-4. Using SortKey with Target Milestone
|
|
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"
|
|
4. 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: 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.
|
|
5. 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"
|
|
Some common uses of this field include product descriptions,
|
|
product roadmaps, and of course a simple description of the
|
|
meaning of each milestone.
|
|
6. 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.
|
|
Select the "Update" button when you are done.
|
|
7.
|
|
_________________________________________________________________
|
|
|
|
3.3.5. Voting
|
|
|
|
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 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.
|
|
|
|
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.
|
|
|
|
To modify Voting settings:
|
|
|
|
1. Navigate to the "Edit Product" screen for the Product you wish to
|
|
modify
|
|
2. Set "Maximum Votes per person" to your calculated value. Setting
|
|
this field to "0" disables voting.
|
|
3. 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.
|
|
4. 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: 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 really bad bug!
|
|
5. Once you have adjusted the values to your preference, select the
|
|
"Update" button.
|
|
_________________________________________________________________
|
|
|
|
3.3.6. Groups and Group Security
|
|
|
|
Groups can be very useful in bugzilla, because they allow users 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 3-5. When to Use Group Security
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
Note: 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.
|
|
|
|
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.
|
|
|
|
To enable Generic Group Security ("usebuggroups"):
|
|
|
|
1. Turn "On" "usebuggroups" in the "Edit Parameters" screen.
|
|
2. You will generally have no groups set up. Select the "groups" link
|
|
in the footer.
|
|
3. 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.
|
|
4. 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 3-6. Creating a New Group
|
|
I created a group called "DefaultGroup" with a description of
|
|
"This is simply a group to play with", and a "New User RegExp" of
|
|
"*@velio.com". This new group automatically includes all Bugzilla
|
|
users with "@velio.com" at the end of their user id. When I
|
|
finished, my new group was assigned bit #128.
|
|
When you have finished, select the "Add" button.
|
|
|
|
To enable Product-Based Group Security ("usebuggroupsentry"):
|
|
|
|
Warning
|
|
|
|
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.
|
|
|
|
1. Turn "On" "usebuggroups" and "usebuggroupsentry" in the "Edit
|
|
Parameters" screen.
|
|
|
|
Warning
|
|
"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 administrative account usage to administrative duties
|
|
only. In other words, manage bugs with an unpriveleged user account,
|
|
and manage users, groups, Products, etc. with the administrative
|
|
account.
|
|
2. 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.
|
|
_________________________________________________________________
|
|
|
|
3.4. Bugzilla Security
|
|
|
|
|
|
|
|
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.
|
|
|
|
Note: Poorly-configured MySQL, Bugzilla, and FTP 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.
|
|
|
|
First thing's first: Secure your installation.
|
|
|
|
Note: These instructions must, of necessity, be somewhat vague
|
|
since Bugzilla runs on so many different platforms. If you have
|
|
refinements of these directions for specific platforms, please
|
|
submit them to mozilla-webtools@mozilla.org
|
|
|
|
1. 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.
|
|
2. There is no substitute for understanding the tools on your system!
|
|
Read The MySQL Privelege System until you can recite it from
|
|
memory!
|
|
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 : )
|
|
3. Lock down /etc/inetd.conf. Heck, disable inet entirely on this
|
|
box. It should only listen to port 25 for Sendmail and port 80 for
|
|
Apache.
|
|
4. Do not run Apache as "nobody". This will require very lax
|
|
permissions in your Bugzilla directories. Run it, instead, as a
|
|
user with a name, set via your httpd.conf file.
|
|
5. 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.
|
|
|
|
Note: 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.
|
|
If you are using a web server that does not support the .htaccess
|
|
control method, you are at risk! After installing, check to see if
|
|
you can view the file "localconfig" in your web browser (ergo:
|
|
http://bugzilla.mozilla.org/localconfig. 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.
|
|
On Apache, you can use .htaccess files to protect access to these
|
|
directories, as outlined in Bug 57161 for the localconfig file,
|
|
and Bug 65572 for adequate protection in your data/ and shadow/
|
|
directories.
|
|
Note the instructions which follow are Apache-specific. If you use
|
|
IIS, Netscape, or other non-Apache web servers, please consult
|
|
your system documentation for how to secure these files from being
|
|
transmitted to curious users.
|
|
Place the following text into a file named ".htaccess", readable
|
|
by your web server, in your $BUGZILLA_HOME/data directory.
|
|
<Files comments>
|
|
allow from all
|
|
</Files>
|
|
deny from all
|
|
|
|
Place the following text into a file named ".htaccess", readable
|
|
by your web server, in your $BUGZILLA_HOME/ directory.
|
|
<Files localconfig>
|
|
deny from all
|
|
</Files>
|
|
allow from all
|
|
|
|
Place the following text into a file named ".htaccess", readable
|
|
by your web server, in your $BUGZILLA_HOME/shadow directory.
|
|
deny from all
|
|
_________________________________________________________________
|
|
|
|
Chapter 4. Using Bugzilla
|
|
|
|
|
|
|
|
What, Why, How, & What's in it for me?
|
|
_________________________________________________________________
|
|
|
|
4.1. What is Bugzilla?
|
|
|
|
Bugzilla is one example of a class of programs called "Defect Tracking
|
|
Systems", or, more commonly, "Bug-Tracking Systems". Defect Tracking
|
|
Systems allow individual or groups of developers to keep track of
|
|
outstanding bugs in their product effectively. Bugzilla was originally
|
|
written by Terry Weissman in a programming language called "TCL", to
|
|
replace a crappy bug-tracking database used internally for Netscape
|
|
Communications. Terry later ported Bugzilla to Perl from TCL, and in
|
|
Perl it remains to this day. Most commercial defect-tracking software
|
|
vendors at the time charged enormous licensing fees, and Bugzilla
|
|
quickly became a favorite of the open-source crowd (with its genesis
|
|
in the open-source browser project, Mozilla). It is now the de-facto
|
|
standard defect-tracking system against which all others are measured.
|
|
|
|
Bugzilla has matured immensely, and now boasts many advanced features.
|
|
These include:
|
|
|
|
* integrated, product-based granular security schema
|
|
* inter-bug dependencies and dependency graphing
|
|
* advanced reporting capabilities
|
|
* a robust, stable RDBMS back-end
|
|
* extensive configurability
|
|
* a very well-understood and well-thought-out natural bug resolution
|
|
protocol
|
|
* email, XML, and HTTP APIs
|
|
* available integration with automated software configuration
|
|
management systems, including Perforce and CVS.
|
|
* too many more features to list
|
|
|
|
Despite its current robustness and popularity, however, Bugzilla faces
|
|
some near-term challenges, such as reliance on a single database, a
|
|
lack of abstraction of the user interface and program logic, verbose
|
|
email bug notifications, a powerful but daunting query interface,
|
|
little reporting configurability, problems with extremely large
|
|
queries, some unsupportable bug resolution options, no
|
|
internationalization, and dependence on some nonstandard libraries.
|
|
|
|
Some recent headway has been made on the query front, however. If you
|
|
are using the latest version of Bugzilla, you should see a "simple
|
|
search" form on the default front page of your Bugzilla install. Type
|
|
in two or three search terms and you should pull up some relevant
|
|
information. This is also available as "queryhelp.cgi".
|
|
|
|
Despite these small problems, Bugzilla is very hard to beat. It is
|
|
under very active development to address the current issues, and a
|
|
long-awaited overhaul in the form of Bugzilla 3.0 is expected sometime
|
|
later this year.
|
|
_________________________________________________________________
|
|
|
|
4.2. Why Should We Use Bugzilla?
|
|
|
|
|
|
|
|
No, Who's on first...
|
|
|
|
For many years, defect-tracking software has remained principally the
|
|
domain of large software development houses. Even then, most shops
|
|
never bothered with bug-tracking software, and instead simply relied
|
|
on shared lists and email to monitor the status of defects. This
|
|
procedure is error-prone and tends to cause those bugs judged least
|
|
significant by developers to be dropped or ignored
|
|
|
|
These days, many companies are finding that integrated defect-tracking
|
|
systems reduce downtime, increase productivity, and raise customer
|
|
satisfaction with their systems. Along with full disclosure, an open
|
|
bug-tracker allows manufacturers to keep in touch with their clients
|
|
and resellers, to communicate about problems effectively throughout
|
|
the data management chain. Many corporations have also discovered that
|
|
defect-tracking helps reduce costs by providing IT support
|
|
accountability, telephone support knowledge bases, and a common,
|
|
well-understood system for accounting for unusual system or software
|
|
issues.
|
|
|
|
But why should you use Bugzilla?
|
|
|
|
Bugzilla is very adaptable to various situations. Known uses currently
|
|
include IT support queues, Systems Administration deployment
|
|
management, chip design and development problem tracking (both
|
|
pre-and-post fabrication), and software and hardware bug tracking for
|
|
luminaries such as Redhat, Loki software, Linux-Mandrake, and VA
|
|
Systems. Combined with systems such as CVS, Bonsai, or Perforce SCM,
|
|
Bugzilla provides a powerful, easy-to-use solution to configuration
|
|
management and replication problems
|
|
|
|
Bugzilla can dramatically increase the productivity and accountability
|
|
of individual employees by providing a documented workflow and
|
|
positive feedback for good performance. How many times do you wake up
|
|
in the morning, remembering that you were supposed to do *something*
|
|
today, but you just can't quite remember? Put it in Bugzilla, and you
|
|
have a record of it from which you can extrapolate milestones, predict
|
|
product versions for integration, and by using Bugzilla's e-mail
|
|
integration features be able to follow the discussion trail that led
|
|
to critical decisions.
|
|
|
|
Ultimately, Bugzilla puts the power in your hands to improve your
|
|
value to your employer or business while providing a usable framework
|
|
for your natural attention to detail and knowledge store to flourish.
|
|
_________________________________________________________________
|
|
|
|
4.3. How do I use Bugzilla?
|
|
|
|
|
|
|
|
Hey! I'm Woody! Howdy, Howdy, Howdy!
|
|
|
|
Bugzilla is a large, complex system. Describing how to use it requires
|
|
some time. If you are only interested in installing or administering a
|
|
Bugzilla installation, please consult the Installing and Administering
|
|
Bugzilla portions of this Guide. This section is principally aimed
|
|
towards developing end-user mastery of Bugzilla, so you may fully
|
|
enjoy the benefits afforded by using this reliable open-source
|
|
bug-tracking software.
|
|
|
|
Throughout this portion of the Guide, we will refer to user account
|
|
options available at the Bugzilla test installation,
|
|
landfill.tequilarista.org.
|
|
|
|
Note: Some people have run into difficulties completing this
|
|
tutorial. If you run into problems, please check the updated,
|
|
online documentation available at
|
|
http://www.trilobyte.net/barnsons. If you're still stumped, please
|
|
subscribe to the newsgroup and provide details of exactly what's
|
|
stumping you! If enough people complain, I'll have to fix it in the
|
|
next version of this Guide. You can subscribe to the newsgroup at
|
|
news://news.mozilla.org/netscape.public.mozilla.webtools
|
|
|
|
Although Landfill serves as a great introduction to Bugzilla, it does
|
|
not offer all the options you would have as a user on your own
|
|
installation of Bugzilla, nor can it do more than serve as a general
|
|
introduction to Bugzilla. Additionally, Landfill often runs
|
|
cutting-edge versions of Bugzilla for testing, so some things may work
|
|
slightly differently than mentioned here.
|
|
_________________________________________________________________
|
|
|
|
4.3.1. Create a Bugzilla Account
|
|
|
|
First thing's first! If you want to use Bugzilla, first you need to
|
|
create an account. Consult with the administrator responsible for your
|
|
installation of Bugzilla for the URL you should use to access it. If
|
|
you're test-driving the end-user Bugzilla experience, use this URL:
|
|
http://landfill.tequilarista.org/mozilla/bugzilla/
|
|
|
|
1. Click the "Open a new Bugzilla account" link.
|
|
2. Enter your "E-mail address" and "Real Name" (or whatever name you
|
|
want to call yourself) in the spaces provided, then select the
|
|
"Create Account" button.
|
|
3. Within 5-10 minutes, you should receive an email to the address
|
|
you provided above, which contains your login name (generally the
|
|
same as the email address), and a password you can use to access
|
|
your account. This password is randomly generated, and should be
|
|
changed at your nearest opportunity (we'll go into how to do it
|
|
later).
|
|
4. Click the "Log In" link in the yellow area at the bottom of the
|
|
page in your browser, then enter your "E-mail address" and
|
|
"Password" you just received into the spaces provided, and select
|
|
"Login".
|
|
|
|
Note: If you ever forget your password, you can come back to this
|
|
page, enter your "E-mail address", then select the "E-mail me a
|
|
password" button to have your password mailed to you again so that
|
|
you can login.
|
|
|
|
Caution
|
|
Many modern browsers include an "Auto-Complete" or "Form Fill" feature
|
|
to remember the user names and passwords you type in at many sites.
|
|
Unfortunately, sometimes they attempt to "guess" what you will put in
|
|
as your password, and guess wrong. If you notice a text box is already
|
|
filled out, please overwrite the contents of the text box so you can
|
|
be sure to input the correct information.
|
|
|
|
Congratulations! If you followed these directions, you now are the
|
|
proud owner of a user account on landfill.tequilarista.org (Landfill)
|
|
or your local Bugzilla install. You should now see in your browser a
|
|
page called the "Bugzilla Query Page". It may look daunting, but with
|
|
this Guide to walk you through it, you will master it in no time.
|
|
_________________________________________________________________
|
|
|
|
4.3.2. The Bugzilla Query Page
|
|
|
|
The Bugzilla Query Page is the heart and soul of Bugzilla. It is the
|
|
master interface where you can find any bug report, comment, or patch
|
|
currently in the Bugzilla system. We'll go into how to create your own
|
|
bug report later on.
|
|
|
|
There are efforts underway to simplify query usage. If you have a
|
|
local installation of Bugzilla 2.12 or higher, you should have
|
|
"quicksearch.html" available to use and simplify your searches. There
|
|
is also, or shortly will be, a helper for the query interface, called
|
|
"queryhelp.cgi". Landfill tends to run the latest code, so these two
|
|
utilities should be available there for your perusal.
|
|
|
|
At this point, please visit the main Bugzilla site,
|
|
bugzilla.mozilla.org, to see a more fleshed-out query page.
|
|
|
|
The first thing you need to notice about the Bugzilla Query Page is
|
|
that nearly every box you see on your screen has a hyperlink nearby,
|
|
explaining what it is or what it does. Near the upper-left-hand corner
|
|
of your browser window you should see the word "Status" underlined.
|
|
Select it.
|
|
|
|
Notice the page that popped up? Every underlined word you see on your
|
|
screen is a hyperlink that will take you to context-sensitive help.
|
|
Click around for a while, and learn what everything here does. To
|
|
return to the query interface after pulling up a help page, use the
|
|
"Back" button in your browser.
|
|
|
|
I'm sure that after checking out the online help, you are now an
|
|
Expert on the Bugzilla Query Page. If, however, you feel you haven't
|
|
mastered it yet, let me walk you through making a few successful
|
|
queries to find out what there are in the Bugzilla bug-tracking system
|
|
itself.
|
|
|
|
1. Ensure you are back on the "Bugzilla Query Page" Do nothing in the
|
|
boxes marked "Status", "Resolution", "Platform", "OpSys",
|
|
"Priority", or "Severity". The default query for "Status" is to
|
|
find all bugs that are NEW, ASSIGNED, or REOPENED, which is what
|
|
we want. If you don't select anything in the other 5 scrollboxes
|
|
there, then you are saying that "any of these are OK"; we're not
|
|
locking ourselves into only finding bugs on the "DEC" Platform, or
|
|
"Windows 95" OpSys (Operating System). You're smart, I think you
|
|
have it figured out.
|
|
Basically, selecting anything on the query page narrows your
|
|
search down. Leaving stuff unselected, or text boxes unfilled,
|
|
broadens your search!
|
|
2. You see the box immediately below the top six boxes that contains
|
|
an "Email" text box, with the words "matching as", a drop-down
|
|
selection box, then some checkboxes with "Assigned To" checked by
|
|
default? This allows you to filter your search down based upon
|
|
email address. Let's put my email address in there, and see what
|
|
happens.
|
|
Type "barnboy@trilobyte.net" in the top Email text box.
|
|
3. Let's narrow the search some more. Scroll down until you find the
|
|
box with the word "Program" over the top of it. This is where we
|
|
can narrow our search down to only specific products (software
|
|
programs or product lines) in our Bugzilla database. Please notice
|
|
the box is a scrollbox. Using the down arrow on the scrollbox,
|
|
scroll down until you can see an entry called "Webtools". Select
|
|
this entry.
|
|
4. Did you notice that some of the boxes to the right changed when
|
|
you selected "Webtools"? Every Program (or Product) has different
|
|
Versions, Components, and Target Milestones associated with it. A
|
|
"Version" is the number of a software program.
|
|
Example 4-1. Some Famous Software Versions
|
|
Do you remember the hype in 1995 when Microsoft Windows 95(r) was
|
|
released? It may have been several years ago, but Microsoft(tm)
|
|
spent over $300 Million advertising this new Version of their
|
|
software. Three years later, they released Microsoft Windows
|
|
98(r), another new version, to great fanfare, and then in 2000
|
|
quietly released Microsoft Windows ME(Millenium Edition)(r).
|
|
Software "Versions" help a manufacturer differentiate their
|
|
current product from their previous products. Most do not identify
|
|
their products by the year they were released. Instead, the
|
|
"original" version of their software will often be numbered "1.0",
|
|
with small bug-fix releases on subsequent tenths of a digit. In
|
|
most cases, it's not a decimal number; for instance, often 1.9 is
|
|
an older version of the software than 1.11, but is a newer version
|
|
than 1.1.1.
|
|
In general, a "Version" in Bugzilla should refer to released
|
|
products, not products that have not yet been released to the
|
|
public. Forthcoming products are what the Target Milestone field
|
|
is for.
|
|
A "Component" is a piece of a Product. It may be a standalone
|
|
program, or some other logical division of a Product or Program.
|
|
Normally, a Component has a single Owner, who is responsible for
|
|
overseeing efforts to improve that Component.
|
|
Example 4-2. Mozilla Webtools Components
|
|
Mozilla's "Webtools" Product is composed of several pieces
|
|
(Components):
|
|
|
|
Bonsai, a tool to show recent changes to Mozilla
|
|
Bugzilla, a defect-tracking tool
|
|
Build, a tool to automatically compile source code into
|
|
machine-readable form
|
|
Despot, a program that controls access to the other Webtools
|
|
LXR, a utility that automatically marks up text files to make them
|
|
more readable
|
|
MozBot, a "robot" that announces changes to Mozilla in Chat
|
|
TestManager, a tool to help find bugs in Mozilla
|
|
Tinderbox, which displays reports from Build
|
|
A different person is responsible for each of these Components.
|
|
Tara Hernandez keeps the "Bugzilla" component up-to-date.
|
|
A "Milestone", or "Target Milestone" is a often a planned future
|
|
"Version" of a product. In many cases, though, Milestones simply
|
|
represent significant dates for a developer. Having certain
|
|
features in your Product is frequently tied to revenue (money) the
|
|
developer will receive if the features work by the time she
|
|
reaches the Target Milestone. Target Milestones are a great tool
|
|
to organize your time. If someone will pay you $100,000 for
|
|
incorporating certain features by a certain date, those features
|
|
by that Milestone date become a very high priority. Milestones
|
|
tend to be highly malleable creatures, though, that appear to be
|
|
in reach but are out of reach by the time the important day
|
|
arrives.
|
|
The Bugzilla Project has set up Milestones for future Bugzilla
|
|
versions 2.14, 2.16, 2.18, 3.0, etc. However, a Target Milestone
|
|
can just as easily be a specific date, code name, or weird
|
|
alphanumeric combination, like "M19".
|
|
5. OK, now let's select the "Bugzilla" component from its scrollbox.
|
|
6. Skip down the page a bit -- do you see the "submit query" button?
|
|
Select it, and let's run this query!
|
|
7. Congratulations! You've completed your first Query, and have
|
|
before you the Bug List of the author of this Guide, Matthew P.
|
|
Barnson (barnboy@trilobyte.net). If I'm doing well, you'll have a
|
|
cryptic "Zarro Boogs Found" message on your screen. It is just a
|
|
happy hacker's way of saying "Zero Bugs Found". However, I am
|
|
fairly certain I will always have some bugs assigned to me that
|
|
aren't done yet, so you won't often see that message!
|
|
|
|
I encourage you to click the bug numbers in the left-hand column and
|
|
examine my bugs. Also notice that if you click the underlined links
|
|
near the top of this page, they do not take you to context-sensitive
|
|
help here, but instead sort the columns of bugs on the screen! When
|
|
you need to sort your bugs by priority, severity, or the people they
|
|
are assigned to, this is a tremendous timesaver.
|
|
|
|
A couple more interesting things about the Bug List page:
|
|
|
|
Change Columns: by selecting this link, you can show all kinds of
|
|
information in the Bug List
|
|
Change several bugs at once: If you have sufficient rights to change
|
|
all the bugs shown in the Bug List, you can mass-modify them. This is
|
|
a big time-saver.
|
|
Send mail to bug owners: If you have many related bugs, you can
|
|
request an update from every person who owns the bugs in the Bug List
|
|
asking them the status.
|
|
Edit this query: If you didn't get exactly the results you were
|
|
looking for, you can return to the Query page through this link and
|
|
make small revisions to the query you just made so you get more
|
|
accurate results.
|
|
|
|
Note: There are many more options to the Bugzilla Query Page and
|
|
the Bug List than I have shown you. But this should be enough for
|
|
you to learn to get around. I encourage you to check out the
|
|
Bugzilla Home Page to learn about the Anatomy and Life Cycle of a
|
|
Bug before continuing.
|
|
_________________________________________________________________
|
|
|
|
4.3.3. Creating and Managing Bug Reports
|
|
|
|
|
|
|
|
And all this time, I thought we were taking bugs out...
|
|
_________________________________________________________________
|
|
|
|
4.3.3.1. Writing a Great Bug Report
|
|
|
|
Before we plunge into writing your first bug report, I encourage you
|
|
to read Mozilla.org's Bug Writing Guidelines. 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 the failure go a long
|
|
way toward ensuring accurate, responsible fixes for the bug that bit
|
|
you.
|
|
|
|
While you are at it, why not learn how to find previously reported
|
|
bugs? Mozilla.org has published a great tutorial on finding duplicate
|
|
bugs, available at
|
|
http://www.mozilla.org/quality/help/beginning-duplicate-finding.html.
|
|
|
|
I realize this was a lot to read. However, understanding the mentality
|
|
of writing great bug reports will help us on the next part!
|
|
|
|
1. Go back to http://landfill.tequilarista.org/mozilla/bugzilla/ in
|
|
your browser.
|
|
2. Select the Enter a new bug report link.
|
|
3. Select a product.
|
|
4. Now you should be at the "Enter Bug" form. The "reporter" should
|
|
have been automatically filled out for you (or else Bugzilla
|
|
prompted you to Log In again -- you did keep the email with your
|
|
username and password, didn't you?).
|
|
5. Select a Component in the scrollbox.
|
|
6. Bugzilla should have made reasonable guesses, based upon your
|
|
browser, for the "Platform" and "OS" drop-down boxes. If those are
|
|
wrong, change them -- if you're on an SGI box running IRIX, we
|
|
want to know!
|
|
7. Fill in the "Assigned To" box with the email address you provided
|
|
earlier. This way you don't end up sending copies of your bug to
|
|
lots of other people, since it's just a test bug.
|
|
8. Leave the "CC" text box blank. Fill in the "URL" box with
|
|
"http://www.mozilla.org".
|
|
9. Enter "The Bugzilla Guide" in the Summary text box, and place any
|
|
comments you have on this tutorial, or the Guide in general, into
|
|
the Description box.
|
|
|
|
Voila! Select "Commit" and send in your bug report! Next we'll look at
|
|
resolving bugs.
|
|
_________________________________________________________________
|
|
|
|
4.3.3.2. Managing your Bug Reports
|
|
|
|
OK, you should have a link to the bug you just created near the top of
|
|
your page. It should say "Bug XXXX posted", with a link to the right
|
|
saying "Back to BUG# XXXX". Select this link.
|
|
|
|
1. Scroll down a bit on the subsequent page, until you see the
|
|
"Resolve bug, changing resolution to (dropdown box). Normally, you
|
|
would "Accept bug (change status to ASSIGNED)", fix it, and then
|
|
resolve. But in this case, we're going to short-circuit the
|
|
process because this wasn't a real bug. Change the dropdown next
|
|
to "Resolve Bug" to "INVALID", make sure the radio button is
|
|
marked next to "Resolve Bug", then click "Commit".
|
|
2. Hey! It said it couldn't take the change in a big red box! That's
|
|
right, you must specify a Comment in order to make this change.
|
|
Select the "Back" button in your browser, add a Comment, then try
|
|
Resolving the bug with INVALID status again. This time it should
|
|
work.
|
|
|
|
You have now learned the basics of Bugzilla navigation, entering a
|
|
bug, and bug maintenance. I encourage you to explore these features,
|
|
and see what you can do with them! We'll spend no more time on
|
|
individual Bugs or Queries from this point on, so you are on your own
|
|
there.
|
|
|
|
But I'll give a few last hints!
|
|
|
|
There is a CLUE on the Query page that will teach you more how to use
|
|
the form.
|
|
|
|
If you click the hyperlink on the Component box of the Query page, you
|
|
will be presented a form that will describe what all the components
|
|
are.
|
|
|
|
Possibly the most powerful feature of the Query page is the Boolean
|
|
Chart section. It's a bit confusing to use the first time, but can
|
|
provide unparalleled flexibility in your queries, allowing you to
|
|
build extremely powerful requests.
|
|
|
|
Finally, you can build some nifty Reports using the "Bug Reports" link
|
|
near the bottom of the query page, and also available via the
|
|
"Reports" link at the footer of each page.
|
|
_________________________________________________________________
|
|
|
|
4.4. What's in it for me?
|
|
|
|
|
|
|
|
Indiana, it feels like we walking on fortune cookies!
|
|
|
|
These ain't fortune cookies, kid...
|
|
|
|
Customized User Preferences offer tremendous versatility to your
|
|
individual Bugzilla experience. Let's plunge into what you can do! The
|
|
first step is to click the "Edit prefs" link at the footer of each
|
|
page once you have logged in to Landfill.
|
|
_________________________________________________________________
|
|
|
|
4.4.1. Account Settings
|
|
|
|
On this page, you can change your basic Account Settings, including
|
|
your password and full name. For security reasons, in order to change
|
|
anything on this page you must type your current password into the
|
|
"Old Password" field. If you wish to change your password, type the
|
|
new password you want into the "New Password" field and again into the
|
|
"Re-enter new password" field to ensure you typed your new password
|
|
correctly. Select the "Submit" button and you're done!
|
|
_________________________________________________________________
|
|
|
|
4.4.2. Email Settings
|
|
|
|
4.4.2.1. Email Notification
|
|
|
|
Note: The email notification settings described below have been
|
|
obsoleted in Bugzilla 2.12, and this section will be replaced with
|
|
a comprehensive description of the amazing array of new options at
|
|
your disposal. However, in the meantime, throw this chunk out the
|
|
window and go crazy with goofing around with different notification
|
|
options.
|
|
|
|
Ahh, here you can reduce or increase the amount of email sent you from
|
|
Bugzilla! In the drop-down "Notify me of changes to", select one of
|
|
|
|
All qualifying bugs: sends you every change to every bug where your
|
|
name is somewhere on it, regardless of who changed it.
|
|
Only those bugs which I am listed in the CC line: prevents you from
|
|
receiving mail for which you are the reporter,' owner, or QA contact.
|
|
If you are on the CC list, presumably someone had a good reason for
|
|
you to get the email.
|
|
All qulifying bugs except those which I change: This is the default,
|
|
and a sensible setting. If someone else changes your bugs, you will
|
|
get emailed, but if you change bugs yourself you will receive no
|
|
notification of the change.
|
|
_________________________________________________________________
|
|
|
|
4.4.2.2. New Email Technology
|
|
|
|
Note: This option may not be available in all Bugzilla
|
|
installations, depending upon the preferences of the systems
|
|
administrator responsible for the setup of your Bugzilla. However,
|
|
if you really want this functionality, ask her to "enable
|
|
newemailtech in Params" and "make it the default for all new
|
|
users", referring her to the Administration section of this Guide.
|
|
|
|
Disregard the warnings about "experimental and bleeding edge"; the
|
|
code to handle email in a cleaner manner than that historically used
|
|
for Bugzilla is quite robust and well-tested now.
|
|
|
|
I recommend you enable the option, "Click here to sign up (and risk
|
|
any bugs)". Your email-box will thank you for it. The fundamental
|
|
shift in "newemailtech" is away from standard UNIX "diff" output,
|
|
which is quite ugly, to a prettier, better laid-out email.
|
|
_________________________________________________________________
|
|
|
|
4.4.2.3. "Watching" Users
|
|
|
|
Note: This option may not be available in all Bugzilla
|
|
installations, depending upon the preferences of the systems
|
|
administrator responsible for the setup of your Bugzilla. However,
|
|
if you really want this functionality, ask her to "enable watchers
|
|
in Params".
|
|
|
|
By entering user email names into the "Users to watch" text entry box,
|
|
delineated by commas, you can watch bugs of other users. 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. If any of these three
|
|
situations apply to you, you will undoubtedly find this feature quite
|
|
convenient.
|
|
_________________________________________________________________
|
|
|
|
4.4.3. Page Footer
|
|
|
|
Note: By default, this page is quite barren. However, go explore
|
|
the Query Page some more; you will find that you can store numerous
|
|
queries on the server, so if you regularly run a particular query
|
|
it is just a drop-down menu away. On this page of Preferences, if
|
|
you have many stored queries you can elect to have them always
|
|
one-click away!
|
|
|
|
If you have many stored queries on the server, here you will find
|
|
individual drop-downs for each stored query. Each drop-down gives you
|
|
the option of that query appearing on the footer of every page in
|
|
Bugzilla! This gives you powerful one-click access to any complex
|
|
searches you may set up, and is an excellent way to impress your
|
|
boss...
|
|
|
|
Tip: By default, the "My Bugs" link appears at the bottom of each
|
|
page. However, this query gives you both the bugs you have
|
|
reported, as well as those you are assigned. One of the most common
|
|
uses for this page is to remove the "My Bugs" link, replacing it
|
|
with two other queries, commonly called "My Bug Reports" and "My
|
|
Bugs" (but only referencing bugs assigned to you). This allows you
|
|
to distinguish those bugs you have reported from those you are
|
|
assigned. I commonly set up complex Boolean queries in the Query
|
|
page and link them to my footer in this page. When they are
|
|
significantly complex, a one-click reference can save hours of
|
|
work.
|
|
_________________________________________________________________
|
|
|
|
4.4.4. Permissions
|
|
|
|
This is a purely informative page which outlines your current
|
|
permissions on this installation of Bugzilla. If you have permissions
|
|
to grant certain permissions to other users, the "other users" link
|
|
appears on this page as well as the footer. For more information
|
|
regarding user administration, please consult the Administration
|
|
section of this Guide.
|
|
_________________________________________________________________
|
|
|
|
4.5. Using Bugzilla-Conclusion
|
|
|
|
Thank you for reading through this portion of the Bugzilla Guide. I
|
|
anticipate it may not yet meet the needs of all readers. If you have
|
|
additional comments or corrections to make, please submit your
|
|
contributions to the mozilla-webtools mailing list/newsgroup. The
|
|
mailing list is mirrored to the netscape.public.mozilla.webtools
|
|
newsgroup, and the newsgroup is mirrored to
|
|
mozilla-webtools@mozilla.org
|
|
_________________________________________________________________
|
|
|
|
Chapter 5. Integrating Bugzilla with Third-Party Tools
|
|
|
|
5.1. Bonsai
|
|
|
|
We need Bonsai integration information.
|
|
_________________________________________________________________
|
|
|
|
5.2. CVS
|
|
|
|
We need CVS integration information
|
|
_________________________________________________________________
|
|
|
|
5.3. Perforce SCM
|
|
|
|
Richard Brooksby created a Perforce integration tool for Bugzilla and
|
|
TeamTrack. You can find the main project page at
|
|
http://www.ravenbrook.com/project/p4dti. "p4dti" is now an officially
|
|
supported product from Perforce, and you can find the "Perforce Public
|
|
Depot" p4dti page at
|
|
http://public.perforce.com/public/perforce/p4dti/index.html.
|
|
|
|
Integration of Perforce with Bugzilla, once patches are applied, is
|
|
fairly seamless. However, p4dti is a patch against the Bugzilla 2.10
|
|
release, not the current 2.12 release. I anticipate patches for 2.12
|
|
will be out shortly. Check the project page regularly for updates, or
|
|
take the given patches and patch it manually. p4dti is designed to
|
|
support multiple defect trackers, and maintains its own documentation
|
|
for it. Please consult the pages linked above for further information.
|
|
|
|
Right now, there is no way to synchronize the Bug ID and the Perforce
|
|
Transaction Number, or to change the Bug ID to read (PRODUCT).bugID
|
|
unless you hack it in. Additionally, if you have synchronization
|
|
problems, the easiest way to avoid them is to only put the bug
|
|
information, comments, etc. into Bugzilla, and not into the Perforce
|
|
change records. They will link anyway; merely reference the bug ID
|
|
fixed in your change description, and put a comment into Bugzilla
|
|
giving the change ID that fixed the Bugzilla bug. It's a process
|
|
issue, not a technology question.
|
|
_________________________________________________________________
|
|
|
|
5.4. Tinderbox
|
|
|
|
We need Tinderbox integration information
|
|
_________________________________________________________________
|
|
|
|
Chapter 6. The Future of Bugzilla
|
|
|
|
Bugzilla's Future. Much of this is the present, now.
|
|
_________________________________________________________________
|
|
|
|
6.1. Reducing Spam
|
|
|
|
Those who use Bugzilla frequently are probably used to notification sp
|
|
am
|
|
- unwanted or unnecessary notifications. A number of proposals have
|
|
been put forward to attempt to reduce this.
|
|
1. Reduce CC Spam
|
|
Some of you probably know me as that guy who CCs on heaps and heaps of
|
|
bugs. Just as you get a lot of CC changes from me, so do I get a lot
|
|
from others. Why should CC changes send out email notifications?
|
|
It's not necessarily the best idea to just remove the CC spam, there a
|
|
re
|
|
other issues too, like the difficulty of adding to large CC fields.
|
|
For these reasons and more, an RFE for a per user "BCC" facility exist
|
|
s
|
|
that people could use to silently and privately track bugs, in a simil
|
|
ar
|
|
way to voting today, but applying to an unlimited number of bugs. See
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=7345".
|
|
2. Bulk Changes
|
|
You know the drill - a large milestone change, a component movement,
|
|
whatever, and lots of notifications are generated. If there's enough
|
|
maybe you'll just go delete, delete, delete, whoops, there goes anothe
|
|
r
|
|
notification that wasn't from the bulk change you missed.
|
|
Shouldn't bulk changes send out one notification? A proposal for this
|
|
is at "http://bugzilla.mozilla.org/show_bug.cgi?id=26943".
|
|
3. Configurable Notification Criteria
|
|
It would be good if you could choose what you want to receive. There
|
|
are two parts to this.
|
|
(a) Choose a selection of bugs you're interested in. This would be
|
|
similar to CC except you let the set be computed from selection criter
|
|
ia
|
|
rather than limited to the bugs your name is on. There is currently a
|
|
limited version of this in the bugzilla preferences, ie "all qualifyin
|
|
g
|
|
bugs"/"all qualifying bugs except the ones I change"/"only those bugs
|
|
which I am listed on the cc line".
|
|
(b) Choose what changes will trigger a notification for the bugs you a
|
|
re
|
|
watching. With this, you could choose whether you want to receive cc,
|
|
dependency and keyword changes, for example.
|
|
Both of these proposals live at
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=14137".
|
|
Note that they also live at
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=17464", and the change
|
|
has been checked in. This is fixed with Bugzilla 2.12 and is no longe
|
|
r
|
|
an issue. Woo-Hoo!
|
|
_________________________________________________________________
|
|
|
|
6.2. Better Searching
|
|
|
|
Current searching tools in Bugzilla include the querying mechanism,
|
|
special summary reports and dependency trees. This message is about n
|
|
ew
|
|
facilities.
|
|
1. General Summary Reports
|
|
For some time now it has been apparent to me that the query bug list
|
|
leaves a little to be desired in its linear nature. There is a need t
|
|
o
|
|
have categorised subsets, and counts of each category. If you don't
|
|
believe me, how about these facilities already in place or which peopl
|
|
e
|
|
have asked for:
|
|
Most Doomed Reports - Categorised On Assignee, Shows and Counts Number
|
|
of Bugs For Each Assignee
|
|
Bug #15806 (Most Voted For Bugs) - Categorised On Product, Shows Bugs
|
|
Voters Most Want Fixed
|
|
Bug #9789 (BugAThon Tracking Page) - Categorised On Developer (Subset)
|
|
,
|
|
Counts Number of Bugs
|
|
Bug #9409 and #9411 - The desire to be able to report on more subsets.
|
|
Hopefully you can see the gist of what is desired here. It's a genera
|
|
l
|
|
reporting mechanism.
|
|
This mechanism lets you choose the subset of bugs to operate on (like
|
|
query), let's you categorise them, possibly along with subcategories a
|
|
nd
|
|
counts the number of bugs within each category. It might or might not
|
|
show the actual bugs themselves, and it might limit the number of bugs
|
|
within a category, or categories to report on.
|
|
I'm further sure that many applications of this mechanism would only b
|
|
e
|
|
recognised once it was implemented.
|
|
The general summary reports bug is at
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=12282".
|
|
2. Related Bugs
|
|
It would be nice to have a field where you could enter other bugs
|
|
related to the current bug - it would be handy for navigation and
|
|
possibly even finding duplicates. See
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=12286".
|
|
3. Column Specification Support
|
|
Currently query seems to get what columns to report on from whatever t
|
|
he
|
|
user last used. This doesn't work well for "prepackaged queries", whe
|
|
re
|
|
you followed a link. You can probably add a column by specifying a so
|
|
rt
|
|
column, but this is difficult and suboptimal.
|
|
Furthermore, I find that when I want to add a column to a query, it's
|
|
usually a one off and I would prefer it to go away for the next query.
|
|
|
|
Hence, it would be nice to specify the columns that appear on the quer
|
|
y
|
|
(and general summary report) pages. The default query mechanism shoul
|
|
d
|
|
be able to let you specify your default columns.
|
|
This proposal lives at
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=12284".
|
|
_________________________________________________________________
|
|
|
|
6.3. Description Flags and Tracking Bugs
|
|
|
|
Since I last posted on this issue, we now have "keywords" that solve
|
|
many of the issues of description and status whiteboard keywords. We
|
|
have seen a migration towards keywords, but there is still further to
|
|
go.
|
|
Description ( + Status Whiteboard ) Keywords
|
|
--------------------------------------------
|
|
Some description keywords remain. I'd like to hear what reasons, othe
|
|
r
|
|
than time, there are for these staying as they are. I'm suspecting ma
|
|
ny
|
|
are not really being used. Hopefully we can totally remove these
|
|
eventually.
|
|
Tracking Bugs
|
|
-------------
|
|
When I suggested keywords, I did so to get rid of tracking bugs too,
|
|
though we've had less success on that front.
|
|
There are many disadvantages to tracking bugs.
|
|
- They can pollute bugs counts, and you must make sure you exclude
|
|
them. I believe the meta keyword might be used for this purpose.
|
|
- They have an assignee but there is nothing to fix, and that person c
|
|
an
|
|
get whined at by Bugzilla.
|
|
- It would be better to craft your own "dependency tree" rather than
|
|
rely on a fixed hierachy in the bug system.
|
|
- In creating a nice little hierachy, many bugs duplicate information
|
|
that should be available in other ways, eg
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=12833" which is
|
|
about beta 1 networking issues. These could fall behind the actual
|
|
data. What tracking bugs are good for, ad hoc lists, is what keywords
|
|
are better for.
|
|
- An automatically generated dependency structure between one "trackin
|
|
g
|
|
bug" and another would be better than a manual one, since it gives exa
|
|
ct
|
|
rather than manually set up classifications.
|
|
Probably the only feature preventing tracking bugs being replaced is t
|
|
he
|
|
dependency tree. The quintessential tracking bug seems to be bug #722
|
|
9
|
|
"chofmann's watch list", which probably has about a couple of hundred
|
|
bugs at various levels, which allows a nice visualisation.
|
|
Before keywords can replace tracking bugs better visualisation is goin
|
|
g
|
|
to be required. General summary reports and dependency forests of a b
|
|
ug
|
|
list ("http://bugzilla.mozilla.org/show_bug.cgi?id=12992") could both
|
|
help, but neither solves the problem totally. Perhaps keywords within
|
|
keywords would help here. In any case, I'm still thinking about this
|
|
one.
|
|
Some tracking bugs could definitely be turned into keywords immediatel
|
|
y
|
|
though, and I'll point the finger at
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=7954" here since that's
|
|
what came to mind first.
|
|
_________________________________________________________________
|
|
|
|
6.4. Bug Issues
|
|
|
|
1. Inline Bug Changes
|
|
Why do I see so many "moving to M5" and "reassigning to blahblah"
|
|
messages, and in other circumstances none are entered? Why aren't the
|
|
se
|
|
automatically generated? A comment should be only necessary when ther
|
|
e
|
|
is something to add, and if I'm not interested in this sort of
|
|
information, I should be able to hide it.
|
|
At the moment we're in a hybrid world where we don't get everything, b
|
|
ut
|
|
we can't get rid of the bug change "messages" either. Furthermore,
|
|
"View Bug Activity" requires me to manually cross reference events on
|
|
another page, rather than being able to visually see the chronological
|
|
order. Shouldn't I be able to see all the information on one page?
|
|
A proposal to allow bugs to be shown either way is at
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=11368".
|
|
2. Hard Wrapping Comments
|
|
One thing that annoys me is the fact that comments are "hard wrapped"
|
|
to
|
|
a certain column width. This is a mistake Internet Mail and News has
|
|
made, unlike every word processor in existence, and as a consequence,
|
|
Usenet suffers to this day from bad software. Why has Bugzilla repeat
|
|
ed
|
|
the problem?
|
|
Hard wrapping to a certain column width is open to abuse (see old
|
|
Mozilla browsers that didn't wrap properly, resulting in many ugly bug
|
|
reports we have to read to this day), and furthermore doesn't expand t
|
|
o
|
|
fill greater screen sizes. I'm also under the impression the current
|
|
hard wrap uses a non-standard HTML facility. See
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=11901".
|
|
3. REMIND and LATER Are Evil
|
|
I really hate REMIND and LATER. Not because they mean something
|
|
won't be implemented, but because they aren't the best solutions.
|
|
Why are they bad? Well, basically because they are not resolved, yet
|
|
they are marked as such. Hence queries have to be well crafted to
|
|
include them.
|
|
LATER, according to Bugzilla, means it won't be done this release.
|
|
There is a better mechanism of doing this, that is assigning to
|
|
nobody@mozilla.org and making the milestone blank. It's more likely t
|
|
o
|
|
appear in a casual query, and it doesn't resolve the bug.
|
|
REMIND, according to Bugzilla, means it might still be implemented thi
|
|
s
|
|
release. Well, why not just move it to a later milestone then? You'r
|
|
e
|
|
a lot less likely to forget it. If it's really needed, a keyword woul
|
|
d
|
|
be better.
|
|
Some people can't use blank milestones to mean an untargetted mileston
|
|
e,
|
|
since they use this to assess new bugs that have no target. Hence, it
|
|
would be nice to distinguish between bugs that have not yet been
|
|
considered, and those that really are not assigned to any milestone in
|
|
the future (assumedly beyond).
|
|
All this is covered at
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=13534".
|
|
4. Create An Enhancement Field
|
|
Currently enhancement is an option in severity. This means that
|
|
important enhancements (like for example, POP3 support) are not proper
|
|
ly
|
|
distinguished as such, because they need a proper severity. This
|
|
dilutes the meaning of enhancement.
|
|
If enhancement was separated, we could properly see what was an
|
|
enhancement. See "http://bugzilla.mozilla.org/show_bug.cgi?id=9412".
|
|
I
|
|
see keywords like [RFE] and [FEATURE] that seem to be compensating for
|
|
this problem.
|
|
_________________________________________________________________
|
|
|
|
6.5. Database Integrity
|
|
|
|
Bugzilla could be more proactive in detecting suboptimal situations an
|
|
d
|
|
prevent them or whine about them.
|
|
1. Bugzilla Crime #1: Marking A Bug Fixed With Unresolved Dependencies
|
|
It can't be marked fixed with unresolved dependencies. Either mark it
|
|
INVALID (tracking bugs), fix the dependencies at the same time, or
|
|
resolve the blockers.
|
|
See "http://bugzilla.mozilla.org/show_bug.cgi?id=24496".
|
|
2. Keyword Restrictions
|
|
Some keywords should only apply in certain circumstances, eg beta1 =>
|
|
Milestone <
|
|
M14, css1 => Component = Style System are possibilities. See
|
|
"http://bugzilla.mozilla.org/show_bug.cgi?id=26940".
|
|
3. Whine About Old Votes
|
|
Old votes can just sit on resolved bugs. This is problematic with
|
|
duplicates especially. Automatic transferral/removal is not
|
|
appropriate since bugs can be reopened, but a whining solution might
|
|
work. See "http://bugzilla.mozilla.org/show_bug.cgi?id=27553".
|
|
4. Whine And Warn About Milestone Mismatches
|
|
Here's a fun one. Bug X (M17) depends on Bug Y (M15). Bug Y gets mov
|
|
ed
|
|
out to M19. The notification to the assignee of Bug X gets ignored (o
|
|
f
|
|
course) and Bug X is now due to be fixed before one of its blockers.
|
|
Warnings about this when it is detected as well as whining about it in
|
|
email would help bring these issues to the attention of people sooner.
|
|
Note that this would be less of a problem if we didn't have so many
|
|
tracking bugs since they aren't updated that often and often have this
|
|
problem.
|
|
See "http://bugzilla.mozilla.org/show_bug.cgi?id=16743".
|
|
_________________________________________________________________
|
|
|
|
6.6. Bugzilla 3.0
|
|
|
|
One day, Bugzilla 3.0 will have lots of cool stuff.
|
|
_________________________________________________________________
|
|
|
|
Appendix A. The Bugzilla FAQ
|
|
|
|
1. General Questions
|
|
|
|
A.1.1. Where can I find information about Bugzilla?
|
|
A.1.2. What license is Bugzilla distributed under?
|
|
A.1.3. How do I get commercial support for Bugzilla?
|
|
A.1.4. What major companies or projects are currently using
|
|
Bugzilla for bug-tracking?
|
|
|
|
A.1.5. Who maintains Bugzilla?
|
|
A.1.6. How does Bugzilla stack up against other bug-tracking
|
|
databases?
|
|
|
|
A.1.7. How do I change my user name in Bugzilla?
|
|
A.1.8. Why doesn't Bugzilla offer this or that feature or
|
|
compatability with this other tracking software?
|
|
|
|
A.1.9. Why MySQL? I'm interested in seeing Bugzilla run on
|
|
Oracle/Sybase/Msql/PostgreSQL/MSSQL?
|
|
|
|
A.1.10. Why do the scripts say "/usr/bonsaitools/bin/perl"
|
|
instead of "/usr/bin/perl" or something else?
|
|
|
|
2. Red Hat Bugzilla
|
|
|
|
A.2.1. What about Red Hat Bugzilla?
|
|
A.2.2. What are the primary benefits of Red Hat Bugzilla?
|
|
A.2.3. What's the current status of Red Hat Bugzilla?
|
|
|
|
3. Loki Bugzilla (AKA Fenris)
|
|
|
|
A.3.1. What about Loki Bugzilla?
|
|
A.3.2. Who maintains Fenris (Loki Bugzilla) now?
|
|
A.3.3.
|
|
|
|
4. Pointy-Haired-Boss Questions
|
|
|
|
A.4.1. Is Bugzilla web-based or do you have to have specific
|
|
software or specific operating system on your machine?
|
|
|
|
A.4.2. Has anyone you know of already done any Bugzilla
|
|
integration with Perforce (SCM software)?
|
|
|
|
A.4.3. Does Bugzilla allow the user to track multiple projects?
|
|
A.4.4. If I am on many projects, and search for all bugs assigned
|
|
to me, will Bugzilla list them for me and allow me to
|
|
sort by project, severity etc?
|
|
|
|
A.4.5. Does Bugzilla allow attachments (text, screenshots, urls
|
|
etc)? If yes, are there any that are NOT allowed?
|
|
|
|
A.4.6. Does Bugzilla allow us to define our own priorities and
|
|
levels? Do we have complete freedom to change the labels
|
|
of fields and format of them, and the choice of
|
|
acceptable values?
|
|
|
|
A.4.7. 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. How do I get a footer on static HTML
|
|
pages?
|
|
|
|
A.4.8. Does Bugzilla provide any reporting features, metrics,
|
|
graphs, etc? You know, the type of stuff that management
|
|
likes to see. :)
|
|
|
|
A.4.9. 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?
|
|
|
|
A.4.10. Can email notification be set up to send to multiple
|
|
people, some on the To List, CC List, BCC List etc?
|
|
|
|
A.4.11. If there is email notification, do users have to have any
|
|
particular type of email application?
|
|
|
|
A.4.12. 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.?
|
|
|
|
A.4.13. Does Bugzilla allow data to be imported and exported? If
|
|
I had outsiders write up a bug report using a MS Word bug
|
|
template, could that template be imported into "matching"
|
|
fields? If I wanted to take the results of a query and
|
|
export that data to MS Excel, could I do that?
|
|
|
|
A.4.14. Does Bugzilla allow fields to be added, changed or
|
|
deleted? If I want to customize the bug submission form
|
|
to meet our needs, can I do that using our terminology?
|
|
|
|
A.4.15. Has anyone converted Bugzilla to another language to be
|
|
used in other countries? Is it localizable?
|
|
|
|
A.4.16. Can a user create and save reports? Can they do this in
|
|
Word format? Excel format?
|
|
|
|
A.4.17. Can a user re-run a report with a new project, same
|
|
query?
|
|
|
|
A.4.18. Can a user modify an existing report and then save it
|
|
into another name?
|
|
|
|
A.4.19. Does Bugzilla have the ability to search by word, phrase,
|
|
compound search?
|
|
|
|
A.4.20. Can the admin person establish separate group and
|
|
individual user privileges?
|
|
|
|
A.4.21. Does Bugzilla provide record locking when there is
|
|
simultaneous access to the same bug? Does the second
|
|
person get a notice that the bug is in use or how are
|
|
they notified?
|
|
|
|
A.4.22. Are there any backup features provided?
|
|
A.4.23. Can users be on the system while a backup is in progress?
|
|
|
|
A.4.24. What type of human resources are needed to be on staff to
|
|
install and maintain Bugzilla? Specifically, what type of
|
|
skills does the person need to have? I need to find out
|
|
if we were to go with Bugzilla, what types of individuals
|
|
would we need to hire and how much would that cost vs
|
|
buying an "Out-of-the-Box" solution.
|
|
|
|
A.4.25. What time frame are we looking at if we decide to hire
|
|
people to install and maintain the Bugzilla? Is this
|
|
something that takes hours or weeks to install and a
|
|
couple of hours per week to maintain and customize or is
|
|
this a multi-week install process, plus a full time job
|
|
for 1 person, 2 people, etc?
|
|
|
|
A.4.26. Is there any licensing fee or other fees for using
|
|
Bugzilla? Any out-of-pocket cost other than the bodies
|
|
needed as identified above?
|
|
|
|
5. Bugzilla Installation
|
|
|
|
A.5.1. How do I download and install Bugzilla?
|
|
A.5.2. How do I install Bugzilla on Windows NT?
|
|
A.5.3. Is there an easy way to change the Bugzilla cookie name?
|
|
|
|
6. Bugzilla Security
|
|
|
|
A.6.1. How do I completely disable MySQL security if it's giving
|
|
me problems (I've followed the instructions in the
|
|
README!)?
|
|
|
|
A.6.2. Are there any security problems with Bugzilla?
|
|
A.6.3. I've implemented the security fixes mentioned in Chris
|
|
Yeh's security advisory of 5/10/2000 advising not to run
|
|
MySQL as root, and am running into problems with MySQL no
|
|
longer working correctly.
|
|
|
|
7. Bugzilla Email
|
|
|
|
A.7.1. I have a user who doesn't want to receive any more email
|
|
from Bugzilla. How do I stop it entirely for this user?
|
|
|
|
A.7.2. I'm evaluating/testing Bugzilla, and don't want it to send
|
|
email to anyone but me. How do I do it?
|
|
|
|
A.7.3. I want whineatnews.pl to whine at something more, or other
|
|
than, only new bugs. How do I do it?
|
|
|
|
A.7.4. I don't like/want to use Procmail to hand mail off to
|
|
bug_email.pl. What alternatives do I have?
|
|
|
|
A.7.5. How do I set up the email interface to submit/change bugs
|
|
via email?
|
|
|
|
A.7.6. Email takes FOREVER to reach me from bugzilla -- it's
|
|
extremely slow. What gives?
|
|
|
|
A.7.7. How come email never reaches me from bugzilla changes?
|
|
|
|
8. Bugzilla Database
|
|
|
|
A.8.1. I've heard Bugzilla can be used with Oracle?
|
|
A.8.2. Bugs are missing from queries, but exist in the database
|
|
(and I can pull them up by specifying the bug ID). What's
|
|
wrong?
|
|
|
|
A.8.3. I think my database might be corrupted, or contain invalid
|
|
entries. What do I do?
|
|
|
|
A.8.4. I want to manually edit some entries in my database. How?
|
|
A.8.5. I try to add myself as a user, but Bugzilla always tells
|
|
me my password is wrong.
|
|
|
|
A.8.6. I think I've set up MySQL permissions correctly, but
|
|
bugzilla still can't connect.
|
|
|
|
A.8.7. How do I synchronize bug information among multiple
|
|
different Bugzilla databases?
|
|
|
|
A.8.8. Why do I get bizarre errors when trying to submit data,
|
|
particularly problems with "groupset"?
|
|
|
|
A.8.9. How come even after I delete bugs, the long descriptions
|
|
show up?
|
|
|
|
9. Bugzilla and Win32
|
|
|
|
A.9.1. What is the easiest way to run Bugzilla on Win32
|
|
(Win98+/NT/2K)?
|
|
|
|
A.9.2. Is there a "Bundle::Bugzilla" equivalent for Win32?
|
|
A.9.3. CGI's are failing with a "something.cgi is not a valid
|
|
Windows NT application" error. Why?
|
|
|
|
A.9.4. Can I have some general instructions on how to make
|
|
Bugzilla on Win32 work?
|
|
|
|
A.9.5. I'm having trouble with the perl modules for NT not being
|
|
able to talk to to the database.
|
|
|
|
10. Bugzilla Usage
|
|
|
|
A.10.1. The query page is very confusing. Isn't there a simpler
|
|
way to query?
|
|
|
|
A.10.2. I'm confused by the behavior of the "accept" button in
|
|
the Show Bug form. Why doesn't it assign the bug to me
|
|
when I accept it?
|
|
|
|
A.10.3. I can't upload anything into the database via the "Create
|
|
Attachment" link. What am I doing wrong?
|
|
|
|
A.10.4. Email submissions to Bugzilla that have attachments end
|
|
up asking me to save it as a "cgi" file.
|
|
|
|
A.10.5. How do I change a keyword in Bugzilla, once some bugs are
|
|
using it?
|
|
|
|
11. Bugzilla Hacking
|
|
|
|
A.11.1. What bugs are in Bugzilla right now?
|
|
A.11.2. How can I change the default priority to a null value?
|
|
For instance, have the default priority be "---" instead
|
|
of "P2"?
|
|
|
|
A.11.3. What's the best way to submit patches? What guidelines
|
|
should I follow?
|
|
|
|
1. General Questions
|
|
|
|
A.1.1. Where can I find information about Bugzilla?
|
|
|
|
You can stay up-to-date with the latest Bugzilla information at
|
|
http://www.mozilla.org/projects/bugzilla/
|
|
|
|
A.1.2. What license is Bugzilla distributed under?
|
|
|
|
Bugzilla is covered by the Mozilla Public License. See details at
|
|
http://www.mozilla.org/MPL/
|
|
|
|
A.1.3. How do I get commercial support for Bugzilla?
|
|
|
|
www.collab.net offers Bugzilla as part of their standard offering to
|
|
large projects. They do have some minimum fees that are pretty hefty,
|
|
and generally aren't interested in small projects.
|
|
|
|
There are several experienced Bugzilla hackers on the mailing
|
|
list/newsgroup who are willing to whore themselves out for generous
|
|
compensation. Try sending a message to the mailing list asking for a
|
|
volunteer.
|
|
|
|
A.1.4. What major companies or projects are currently using Bugzilla
|
|
for bug-tracking?
|
|
|
|
There are dozens of major comapanies with public Bugzilla sites to
|
|
track bugs in their products. A few include:
|
|
|
|
Netscape/AOL
|
|
Mozilla.org
|
|
AtHome Corporation
|
|
Red Hat Software
|
|
Loki Entertainment Software
|
|
SuSe Corp
|
|
The Horde Project
|
|
The Eazel Project
|
|
AbiSource
|
|
Real Time Enterprises, Inc
|
|
Eggheads.org
|
|
Strata Software
|
|
RockLinux
|
|
Creative Labs (makers of SoundBlaster)
|
|
The Apache Foundation
|
|
The Gnome Foundation
|
|
Linux-Mandrake
|
|
|
|
Suffice to say, there are more than enough huge projects using
|
|
Bugzilla that we can safely say it's extremely popular.
|
|
|
|
A.1.5. Who maintains Bugzilla?
|
|
|
|
There are many, many contributors from around the world maintaining
|
|
Bugzilla. The designated "Maintainer" is Tara Hernandez, with QA
|
|
support by Matthew Tuck. Dan Mosedale and Dawn Endico are employees of
|
|
Mozilla.org responsible for the installation of Bugzilla there, and
|
|
are very frequent code contributors. Terry Weissman originally ported
|
|
Bugzilla, but "these days, Terry just hangs around and heckles." The
|
|
rest of us are mostly transient developers; Bugzilla suits our needs,
|
|
and we contribute code as we have needs for updates.
|
|
|
|
A.1.6. How does Bugzilla stack up against other bug-tracking
|
|
databases?
|
|
|
|
A year has gone by, and I still can't find any head-to-head
|
|
comparisons of Bugzilla against other defect-tracking software.
|
|
However, from my personal experience with other bug-trackers, Bugzilla
|
|
offers superior performance on commodity hardware, better price
|
|
(free!), more developer- friendly features (such as stored queries,
|
|
email integration, and platform independence), improved scalability,
|
|
open source code, greater flexibility, and superior ease-of-use.
|
|
|
|
If you happen to be a commercial Bugzilla 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.
|
|
|
|
A.1.7. How do I change my user name in Bugzilla?
|
|
|
|
You can't. However, the administrative account can, by simply opening
|
|
your user account in editusers.cgi and changing the login name.
|
|
|
|
A.1.8. Why doesn't Bugzilla offer this or that feature or
|
|
compatability with this other tracking software?
|
|
|
|
It may be that the support has not been built yet, or that you have
|
|
not yet found it. Bugzilla is making tremendous strides in usability,
|
|
customizability, scalability, and user interface. It is widely
|
|
considered the most complete and popular open-source bug-tracking
|
|
software in existence.
|
|
|
|
That doesn't mean it can't use improvement! You can help the project
|
|
along by either hacking a patch yourself that supports the
|
|
functionality you require, or else submitting a "Request for
|
|
Enhancement" (RFE) using the bug submission interface at
|
|
bugzilla.mozilla.org.
|
|
|
|
A.1.9. Why MySQL? I'm interested in seeing Bugzilla run on
|
|
Oracle/Sybase/Msql/PostgreSQL/MSSQL?
|
|
|
|
Terry Weissman answers,
|
|
|
|
You're not the only one. But I am not very interested. I'm not a
|
|
real SQL or database person. I just wanted to make a useful tool,
|
|
and build it on top of free software. So, I picked MySQL, and
|
|
learned SQL by staring at the MySQL manual and some code lying
|
|
around here, and wrote Bugzilla. I didn't know that Enum's were
|
|
non-standard SQL. I'm not sure if I would have cared, but I didn't
|
|
even know. So, to me, things are "portable" because it uses MySQL,
|
|
and MySQL is portable enough. I fully understand (now) that people
|
|
want to be portable to other databases, but that's never been a
|
|
real concern of mine.
|
|
|
|
Things aren't quite that grim these days, however. Terry pretty much
|
|
sums up much of the thinking many of us have for Bugzilla, but there
|
|
is light on the horizon for database-independence! Here are some
|
|
options:
|
|
|
|
Red Hat Bugzilla: Runs a modified Bugzilla 2.8 atop an Oracle
|
|
database.
|
|
Interzilla: A project to run Bugzilla on Interbase. No code released
|
|
yet, however.
|
|
Bugzilla 3.0: One of the primary stated goals is multiple database
|
|
support.
|
|
|
|
A.1.10. Why do the scripts say "/usr/bonsaitools/bin/perl" instead of
|
|
"/usr/bin/perl" or something else?
|
|
|
|
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.
|
|
|
|
Here's Terry Weissman's comment, for some historical context:
|
|
|
|
[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.
|
|
|
|
Note: 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 your
|
|
Bugzilla much easier in the future.
|
|
|
|
Obviously, if you do not have root access to your Bugzilla box, our
|
|
suggestion is irrelevant.
|
|
|
|
2. Red Hat Bugzilla
|
|
|
|
Note: This section is no longer up-to-date. Please see the section
|
|
on "Red Hat Bugzilla" under "Variants" in The Bugzilla Guide.
|
|
|
|
A.2.1. What about Red Hat Bugzilla?
|
|
|
|
Red Hat Bugzilla is arguably more user-friendly, customizable, and
|
|
scalable than stock Bugzilla. Check it out at
|
|
http://bugzilla.redhat.com and the sources at
|
|
ftp://people.redhat.com/dkl/. They've set their Bugzilla up to work
|
|
with Oracle out of the box. Note that Redhat Bugzilla is based upon
|
|
the 2.8 Bugzilla tree; Bugzilla has made some tremendous advances
|
|
since the 2.8 release. Why not download both Bugzillas to check out
|
|
the differences for yourself?
|
|
|
|
Dave Lawrence, the original Red Hat Bugzilla maintainer, mentions:
|
|
|
|
Somebody needs to take the ball and run with it. I'm the only
|
|
maintainer and am very pressed for time.
|
|
|
|
If you, or someone you know, has the time and expertise to do the
|
|
integration work so main-tree Bugzilla 2.12 and higher integrates the
|
|
Red Hat Bugzilla Oracle modifications, please donate your time to
|
|
supporting the Bugzilla project.
|
|
|
|
A.2.2. What are the primary benefits of Red Hat Bugzilla?
|
|
|
|
Dave Lawrence:
|
|
|
|
For the record, we are not using any template type implementation
|
|
for the cosmetic changes maded to Bugzilla. It is just alot of html
|
|
changes in the code itself. I admit I may have gotten a little
|
|
carried away with it but the corporate types asked for a more
|
|
standardized interface to match up with other projects relating to
|
|
Red Hat web sites. A lot of other web based internal tools I am
|
|
working on also look like Bugzilla.
|
|
|
|
I do want to land the changes that I have made to Bugzilla but I
|
|
may have to back out a good deal and make a different version of
|
|
Red Hat's Bugzilla for checking in to CVS. Especially the cosmetic
|
|
changes because it seems they may not fit the general public. I
|
|
will do that as soon as I can. I also still do my regular QA
|
|
responsibilities along with Bugzilla so time is difficult sometimes
|
|
to come by.
|
|
|
|
There are also a good deal of other changes that were requested by
|
|
management for things like support contracts and different
|
|
permission groups for making bugs private. Here is a short list of
|
|
the major changes that have been made:
|
|
|
|
1. No enum types. All old enum types are now separate smaller tables.
|
|
2. No bit wise operations. Not all databases support this so they
|
|
were changed to a more generic way of doing this task
|
|
3. Bug reports can only be altered by the reporter, assignee, or a
|
|
privileged bugzilla user. The rest of the world can see the bug
|
|
but in a non-changeable format (unless the bug has been marked
|
|
private). They can however add comments, add and remove themselves
|
|
from the CC list
|
|
4. Different group scheme. Each group has an id number related to it.
|
|
There is a user_group table which contains userid to groupid
|
|
mappings to determine which groups each user belongs to.
|
|
Additionally there is a bug_group table that has bugid to groupid
|
|
mappings to show which groups can see a particular bug. If there
|
|
are no entries for a bug in this table then the bug is public.
|
|
5. Product groups. product_table created to only allow certain
|
|
products to be visible for certain groups in both bug entry and
|
|
query. This was particulary helpful for support contracts.
|
|
6. Of course many (too many) changes to Bugzilla code itself to allow
|
|
use with Oracle and still allow operation with Mysql if so
|
|
desired. Currently if you use Mysql it is set to use Mysql's old
|
|
permission scheme to keep breakage to a minimum. Hopefully one day
|
|
this will standardize on one style which may of course be
|
|
something completely different.
|
|
7. Uses Text::Template perl module for rendering of the dynamic HTML
|
|
pages such as enter_bug.cgi, query.cgi, bug_form.pl, and for the
|
|
header and footer parts of the page. This allows the html to be
|
|
separate from the perl code for customizing the look and feel of
|
|
the page to one's preference.
|
|
8. There are many other smaller changes. There is also a port to
|
|
Oracle that I have been working on as time permits but is not
|
|
completely finished but somewhat usable. I will merge it into our
|
|
standard code base when it becomes production quality.
|
|
Unfortunately there will have to be some conditionals in the code
|
|
to make it work with other than Oracle due to some differences
|
|
between Oracle and Mysql.
|
|
|
|
Both the Mysql and Oracle versions of our current code base are
|
|
available from ftp://people.redhat.com/dkl. If Terry/Tara wants I
|
|
can submit patch files for all of the changes I have made and he
|
|
can determine what is suitable for addition to the main bugzilla
|
|
cade base. But for me to commit changes to the actual CVS I will
|
|
need to back out alot of things that are not suitable for the rest
|
|
of the Bugzilla community. I am open to suggestions.
|
|
|
|
A.2.3. What's the current status of Red Hat Bugzilla?
|
|
|
|
Note: This information is somewhat dated; I last updated it 7 June
|
|
2000. Please see the "Variants" section of "The Bugzilla Guide" for
|
|
more up-to-date information regarding Red Hat Bugzilla.
|
|
|
|
Dave Lawrence:
|
|
|
|
I suppose the current thread warrants an update on the status of
|
|
Oracle and bugzilla ;) We have now been running Bugzilla 2.8 on
|
|
Oracle for the last two days in our production environment. I tried
|
|
to do as much testing as possible with it before going live which
|
|
is some of the reason for the long delay. I did not get enough
|
|
feedback as I would have liked from internal developers to help
|
|
weed out any bugs still left so I said "Fine, i will take it live
|
|
and then I will get the feedback I want :)" So it is now starting
|
|
to stabilize and it running quite well after working feverishly the
|
|
last two days fixing problems as soon as they came in from the
|
|
outside world. The current branch in cvs is up2date if anyone would
|
|
like to grab it and try it out. The oracle _setup.pl is broken
|
|
right now due to some last minute changes but I will update that
|
|
soon. Therefore you would probably need to create the database
|
|
tables the old fashioned way using the supplied sql creation
|
|
scripts located in the ./oracle directory. We have heavy
|
|
optimizations in the database it self thanks to the in-house DBA
|
|
here at Red Hat so it is running quite fast. The database itself is
|
|
located on a dual PII450 with 1GB ram and 14 high voltage
|
|
differential raided scsi drives. The tables and indexes are
|
|
partitioned in 4 chuncks across the raided drive which is nice
|
|
because when ever you need to do a full table scan, it is actually
|
|
starting in 4 different locations on 4 different drives
|
|
simultaneously. And the indexes of course are on separate drives
|
|
from the data so that speeds things up tremendously. When I can
|
|
find the time I will document all that we have done to get this
|
|
thing going to help others that may need it.
|
|
|
|
As Matt has mentioned it is still using out-dated code and with a
|
|
little help I would like to bring everything up to date for
|
|
eventual incorporation with the main cvs tree. Due to other duties
|
|
I have with the company any help with this wiould be appreciated.
|
|
What we are using now is what I call a best first effort. It
|
|
definitely can be improved on and may even need complete rewrites
|
|
in a lot of areas. A lot of changes may have to be made in the way
|
|
Bugzilla does things currently to make this transition to a more
|
|
generic database interface. Fortunately when making the Oracle
|
|
changes I made sure I didn't do anything that I would consider
|
|
Oracle specific and could not be easily done with other databases.
|
|
Alot of the sql statements need to be broken up into smaller
|
|
utilities that themselves would need to make decisions on what
|
|
database they are using but the majority of the code can be made
|
|
database neutral.
|
|
|
|
3. Loki Bugzilla (AKA Fenris)
|
|
|
|
Note: Loki's "Fenris" Bugzilla is based upon the (now ancient)
|
|
Bugzilla 2.8 tree, and is no longer actively maintained. It works
|
|
well enough for Loki. Additionally, the major differences in Fenris
|
|
have now been integrated into the main source tree of Bugzilla, so
|
|
there's not much reason to go grab the source. I leave this section
|
|
of the FAQ principally for historical interest, but unless Loki has
|
|
further input into Bugzilla's future, it will be deprecated in
|
|
future versions of the Guide.
|
|
|
|
A.3.1. What about Loki Bugzilla?
|
|
|
|
Loki Games has a customized version of Bugzilla available at
|
|
http://fenris.lokigames.com. From that page,
|
|
|
|
You may have noticed that Fenris is a fork from Bugzilla-- our
|
|
patches weren't suitable for integration --and a few people have
|
|
expressed interest in the code. Fenris has one major improvement
|
|
over Bugzilla, and that is individual comments are not appended
|
|
onto a string blob, they are stored as a record in a separate
|
|
table. This allows you to, for instance, separate comments out
|
|
according to privilege levels in case your bug database could
|
|
contain sensitive information not for public eyes. We also provide
|
|
things like email hiding to protect user's privacy, additional
|
|
fields such as 'user_affected' in case someone enters someone
|
|
else's bug, comment editing and deletion, and more conditional
|
|
system variables than Bugzilla does (turn off attachments,
|
|
qacontact, etc.).
|
|
|
|
A.3.2. Who maintains Fenris (Loki Bugzilla) now?
|
|
|
|
Raphael Barrerro <raistlin@lokigames.com>. Michael Vance created the
|
|
initial fork, but no longer maintains the project.
|
|
|
|
A.3.3.
|
|
|
|
4. Pointy-Haired-Boss Questions
|
|
|
|
Note: The title of this section doesn't mean you're a PHB -- it
|
|
just means you probably HAVE a PHB who wants to know this :)
|
|
|
|
A.4.1. Is Bugzilla web-based or do you have to have specific software
|
|
or specific operating system on your machine?
|
|
|
|
It is web and e-mail based. You can edit bugs by sending specially
|
|
formatted email to a properly configured Bugzilla, or control via the
|
|
web.
|
|
|
|
A.4.2. Has anyone you know of already done any Bugzilla integration
|
|
with Perforce (SCM software)?
|
|
|
|
Yes! You can find more information elsewhere in "The Bugzilla Guide"
|
|
in the "Integration with Third-Party Products" section. The section on
|
|
Perforce isn't very large, but as the maintainer of the Guide is
|
|
charged with Perforce/Bugzilla integration by his company, you can
|
|
expect this section to grow.
|
|
|
|
A.4.3. Does Bugzilla allow the user to track multiple projects?
|
|
|
|
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.
|
|
|
|
A.4.4. If I am on many projects, and search for all bugs assigned to
|
|
me, will Bugzilla list them for me and allow me to sort by project,
|
|
severity etc?
|
|
|
|
Yes.
|
|
|
|
A.4.5. Does Bugzilla allow attachments (text, screenshots, urls etc)?
|
|
If yes, are there any that are NOT allowed?
|
|
|
|
Yes. There are many specific MIME-types that are pre-defined by
|
|
Bugzilla, but you may specify any arbitrary MIME-type you need when
|
|
you upload the file. Since all attachments are stored in the database,
|
|
however, I recommend storing large binary attachments elsewhere in the
|
|
web server's file system and providing a hyperlink as a comment, or in
|
|
the provided "URL" field in the bug report.
|
|
|
|
A.4.6. Does Bugzilla allow us to define our own priorities and levels?
|
|
Do we have complete freedom to change the labels of fields and format
|
|
of them, and the choice of acceptable values?
|
|
|
|
Yes. However, modifying some fields, notably those related to bug
|
|
progression states, also require adjusting the program logic to
|
|
compensate for the change.
|
|
|
|
A.4.7. 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. How do I get a footer on static HTML pages?
|
|
|
|
This was a late-breaking question for the Guide, so I just have to
|
|
quote the relevant newsgroup thread on it.
|
|
|
|
> AFAIK, most sites (even if they have SSI enabled) won't have #exec c
|
|
md
|
|
> enabled. Perhaps what would be better is a #include virtual and a
|
|
> footer.cgi the basically has the "require 'CGI.pl' and PutFooter com
|
|
mand.
|
|
>
|
|
> Please note that under most configurations, this also requires namin
|
|
g
|
|
> the file from index.html to index.shtml (and making sure that it wil
|
|
l
|
|
> still be reconized as an index). Personally, I think this is better
|
|
on
|
|
> a per-installation basis (perhaps add something to the FAQ that says
|
|
how
|
|
> to do this).
|
|
Good point. Yeah, easy enough to do, that it shouldn't be a big deal
|
|
for
|
|
someone to take it on if they want it. FAQ is a good place for it.
|
|
> Dave Miller wrote:
|
|
>
|
|
>> I did a little experimenting with getting the command menu and foot
|
|
er on
|
|
>> the end of the index page while leaving it as an HTML file...
|
|
>>
|
|
>> I was successful. :)
|
|
>>
|
|
>> I added this line:
|
|
>>
|
|
>>
|
|
>>
|
|
>> Just before the </BODY> </HTML> at the end of the file. And it wor
|
|
ked.
|
|
>>
|
|
>> Thought I'd toss that out there. Should I check this in? For thos
|
|
e that
|
|
>> have SSI disabled, it'll act like a comment, so I wouldn't think it
|
|
would
|
|
>> break anything.
|
|
|
|
A.4.8. Does Bugzilla provide any reporting features, metrics, graphs,
|
|
etc? You know, the type of stuff that management likes to see. :)
|
|
|
|
Yes. Look at http://bugzilla.mozilla.org/reports.cgi for basic
|
|
reporting facilities.
|
|
|
|
For more advanced reporting, I recommend hooking up a professional
|
|
reporting package, such as Crystal Reports, and use ODBC to access the
|
|
MySQL database. You can do a lot through the Query page of Bugzilla as
|
|
well, but right now Advanced Reporting is much better accomplished
|
|
through third-party utilities that can interface with the database
|
|
directly.
|
|
|
|
Advanced Reporting is a Bugzilla 3.X proposed feature.
|
|
|
|
A.4.9. 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 notification is user-configurable. The bug id and Topic of the
|
|
bug report accompany each email notification, along with a list of the
|
|
changes made.
|
|
|
|
A.4.10. Can email notification be set up to send to multiple people,
|
|
some on the To List, CC List, BCC List etc?
|
|
|
|
Yes.
|
|
|
|
A.4.11. If there is email notification, do users have to have any
|
|
particular type of email application?
|
|
|
|
Bugzilla email is sent in plain text, the most compatible mail format
|
|
on the planet.
|
|
|
|
Note: If you decide to use the bugzilla_email integration features
|
|
to allow Bugzilla to record responses to mail with the associated
|
|
bug, you may need to caution your users to set their mailer to
|
|
"respond to messages in the format in which they were sent". For
|
|
security reasons Bugzilla ignores HTML tags in comments, and if a
|
|
user sends HTML-based email into Bugzilla the resulting comment
|
|
looks downright awful.
|
|
|
|
A.4.12. 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.?
|
|
|
|
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.
|
|
|
|
A.4.13. Does Bugzilla allow data to be imported and exported? If I had
|
|
outsiders write up a bug report using a MS Word bug template, could
|
|
that template be imported into "matching" fields? If I wanted to take
|
|
the results of a query and export that data to MS Excel, could I do
|
|
that?
|
|
|
|
Mozilla allows data export through a custom DTD in XML format. It does
|
|
not, however, export to specific formats other than the XML Mozilla
|
|
DTD. Importing the data into Excel or any other application is left as
|
|
an exercise for the reader.
|
|
|
|
If you create import filters to other applications from Mozilla's XML,
|
|
please submit your modifications for inclusion in future Bugzilla
|
|
distributions.
|
|
|
|
As for data import, any application can send data to Bugzilla through
|
|
the HTTP protocol, or through Mozilla's XML API. However, it seems
|
|
kind of silly to put another front-end in front of Bugzilla; it makes
|
|
more sense to create a simplified bug submission form in HTML. You can
|
|
find an excellent example at
|
|
http://www.mozilla.org/quality/help/bugzilla-helper.html
|
|
|
|
A.4.14. Does Bugzilla allow fields to be added, changed or deleted? If
|
|
I want to customize the bug submission form to meet our needs, can I
|
|
do that using our terminology?
|
|
|
|
Yes.
|
|
|
|
A.4.15. Has anyone converted Bugzilla to another language to be used
|
|
in other countries? Is it localizable?
|
|
|
|
Currently, no. Internationalization support for Perl did not exist in
|
|
a robust fashion until the recent release of version 5.6.0; Bugzilla
|
|
is, and likely will remain (until 3.X) completely non-localized.
|
|
|
|
A.4.16. Can a user create and save reports? Can they do this in Word
|
|
format? Excel format?
|
|
|
|
Yes. No. No.
|
|
|
|
A.4.17. Can a user re-run a report with a new project, same query?
|
|
|
|
Yes.
|
|
|
|
A.4.18. Can a user modify an existing report and then save it into
|
|
another name?
|
|
|
|
You can save an unlimited number of queries in Bugzilla. You are free
|
|
to modify them and rename them to your heart's desire.
|
|
|
|
A.4.19. Does Bugzilla have the ability to search by word, phrase,
|
|
compound search?
|
|
|
|
You have no idea. Bugzilla's query interface, particularly with the
|
|
advanced Boolean operators, is incredibly versatile.
|
|
|
|
A.4.20. Can the admin person establish separate group and individual
|
|
user privileges?
|
|
|
|
Yes.
|
|
|
|
A.4.21. Does Bugzilla provide record locking when there is
|
|
simultaneous access to the same bug? Does the second person get a
|
|
notice that the bug is in use or how are they notified?
|
|
|
|
Bugzilla does not lock records. It provides mid-air collision
|
|
detection, and offers the offending user a choice of options to deal
|
|
with the conflict.
|
|
|
|
A.4.22. Are there any backup features provided?
|
|
|
|
MySQL, the database back-end for Bugzilla, allows hot-backup of data.
|
|
You can find strategies for dealing with backup considerations at
|
|
http://www.mysql.com/doc/B/a/Backup.html
|
|
|
|
A.4.23. Can users be on the system while a backup is in progress?
|
|
|
|
Yes. However, commits to the database must wait until the tables are
|
|
unlocked. Bugzilla databases are typically very small, and backups
|
|
routinely take less than a minute.
|
|
|
|
A.4.24. What type of human resources are needed to be on staff to
|
|
install and maintain Bugzilla? Specifically, what type of skills does
|
|
the person need to have? I need to find out if we were to go with
|
|
Bugzilla, what types of individuals would we need to hire and how much
|
|
would that cost vs buying an "Out-of-the-Box" solution.
|
|
|
|
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".
|
|
|
|
Commercial Bug-tracking software typically costs somewhere upwards of
|
|
$20,000 or more for 5-10 floating licenses. Bugzilla consultation is
|
|
available from skilled members of the newsgroup.
|
|
|
|
As an example, as of this writing I typically charge $115 for the
|
|
first hour, and $89 each hour thereafter for consulting work. It takes
|
|
me three to five hours to make Bugzilla happy on a Development
|
|
installation of Linux-Mandrake.
|
|
|
|
A.4.25. What time frame are we looking at if we decide to hire people
|
|
to install and maintain the Bugzilla? Is this something that takes
|
|
hours or weeks to install and a couple of hours per week to maintain
|
|
and customize or is this a multi-week install process, plus a full
|
|
time job for 1 person, 2 people, etc?
|
|
|
|
It all depends on your level of commitment. Someone with much Bugzilla
|
|
experience can get you up and running in less than a day, and your
|
|
Bugzilla install can run untended for years. If your Bugzilla strategy
|
|
is critical to your business workflow, hire somebody with reasonable
|
|
UNIX or Perl skills to handle your process management and bug-tracking
|
|
maintenance & customization.
|
|
|
|
A.4.26. Is there any licensing fee or other fees for using Bugzilla?
|
|
Any out-of-pocket cost other than the bodies needed as identified
|
|
above?
|
|
|
|
No. MySQL asks, if you find their product valuable, that you purchase
|
|
a support contract from them that suits your needs.
|
|
|
|
5. Bugzilla Installation
|
|
|
|
A.5.1. How do I download and install Bugzilla?
|
|
|
|
Check http://www.mozilla.org/projects/bugzilla/ for details. Once you
|
|
download it, untar it, read the README and the Bugzilla Guide.
|
|
|
|
A.5.2. How do I install Bugzilla on Windows NT?
|
|
|
|
Installation on Windows NT has its own section in "The Bugzilla
|
|
Guide".
|
|
|
|
A.5.3. Is there an easy way to change the Bugzilla cookie name?
|
|
|
|
At present, no.
|
|
|
|
6. Bugzilla Security
|
|
|
|
A.6.1. How do I completely disable MySQL security if it's giving me
|
|
problems (I've followed the instructions in the README!)?
|
|
|
|
Run mysql like this: "mysqld --skip-grant-tables". Please remember
|
|
this makes mysql as secure as taping a $100 to the floor of a football
|
|
stadium bathroom for safekeeping. Please read the Security section of
|
|
the Administration chapter of "The Bugzilla Guide" before proceeding.
|
|
|
|
A.6.2. Are there any security problems with Bugzilla?
|
|
|
|
The Bugzilla code has not undergone a complete security audit. It is
|
|
recommended that you closely examine permissions on your Bugzilla
|
|
installation, and follow the recommended security guidelines found in
|
|
the README and in The Bugzilla Guide.
|
|
|
|
A.6.3. I've implemented the security fixes mentioned in Chris Yeh's
|
|
security advisory of 5/10/2000 advising not to run MySQL as root, and
|
|
am running into problems with MySQL no longer working correctly.
|
|
|
|
This is a common problem, related to running out of file descriptors.
|
|
Simply add "ulimit -n unlimited" to the script which starts mysqld.
|
|
|
|
7. Bugzilla Email
|
|
|
|
A.7.1. I have a user who doesn't want to receive any more email from
|
|
Bugzilla. How do I stop it entirely for this user?
|
|
|
|
With the email changes to 2.12, the user should be able to set this in
|
|
user email preferences.
|
|
|
|
A.7.2. I'm evaluating/testing Bugzilla, and don't want it to send
|
|
email to anyone but me. How do I do it?
|
|
|
|
Edit the param for the mail text. Replace "To:" with "X-Real-To:",
|
|
replace "Cc:" with "X-Real-CC:", and add a "To: (myemailaddress)".
|
|
|
|
A.7.3. I want whineatnews.pl to whine at something more, or other
|
|
than, only new bugs. How do I do it?
|
|
|
|
Try Klaas Freitag's excellent patch for "whineatassigned"
|
|
functionality. You can find it at
|
|
http://bugzilla.mozilla.org/show_bug.cgi?id=6679. This patch is
|
|
against an older version of Bugzilla, so you must apply the diffs
|
|
manually.
|
|
|
|
A.7.4. I don't like/want to use Procmail to hand mail off to
|
|
bug_email.pl. What alternatives do I have?
|
|
|
|
You can call bug_email.pl directly from your aliases file, with an
|
|
entry like this:
|
|
|
|
bugzilla-daemon: "|/usr/local/bin/bugzilla/contrib/bug_email.pl"
|
|
|
|
However, this is fairly nasty and subject to problems; you also need
|
|
to set up your smrsh (sendmail restricted shell) to allow it. In a
|
|
pinch, though, it can work.
|
|
|
|
A.7.5. How do I set up the email interface to submit/change bugs via
|
|
email?
|
|
|
|
You can find an updated README.mailif file in the contrib/ directory
|
|
of your Bugzilla distribution that walks you through the setup.
|
|
|
|
A.7.6. Email takes FOREVER to reach me from bugzilla -- it's extremely
|
|
slow. What gives?
|
|
|
|
If you are using an alternate Mail Transport Agent (MTA other than
|
|
sendmail), make sure the options given in the "processmail" script for
|
|
all instances of "sendmail" are correct for your MTA. If you are using
|
|
Sendmail, you may wish to delete the "-ODeliveryMode=deferred" option
|
|
in the "processmail" script for every invocation of "sendmail". (Be
|
|
sure and leave the "-t" option, though!)
|
|
|
|
A better alternative is to change the "-O" option to
|
|
"-ODeliveryMode=background". This prevents Sendmail from hanging your
|
|
Bugzilla Perl processes if the domain to which it must send mail is
|
|
unavailable.
|
|
|
|
This is now a configurable parameter called "sendmailnow", available
|
|
from editparams.cgi.
|
|
|
|
A.7.7. How come email never reaches me from bugzilla changes?
|
|
|
|
Double-check that you have not turned off email in your user
|
|
preferences. Confirm that Bugzilla is able to send email by visiting
|
|
the "Log In" link of your Bugzilla installation and clicking the
|
|
"Email me a password" button after entering your email address.
|
|
|
|
If you never receive mail from Bugzilla, chances you do not have
|
|
sendmail in "/usr/lib/sendmail". Ensure sendmail lives in, or is
|
|
symlinked to, "/usr/lib/sendmail".
|
|
|
|
8. Bugzilla Database
|
|
|
|
A.8.1. I've heard Bugzilla can be used with Oracle?
|
|
|
|
Red Hat Bugzilla, mentioned above, works with Oracle. The current
|
|
version from Mozilla.org does not have this capability. Unfortunately,
|
|
though you will sacrifice a lot of the really great features available
|
|
in Bugzilla 2.10 and 2.12 if you go with the 2.8-based Redhat version.
|
|
|
|
A.8.2. Bugs are missing from queries, but exist in the database (and I
|
|
can pull them up by specifying the bug ID). What's wrong?
|
|
|
|
You've almost certainly enabled the "shadow database", but for some
|
|
reason it hasn't been updated for all your bugs. This is the database
|
|
against which queries are run, so that really complex or slow queries
|
|
won't lock up portions of the database for other users. You can turn
|
|
off the shadow database in editparams.cgi. If you wish to continue
|
|
using the shadow database, then as your "bugs" user run
|
|
"./syncshadowdb -syncall" from the command line in the bugzilla
|
|
installation directory to recreate your shadow database. After it
|
|
finishes, be sure to check the params and make sure that
|
|
"queryagainstshadowdb" is still turned on. The syncshadowdb program
|
|
turns it off if it was on, and is supposed to turn it back on when
|
|
completed; that way, if it crashes in the middle of recreating the
|
|
database, it will stay off forever until someone turns it back on by
|
|
hand. Apparently, it doesn't always do that yet.
|
|
|
|
A.8.3. I think my database might be corrupted, or contain invalid
|
|
entries. What do I do?
|
|
|
|
Run the "sanity check" utility (./sanitycheck.cgi in the bugzilla_home
|
|
directory) to see! If it all comes back, you're OK. If it doesn't come
|
|
back OK (i.e. any red letters), there are certain things Bugzilla can
|
|
recover from and certain things it can't. If it can't auto-recover, I
|
|
hope you're familiar with mysqladmin commands or have installed
|
|
another way to manage your database...
|
|
|
|
A.8.4. I want to manually edit some entries in my database. How?
|
|
|
|
There is no facility in Bugzilla itself to do this. It's also
|
|
generally not a smart thing to do if you don't know exactly what
|
|
you're doing. However, if you understand SQL you can use the
|
|
mysqladmin utility to manually insert, delete, and modify table
|
|
information. Personally, I use "phpMyAdmin". You have to compile a PHP
|
|
module with MySQL support to make it work, but it's very clean and
|
|
easy to use.
|
|
|
|
A.8.5. I try to add myself as a user, but Bugzilla always tells me my
|
|
password is wrong.
|
|
|
|
Certain version of MySQL (notably, 3.23.29 and 3.23.30) accidentally
|
|
disabled the "crypt()" function. This prevented MySQL from storing
|
|
encrypted passwords. Upgrade to the "3.23 stable" version of MySQL and
|
|
you should be good to go.
|
|
|
|
A.8.6. I think I've set up MySQL permissions correctly, but bugzilla
|
|
still can't connect.
|
|
|
|
Try running MySQL from its binary: "mysqld --skip-grant-tables". This
|
|
will allow you to completely rule out grant tables as the cause of
|
|
your frustration. However, I do not recommend you run it this way on a
|
|
regular basis, unless you really want your web site defaced and your
|
|
machine cracked.
|
|
|
|
A.8.7. How do I synchronize bug information among multiple different
|
|
Bugzilla databases?
|
|
|
|
Well, you can synchronize or you can move bugs. Synchronization will
|
|
only work one way -- you can create a read-only copy of the database
|
|
at one site, and have it regularly updated at intervals from the main
|
|
database.
|
|
|
|
MySQL has some synchronization features builtin to the latest
|
|
releases. It would be great if someone looked into the possibilities
|
|
there and provided a report to the newsgroup on how to effectively
|
|
synchronize two Bugzilla installations.
|
|
|
|
If you simply need to transfer bugs from one Bugzilla to another,
|
|
checkout the "move.pl" script in the Bugzilla distribution.
|
|
|
|
A.8.8. Why do I get bizarre errors when trying to submit data,
|
|
particularly problems with "groupset"?
|
|
|
|
If you're sure your MySQL parameters are correct, you might want turn
|
|
"strictvaluechecks" OFF in editparams.cgi. If you have "usebugsentry"
|
|
set "On", you also cannot submit a bug as readable by more than one
|
|
group with "strictvaluechecks" ON.
|
|
|
|
A.8.9. How come even after I delete bugs, the long descriptions show
|
|
up?
|
|
|
|
Delete everything from $BUZILLA_HOME/shadow. Bugzilla creates shadow
|
|
files there, with each filename corresponding to a bug number. Also be
|
|
sure to run syncshadowdb to make sure, if you are using a shadow
|
|
database, that the shadow database is current.
|
|
|
|
9. Bugzilla and Win32
|
|
|
|
A.9.1. What is the easiest way to run Bugzilla on Win32
|
|
(Win98+/NT/2K)?
|
|
|
|
Remove Windows. Install Linux. Install Bugzilla. The boss will never
|
|
know the difference.
|
|
|
|
A.9.2. Is there a "Bundle::Bugzilla" equivalent for Win32?
|
|
|
|
Not currently. Bundle::Bugzilla enormously simplifies Bugzilla
|
|
installation on UNIX systems. If someone can volunteer to create a
|
|
suitable PPM bundle for Win32, it would be appreciated.
|
|
|
|
A.9.3. CGI's are failing with a "something.cgi is not a valid Windows
|
|
NT application" error. Why?
|
|
|
|
Depending on what Web server you are using, you will have to configure
|
|
the Web server to treat *.cgi files as CGI scripts. In IIS, you do
|
|
this by adding *.cgi to the App Mappings with the <path>\perl.exe %s
|
|
%s as the executable.
|
|
|
|
Microsoft has some advice on this matter, as well:
|
|
|
|
"Set application mappings. In the ISM, map the extension for the
|
|
script file(s) to the executable for the script interpreter. For
|
|
example, you might map the extension .py to Python.exe, the
|
|
executable for the Python script interpreter. Note For the
|
|
ActiveState Perl script interpreter, the extension .pl is
|
|
associated with PerlIS.dll by default. If you want to change the
|
|
association of .pl to perl.exe, you need to change the application
|
|
mapping. In the mapping, you must add two percent (%) characters to
|
|
the end of the pathname for perl.exe, as shown in this example:
|
|
c:\perl\bin\perl.exe %s %s"
|
|
|
|
A.9.4. Can I have some general instructions on how to make Bugzilla on
|
|
Win32 work?
|
|
|
|
The following couple entries are deprecated in favor of the Windows
|
|
installation instructions available in the "Administration" portion of
|
|
"The Bugzilla Guide". However, they are provided here for historical
|
|
interest and insight.
|
|
|
|
1. #!C:/perl/bin/perl had to be added to every perl file.
|
|
2. Converted to Net::SMTP to handle mail messages instead of
|
|
/usr/bin/sendmail.
|
|
3. The crypt function isn't available on Windows NT (at least none t
|
|
hat I
|
|
am aware), so I made encrypted passwords = plaintext passwords.
|
|
4. The system call to diff had to be changed to the Cygwin diff.
|
|
5. This was just to get a demo running under NT, it seems to be work
|
|
ing
|
|
good, and I have inserted almost 100 bugs from another bug tracki
|
|
ng
|
|
system. Since this work was done just to get an in-house demo, I
|
|
am NOT
|
|
planning on making a patch for submission to Bugzilla. If you wou
|
|
ld
|
|
like a zip file, let me know.
|
|
Q: Hmm, couldn't figure it out from the general instructions above. H
|
|
ow
|
|
about step-by-step?
|
|
A: Sure! Here ya go!
|
|
1. Install IIS 4.0 from the NT Option Pack #4.
|
|
2. Download and install Active Perl.
|
|
3. Install the Windows GNU tools from Cygwin. Make sure to add the b
|
|
in
|
|
directory to your system path. (Everyone should have these, wheth
|
|
er
|
|
they decide to use Bugzilla or not. :-) )
|
|
4. Download relevant packages from ActiveState at
|
|
http://www.activestate.com/packages/zips/. + DBD-Mysql.zip
|
|
5. Extract each zip file with WinZip, and install each ppd file usin
|
|
g the
|
|
notation: ppm install <module>.ppd
|
|
6. Install Mysql. *Note: If you move the default install from c:\my
|
|
sql,
|
|
you must add the appropriate startup parameters to the NT service
|
|
. (ex.
|
|
-b e:\\programs\\mysql)
|
|
7. Download any Mysql client. http://www.mysql.com/download_win.html
|
|
8. Setup MySql. (These are the commands that I used.)
|
|
I. Cleanup default database settings.
|
|
C:\mysql\bin\mysql -u root mysql
|
|
mysql> DELETE FROM user WHERE Host='localhost' AND User='';
|
|
mysql> quit
|
|
C:\mysql\bin\mysqladmin reload
|
|
II. Set password for root.
|
|
C:\mysql\bin\mysql -u root mysql
|
|
mysql> UPDATE user SET Password=PASSWORD('new_password')
|
|
WHERE user='root';
|
|
mysql> FLUSH PRIVILEGES;
|
|
mysql> quit
|
|
C:\mysql\bin\mysqladmin -u root reload
|
|
III. Create bugs user.
|
|
C:\mysql\bin\mysql -u root -p
|
|
mysql> insert into user (host,user,password)
|
|
values('localhost','bugs','');
|
|
mysql> quit
|
|
C:\mysql\bin\mysqladmin -u root reload
|
|
IV. Create the bugs database.
|
|
C:\mysql\bin\mysql -u root -p
|
|
mysql> create database bugs;
|
|
V. Give the bugs user access to the bugs database.
|
|
mysql> insert into db
|
|
(host,db,user,select_priv,insert_priv,update_priv,delete_pri
|
|
v,create_priv,drop_priv)
|
|
values('localhost','bugs','bugs','Y','Y','Y','Y','Y','N')
|
|
mysql> quit
|
|
C:\mysql\bin\mysqladmin -u root reload
|
|
9. Run the table scripts to setup the bugs database.
|
|
10. Change CGI.pm to use the following regular expression because of
|
|
differing backslashes in NT versus UNIX.
|
|
o $0 =~ m:[^\\]*$:;
|
|
11. Had to make the crypt password = plain text password in the datab
|
|
ase.
|
|
(Thanks to Andrew Lahser" <andrew_lahser@merck.com>" on this one.
|
|
) The
|
|
files that I changed were:
|
|
o globals.pl
|
|
o CGI.pl
|
|
o alternately, you can try commenting all references to 'crypt
|
|
'
|
|
string and replace them with similar lines but without encry
|
|
pt()
|
|
or crypr() functions insida all files.
|
|
12. Replaced sendmail with Windmail. Basically, you have to come up w
|
|
ith a
|
|
sendmail substitute for NT. Someone said that they used a Perl mo
|
|
dule
|
|
(Net::SMTP), but I was trying to save time and do as little Perl
|
|
coding
|
|
as possible.
|
|
13. Added "perl" to the beginning of all Perl system calls that use a
|
|
perl
|
|
script as an argument and renamed processmail to processmail.pl.
|
|
14. In processmail.pl, I added binmode(HANDLE) before all read() call
|
|
s. I'm
|
|
not sure about this one, but the read() under NT wasn't counting
|
|
the
|
|
EOLs without the binary read."
|
|
|
|
A.9.5. I'm having trouble with the perl modules for NT not being able
|
|
to talk to to the database.
|
|
|
|
Your modules may be outdated or inaccurate. Try:
|
|
|
|
1. Hitting http://www.activestate.com/ActivePerl
|
|
2. Download ActivePerl
|
|
3. Go to your prompt
|
|
4. Type 'ppm'
|
|
5. PPM> install DBI DBD-mysql GD
|
|
|
|
I reckon TimeDate and Data::Dumper come with the activeperl. You can
|
|
check the ActiveState site for packages for installation through PPM.
|
|
http://www.activestate.com/Packages/
|
|
|
|
10. Bugzilla Usage
|
|
|
|
A.10.1. The query page is very confusing. Isn't there a simpler way to
|
|
query?
|
|
|
|
We are developing in that direction. You can follow progress on this
|
|
at http://bugzilla.mozilla.org/show_bug.cgi?id=16775. Some
|
|
functionality is available in Bugzilla 2.12, and is available as
|
|
"quicksearch.html"
|
|
|
|
A.10.2. I'm confused by the behavior of the "accept" button in the
|
|
Show Bug form. Why doesn't it assign the bug to me when I accept it?
|
|
|
|
The current behavior is acceptable to bugzilla.mozilla.org and most
|
|
users. I personally don't like it. You have your choice of patches to
|
|
change this behavior, however.
|
|
|
|
Add a "and accept bug" radio button
|
|
"Accept" button automatically assigns to you
|
|
|
|
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.
|
|
|
|
A.10.3. I can't upload anything into the database via the "Create
|
|
Attachment" link. What am I doing wrong?
|
|
|
|
The most likely cause is a very old browser or a browser that is
|
|
incompatible with file upload via POST. Download the latest Netscape,
|
|
Microsoft, or Mozilla browser to handle uploads correctly.
|
|
|
|
A.10.4. Email submissions to Bugzilla that have attachments end up
|
|
asking me to save it as a "cgi" file.
|
|
|
|
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
|
|
cripple some other functionality.
|
|
|
|
A.10.5. How do I change a keyword in Bugzilla, once some bugs are
|
|
using it?
|
|
|
|
In the Bugzilla administrator UI, edit the keyword and it will let you
|
|
replace the old keyword name with a new one. This will cause a problem
|
|
with the keyword cache. Run sanitycheck.cgi to fix it.
|
|
|
|
11. Bugzilla Hacking
|
|
|
|
A.11.1. What bugs are in Bugzilla right now?
|
|
|
|
Try this link to view current bugs or requests for enhancement for
|
|
Bugzilla.
|
|
|
|
You can view bugs marked for 2.14 release here. This list includes
|
|
bugs for the 2.14 release that have already been fixed and checked
|
|
into CVS. Please consult the Bugzilla Project Page for details on how
|
|
to check current sources out of CVS so you can have these bug fixes
|
|
early!
|
|
|
|
A.11.2. How can I change the default priority to a null value? For
|
|
instance, have the default priority be "---" instead of "P2"?
|
|
|
|
This is well-documented here:
|
|
http://bugzilla.mozilla.org/show_bug.cgi?id=49862. 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...
|
|
|
|
A.11.3. What's the best way to submit patches? What guidelines should
|
|
I follow?
|
|
|
|
1. Enter a bug into bugzilla.mozilla.org for the "Webtools" product,
|
|
"Bugzilla" component.
|
|
2. Upload your patch as a unified DIFF (having used "diff -u" against
|
|
the current sources checked out of CVS), or new source file by
|
|
clicking "Create a new attachment" link on the bug page you've
|
|
just created, and include any descriptions of database changes you
|
|
may make, into the bug ID you submitted in step #1. Be sure and
|
|
click the "Patch" radio button to indicate the text you are
|
|
sending is a patch!
|
|
3. Announce your patch and the associated URL
|
|
(http://bugzilla.mozilla.org/show_bug.cgi?id=XXXX) 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 be.
|
|
4. If it passes muster with minimal modification, the person to whom
|
|
the bug is assigned in Bugzilla is responsible for seeing the
|
|
patch is checked into CVS.
|
|
5. Bask in the glory of the fact that you helped write the most
|
|
successful open-source bug-tracking software on the planet :)
|
|
_________________________________________________________________
|
|
|
|
Appendix B. Software Download Links
|
|
|
|
All of these sites are current as of April, 2001. Hopefully they'll
|
|
stay current for a while.
|
|
|
|
Apache Web Server: http://www.apache.org Optional web server for
|
|
Bugzilla, but recommended because of broad user base and support.
|
|
|
|
Bugzilla: http://www.mozilla.org/projects/bugzilla/
|
|
|
|
MySQL: http://www.mysql.org/
|
|
|
|
Perl: http://www.perl.org/
|
|
|
|
CPAN: http://www.cpan.org/
|
|
|
|
DBI Perl module:
|
|
ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/DBI/
|
|
|
|
Data::Dumper module:
|
|
ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Data/
|
|
|
|
MySQL related Perl modules:
|
|
ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Mysql/
|
|
|
|
TimeDate Perl module collection:
|
|
ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Date/
|
|
|
|
GD Perl module: ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/GD/
|
|
Alternately, you should be able to find the latest version of GD at
|
|
http://www.boutell.com/gd/
|
|
|
|
Chart::Base module:
|
|
ftp://ftp.cpan.org/pub/perl/CPAN/modules/by-module/Chart/
|
|
|
|
LinuxDoc Software: http://www.linuxdoc.org/ (for documentation
|
|
maintenance)
|
|
_________________________________________________________________
|
|
|
|
Appendix C. The Bugzilla Database
|
|
|
|
Note: This document really needs to be updated with more fleshed
|
|
out information about primary keys, interrelationships, and maybe
|
|
some nifty tables to document dependencies. Any takers?
|
|
_________________________________________________________________
|
|
|
|
C.1. Database Schema Chart
|
|
|
|
Database Relationships
|
|
|
|
Bugzilla database relationships chart
|
|
_________________________________________________________________
|
|
|
|
C.2. MySQL Bugzilla Database Introduction
|
|
|
|
Contributor(s): Matthew P. Barnson (mbarnson@excitehome.net)
|
|
Last update: May 16, 2000
|
|
Changes:
|
|
Version 1.0: Initial public release (May 16, 2000)
|
|
Maintainer: Matthew P. Barnson (mbarnson@excitehome.net)
|
|
===
|
|
Table Of Contents
|
|
===
|
|
FOREWORD
|
|
INTRODUCTION
|
|
THE BASICS
|
|
THE TABLES
|
|
THE DETAILS
|
|
===
|
|
FOREWORD
|
|
===
|
|
This information comes straight from my life. I was forced to learn
|
|
how
|
|
Bugzilla organizes database because of nitpicky requests from users fo
|
|
r tiny
|
|
changes in wording, rather than having people re-educate themselves or
|
|
figure out how to work our procedures around the tool. It sucks, but
|
|
it can
|
|
and will happen to you, so learn how the schema works and deal with it
|
|
when it
|
|
comes.
|
|
I'm sorry this version is plain text. I can whip this info out a lo
|
|
t faster
|
|
if I'm not concerned about complex formatting. I'll get it into sgml
|
|
for easy
|
|
portability as time permits.
|
|
The Bugzilla Database Schema has a home! In addition to availabilit
|
|
y via CVS
|
|
and released versions 2.12 and higher of Bugzilla, you can find the la
|
|
test &
|
|
greatest version of the Bugzilla Database Schema at
|
|
http://www.trilobyte.net/barnsons/. This is a living document; please
|
|
be sure
|
|
you are up-to-date with the latest version before mirroring.
|
|
The Bugzilla Database Schema is designed to provide vital informatio
|
|
n
|
|
regarding the structure of the MySQL database. Where appropriate, thi
|
|
s
|
|
document will refer to URLs rather than including documents in their e
|
|
ntirety
|
|
to ensure completeness even should this paper become out of date.
|
|
This document is not maintained by Netscape or Netscape employees, s
|
|
o please
|
|
do not contact them regarding errors or omissions contained herein. Pl
|
|
ease
|
|
direct all questions, comments, updates, flames, etc. to Matthew P. Ba
|
|
rnson
|
|
mbarnson@excitehome.net) (barnboy or barnhome on irc.mozilla.org in
|
|
#mozwebtools).
|
|
I'm sure I've made some glaring errors or omissions in this paper --
|
|
please
|
|
email me corrections or post corrections to the
|
|
netscape.public.mozilla.webtools newsgroup.
|
|
===
|
|
INTRODUCTION
|
|
===
|
|
So, here you are with your brand-new installation of Bugzilla. You'
|
|
ve got
|
|
MySQL set up, Apache working right, Perl DBI and DBD talking to the da
|
|
tabase
|
|
flawlessly. Maybe you've even entered a few test bugs to make sure em
|
|
ail's
|
|
working; people seem to be notified of new bugs and changes, and you c
|
|
an
|
|
enter and edit bugs to your heart's content. Perhaps you've gone thro
|
|
ugh the
|
|
trouble of setting up a gateway for people to submit bugs to your data
|
|
base via
|
|
email, have had a few people test it, and received rave reviews from y
|
|
our beta
|
|
testers.
|
|
What's the next thing you do? Outline a training strategy for your
|
|
development team, of course, and bring them up to speed on the new too
|
|
l you've
|
|
labored over for hours.
|
|
Your first training session starts off very well! You have a captiv
|
|
e
|
|
audience which seems enraptured by the efficiency embodied in this thi
|
|
ng called
|
|
"Bugzilla". You are caught up describing the nifty features, how peop
|
|
le can
|
|
save favorite queries in the database, set them up as headers and foot
|
|
ers on
|
|
their pages, customize their layouts, generate reports, track status w
|
|
ith
|
|
greater efficiency than ever before, leap tall buildings with a single
|
|
bound
|
|
and rescue Jane from the clutches of Certain Death!
|
|
But Certain Death speaks up -- a tiny voice, from the dark corners o
|
|
f the
|
|
conference room. "I have a concern," the voice hisses from the darkne
|
|
ss,
|
|
"about the use of the word 'verified'.
|
|
The room, previously filled with happy chatter, lapses into reverent
|
|
ial
|
|
silence as Certain Death (better known as the Vice President of Softwa
|
|
re
|
|
Engineering) continues. "You see, for two years we've used the word '
|
|
verified'
|
|
to indicate that a developer or quality assurance engineer has confirm
|
|
ed that,
|
|
in fact, a bug is valid. I don't want to lose two years of training to
|
|
a
|
|
new software product. You need to change the bug status of 'verified'
|
|
to
|
|
'approved' as soon as possible. To avoid confusion, of course."
|
|
Oh no! Terror strikes your heart, as you find yourself mumbling "ye
|
|
s, yes, I
|
|
don't think that would be a problem," You review the changes with Cert
|
|
ain
|
|
Death, and continue to jabber on, "no, it's not too big a change. I me
|
|
an, we
|
|
have the source code, right? You know, 'Use the Source, Luke' and all
|
|
that...
|
|
no problem," All the while you quiver inside like a beached jellyfish
|
|
bubbling,
|
|
burbling, and boiling on a hot Jamaican sand dune...
|
|
Thus begins your adventure into the heart of Bugzilla. You've been
|
|
forced
|
|
to learn about non-portable enum() fields, varchar columns, and tinyin
|
|
t
|
|
definitions. The Adventure Awaits You!
|
|
===
|
|
The Basics
|
|
===
|
|
If you were like me, at this point you're totally clueless about the
|
|
internals of MySQL, and if it weren't for this executive order from th
|
|
e Vice
|
|
President you couldn't care less about the difference between a "bigin
|
|
t" and a
|
|
"tinyint" entry in MySQL. I'd refer you first to the MySQL documentat
|
|
ion,
|
|
available at http://www.mysql.com/doc.html, but that's mostly a confus
|
|
ing
|
|
morass of high-level database jargon. Here are the basics you need to
|
|
know
|
|
about the database to proceed:
|
|
1. To connect to your database, type "mysql -u root" at the command p
|
|
rompt as
|
|
any user. If this works without asking you for a password, SHAME ON YO
|
|
U! You
|
|
should have locked your security down like the README told you to. Yo
|
|
u 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 .
|
|
2. You should now be at a prompt that looks like this:
|
|
mysql>
|
|
At the prompt, if "bugs" is the name of your Bugzilla database, type:
|
|
mysql> use bugs;
|
|
(don't forget the ";" at the end of each line, or you'll be kicking yo
|
|
urself
|
|
all the way through this documentation)
|
|
Young Grasshopper, you are now ready for the unveiling of the Bugzil
|
|
la
|
|
database, in the next section...
|
|
===
|
|
THE TABLES
|
|
===
|
|
Imagine your MySQL database as a series of spreadsheets, and you won
|
|
't be too
|
|
far off. If you use this command:
|
|
mysql> show tables from bugs;
|
|
you'll be able to see all the "spreadsheets" (tables) in your database
|
|
. Cool,
|
|
huh? It's kinda' like a filesystem, only much faster and more robust.
|
|
Come
|
|
on, I'll show you more!
|
|
From the command issued above, you should now have some output that
|
|
looks
|
|
like this:
|
|
+-------------------+
|
|
| Tables in bugs |
|
|
+-------------------+
|
|
| attachments |
|
|
| bugs |
|
|
| bugs_activity |
|
|
| cc |
|
|
| components |
|
|
| dependencies |
|
|
| fielddefs |
|
|
| groups |
|
|
| keyworddefs |
|
|
| keywords |
|
|
| logincookies |
|
|
| longdescs |
|
|
| milestones |
|
|
| namedqueries |
|
|
| products |
|
|
| profiles |
|
|
| profiles_activity |
|
|
| shadowlog |
|
|
| versions |
|
|
| votes |
|
|
| watch |
|
|
+-------------------+
|
|
If it doesn't look quite the same, that probably means it's
|
|
time to
|
|
update this documentation :)
|
|
Here's an overview of what each table does. Most columns in each ta
|
|
ble have
|
|
descriptive names that make it fairly trivial to figure out their jobs
|
|
.
|
|
attachments: This table stores all attachments to bugs. It tends to b
|
|
e 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 mad
|
|
e 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 ta
|
|
bles 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 othe
|
|
r 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, wh
|
|
en you
|
|
submit a form that changes the value of "AssignedTo" this table allows
|
|
translation to the actual field name "assigned_to" for entry into MySQ
|
|
L.
|
|
groups: defines bitmasks for groups. A bitmask is a number that can
|
|
uniquely
|
|
identify group memberships. For instance, say the group that is allow
|
|
ed 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 g
|
|
roups 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 bitm
|
|
ask 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 do
|
|
es 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 m
|
|
akes
|
|
sense.
|
|
longdescs: The meat of bugzilla -- here is where all user comments ar
|
|
e stored!
|
|
You've only got 2^24 bytes per comment (it's a mediumtext field), so s
|
|
peak
|
|
sparingly -- that's only the amount of space the Old Testament from th
|
|
e Bible
|
|
would take (uncompressed, 16 megabytes). Each comment is keyed to the
|
|
bug_id to which it's attached, so the order is necessarily chronologic
|
|
al, for
|
|
comments are played back in the order in which they are received.
|
|
milestones: Interesting that milestones are associated with a specifi
|
|
c 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 que
|
|
ry 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, s
|
|
o you
|
|
could close a particular component for bug entry without having to clo
|
|
se an
|
|
entire product...
|
|
profiles: Ahh, so you were wondering where your precious user informa
|
|
tion 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 y
|
|
ou 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 tabl
|
|
e 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, wher
|
|
e
|
|
"column" is the name of the column for which you wish to restrict info
|
|
rmation:
|
|
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 fr
|
|
om the
|
|
above information that the resolution is likely to be stored in the "b
|
|
ugs"
|
|
table. Note we'll need to change a little perl code as well as this da
|
|
tabase
|
|
change, but I won't plunge into that in this document. Let's verify th
|
|
e
|
|
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 fiel
|
|
d 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 befor
|
|
e 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 th
|
|
at's
|
|
available! Cool thing, too, is that this is reflected on your query p
|
|
age as
|
|
well -- you can query by the new status. But how's it fit into the ex
|
|
isting
|
|
scheme of things?
|
|
Looks like you need to go back and look for instances of the word "v
|
|
erified"
|
|
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 s
|
|
tatus
|
|
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/
|
|
_________________________________________________________________
|
|
|
|
C.3. MySQL Permissions & Grant Tables
|
|
|
|
Note: 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 : )
|
|
|
|
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 ge
|
|
ts
|
|
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, a
|
|
t
|
|
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 my
|
|
sql
|
|
daemon with the "--skip-grant-tables" option. Running this way denies
|
|
access to nobody. Unfortunately, unless you've got yourself firewalle
|
|
d it
|
|
also opens the potential for abuse if someone knows you're running it.
|
|
Additionally, the default permissions for MySQL allow anyone at localh
|
|
ost
|
|
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 databa
|
|
se in
|
|
the keystone.conf file ($sys_dbname). This is the way I am doing it f
|
|
or
|
|
some of my databases, and it works fine.
|
|
The methods described below assume you're running MySQL on the same bo
|
|
x as
|
|
your webserver, and that you don't mind if your $sys_dbuser for Keysto
|
|
ne has
|
|
superuser access. See near the bottom of this message for a descripti
|
|
on 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 ne
|
|
ed 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_dbus
|
|
er) --
|
|
you may or may not want this. The layout of mysql_install_db is reall
|
|
y 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 yo
|
|
u 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_dbpas
|
|
swd,
|
|
and if your permissions are set up incorrectly anybody can type the UR
|
|
L 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,PR
|
|
OCESS,
|
|
FILE,
|
|
ON keystone.*
|
|
TO <$sys_dbuser name>@localhost
|
|
IDENTIFIED BY '(password)'
|
|
WITH GRANT OPTION;
|
|
OR
|
|
mysql> GRANT ALL PRIVELEGES
|
|
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 t
|
|
he
|
|
mysql_install_db script to be able to quickly reproduce your permissio
|
|
ns
|
|
structure again. Note that the FILE privelege and WITH GRANT OPTION m
|
|
ay 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 mea
|
|
ns
|
|
that any host can access that database. Of course, that host must als
|
|
o 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 passwo
|
|
rd 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 My
|
|
SQL
|
|
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 acces
|
|
s
|
|
rights. Note that the HOST table, USER table, and DB table are very c
|
|
losely
|
|
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 d
|
|
oes
|
|
not have rights to a certain DB, she's denied. Get the picture?
|
|
'host','db','select','insert','update','delete','index','alter','creat
|
|
e','dr
|
|
op','grant'
|
|
You should now have a working knowledge of MySQL grant tables. If the
|
|
re is
|
|
anything I've left out of this answer that you feel is pertinent, or i
|
|
f my
|
|
instructions don't work for you, please let me know and I'll re-post t
|
|
his
|
|
letter again, corrected. I threw it together one night out of exasper
|
|
ation
|
|
for all the newbies who don't know squat about MySQL yet, so it is alm
|
|
ost
|
|
guaranteed to have errors.
|
|
Once again, you can't go wrong by reading section 6 of the MySQL manua
|
|
l. It
|
|
is more detailed than I!
|
|
http://www.mysql.com/Manual/manual.html.
|
|
----------------------------------------------------------------------
|
|
------
|
|
10/12/2000
|
|
Matthew sent in some mail with updated contact information:
|
|
NEW CONTACT INFORMATION:
|
|
------------------------
|
|
Matthew P. Barnson
|
|
Manager, Systems Administration
|
|
Excite@Home Business Applications
|
|
mbarnson@excitehome.net
|
|
(801)234-8300
|
|
_________________________________________________________________
|
|
|
|
C.4. Cleaning up after mucking with Bugzilla
|
|
|
|
Contributed by Eric Hanson:
|
|
There are several things, and one trick. There is a small tiny piece
|
|
of
|
|
documentation I saw once that said something very important.
|
|
1) After pretty much any manual working of the Mysql db, you must
|
|
delete a file in the bugzilla directory: data/versioncache
|
|
Versioncache basically is a way to speed up bugzilla (from what I
|
|
understand). It stores a lot of commonly used information. However,
|
|
this file is refreshed every so often (I can't remember the time
|
|
interval though). So eventually all changes do propogate out, so you
|
|
may see stuff suddenly working.
|
|
2) Assuming that failed, you will also have to check something with t
|
|
he
|
|
checksetup.pl file. It actually is run twice. The first time it
|
|
creates the file: localconfig. You can modify localconfig, (or not if
|
|
you are doing bug_status stuff) or you should delete localconfig and
|
|
rerun your modified checksetup.pl. Since I don't actually see anythin
|
|
g
|
|
in localconfig pertaining to bug_status, this point is mainly a FYI.
|
|
_________________________________________________________________
|
|
|
|
Chapter 7. Bugzilla Variants
|
|
|
|
Note: I know there are more variants than just RedHat Bugzilla out
|
|
there. Please help me get information about them, their project
|
|
status, and benefits there might be in using them or in using their
|
|
code in main-tree Bugzilla.
|
|
_________________________________________________________________
|
|
|
|
7.1. Red Hat Bugzilla
|
|
|
|
Red Hat Bugzilla is probably the most popular Bugzilla variant, aside
|
|
from Mozilla Bugzilla, on the planet. One of the major benefits of Red
|
|
Hat Bugzilla is the ability to work with Oracle as a database, as well
|
|
as MySQL. Here's what Dave Lawrence had to say about the status of Red
|
|
Hat Bugzilla,
|
|
|
|
Hello. I apologize that I am getting back to you so late. It has
|
|
been difficult to keep
|
|
up with email this past week. I have checked out your updated docum
|
|
entation and I will
|
|
have to say very good work. A few notes and additions as follows.
|
|
(ed: from the FAQ)
|
|
>For the record, we are not using any template type implementation
|
|
for the cosmetic changes
|
|
>maded to Bugzilla. It is just alot of html changes in the code its
|
|
elf. I admit I may have
|
|
>gotten a little carried away with it but the corporate types asked
|
|
for a more standardized
|
|
>interface to match up with other projects relating to Red Hat web
|
|
sites. A lot of other web
|
|
>based internal tools I am working on also look like Bugzilla.
|
|
This should probably be changed since we are now in fact using Text
|
|
::Template for most
|
|
of the html rendering. You actually state this later in your number
|
|
ed list.
|
|
Also number 6 contradicts number 8 where number 6 would be the most
|
|
up to date status
|
|
on the Oracle port.
|
|
Additional Information:
|
|
-----------------------------
|
|
1. Comments are now stored in varchar fields of 4k in size each. If
|
|
the comment is more
|
|
than 4k it is broken up into chunks and given a sort number so each
|
|
comment can be re
|
|
assembled in the correct order. This was done because originally I
|
|
was storing the comments
|
|
in a long datatype which unfortunately cannot be indexed or joined
|
|
with another table. This
|
|
cause the search of text within the long description to be disabled
|
|
for a long time. That
|
|
is now working and is nto showing any noticeble performance hit tha
|
|
t I can tell.
|
|
2. Work is being started on internationalizing the Bugzilla source
|
|
we have to allow our
|
|
Japanese customers to enter bug reports into a single bugzilla syst
|
|
em. This will probably
|
|
be done by using the nvarchar data types supported by Oracle which
|
|
allows storage of
|
|
double byte characters and also the use of the Accept-Language in t
|
|
he http header for
|
|
detection by Bugilla of which language to render.
|
|
3. Of course even more cosmetic changes. It is difficult to keep up
|
|
with the ever
|
|
changing faces of www.redhat.com.
|
|
4. Some convenience enhancements in the administration utilities. A
|
|
nd more integration
|
|
with other internal/external Red Hat web sites.
|
|
I hope this information may prove helpful for your documentation. P
|
|
lease contact
|
|
me if you have any more question or I can do anything else.
|
|
Regards
|
|
_________________________________________________________________
|
|
|
|
Appendix D. Useful Patches and Utilities for Bugzilla
|
|
|
|
D.1. The setperl.csh Utility
|
|
|
|
You can use the "setperl.csh" utility to quickly and easily change the
|
|
path to perl on all your Bugzilla files. This is a C-shell script; if
|
|
you do not have "csh" or "tcsh" in the search path on your system, it
|
|
will not work!
|
|
1. Download the "setperl.csh" utility to your Bugzilla directory and
|
|
make it executable.
|
|
a. bash# cd /your/path/to/bugzilla
|
|
b. bash# wget -O setperl.csh
|
|
'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=107
|
|
95'
|
|
c. bash# chmod u+x setperl.csh
|
|
2. Prepare (and fix) Bugzilla file permissions.
|
|
a. bash# chmod u+w *
|
|
b. bash# chmod u+x duplicates.cgi
|
|
c. bash# chmod a-x bug_status.html
|
|
3. Run the script:
|
|
bash# ./setperl.csh /your/path/to/perl
|
|
Example D-1. Using Setperl to set your perl path
|
|
bash# ./setperl.csh /usr/bin/perl
|
|
_________________________________________________________________
|
|
|
|
D.2. Command-line Bugzilla Queries
|
|
|
|
Users can query Bugzilla from the command line using this suite of
|
|
utilities.
|
|
|
|
The query.conf file 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"
|
|
|
|
buglist 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=".
|
|
|
|
The columlist 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 grep COLUMLIST
|
|
~/.netscape/cookies to see your current COLUMNLIST setting.
|
|
|
|
bugs is a simple shell script which calls buglist 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 results through sed -e 's/,/ /g' | wc | awk '{printf $2 "\n"}'
|
|
|
|
Akkana says she has good results piping buglist output through w3m -T
|
|
text/html -dump
|
|
1. Download three files:
|
|
a. bash$ wget -O query.conf
|
|
'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=261
|
|
57'
|
|
b. bash$ wget -O buglist
|
|
'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=269
|
|
44'
|
|
c. bash# wget -O bugs
|
|
'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=262
|
|
15'
|
|
2. Make your utilities executable: bash$ chmod u+x buglist bugs
|
|
_________________________________________________________________
|
|
|
|
D.3. The Quicksearch Utility
|
|
|
|
Quicksearch is a new, experimental feature of the 2.12 release. It
|
|
consist of two Javascript files, "quicksearch.js" and
|
|
"localconfig.js", and two documentation files, "quicksearch.html" and
|
|
"quicksearchhack.html"
|
|
|
|
The index.html page has been updated to include the QuickSearch text
|
|
box.
|
|
|
|
To take full advantage of the query power, the Bugzilla maintainer
|
|
must edit "localconfig.js" according to the value sets used in the
|
|
local installation.
|
|
|
|
Currently, keywords must be hard-coded in localconfig.js. If they are
|
|
not, keywords are not automatically recognized. This means, if
|
|
localconfig.js is left unconfigured, that searching for a bug with the
|
|
"foo" keyword will only find bugs with "foo" in the summary, status
|
|
whiteboard, product or component name, but not those with the keyword
|
|
"foo".
|
|
|
|
Workarounds for Bugzilla users:
|
|
|
|
search for '!foo' (this will find only bugs with the keyword "foo"
|
|
search 'foo,!foo' (equivalent to 'foo OR keyword:foo')
|
|
|
|
When this tool is ported from client-side JavaScript to server-side
|
|
Perl, the requirement for hard-coding keywords can be fixed. This bug
|
|
has details.
|
|
_________________________________________________________________
|
|
|
|
Appendix E. GNU Free Documentation License
|
|
|
|
Version 1.1, March 2000
|
|
|
|
Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place,
|
|
Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy
|
|
and distribute verbatim copies of this license document, but
|
|
changing it is not allowed.
|
|
_________________________________________________________________
|
|
|
|
0. PREAMBLE
|
|
|
|
The purpose of this License is to make a manual, textbook, or other
|
|
written document "free" in the sense of freedom: to assure everyone
|
|
the effective freedom to copy and redistribute it, with or without
|
|
modifying it, either commercially or noncommercially. Secondarily,
|
|
this License preserves for the author and publisher a way to get
|
|
credit for their work, while not being considered responsible for
|
|
modifications made by others.
|
|
|
|
This License is a kind of "copyleft", which means that derivative
|
|
works of the document must themselves be free in the same sense. It
|
|
complements the GNU General Public License, which is a copyleft
|
|
license designed for free software.
|
|
|
|
We have designed this License in order to use it for manuals for free
|
|
software, because free software needs free documentation: a free
|
|
program should come with manuals providing the same freedoms that the
|
|
software does. But this License is not limited to software manuals; it
|
|
can be used for any textual work, regardless of subject matter or
|
|
whether it is published as a printed book. We recommend this License
|
|
principally for works whose purpose is instruction or reference.
|
|
_________________________________________________________________
|
|
|
|
1. APPLICABILITY AND DEFINITIONS
|
|
|
|
This License applies to any manual or other work that contains a
|
|
notice placed by the copyright holder saying it can be distributed
|
|
under the terms of this License. The "Document", below, refers to any
|
|
such manual or work. Any member of the public is a licensee, and is
|
|
addressed as "you".
|
|
|
|
A "Modified Version" of the Document means any work containing the
|
|
Document or a portion of it, either copied verbatim, or with
|
|
modifications and/or translated into another language.
|
|
|
|
A "Secondary Section" is a named appendix or a front-matter section of
|
|
the Document that deals exclusively with the relationship of the
|
|
publishers or authors of the Document to the Document's overall
|
|
subject (or to related matters) and contains nothing that could fall
|
|
directly within that overall subject. (For example, if the Document is
|
|
in part a textbook of mathematics, a Secondary Section may not explain
|
|
any mathematics.) The relationship could be a matter of historical
|
|
connection with the subject or with related matters, or of legal,
|
|
commercial, philosophical, ethical or political position regarding
|
|
them.
|
|
|
|
The "Invariant Sections" are certain Secondary Sections whose titles
|
|
are designated, as being those of Invariant Sections, in the notice
|
|
that says that the Document is released under this License.
|
|
|
|
The "Cover Texts" are certain short passages of text that are listed,
|
|
as Front-Cover Texts or Back-Cover Texts, in the notice that says that
|
|
the Document is released under this License.
|
|
|
|
A "Transparent" copy of the Document means a machine-readable copy,
|
|
represented in a format whose specification is available to the
|
|
general public, whose contents can be viewed and edited directly and
|
|
straightforwardly with generic text editors or (for images composed of
|
|
pixels) generic paint programs or (for drawings) some widely available
|
|
drawing editor, and that is suitable for input to text formatters or
|
|
for automatic translation to a variety of formats suitable for input
|
|
to text formatters. A copy made in an otherwise Transparent file
|
|
format whose markup has been designed to thwart or discourage
|
|
subsequent modification by readers is not Transparent. A copy that is
|
|
not "Transparent" is called "Opaque".
|
|
|
|
Examples of suitable formats for Transparent copies include plain
|
|
ASCII without markup, Texinfo input format, LaTeX input format, SGML
|
|
or XML using a publicly available DTD, and standard-conforming simple
|
|
HTML designed for human modification. Opaque formats include
|
|
PostScript, PDF, proprietary formats that can be read and edited only
|
|
by proprietary word processors, SGML or XML for which the DTD and/or
|
|
processing tools are not generally available, and the
|
|
machine-generated HTML produced by some word processors for output
|
|
purposes only.
|
|
|
|
The "Title Page" means, for a printed book, the title page itself,
|
|
plus such following pages as are needed to hold, legibly, the material
|
|
this License requires to appear in the title page. For works in
|
|
formats which do not have any title page as such, "Title Page" means
|
|
the text near the most prominent appearance of the work's title,
|
|
preceding the beginning of the body of the text.
|
|
_________________________________________________________________
|
|
|
|
2. VERBATIM COPYING
|
|
|
|
You may copy and distribute the Document in any medium, either
|
|
commercially or noncommercially, provided that this License, the
|
|
copyright notices, and the license notice saying this License applies
|
|
to the Document are reproduced in all copies, and that you add no
|
|
other conditions whatsoever to those of this License. You may not use
|
|
technical measures to obstruct or control the reading or further
|
|
copying of the copies you make or distribute. However, you may accept
|
|
compensation in exchange for copies. If you distribute a large enough
|
|
number of copies you must also follow the conditions in section 3.
|
|
|
|
You may also lend copies, under the same conditions stated above, and
|
|
you may publicly display copies.
|
|
_________________________________________________________________
|
|
|
|
3. COPYING IN QUANTITY
|
|
|
|
If you publish printed copies of the Document numbering more than 100,
|
|
and the Document's license notice requires Cover Texts, you must
|
|
enclose the copies in covers that carry, clearly and legibly, all
|
|
these Cover Texts: Front-Cover Texts on the front cover, and
|
|
Back-Cover Texts on the back cover. Both covers must also clearly and
|
|
legibly identify you as the publisher of these copies. The front cover
|
|
must present the full title with all words of the title equally
|
|
prominent and visible. You may add other material on the covers in
|
|
addition. Copying with changes limited to the covers, as long as they
|
|
preserve the title of the Document and satisfy these conditions, can
|
|
be treated as verbatim copying in other respects.
|
|
|
|
If the required texts for either cover are too voluminous to fit
|
|
legibly, you should put the first ones listed (as many as fit
|
|
reasonably) on the actual cover, and continue the rest onto adjacent
|
|
pages.
|
|
|
|
If you publish or distribute Opaque copies of the Document numbering
|
|
more than 100, you must either include a machine-readable Transparent
|
|
copy along with each Opaque copy, or state in or with each Opaque copy
|
|
a publicly-accessible computer-network location containing a complete
|
|
Transparent copy of the Document, free of added material, which the
|
|
general network-using public has access to download anonymously at no
|
|
charge using public-standard network protocols. If you use the latter
|
|
option, you must take reasonably prudent steps, when you begin
|
|
distribution of Opaque copies in quantity, to ensure that this
|
|
Transparent copy will remain thus accessible at the stated location
|
|
until at least one year after the last time you distribute an Opaque
|
|
copy (directly or through your agents or retailers) of that edition to
|
|
the public.
|
|
|
|
It is requested, but not required, that you contact the authors of the
|
|
Document well before redistributing any large number of copies, to
|
|
give them a chance to provide you with an updated version of the
|
|
Document.
|
|
_________________________________________________________________
|
|
|
|
4. MODIFICATIONS
|
|
|
|
You may copy and distribute a Modified Version of the Document under
|
|
the conditions of sections 2 and 3 above, provided that you release
|
|
the Modified Version under precisely this License, with the Modified
|
|
Version filling the role of the Document, thus licensing distribution
|
|
and modification of the Modified Version to whoever possesses a copy
|
|
of it. In addition, you must do these things in the Modified Version:
|
|
|
|
A. Use in the Title Page (and on the covers, if any) a title distinct
|
|
from that of the Document, and from those of previous versions
|
|
(which should, if there were any, be listed in the History section
|
|
of the Document). You may use the same title as a previous version
|
|
if the original publisher of that version gives permission.
|
|
B. List on the Title Page, as authors, one or more persons or
|
|
entities responsible for authorship of the modifications in the
|
|
Modified Version, together with at least five of the principal
|
|
authors of the Document (all of its principal authors, if it has
|
|
less than five).
|
|
C. State on the Title page the name of the publisher of the Modified
|
|
Version, as the publisher.
|
|
D. Preserve all the copyright notices of the Document.
|
|
E. Add an appropriate copyright notice for your modifications
|
|
adjacent to the other copyright notices.
|
|
F. Include, immediately after the copyright notices, a license notice
|
|
giving the public permission to use the Modified Version under the
|
|
terms of this License, in the form shown in the Addendum below.
|
|
G. Preserve in that license notice the full lists of Invariant
|
|
Sections and required Cover Texts given in the Document's license
|
|
notice.
|
|
H. Include an unaltered copy of this License.
|
|
I. Preserve the section entitled "History", and its title, and add to
|
|
it an item stating at least the title, year, new authors, and
|
|
publisher of the Modified Version as given on the Title Page. If
|
|
there is no section entitled "History" in the Document, create one
|
|
stating the title, year, authors, and publisher of the Document as
|
|
given on its Title Page, then add an item describing the Modified
|
|
Version as stated in the previous sentence.
|
|
J. Preserve the network location, if any, given in the Document for
|
|
public access to a Transparent copy of the Document, and likewise
|
|
the network locations given in the Document for previous versions
|
|
it was based on. These may be placed in the "History" section. You
|
|
may omit a network location for a work that was published at least
|
|
four years before the Document itself, or if the original
|
|
publisher of the version it refers to gives permission.
|
|
K. In any section entitled "Acknowledgements" or "Dedications",
|
|
preserve the section's title, and preserve in the section all the
|
|
substance and tone of each of the contributor acknowledgements
|
|
and/or dedications given therein.
|
|
L. Preserve all the Invariant Sections of the Document, unaltered in
|
|
their text and in their titles. Section numbers or the equivalent
|
|
are not considered part of the section titles.
|
|
M. Delete any section entitled "Endorsements". Such a section may not
|
|
be included in the Modified Version.
|
|
N. Do not retitle any existing section as "Endorsements" or to
|
|
conflict in title with any Invariant Section.
|
|
|
|
If the Modified Version includes new front-matter sections or
|
|
appendices that qualify as Secondary Sections and contain no material
|
|
copied from the Document, you may at your option designate some or all
|
|
of these sections as invariant. To do this, add their titles to the
|
|
list of Invariant Sections in the Modified Version's license notice.
|
|
These titles must be distinct from any other section titles.
|
|
|
|
You may add a section entitled "Endorsements", provided it contains
|
|
nothing but endorsements of your Modified Version by various
|
|
parties--for example, statements of peer review or that the text has
|
|
been approved by an organization as the authoritative definition of a
|
|
standard.
|
|
|
|
You may add a passage of up to five words as a Front-Cover Text, and a
|
|
passage of up to 25 words as a Back-Cover Text, to the end of the list
|
|
of Cover Texts in the Modified Version. Only one passage of
|
|
Front-Cover Text and one of Back-Cover Text may be added by (or
|
|
through arrangements made by) any one entity. If the Document already
|
|
includes a cover text for the same cover, previously added by you or
|
|
by arrangement made by the same entity you are acting on behalf of,
|
|
you may not add another; but you may replace the old one, on explicit
|
|
permission from the previous publisher that added the old one.
|
|
|
|
The author(s) and publisher(s) of the Document do not by this License
|
|
give permission to use their names for publicity for or to assert or
|
|
imply endorsement of any Modified Version.
|
|
_________________________________________________________________
|
|
|
|
5. COMBINING DOCUMENTS
|
|
|
|
You may combine the Document with other documents released under this
|
|
License, under the terms defined in section 4 above for modified
|
|
versions, provided that you include in the combination all of the
|
|
Invariant Sections of all of the original documents, unmodified, and
|
|
list them all as Invariant Sections of your combined work in its
|
|
license notice.
|
|
|
|
The combined work need only contain one copy of this License, and
|
|
multiple identical Invariant Sections may be replaced with a single
|
|
copy. If there are multiple Invariant Sections with the same name but
|
|
different contents, make the title of each such section unique by
|
|
adding at the end of it, in parentheses, the name of the original
|
|
author or publisher of that section if known, or else a unique number.
|
|
Make the same adjustment to the section titles in the list of
|
|
Invariant Sections in the license notice of the combined work.
|
|
|
|
In the combination, you must combine any sections entitled "History"
|
|
in the various original documents, forming one section entitled
|
|
"History"; likewise combine any sections entitled "Acknowledgements",
|
|
and any sections entitled "Dedications". You must delete all sections
|
|
entitled "Endorsements."
|
|
_________________________________________________________________
|
|
|
|
6. COLLECTIONS OF DOCUMENTS
|
|
|
|
You may make a collection consisting of the Document and other
|
|
documents released under this License, and replace the individual
|
|
copies of this License in the various documents with a single copy
|
|
that is included in the collection, provided that you follow the rules
|
|
of this License for verbatim copying of each of the documents in all
|
|
other respects.
|
|
|
|
You may extract a single document from such a collection, and
|
|
distribute it individually under this License, provided you insert a
|
|
copy of this License into the extracted document, and follow this
|
|
License in all other respects regarding verbatim copying of that
|
|
document.
|
|
_________________________________________________________________
|
|
|
|
7. AGGREGATION WITH INDEPENDENT WORKS
|
|
|
|
A compilation of the Document or its derivatives with other separate
|
|
and independent documents or works, in or on a volume of a storage or
|
|
distribution medium, does not as a whole count as a Modified Version
|
|
of the Document, provided no compilation copyright is claimed for the
|
|
compilation. Such a compilation is called an "aggregate", and this
|
|
License does not apply to the other self-contained works thus compiled
|
|
with the Document, on account of their being thus compiled, if they
|
|
are not themselves derivative works of the Document.
|
|
|
|
If the Cover Text requirement of section 3 is applicable to these
|
|
copies of the Document, then if the Document is less than one quarter
|
|
of the entire aggregate, the Document's Cover Texts may be placed on
|
|
covers that surround only the Document within the aggregate. Otherwise
|
|
they must appear on covers around the whole aggregate.
|
|
_________________________________________________________________
|
|
|
|
8. TRANSLATION
|
|
|
|
Translation is considered a kind of modification, so you may
|
|
distribute translations of the Document under the terms of section 4.
|
|
Replacing Invariant Sections with translations requires special
|
|
permission from their copyright holders, but you may include
|
|
translations of some or all Invariant Sections in addition to the
|
|
original versions of these Invariant Sections. You may include a
|
|
translation of this License provided that you also include the
|
|
original English version of this License. In case of a disagreement
|
|
between the translation and the original English version of this
|
|
License, the original English version will prevail.
|
|
_________________________________________________________________
|
|
|
|
9. TERMINATION
|
|
|
|
You may not copy, modify, sublicense, or distribute the Document
|
|
except as expressly provided for under this License. Any other attempt
|
|
to copy, modify, sublicense or distribute the Document is void, and
|
|
will automatically terminate your rights under this License. However,
|
|
parties who have received copies, or rights, from you under this
|
|
License will not have their licenses terminated so long as such
|
|
parties remain in full compliance.
|
|
_________________________________________________________________
|
|
|
|
10. FUTURE REVISIONS OF THIS LICENSE
|
|
|
|
The Free Software Foundation may publish new, revised versions of the
|
|
GNU Free Documentation License from time to time. Such new versions
|
|
will be similar in spirit to the present version, but may differ in
|
|
detail to address new problems or concerns. See
|
|
http://www.gnu.org/copyleft/.
|
|
|
|
Each version of the License is given a distinguishing version number.
|
|
If the Document specifies that a particular numbered version of this
|
|
License "or any later version" applies to it, you have the option of
|
|
following the terms and conditions either of that specified version or
|
|
of any later version that has been published (not as a draft) by the
|
|
Free Software Foundation. If the Document does not specify a version
|
|
number of this License, you may choose any version ever published (not
|
|
as a draft) by the Free Software Foundation.
|
|
_________________________________________________________________
|
|
|
|
How to use this License for your documents
|
|
|
|
To use this License in a document you have written, include a copy of
|
|
the License in the document and put the following copyright and
|
|
license notices just after the title page:
|
|
|
|
Copyright (c) YEAR YOUR NAME. Permission is granted to copy,
|
|
distribute and/or modify this document under the terms of the GNU
|
|
Free Documentation License, Version 1.1 or any later version
|
|
published by the Free Software Foundation; with the Invariant
|
|
Sections being LIST THEIR TITLES, with the Front-Cover Texts being
|
|
LIST, and with the Back-Cover Texts being LIST. A copy of the
|
|
license is included in the section entitled "GNU Free Documentation
|
|
License".
|
|
|
|
If you have no Invariant Sections, write "with no Invariant Sections"
|
|
instead of saying which ones are invariant. If you have no Front-Cover
|
|
Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts
|
|
being LIST"; likewise for Back-Cover Texts.
|
|
|
|
If your document contains nontrivial examples of program code, we
|
|
recommend releasing these examples in parallel under your choice of
|
|
free software license, such as the GNU General Public License, to
|
|
permit their use in free software.
|
|
|
|
Glossary
|
|
|
|
A
|
|
|
|
There are no entries for A
|
|
|
|
B
|
|
|
|
Bug
|
|
A "Bug" in Bugzilla refers to an issue entered into the
|
|
database which has an associated number, assignments, comments,
|
|
etc. Many also refer to a "Ticket" or "Issue"; in this context,
|
|
they are synonymous.
|
|
|
|
Bug Number
|
|
Each Bugzilla Bug is assigned a number that uniquely identifies
|
|
that Bug. The Bug associated with a Bug Number can be pulled up
|
|
via a query, or easily from the very front page by typing the
|
|
number in the "Find" box.
|
|
|
|
Bug Life Cycle
|
|
A Bug has stages through which it must pass before becoming a
|
|
"closed bug", including acceptance, resolution, and
|
|
verification. The "Bug Life Cycle" is moderately flexible
|
|
according to the needs of the organization using it, though.
|
|
|
|
I
|
|
|
|
Infinite Loop
|
|
See: Recursion
|
|
|
|
P
|
|
|
|
Product
|
|
A Product is a broad category of types of bugs. In general,
|
|
there are several Components to a Product. A Product also
|
|
defines a default Group (used for Bug Security) for all bugs
|
|
entered into components beneath it.
|
|
|
|
Example 1. A Sample Product
|
|
|
|
A company sells a software product called "X". They also
|
|
maintain some older software called "Y", and have a secret
|
|
project "Z". An effective use of Products might be to create
|
|
Products "X", "Y", and "Z", each with Components "User
|
|
Interface", "Database", and "Business Logic". They might also
|
|
change group permissions so that only those people who are
|
|
members of Group "Z" can see components and bugs under Product
|
|
"Z".
|
|
|
|
Q
|
|
|
|
Q/A
|
|
"Q/A" is short for "Quality Assurance". In most large software
|
|
development organizations, there is a team devoted to ensuring
|
|
the product meets minimum standards before shipping. This team
|
|
will also generally want to track the progress of bugs over
|
|
their life cycle, thus the need for the "Q/A Contact" field in
|
|
a Bug.
|
|
|
|
R
|
|
|
|
Recursion
|
|
See: Infinite Loop
|
|
|
|
Z
|
|
|
|
Zarro Boogs Found
|
|
This is the cryptic response sent by Bugzilla when a query
|
|
returned no results. It is just a goofy way of saying "Zero
|
|
Bugs Found".
|