Compare commits

..

22 Commits

Author SHA1 Message Date
matty%chariot.net.au
b78e6d461e Remove DB taint mode as we're not doing that anymore.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@114039 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-08 15:56:33 +00:00
matty%chariot.net.au
ce454c602f Use general template handling code.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@114038 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-08 15:55:17 +00:00
matty%chariot.net.au
267d636c89 Some use-once error fixes.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@114036 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-08 15:44:59 +00:00
matty%chariot.net.au
e0014c1596 Merging branch to trunk. Attempting to not break anything.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@114027 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-08 14:42:57 +00:00
(no author)
8902c753f2 This commit was manufactured by cvs2svn to create branch 'CUST_RES_BRANCH'.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@113994 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-08 03:31:11 +00:00
matty%chariot.net.au
0f65b3a56f Fix typo in error message.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@113411 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-01 08:51:57 +00:00
matty%chariot.net.au
d982e79440 Whack licenses on templates. XHTML fixes.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@107959 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-13 15:26:17 +00:00
matty%chariot.net.au
357a2ad29f Style tweaks. Move to using NULL for no resolution as opposed to ID 0. Fix an apparently broken buglist.cgi when searching for no resolution.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@107958 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-13 15:10:15 +00:00
matty%chariot.net.au
57d69ee3e7 Fix creation of resolutions.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@107957 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-13 10:52:59 +00:00
justdave%syndicomm.com
683cdd4de9 fix perl path and flags
patch by MattyT


git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106679 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-30 09:02:34 +00:00
jake%acutex.net
bec5bfcc85 More of MattyT's love: bug fixes, style tweaks, checks on changing restype, make moving work
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106545 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-29 14:29:29 +00:00
jake%acutex.net
e5ed4f6307 add sortkeys, style fixes, minor tweaks
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106178 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 17:38:43 +00:00
justdave%syndicomm.com
665e1eba65 Patch on behalf of MattyT: miscellaneous fixes
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106164 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 10:34:29 +00:00
justdave%syndicomm.com
ef80035915 oops, missed a brace fixing a merge conflict
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106163 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 10:26:43 +00:00
justdave%syndicomm.com
0fd14fe43a Merge with trunk. Minor conflicts with CGI.pl, buglist.cgi, and
globals.pl, resolved without much difficulty though (they were obvious
things)


git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106160 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 09:36:00 +00:00
justdave%syndicomm.com
3d60c72346 Bringing in all patches to trunk since the branch was split off. No conflicts yet. (yay!)
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105897 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 04:31:56 +00:00
justdave%syndicomm.com
135c23162e checking in for Matty: replacing bug_status.html with unhardcoded bug_status.cgi, and making all cgis pass tests
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105885 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 18:08:52 +00:00
justdave%syndicomm.com
f150a1b542 Fixing a stupid typo (patch by MattyT)
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105764 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 09:17:07 +00:00
jake%acutex.net
4819081b77 Really backing out this time.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105635 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 18:14:26 +00:00
jake%acutex.net
8f7cc65c1d Backing out changes. This file is now identical on both the HEAD and CUST_RES_BRANCH.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105634 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 18:11:18 +00:00
jake%acutex.net
28778bc828 Custom Resolutions
This branch is NOT PART OF BUILD.


git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105633 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 17:57:58 +00:00
(no author)
343a813ccf This commit was manufactured by cvs2svn to create branch 'CUST_RES_BRANCH'.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105515 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 18:42:06 +00:00
252 changed files with 20559 additions and 19722 deletions

View File

@@ -29,6 +29,24 @@ use strict;
package Attachment;
# Use the template toolkit (http://www.template-toolkit.org/) to generate
# the user interface (HTML pages and mail messages) using templates in the
# "templates/" subdirectory.
use Template;
# This is the global template object that gets used one or more times by
# the script when it needs to process a template and return the results.
# Configuration parameters can be specified here that apply to all templates
# processed in this file.
my $template = Template->new(
{
# Colon-separated list of directories containing templates.
INCLUDE_PATH => 'template/custom:template/default' ,
# Allow templates to be specified with relative paths.
RELATIVE => 1
}
);
# This module requires that its caller have said "require CGI.pl" to import
# relevant functions from that script and its companion globals.pl.
@@ -36,28 +54,24 @@ package Attachment;
# Functions
############################################################################
sub query
sub list
{
# Retrieves and returns an array of attachment records for a given bug.
# This data should be given to attachment/list.atml in an
# "attachments" variable.
# Displays a table of attachments for a given bug along with links for
# viewing, editing, or making requests for each attachment.
my ($bugid) = @_;
my $in_editbugs = &::UserInGroup($::userid, "editbugs");
# Retrieve a list of attachments for this bug and write them into an array
# of hashes in which each hash represents a single attachment.
&::SendSQL("
SELECT attach_id, creation_ts, mimetype, description, ispatch,
isobsolete, submitter_id
SELECT attach_id, creation_ts, mimetype, description, ispatch, isobsolete
FROM attachments WHERE bug_id = $bugid ORDER BY attach_id
");
my @attachments = ();
while (&::MoreSQLData()) {
my %a;
my $submitter_id;
($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'},
$a{'ispatch'}, $a{'isobsolete'}, $submitter_id) = &::FetchSQLData();
($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'}, $a{'ispatch'}, $a{'isobsolete'}) = &::FetchSQLData();
# Format the attachment's creation/modification date into a standard
# format (YYYY-MM-DD HH:MM)
@@ -82,16 +96,19 @@ sub query
$a{'statuses'} = \@statuses;
&::PopGlobalSQLState();
# We will display the edit link if the user can edit the attachment;
# ie the are the submitter, or they have canedit.
# Also show the link if the user is not logged in - in that cae,
# They'll be prompted later
$a{'canedit'} = ($::userid == 0 || $submitter_id == $::userid ||
$in_editbugs);
push @attachments, \%a;
}
return \@attachments;
}
1;
my $vars =
{
'bugid' => $bugid ,
'attachments' => \@attachments ,
'Param' => \&::Param , # for retrieving global parameters
'PerformSubsts' => \&::PerformSubsts # for processing global parameters
};
$template->process("attachment/list.atml", $vars)
|| &::DisplayError("Template process failed: " . $template->error())
&& exit;
}

View File

@@ -34,10 +34,10 @@ use CGI::Carp qw(fatalsToBrowser);
my %ok_field;
for my $key (qw (bug_id product version rep_platform op_sys bug_status
resolution priority bug_severity component assigned_to
resolution_id priority bug_severity component assigned_to
reporter bug_file_loc short_desc target_milestone
qa_contact status_whiteboard creation_ts
delta_ts votes whoid comment query error) ){
qa_contact status_whiteboard creation_ts groupset
delta_ts votes whoid usergroupset comment query error) ){
$ok_field{$key}++;
}
@@ -101,48 +101,51 @@ sub initBug {
$self->{'whoid'} = $user_id;
# First check that we can see it
if (!&::CanSeeBug($bug_id, $user_id)) {
# is it not there, or are we just forbidden to see it?
&::SendSQL("SELECT bug_id FROM bugs WHERE bug_id = $bug_id");
if (&::FetchSQLData()) {
$self->{'error'} = "NotPermitted";
} else {
$self->{'error'} = "NotFound";
}
$self->{'bug_id'} = $bug_id;
return $self;
}
&::SendSQL("SELECT groupset FROM profiles WHERE userid=$self->{'whoid'}");
my $usergroupset = &::FetchOneColumn();
if (!$usergroupset) { $usergroupset = '0' }
$self->{'usergroupset'} = $usergroupset;
my $query = "
select
bugs.bug_id, product, version, rep_platform, op_sys, bug_status,
resolution, priority, bug_severity, component, assigned_to, reporter,
resolution_id, priority, bug_severity, component, assigned_to, reporter,
bug_file_loc, short_desc, target_milestone, qa_contact,
status_whiteboard, date_format(creation_ts,'%Y-%m-%d %H:%i'),
delta_ts, sum(votes.count)
groupset, delta_ts, sum(votes.count)
from bugs left join votes using(bug_id)
where bugs.bug_id = $bug_id
group by bugs.bug_id";
&::SendSQL($query);
&::SendSQL(&::SelectVisible($query, $user_id, $usergroupset));
my @row;
@row = &::FetchSQLData();
my $count = 0;
my %fields;
foreach my $field ("bug_id", "product", "version", "rep_platform",
"op_sys", "bug_status", "resolution", "priority",
"bug_severity", "component", "assigned_to", "reporter",
"bug_file_loc", "short_desc", "target_milestone",
"qa_contact", "status_whiteboard", "creation_ts",
"delta_ts", "votes") {
$fields{$field} = shift @row;
if ($fields{$field}) {
$self->{$field} = $fields{$field};
}
$count++;
if (@row = &::FetchSQLData()) {
my $count = 0;
my %fields;
foreach my $field ("bug_id", "product", "version", "rep_platform",
"op_sys", "bug_status", "resolution_id", "priority",
"bug_severity", "component", "assigned_to", "reporter",
"bug_file_loc", "short_desc", "target_milestone",
"qa_contact", "status_whiteboard", "creation_ts",
"groupset", "delta_ts", "votes") {
$fields{$field} = shift @row;
if ($fields{$field}) {
$self->{$field} = $fields{$field};
}
$count++;
}
} else {
&::SendSQL("select groupset from bugs where bug_id = $bug_id");
if (@row = &::FetchSQLData()) {
$self->{'bug_id'} = $bug_id;
$self->{'error'} = "NotPermitted";
return $self;
} else {
$self->{'bug_id'} = $bug_id;
$self->{'error'} = "NotFound";
return $self;
}
}
$self->{'assigned_to'} = &::DBID_to_name($self->{'assigned_to'});
@@ -245,10 +248,10 @@ sub emitXML {
$xml .= "<bug>\n";
foreach my $field ("bug_id", "bug_status", "product",
foreach my $field ("bug_id", "urlbase", "bug_status", "product",
"priority", "version", "rep_platform", "assigned_to", "delta_ts",
"component", "reporter", "target_milestone", "bug_severity",
"creation_ts", "qa_contact", "op_sys", "resolution", "bug_file_loc",
"creation_ts", "qa_contact", "op_sys", "resolution_id", "bug_file_loc",
"short_desc", "keywords", "status_whiteboard") {
if ($self->{$field}) {
$xml .= " <$field>" . QuoteXMLChars($self->{$field}) . "</$field>\n";
@@ -322,7 +325,7 @@ sub XML_Header {
my ($urlbase, $version, $maintainer, $exporter) = (@_);
my $xml;
$xml = "<?xml version=\"1.0\" standalone=\"yes\"?>\n";
$xml = "<?xml version=\"1.0\" standalone=\"no\"?>\n";
$xml .= "<!DOCTYPE bugzilla SYSTEM \"$urlbase";
if (! ($urlbase =~ /.+\/$/)) {
$xml .= "/";
@@ -346,14 +349,24 @@ sub XML_Footer {
sub UserInGroup {
my $self = shift();
my ($groupname) = (@_);
return &::UserInGroup($self->{'whoid'}, $groupname);
if ($self->{'usergroupset'} eq "0") {
return 0;
}
&::ConnectToDatabase();
&::SendSQL("select (bit & $self->{'usergroupset'}) != 0 from groups where name = "
. &::SqlQuote($groupname));
my $bit = &::FetchOneColumn();
if ($bit) {
return 1;
}
return 0;
}
sub CanChangeField {
my $self = shift();
my ($f, $oldvalue, $newvalue) = (@_);
my $UserInEditGroup = -1;
my $UserInCanConfirmGroup = -1;
my $UserInEditGroupSet = -1;
my $UserInCanConfirmGroupSet = -1;
my $ownerid;
my $reporterid;
my $qacontactid;
@@ -376,10 +389,10 @@ sub CanChangeField {
if ($f =~ /^longdesc/) {
return 1;
}
if ($UserInEditGroup < 0) {
$UserInEditGroup = UserInGroup($self, "editbugs");
if ($UserInEditGroupSet < 0) {
$UserInEditGroupSet = UserInGroup($self, "editbugs");
}
if ($UserInEditGroup) {
if ($UserInEditGroupSet) {
return 1;
}
&::SendSQL("SELECT reporter, assigned_to, qa_contact FROM bugs " .
@@ -400,10 +413,10 @@ sub CanChangeField {
# group? Or, has it ever been confirmed? If not, then this
# isn't legal.
if ($UserInCanConfirmGroup < 0) {
$UserInCanConfirmGroup = &::UserInGroup($self->{'whoid'},"canconfirm");
if ($UserInCanConfirmGroupSet < 0) {
$UserInCanConfirmGroupSet = &::UserInGroup("canconfirm");
}
if ($UserInCanConfirmGroup) {
if ($UserInCanConfirmGroupSet) {
return 1;
}
&::SendSQL("SELECT everconfirmed FROM bugs WHERE bug_id = $self->{'bug_id'}");

File diff suppressed because it is too large Load Diff

View File

@@ -30,82 +30,13 @@ use strict;
# Bundle the functions in this file together into the "Token" package.
package Token;
use Date::Format;
# This module requires that its caller have said "require CGI.pl" to import
# relevant functions from that script and its companion globals.pl.
################################################################################
# Constants
################################################################################
# The maximum number of days a token will remain valid.
my $maxtokenage = 3;
################################################################################
# Functions
################################################################################
sub IssueEmailChangeToken {
my ($userid, $old_email, $new_email) = @_;
my $token_ts = time();
my $issuedate = time2str("%Y-%m-%d %H:%M", $token_ts);
# Generate a unique token and insert it into the tokens table.
# We have to lock the tokens table before generating the token,
# since the database must be queried for token uniqueness.
&::SendSQL("LOCK TABLES tokens WRITE");
my $token = GenerateUniqueToken();
my $quotedtoken = &::SqlQuote($token);
my $quoted_emails = &::SqlQuote($old_email . ":" . $new_email);
&::SendSQL("INSERT INTO tokens ( userid , issuedate , token ,
tokentype , eventdata )
VALUES ( $userid , '$issuedate' , $quotedtoken ,
'emailold' , $quoted_emails )");
my $newtoken = GenerateUniqueToken();
$quotedtoken = &::SqlQuote($newtoken);
&::SendSQL("INSERT INTO tokens ( userid , issuedate , token ,
tokentype , eventdata )
VALUES ( $userid , '$issuedate' , $quotedtoken ,
'emailnew' , $quoted_emails )");
&::SendSQL("UNLOCK TABLES");
# Mail the user the token along with instructions for using it.
my $template = $::template;
my $vars = $::vars;
$vars->{'oldemailaddress'} = $old_email . &::Param('emailsuffix');
$vars->{'newemailaddress'} = $new_email . &::Param('emailsuffix');
$vars->{'max_token_age'} = $maxtokenage;
$vars->{'token_ts'} = $token_ts;
$vars->{'token'} = $token;
$vars->{'emailaddress'} = $old_email . &::Param('emailsuffix');
my $message;
$template->process("account/email/change-old.txt.tmpl", $vars, \$message)
|| &::ThrowTemplateError($template->error());
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
close SENDMAIL;
$vars->{'token'} = $newtoken;
$vars->{'emailaddress'} = $new_email . &::Param('emailsuffix');
$message = "";
$template->process("account/email/change-new.txt.tmpl", $vars, \$message)
|| &::ThrowTemplateError($template->error());
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
close SENDMAIL;
}
sub IssuePasswordToken {
# Generates a random token, adds it to the tokens table, and sends it
# to the user with instructions for using it to change their password.
@@ -117,9 +48,6 @@ sub IssuePasswordToken {
&::SendSQL("SELECT userid FROM profiles WHERE login_name = $quotedloginname");
my ($userid) = &::FetchSQLData();
my $token_ts = time();
my $issuedate = time2str("%Y-%m-%d %H:%M", $token_ts);
# Generate a unique token and insert it into the tokens table.
# We have to lock the tokens table before generating the token,
# since the database must be queried for token uniqueness.
@@ -128,37 +56,12 @@ sub IssuePasswordToken {
my $quotedtoken = &::SqlQuote($token);
my $quotedipaddr = &::SqlQuote($::ENV{'REMOTE_ADDR'});
&::SendSQL("INSERT INTO tokens ( userid , issuedate , token , tokentype , eventdata )
VALUES ( $userid , '$issuedate' , $quotedtoken , 'password' , $quotedipaddr )");
VALUES ( $userid , NOW() , $quotedtoken , 'password' , $quotedipaddr )");
&::SendSQL("UNLOCK TABLES");
# Mail the user the token along with instructions for using it.
my $template = $::template;
my $vars = $::vars;
MailPasswordToken($loginname, $token);
$vars->{'token'} = $token;
$vars->{'emailaddress'} = $loginname . &::Param('emailsuffix');
$vars->{'max_token_age'} = $maxtokenage;
$vars->{'token_ts'} = $token_ts;
my $message = "";
$template->process("account/password/forgotten-password.txt.tmpl",
$vars, \$message)
|| &::ThrowTemplateError($template->error());
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
close SENDMAIL;
}
sub CleanTokenTable {
&::SendSQL("LOCK TABLES tokens WRITE");
&::SendSQL("DELETE FROM tokens
WHERE TO_DAYS(NOW()) - TO_DAYS(issuedate) >= " . $maxtokenage);
&::SendSQL("UNLOCK TABLES");
}
@@ -188,6 +91,34 @@ sub GenerateUniqueToken {
}
sub MailPasswordToken {
# Emails a password token to a user along with instructions for its use.
# Called exclusively from &IssuePasswordToken.
my ($emailaddress, $token) = @_;
my $urlbase = &::Param("urlbase");
my $emailsuffix = &::Param('emailsuffix');
$token = &::url_quote($token);
open SENDMAIL, "|/usr/lib/sendmail -ti";
print SENDMAIL qq|From: bugzilla-daemon
To: $emailaddress$emailsuffix
Subject: Bugzilla Change Password Request
You or someone impersonating you has requested to change your Bugzilla
password. To change your password, visit the following link:
${urlbase}token.cgi?a=cfmpw&t=$token
If you are not the person who made this request, or you wish to cancel
this request, visit the following link:
${urlbase}token.cgi?a=cxlpw&t=$token
|;
close SENDMAIL;
}
sub Cancel {
# Cancels a previously issued token and notifies the system administrator.
@@ -212,26 +143,25 @@ sub Cancel {
# Format the user's real name and email address into a single string.
my $username = $realname ? $realname . " <" . $loginname . ">" : $loginname;
my $template = $::template;
my $vars = $::vars;
$vars->{'emailaddress'} = $username;
$vars->{'maintainer'} = $maintainer;
$vars->{'remoteaddress'} = $::ENV{'REMOTE_ADDR'};
$vars->{'token'} = $token;
$vars->{'tokentype'} = $tokentype;
$vars->{'issuedate'} = $issuedate;
$vars->{'eventdata'} = $eventdata;
$vars->{'cancelaction'} = $cancelaction;
# Notify the user via email about the cancellation.
open SENDMAIL, "|/usr/lib/sendmail -ti";
print SENDMAIL qq|From: bugzilla-daemon
To: $username
Subject: "$tokentype" token cancelled
my $message;
$template->process("account/cancel-token.txt.tmpl", $vars, \$message)
|| &::ThrowTemplateError($template->error());
A token was cancelled from $::ENV{'REMOTE_ADDR'}. This is either
an honest mistake or the result of a malicious hack attempt.
Take a look at the information below and forward this email
to $maintainer if you suspect foul play.
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
Token: $token
Token Type: $tokentype
User: $username
Issue Date: $issuedate
Event Data: $eventdata
Cancelled Because: $cancelaction
|;
close SENDMAIL;
# Delete the token from the database.
@@ -241,30 +171,14 @@ sub Cancel {
}
sub HasPasswordToken {
# Returns a password token if the user has one.
# Returns a password token if the user has one. Otherwise returns 0 (false).
my ($userid) = @_;
&::SendSQL("SELECT token FROM tokens
WHERE userid = $userid AND tokentype = 'password' LIMIT 1");
&::SendSQL("SELECT token FROM tokens WHERE userid = $userid LIMIT 1");
my ($token) = &::FetchSQLData();
return $token;
}
sub HasEmailChangeToken {
# Returns an email change token if the user has one.
my ($userid) = @_;
&::SendSQL("SELECT token FROM tokens
WHERE userid = $userid
AND tokentype = 'emailnew'
OR tokentype = 'emailold' LIMIT 1");
my ($token) = &::FetchSQLData();
return $token;
}
1;

View File

@@ -0,0 +1,581 @@
#!/usr/bonsaitools/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Terry Weissman.
# Portions created by Terry Weissman are
# Copyright (C) 2000 Terry Weissman. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Matthew Tuck <matty@chariot.net.au>
# Myk Melez <myk@mozilla.org>
# Make it harder for us to do dangerous things in Perl.
use diagnostics;
use strict;
use lib ".";
use vars qw(
$template
$vars
);
# Include the Bugzilla CGI and general utility library.
require "CGI.pl";
################################################################################
# Some constants callers might want to use
################################################################################
$::tryagain = 'Please press <b>Back</b> and try again.';
$::wentwrong = 'Something went wrong.';
################################################################################
# The following must be set up by the caller.
################################################################################
# What we're editing eg ('resolution', 'Resolution', 'resolutions').
($::valuetype, $::valuetypeicap, $::valuetypeplural) = ();
# What group you have to be in to edit these.
$::grouprestrict = undef;
# The name of the CGI calling the editor.
$::thiscgi = undef;
# The name of the table that stores what we're editing.
$::tablename = undef;
# The name of the table that has references to what we're editing.
# This currently doesn't support multiple references.
$::bugsreftablename = undef;
# The full field name of the field that has references to what we're editing,
# eg 'bugs.resolution_id'.
$::bugsreffieldref = undef;
# The maximum number of characters allowed in the name of what we're editing.
# Get this information from the schema.
$::maxnamesize = undef;
# Whether to use sortkeys.
$::usesortkeys = undef;
################################################################################
# The following may be changed by the caller.
################################################################################
# Whether we can delete this thing when it is referred to in the DB.
$::candeleterefsref = sub ($) { return 0; };
# If so, a subroutine to do it.
$::deleterefsref = sub ($) { die 'Shouldn\'t be here! (admineditor.pl/deleterefsref)'; };
# This allows us to add extra vars to the template, which is passed in as a hashref.
$::extravarsref = sub ($) {};
# "Rest" allows us to extend the code in this file to handle extra things, called
# "the rest".
# These check extra errors and warnings.
$::extraerrorsref = sub ($) {};
$::extrawarningsref = sub ($) { return (); };
# This takes the rest, and does anything necessary for use in SQL, eg
# SqlQuoting strings.
$::preparerestforsqlref = sub ($) {};
# This is the default rest.
%::defaultrest = ();
################################################################################
# Begin admin editor code
################################################################################
sub ValidateName ($) {
my ($fieldsref) = @_;
my $name = $::FORM{name};
my $id = $$fieldsref{id};
if (!defined($name)) {
ThatDoesntValidate("name");
exit;
}
$name = trim($name);
if ($name eq "") {
DisplayError("You must enter a non-blank name for the $::valuetype. $::tryagain");
exit;
}
if ($name =~ /[\s,]/) {
DisplayError("You may not use commas or whitespace in a $::valuetype name. $::tryagain");
exit;
}
if ($::maxnamesize < length($name)) {
DisplayError("Names can't have more than $::maxnamesize characters. $::tryagain");
exit;
}
my $sqlcondition;
my $sqlname = SqlQuote($name);
if (defined $id) {
$sqlcondition = "name = $sqlname AND id != $id";
}
else {
$sqlcondition = "name = $sqlname";
}
if (RecordExists($::tablename, $sqlcondition)) {
DisplayError("The $::valuetype $name already exists. $::tryagain");
exit;
}
$$fieldsref{name} = $name;
}
sub ValidateDesc ($) {
my ($fieldsref) = @_;
my $description = $::FORM{description};
if (!defined($description)) {
ThatDoesntValidate("description");
exit;
}
$description = trim($description);
if ($description eq "") {
DisplayError("You must enter a non-blank description of the $::valuetype. $::tryagain");
exit;
}
$$fieldsref{description} = $description;
}
sub ValidateID ($) {
my ($fieldsref) = @_;
$::FORM{id} = trim($::FORM{id});
if (detaint_natural($::FORM{id})) {
$$fieldsref{id} = $::FORM{id};
}
else {
ThatDoesntValidate("id");
exit;
}
}
sub ValidateIsActive ($) {
my ($fieldsref) = @_;
if (!defined $::FORM{isactive}) {
$$fieldsref{isactive} = 0;
}
elsif ($::FORM{isactive} eq "1") {
$$fieldsref{isactive} = 1;
}
else {
ThatDoesntValidate("isactive");
exit;
}
}
sub ValidateSortKey ($) {
my ($fieldsref) = @_;
$::FORM{sortkey} = trim($::FORM{sortkey});
if (detaint_natural($::FORM{sortkey})) {
$$fieldsref{sortkey} = $::FORM{sortkey};
}
else {
ThatDoesntValidate('sortkey');
exit;
}
}
sub CheckWarnings (%) {
my (%fields) = @_;
my @warnings = &$::extrawarningsref(%fields);
if (@warnings && !$::FORM{reallychange}) {
$vars->{warnings} = @warnings;
EmitTemplate("admin/$::valuetypeplural/warnings.atml");
exit;
}
}
sub EmitTemplate($) {
my ($templatename) = @_;
# Return the appropriate HTTP response headers.
print "Content-type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process($templatename, $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}
sub ExtraFields() {
my %defaults = %::defaultrest;
return keys %defaults;
}
################################################################################
# Main Body Execution
################################################################################
sub AdminEditor() {
# Preliminary checks.
confirm_login();
unless (UserInGroup($::grouprestrict)) {
DisplayError("Sorry, you aren't a member of the $::grouprestrict group. " .
"And so, you aren't allowed to add, modify or delete $::valuetypeplural.",
"Not allowed");
exit;
}
$vars->{'thiscgi'} = $::thiscgi;
$vars->{'valuetype'} = $::valuetype;
$vars->{'valuetypeicap'} = $::valuetypeicap;
$vars->{'maxnamesize'} = $::maxnamesize;
$vars->{'usesortkeys'} = $::usesortkeys;
&$::extravarsref($vars);
# All calls to this script should contain an "action" variable whose value
# determines what the user wants to do. The code below checks the value of
# that variable and runs the appropriate code.
# Determine whether to use the action specified by the user or the default.
my $action = $::FORM{'action'} || 'list';
my %fields;
if ($action eq "list") {
ListScreen("");
}
elsif ($action eq "add") {
CreateScreen();
}
elsif ($action eq "new") {
ValidateName(\%fields);
ValidateDesc(\%fields);
ValidateSortKey(\%fields) if ($::usesortkeys);
&$::extraerrorsref(\%fields);
CheckWarnings(%fields);
InsertNew(%fields);
}
elsif ($action eq "edit") {
ValidateID(\%fields);
EditScreen(%fields);
}
elsif ($action eq "update") {
ValidateID(\%fields);
ValidateName(\%fields);
ValidateDesc(\%fields);
ValidateIsActive(\%fields);
ValidateSortKey(\%fields) if ($::usesortkeys);
&$::extraerrorsref(\%fields);
CheckWarnings(%fields);
UpdateExisting(%fields);
}
elsif ($action eq "delete") {
ValidateID(\%fields);
DeleteExisting(%fields);
}
else {
print "Content-type: text/html\n\n";
ThatDoesntValidate("action");
}
}
################################################################################
# The Actions
################################################################################
# Screen to present values to user to determine what to do.
# Next action would be CreateScreen, EditScreen or DeleteExisting.
sub ListScreen ($) {
my ($message) = (@_);
my $ordering = $::usesortkeys
? "$::tablename.sortkey, $::tablename.name"
: "$::tablename.name";
SendSQL("SELECT $::tablename.id, $::tablename.name, " .
"$::tablename.description, $::tablename.isactive, " .
"COUNT($::bugsreffieldref) " .
"FROM $::tablename LEFT JOIN $::bugsreftablename ON " .
"$::tablename.id = $::bugsreffieldref " .
"GROUP BY $::tablename.id " .
"ORDER BY $ordering");
my @values;
while (MoreSQLData()) {
my ($id, $name, $description, $isactive, $bugcount) =
FetchSQLData();
$bugcount ||= 0;
push( @values, { 'id' => $id, 'name' => $name, 'description' => $description,
'isactive' => $isactive, 'bugcount' => $bugcount } );
}
# Define the variables and functions that will be passed to the UI template.
$vars->{'values'} = \@values;
$vars->{'message'} = $message;
# Generate the template.
EmitTemplate("admin/$::valuetypeplural/list.atml");
}
# Screen to create a new value.
# Next action would be InsertNew.
sub CreateScreen() {
$vars->{name} = '';
$vars->{description} = '';
$vars->{sortkey} = 0;
# Defaults for the rest
%$vars = ( %$vars, %::defaultrest );
# Generate the template.
EmitTemplate("admin/$::valuetypeplural/create.atml");
}
# Add value entered on the creation screen.
sub InsertNew(%) {
my (%fields) = @_;
my $htmlname = html_quote($fields{name});
my $sqlname = SqlQuote($fields{name});
my $sqldescription = SqlQuote($fields{description});
# Pick an unused number. Be sure to recycle numbers that may have been
# deleted in the past. This code is potentially slow, but it happens
# rarely enough.
SendSQL("SELECT id FROM $::tablename ORDER BY id");
my $newid = 1;
while (MoreSQLData()) {
my $oldid = FetchOneColumn();
detaint_natural($oldid) || die "Failed to detaint next seqnum.";
if ($oldid > $newid) {
last;
}
$newid = $oldid + 1;
}
# Do proper conversion for inclusion in SQL
$fields{id} = $newid;
$fields{name} = $sqlname;
$fields{description} = SqlQuote($fields{description});
&$::preparerestforsqlref(\%fields);
# Add the new record.
my $fieldnames = join(', ', keys(%fields));
my $fieldvalues = join(', ', values(%fields));
SendSQL("INSERT INTO $::tablename ($fieldnames) VALUES ($fieldvalues)");
# Make versioncache flush
unlink "data/versioncache";
# Display list with message.
ListScreen( "$::valuetypeicap $htmlname added." );
}
# Screen to edit existing value.
# Next action would be UpdateExisting.
sub EditScreen (%) {
my (%fields) = @_;
my $id = $fields{id};
my %defaults = %::defaultrest;
my @fieldnames = ('name', 'description', 'isactive', keys %defaults);
@fieldnames = (@fieldnames, 'sortkey') if ($::usesortkeys);
my $fieldnames = join(', ', @fieldnames);
# get data of record
SendSQL("SELECT $fieldnames FROM $::tablename WHERE id = $id");
if (!MoreSQLData()) {
DisplayError("$::wentwrong I can't find the $::valuetype ID $id.");
exit;
}
my @data = FetchSQLData();
my $bugcount = GetCount( $::bugsreftablename, "$::bugsreffieldref = $id" );
# Define the variables and functions that will be passed to the UI template.
$vars->{'id'} = $id;
$vars->{'bugcount'} = $bugcount;
foreach my $fieldname (@fieldnames) {
my $datum = shift @data;
$vars->{$fieldname} = $datum;
}
# Generate the template.
EmitTemplate("admin/$::valuetypeplural/edit.atml");
}
# Update the value edited on the edit screen.
sub UpdateExisting (%) {
my (%fields) = @_;
my $id = $fields{id};
my $htmlname = html_quote($fields{name});
my $sqlname = SqlQuote($fields{name});
# Do proper conversion for inclusion in SQL
delete $fields{id};
$fields{name} = $sqlname;
$fields{description} = SqlQuote($fields{description});
&$::preparerestforsqlref(\%fields);
# Generate the SET SQL
my $assignments = GenerateUpdateSQL(%fields);
# Send the SQL
SendSQL("UPDATE $::tablename SET $assignments WHERE id = $id");
# Make versioncache flush
unlink "data/versioncache";
# Display list with message.
ListScreen( "$::valuetypeicap $htmlname updated." );
}
# Delete the value selected on the list screen.
sub DeleteExisting (%) {
my (%fields) = @_;
my $id = $fields{id};
SendSQL("SELECT name FROM $::tablename WHERE id = $id");
if (!MoreSQLData()) {
DisplayError("$::wentwrong That $::valuetype does not exist!");
exit;
}
my $name = FetchOneColumn();
my $htmlname = html_quote($name);
my $bugcount = GetCount($::bugsreftablename, "$::bugsreffieldref = $id");
if (!$::FORM{reallydelete} or !(&$::candeleterefsref($id))) {
if (0 < $bugcount) {
if (&$::candeleterefsref($id)) {
$vars->{id} = $id;
$vars->{name} = $name;
$vars->{bugcount} = $bugcount;
EmitTemplate("admin/$::valuetypeplural/confirmdelete.atml");
exit;
}
else {
DisplayError("There are $bugcount bug(s) which have " .
"the $::valuetype $htmlname. You " .
"can't delete the $::valuetype while " .
"it is on one or more bugs.");
exit;
}
}
}
if ($bugcount > 0) {
&$::deleterefsref($id);
}
SendSQL("DELETE FROM $::tablename WHERE id = $id");
# Make versioncache flush
unlink "data/versioncache";
# Display list with message.
ListScreen( "$::valuetypeicap $htmlname deleted." );
}
1;

View File

@@ -31,19 +31,44 @@ use strict;
use lib qw(.);
use vars qw(
$template
$vars
);
# Include the Bugzilla CGI and general utility library.
require "CGI.pl";
# Establish a connection to the database backend.
ConnectToDatabase();
# Check whether or not the user is logged in and, if so, set the $userid
my $userid = quietly_check_login();
# Use the template toolkit (http://www.template-toolkit.org/) to generate
# the user interface (HTML pages and mail messages) using templates in the
# "template/" subdirectory.
use Template;
# Create the global template object that processes templates and specify
# configuration parameters that apply to all templates processed in this script.
my $template = Template->new(
{
# Colon-separated list of directories containing templates.
INCLUDE_PATH => "template/custom:template/default" ,
# Allow templates to be specified with relative paths.
RELATIVE => 1
}
);
# Define the global variables and functions that will be passed to the UI
# template. Individual functions add their own values to this hash before
# sending them to the templates they process.
my $vars =
{
# Function for retrieving global parameters.
'Param' => \&Param ,
# Function for processing global parameters that contain references
# to other global parameters.
'PerformSubsts' => \&PerformSubsts
};
# Check whether or not the user is logged in and, if so, set the $::userid
# and $::usergroupset variables.
quietly_check_login();
################################################################################
# Main Body Execution
@@ -63,20 +88,19 @@ if ($action eq "view")
}
elsif ($action eq "viewall")
{
ValidateBugID($::FORM{'bugid'}, $userid);
ValidateBugID($::FORM{'bugid'});
viewall();
}
elsif ($action eq "enter")
{
my $userid = confirm_login();
ValidateBugID($::FORM{'bugid'}, $userid);
confirm_login();
ValidateBugID($::FORM{'bugid'});
enter();
}
elsif ($action eq "insert")
{
my $userid = confirm_login();
ValidateBugID($::FORM{'bugid'}, $userid);
ValidateComment($::FORM{'comment'});
confirm_login();
ValidateBugID($::FORM{'bugid'});
validateFilename();
validateData();
validateDescription();
@@ -87,20 +111,16 @@ elsif ($action eq "insert")
}
elsif ($action eq "edit")
{
quietly_check_login();
validateID();
validateCanEdit($::FORM{'id'});
edit();
}
elsif ($action eq "update")
{
my $userid = confirm_login();
UserInGroup($userid, "editbugs")
confirm_login();
UserInGroup("editbugs")
|| DisplayError("You are not authorized to edit attachments.")
&& exit;
ValidateComment($::FORM{'comment'});
validateID();
validateCanEdit($::FORM{'id'});
validateDescription();
validateIsPatch();
validateContentType() unless $::FORM{'ispatch'};
@@ -136,29 +156,7 @@ sub validateID
# Make sure the user is authorized to access this attachment's bug.
my ($bugid) = FetchSQLData();
ValidateBugID($bugid, $userid);
}
sub validateCanEdit
{
my ($attach_id) = (@_);
# If the user is not logged in, claim that they can edit. This allows
# the edit scrren to be displayed to people who aren't logged in.
# People not logged in can't actually commit changes, because that code
# calls confirm_login, not quietly_check_login, before calling this sub
return if $userid == 0;
# People in editbugs can edit all attachments
return if UserInGroup($userid, "editbugs");
# Bug 97729 - the submitter can edit their attachments
SendSQL("SELECT attach_id FROM attachments WHERE " .
"attach_id = $attach_id AND submitter_id = $userid");
FetchSQLData()
|| DisplayError("You are not authorised to edit attachment #$attach_id")
&& exit;
ValidateBugID($bugid);
}
sub validateDescription
@@ -304,6 +302,15 @@ sub validateFilename
sub validateObsolete
{
# When a user creates an attachment, they can request that one or more
# existing attachments be made obsolete. This function makes sure they
# are authorized to make changes to attachments and that the IDs of the
# attachments they selected for obsoletion are all valid.
UserInGroup("editbugs")
|| DisplayError("You must be authorized to make changes to attachments
to make attachments obsolete when creating a new attachment.")
&& exit;
# Make sure the attachment id is valid and the user has permissions to view
# the bug to which it is attached.
foreach my $attachid (@{$::MFORM{'obsolete'}}) {
@@ -322,6 +329,9 @@ sub validateObsolete
my ($bugid, $isobsolete, $description) = FetchSQLData();
# Make sure the user is authorized to access this attachment's bug.
ValidateBugID($bugid);
if ($bugid != $::FORM{'bugid'})
{
$description = html_quote($description);
@@ -337,9 +347,6 @@ sub validateObsolete
DisplayError("Attachment #$attachid ($description) is already obsolete.");
exit;
}
# Check that the user can modify this attachment
validateCanEdit($attachid);
}
}
@@ -418,8 +425,9 @@ sub viewall
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/show-multiple.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("attachment/viewall.atml", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}
@@ -427,16 +435,12 @@ sub enter
{
# Display a form for entering a new attachment.
# Retrieve the attachments the user can edit from the database and write
# them into an array of hashes where each hash represents one attachment.
my $canEdit = "";
if (!UserInGroup($userid, "editbugs")) {
$canEdit = "AND submitter_id = $userid";
}
# Retrieve the attachments from the database and write them into an array
# of hashes where each hash represents one attachment.
SendSQL("SELECT attach_id, description
FROM attachments
WHERE bug_id = $::FORM{'bugid'}
AND isobsolete = 0 $canEdit
AND isobsolete = 0
ORDER BY attach_id");
my @attachments; # the attachments array
while ( MoreSQLData() ) {
@@ -460,8 +464,9 @@ sub enter
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/create.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("attachment/enter.atml", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}
@@ -477,7 +482,7 @@ sub insert
# Insert the attachment into the database.
SendSQL("INSERT INTO attachments (bug_id, filename, description, mimetype, ispatch, submitter_id, thedata)
VALUES ($::FORM{'bugid'}, $filename, $description, $contenttype, $::FORM{'ispatch'}, $userid, $thedata)");
VALUES ($::FORM{'bugid'}, $filename, $description, $contenttype, $::FORM{'ispatch'}, $::userid, $thedata)");
# Retrieve the ID of the newly created attachment record.
SendSQL("SELECT LAST_INSERT_ID()");
@@ -501,14 +506,14 @@ sub insert
foreach my $attachid (@{$::MFORM{'obsolete'}}) {
SendSQL("UPDATE attachments SET isobsolete = 1 WHERE attach_id = $attachid");
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($::FORM{'bugid'}, $attachid, $userid, NOW(), $fieldid, '0', '1')");
VALUES ($::FORM{'bugid'}, $attachid, $::userid, NOW(), $fieldid, '0', '1')");
}
# Send mail to let people know the attachment has been created. Uses a
# special syntax of the "open" and "exec" commands to capture the output of
# "processmail", which "system" doesn't allow, without running the command
# through a shell, which backticks (``) do.
#system ("./processmail", $bugid , $userid);
#system ("./processmail", $bugid , $::userid);
#my $mailresults = `./processmail $bugid $::userid`;
my $mailresults = '';
open(PMAIL, "-|") or exec('./processmail', $::FORM{'bugid'}, $::COOKIE{'Bugzilla_login'});
@@ -527,17 +532,17 @@ sub insert
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/created.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("attachment/created.atml", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}
sub edit
{
# Edit an attachment record. Users with "editbugs" privileges, (or the
# original attachment's submitter) can edit the attachment's description,
# content type, ispatch and isobsolete flags, and statuses, and they can
# also submit a comment that appears in the bug.
# Edit an attachment record. Users with "editbugs" privileges can edit the
# attachment's description, content type, ispatch and isobsolete flags, and
# statuses, and they can also submit a comment that appears in the bug.
# Users cannot edit the content of the attachment itself.
# Retrieve the attachment from the database.
@@ -602,8 +607,9 @@ sub edit
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/edit.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("attachment/edit.atml", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}
@@ -682,23 +688,23 @@ sub update
my $quotedolddescription = SqlQuote($olddescription);
my $fieldid = GetFieldID('attachments.description');
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($bugid, $::FORM{'id'}, $userid, NOW(), $fieldid, $quotedolddescription, $quoteddescription)");
VALUES ($bugid, $::FORM{'id'}, $::userid, NOW(), $fieldid, $quotedolddescription, $quoteddescription)");
}
if ($oldcontenttype ne $::FORM{'contenttype'}) {
my $quotedoldcontenttype = SqlQuote($oldcontenttype);
my $fieldid = GetFieldID('attachments.mimetype');
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($bugid, $::FORM{'id'}, $userid, NOW(), $fieldid, $quotedoldcontenttype, $quotedcontenttype)");
VALUES ($bugid, $::FORM{'id'}, $::userid, NOW(), $fieldid, $quotedoldcontenttype, $quotedcontenttype)");
}
if ($oldispatch ne $::FORM{'ispatch'}) {
my $fieldid = GetFieldID('attachments.ispatch');
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($bugid, $::FORM{'id'}, $userid, NOW(), $fieldid, $oldispatch, $::FORM{'ispatch'})");
VALUES ($bugid, $::FORM{'id'}, $::userid, NOW(), $fieldid, $oldispatch, $::FORM{'ispatch'})");
}
if ($oldisobsolete ne $::FORM{'isobsolete'}) {
my $fieldid = GetFieldID('attachments.isobsolete');
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($bugid, $::FORM{'id'}, $userid, NOW(), $fieldid, $oldisobsolete, $::FORM{'isobsolete'})");
VALUES ($bugid, $::FORM{'id'}, $::userid, NOW(), $fieldid, $oldisobsolete, $::FORM{'isobsolete'})");
}
if ($oldstatuslist ne $newstatuslist) {
my ($removed, $added) = DiffStrings($oldstatuslist, $newstatuslist);
@@ -706,7 +712,7 @@ sub update
my $quotedadded = SqlQuote($added);
my $fieldid = GetFieldID('attachstatusdefs.name');
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($bugid, $::FORM{'id'}, $userid, NOW(), $fieldid, $quotedremoved, $quotedadded)");
VALUES ($bugid, $::FORM{'id'}, $::userid, NOW(), $fieldid, $quotedremoved, $quotedadded)");
}
# Unlock all database tables now that we are finished updating the database.
@@ -756,7 +762,9 @@ sub update
}
# Get the user's login name since the AppendComment function needs it.
my $who = DBID_to_name($userid);
my $who = DBID_to_name($::userid);
# Mention $::userid again so Perl doesn't give me a warning about it.
my $neverused = $::userid;
# Append the comment to the list of comments in the database.
AppendComment($bugid, $who, $wrappedcomment);
@@ -767,10 +775,10 @@ sub update
# of the "open" and "exec" commands to capture the output of "processmail",
# which "system" doesn't allow, without running the command through a shell,
# which backticks (``) do.
#system ("./processmail", $bugid , $userid);
#my $mailresults = `./processmail $bugid $userid`;
#system ("./processmail", $bugid , $::userid);
#my $mailresults = `./processmail $bugid $::userid`;
my $mailresults = '';
open(PMAIL, "-|") or exec('./processmail', $bugid, DBID_to_name($userid));
open(PMAIL, "-|") or exec('./processmail', $bugid, DBID_to_name($::userid));
$mailresults .= $_ while <PMAIL>;
close(PMAIL);
@@ -783,6 +791,8 @@ sub update
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/updated.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("attachment/updated.atml", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}

View File

@@ -0,0 +1,79 @@
<html> <head>
<title>The "boolean chart" section of the query page</title>
</head>
<body>
<h1>The "boolean chart" section of the query page</h1>
("Boolean chart" is a terrible term; anyone got a better one I can use
instead?)
<p>
The Bugzilla query page is designed to be reasonably easy to use.
But, with such ease of use always comes some lack of power. The
"boolean chart" section is designed to let you do very powerful
queries, but it's not the easiest thing to learn (or explain).
<p>
So.
<p>
The boolean chart starts with a single "term". A term is a
combination of two pulldown menus and a text field.
You choose items from the menus, specifying "what kind of thing
am I searching for" and "what kind of matching do I want", and type in
a value on the text field, specifying "what should it match".
<p>
The real fun starts when you click on the "Or" or "And" buttons. If
you bonk on the "Or" button, then you get a second term to the right
of the first one. You can then configure that term, and the result of
the query will be anything that matches either of the terms.
<p>
Or, you can bonk the "And" button, and get a new term below the
original one, and now the result of the query will be anything that
matches both of the terms.
<p>
And you can keep clicking "And" and "Or", and get a page with tons of
terms. "Or" has higher precedence than "And". (In other words, you
can think of each line of "Or" stuff as having parenthesis around it.)
<p>
The most subtle thing is this "Add another boolean chart" button.
This is almost the same thing as the "And" button. The difference is
if you use one of the fields where several items can be associated
with a single bug. This includes "Comments", "CC", and all the
"changed [something]" entries. Now, if you have multiple terms that
all talk about one of these fields, it's ambiguous whether they are
allowed to be talking about different instances of that field. So,
to let you have it both ways, they always mean the same instance,
unless the terms appear on different charts.
<p>
For example: if you search for "priority changed to P5" and
"priority changed by person@addr", it will only find bugs where the
given person at some time changed the priority to P5. However, if
what you really want is to find all bugs where the milestone was
changed at some time by the person, and someone (possibly someone
else) at some time changed the milestone to P5, then you would put
the two terms in two different charts.
<p>
Clear as mud? Please, I beg you, rewrite this document to make
everything crystal clear, and send the improved version to <a
href="mailto:tara@tequilarista.org">Tara</a>.
<hr>
<!-- hhmts start -->
Last modified: Wed Aug 16 16:06:36 2000
<!-- hhmts end -->
</body> </html>

View File

@@ -28,302 +28,622 @@ use RelationSet;
# Use the Attachment module to display attachments for the bug.
use Attachment;
sub show_bug {
# Shut up misguided -w warnings about "used only once". For some reason,
# "use vars" chokes on me when I try it here.
sub bug_form_pl_sillyness {
my $zz;
$zz = %::FORM;
$zz = %::proddesc;
$zz = %::prodmaxvotes;
$zz = @::enterable_products;
$zz = @::settable_resolution;
$zz = $::unconfirmedstate;
$zz = $::milestoneurl;
$zz = $::template;
$zz = $::vars;
$zz = @::legal_priority;
$zz = @::legal_platform;
$zz = @::legal_severity;
$zz = @::legal_bug_status;
$zz = @::target_milestone;
$zz = @::components;
$zz = @::legal_keywords;
$zz = @::versions;
$zz = @::legal_opsys;
}
# Shut up misguided -w warnings about "used only once". For some reason,
# "use vars" chokes on me when I try it here.
# Use templates
my $template = $::template;
my $vars = $::vars;
$vars->{'GetBugLink'} = \&GetBugLink;
$vars->{'quoteUrls'} = \&quoteUrls,
$vars->{'lsearch'} = \&lsearch,
$vars->{'header_done'} = (@_),
sub bug_form_pl_sillyness {
my $zz;
$zz = %::FORM;
$zz = %::components;
$zz = %::proddesc;
$zz = %::prodmaxvotes;
$zz = %::versions;
$zz = @::legal_keywords;
$zz = @::legal_opsys;
$zz = @::legal_platform;
$zz = @::legal_priority;
$zz = @::settable_normal_resolution;
$zz = @::settable_dupe_resolution;
$zz = @::settable_moved_resolution;
$zz = @::legal_severity;
$zz = %::target_milestone;
}
my $userid = quietly_check_login();
my $loginok = quietly_check_login();
my $id = $::FORM{'id'};
if (!defined($id)) {
$template->process("bug/choose.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
exit;
}
my %user = %{$vars->{'user'}};
my %bug;
my $id = $::FORM{'id'};
# Populate the bug hash with the info we get directly from the DB.
my $query = "
SELECT bugs.bug_id, product, version, rep_platform,
op_sys, bug_status, resolution, priority,
bug_severity, component, assigned_to, reporter,
bug_file_loc, short_desc, target_milestone,
qa_contact, status_whiteboard,
my $query = "
select
bugs.bug_id,
product,
version,
rep_platform,
op_sys,
bug_status,
resolution_id,
priority,
bug_severity,
component,
assigned_to,
reporter,
bug_file_loc,
short_desc,
target_milestone,
qa_contact,
status_whiteboard,
date_format(creation_ts,'%Y-%m-%d %H:%i'),
delta_ts, sum(votes.count)
FROM bugs LEFT JOIN votes USING(bug_id)
WHERE bugs.bug_id = $id
GROUP BY bugs.bug_id";
groupset,
delta_ts,
sum(votes.count)
from bugs left join votes using(bug_id)
where bugs.bug_id = $id
group by bugs.bug_id";
SendSQL($query);
SendSQL($query);
my %bug;
my @row;
@row = FetchSQLData();
my $count = 0;
foreach my $field ("bug_id", "product", "version", "rep_platform",
"op_sys", "bug_status", "resolution_id", "priority",
"bug_severity", "component", "assigned_to", "reporter",
"bug_file_loc", "short_desc", "target_milestone",
"qa_contact", "status_whiteboard", "creation_ts",
"groupset", "delta_ts", "votes") {
$bug{$field} = shift @row;
if (!defined $bug{$field}) {
$bug{$field} = "";
}
$count++;
}
my $value;
my @row = FetchSQLData();
foreach my $field ("bug_id", "product", "version", "rep_platform",
"op_sys", "bug_status", "resolution", "priority",
"bug_severity", "component", "assigned_to", "reporter",
"bug_file_loc", "short_desc", "target_milestone",
"qa_contact", "status_whiteboard", "creation_ts",
"delta_ts", "votes")
$bug{'resolution'} = ResolutionIDToName($bug{'resolution_id'});
my $assignedtoid = $bug{'assigned_to'};
my $reporterid = $bug{'reporter'};
my $qacontactid = $bug{'qa_contact'};
$bug{'assigned_to_email'} = DBID_to_name($assignedtoid);
$bug{'assigned_to'} = DBID_to_real_or_loginname($bug{'assigned_to'});
$bug{'reporter'} = DBID_to_real_or_loginname($bug{'reporter'});
print qq{<FORM NAME="changeform" METHOD="POST" ACTION="process_bug.cgi">\n};
# foreach my $i (sort(keys(%bug))) {
# my $q = value_quote($bug{$i});
# print qq{<INPUT TYPE="HIDDEN" NAME="orig-$i" VALUE="$q">\n};
# }
$bug{'long_desc'} = GetLongDescriptionAsHTML($id);
my $longdesclength = length($bug{'long_desc'});
GetVersionTable();
#
# These should be read from the database ...
#
my $platform_popup = make_options(\@::legal_platform, $bug{'rep_platform'});
my $priority_popup = make_options(\@::legal_priority, $bug{'priority'});
my $sev_popup = make_options(\@::legal_severity, $bug{'bug_severity'});
my $component_popup = make_options($::components{$bug{'product'}},
$bug{'component'});
my $ccSet = new RelationSet;
$ccSet->mergeFromDB("select who from cc where bug_id=$id");
my @ccList = $ccSet->toArrayOfStrings();
my $cc_element = "<INPUT TYPE=HIDDEN NAME=cc VALUE=\"\">";
if (scalar(@ccList) > 0) {
$cc_element = "<SELECT NAME=cc MULTIPLE SIZE=5>\n";
foreach my $ccName ( @ccList ) {
$cc_element .= "<OPTION VALUE=\"$ccName\">$ccName\n";
}
$cc_element .= "</SELECT><BR>\n" .
"<INPUT TYPE=CHECKBOX NAME=removecc>Remove selected CCs<br>\n";
}
my $URL = value_quote($bug{'bug_file_loc'});
if (defined $URL && $URL ne "none" && $URL ne "NULL" && $URL ne "") {
$URL = "<B><A HREF=\"$URL\">URL:</A></B>";
} else {
$URL = "<B>URL:</B>";
}
#
# Make a list of products the user has access to
#
my (@prodlist, $product_popup);
foreach my $p (sort(keys %::versions)) {
if ($p eq $bug{'product'}) {
# if it's the product the bug is already in, it's ALWAYS in
# the popup, period, whether the user can see it or not, and
# regardless of the disallownew setting.
push(@prodlist, $p);
next;
}
if (defined $::proddesc{$p} && $::proddesc{$p} eq '0') {
# Special hack. If we stuffed a "0" into proddesc, that means
# that disallownew was set for this bug, and so we don't want
# to allow people to specify that product here.
next;
}
if(Param("usebuggroupsentry")
&& GroupExists($p)
&& !UserInGroup($p))
{
$value = shift(@row);
$bug{$field} = defined($value) ? $value : "";
# If we're using bug groups to restrict entry on products, and
# this product has a bug group, and the user is not in that
# group, we don't want to include that product in this list.
next;
}
push(@prodlist, $p);
}
# General arrays of info about the database state
GetVersionTable();
# If the user has access to multiple products, display a popup, otherwise
# display the current product.
# Fiddle the product list.
my $seen_curr_prod;
my @prodlist;
foreach my $product (@::enterable_products) {
if ($product eq $bug{'product'}) {
# if it's the product the bug is already in, it's ALWAYS in
# the popup, period, whether the user can see it or not, and
# regardless of the disallownew setting.
$seen_curr_prod = 1;
push(@prodlist, $product);
next;
}
if (1 < @prodlist) {
$product_popup = "<SELECT NAME=product>" .
make_options(\@prodlist, $bug{'product'}) .
"</SELECT>";
}
else {
$product_popup = $bug{'product'} .
"<INPUT TYPE=\"HIDDEN\" NAME=\"product\" VALUE=\"$bug{'product'}\">";
}
if (Param("usebuggroupsentry")
&& GroupExists($product)
&& !UserInGroup($userid, $product))
{
# If we're using bug groups to restrict entry on products, and
# this product has a bug group, and the user is not in that
# group, we don't want to include that product in this list.
next;
}
print "
<INPUT TYPE=HIDDEN NAME=\"delta_ts\" VALUE=\"$bug{'delta_ts'}\">
<INPUT TYPE=HIDDEN NAME=\"longdesclength\" VALUE=\"$longdesclength\">
<INPUT TYPE=HIDDEN NAME=\"id\" VALUE=$id>
<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
<TD ALIGN=RIGHT><B>Bug#:</B></TD><TD><A HREF=\"" . Param('urlbase') . "show_bug.cgi?id=$bug{'bug_id'}\">$bug{'bug_id'}</A></TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi#rep_platform\">Platform:</A></B></TD>
<TD><SELECT NAME=rep_platform>$platform_popup</SELECT></TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B>Reporter:</B></TD><TD>$bug{'reporter'}</TD>
</TR><TR>
<TD ALIGN=RIGHT><B>Product:</B></TD>
<TD>$product_popup</TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B>OS:</B></TD>
<TD><SELECT NAME=op_sys>" .
make_options(\@::legal_opsys, $bug{'op_sys'}) .
"</SELECT></TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT NOWRAP><b>Add CC:</b></TD>
<TD><INPUT NAME=newcc SIZE=30 VALUE=\"\"></TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"describecomponents.cgi?product=" .
url_quote($bug{'product'}) . "\">Component:</A></B></TD>
<TD><SELECT NAME=component>$component_popup</SELECT></TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B>Version:</B></TD>
<TD><SELECT NAME=version>" .
make_options($::versions{$bug{'product'}}, $bug{'version'}) .
"</SELECT></TD>
<TD>&nbsp;</TD>
<TD ROWSPAN=4 ALIGN=RIGHT VALIGN=TOP><B>CC:</B></TD>
<TD ROWSPAN=4 VALIGN=TOP> $cc_element </TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi\">Status:</A></B></TD>
<TD>$bug{'bug_status'}</TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi#priority\">Priority:</A></B></TD>
<TD><SELECT NAME=priority>$priority_popup</SELECT></TD>
<TD>&nbsp;</TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi\">Resolution:</A></B></TD>
<TD>$bug{'resolution'}</TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi#severity\">Severity:</A></B></TD>
<TD><SELECT NAME=bug_severity>$sev_popup</SELECT></TD>
<TD>&nbsp;</TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi#assigned_to\">Assigned&nbsp;To:
</A></B></TD>
<TD>$bug{'assigned_to'}</TD>
<TD>&nbsp;</TD>";
push(@prodlist, $product);
if (Param("usetargetmilestone")) {
my $url = "";
if (defined $::milestoneurl{$bug{'product'}}) {
$url = $::milestoneurl{$bug{'product'}};
}
# The current product is part of the popup, even if new bugs are no longer
# allowed for that product
if (!$seen_curr_prod) {
push (@prodlist, $bug{'product'});
@prodlist = sort @prodlist;
if ($url eq "") {
$url = "notargetmilestone.html";
}
if ($bug{'target_milestone'} eq "") {
$bug{'target_milestone'} = " ";
}
print "
<TD ALIGN=RIGHT><A href=\"$url\"><B>Target Milestone:</B></A></TD>
<TD><SELECT NAME=target_milestone>" .
make_options($::target_milestone{$bug{'product'}},
$bug{'target_milestone'}) .
"</SELECT></TD>
<TD>&nbsp;</TD>";
} else { print "<TD></TD><TD></TD><TD>&nbsp;</TD>"; }
$vars->{'product'} = \@prodlist;
$vars->{'rep_platform'} = \@::legal_platform;
$vars->{'priority'} = \@::legal_priority;
$vars->{'bug_severity'} = \@::legal_severity;
$vars->{'op_sys'} = \@::legal_opsys;
$vars->{'bug_status'} = \@::legal_bug_status;
print "
</TR>";
# Hack - this array contains "" for some reason. See bug 106589.
shift @::settable_resolution;
$vars->{'resolution'} = \@::settable_resolution;
if (Param("useqacontact")) {
my $name = $bug{'qa_contact'} > 0 ? DBID_to_name($bug{'qa_contact'}) : "";
print "
<TR>
<TD ALIGN=\"RIGHT\"><B>QA Contact:</B>
<TD COLSPAN=7>
<INPUT NAME=qa_contact VALUE=\"" .
value_quote($name) .
"\" SIZE=60></TD>
</TR>";
}
$vars->{'component_'} = $::components{$bug{'product'}};
$vars->{'version'} = $::versions{$bug{'product'}};
$vars->{'target_milestone'} = $::target_milestone{$bug{'product'}};
$bug{'milestoneurl'} = $::milestoneurl{$bug{'product'}} ||
"notargetmilestone.html";
$vars->{'use_votes'} = $::prodmaxvotes{$bug{'product'}};
print "
<TR>
<TD ALIGN=\"RIGHT\">$URL
<TD COLSPAN=7>
<INPUT NAME=bug_file_loc VALUE=\"" . value_quote($bug{'bug_file_loc'}) . "\" SIZE=60></TD>
</TR><TR>
<TD ALIGN=\"RIGHT\"><B>Summary:</B>
<TD COLSPAN=7>
<INPUT NAME=short_desc VALUE=\"" .
value_quote($bug{'short_desc'}) .
"\" SIZE=60></TD>
</TR>";
# Add additional, calculated fields to the bug hash
if (@::legal_keywords) {
$vars->{'use_keywords'} = 1;
if (Param("usestatuswhiteboard")) {
print "
<TR>
<TD ALIGN=\"RIGHT\"><B>Status Whiteboard:</B>
<TD COLSPAN=7>
<INPUT NAME=status_whiteboard VALUE=\"" .
value_quote($bug{'status_whiteboard'}) .
"\" SIZE=60></TD>
</TR>";
}
SendSQL("SELECT keyworddefs.name
FROM keyworddefs, keywords
WHERE keywords.bug_id = $id
AND keyworddefs.id = keywords.keywordid
ORDER BY keyworddefs.name");
my @keywords;
while (MoreSQLData()) {
push(@keywords, FetchOneColumn());
}
$bug{'keywords'} = \@keywords;
}
# Attachments
$bug{'attachments'} = Attachment::query($id);
# Dependencies
if (@::legal_keywords) {
SendSQL("SELECT keyworddefs.name
FROM keyworddefs, keywords
WHERE keywords.bug_id = $id AND keyworddefs.id = keywords.keywordid
ORDER BY keyworddefs.name");
my @list;
SendSQL("SELECT dependson FROM dependencies WHERE
blocked = $id ORDER BY dependson");
while (MoreSQLData()) {
my ($i) = FetchSQLData();
push(@list, FetchOneColumn());
}
my $value = value_quote(join(', ', @list));
print qq{
<TR>
<TD ALIGN=right><B><A HREF="describekeywords.cgi">Keywords:</A></B>
<TD COLSPAN=7><INPUT NAME="keywords" VALUE="$value" SIZE=60></TD>
</TR>
};
}
print "</TABLE>\n";
# Display attachments for this bug (if any).
&Attachment::list($id);
sub EmitDependList {
my ($desc, $myfield, $targetfield) = (@_);
print "<th align=right>$desc:</th><td>";
my @list;
SendSQL("select $targetfield from dependencies where
$myfield = $id order by $targetfield");
while (MoreSQLData()) {
my ($i) = (FetchSQLData());
push(@list, $i);
print GetBugLink($i, $i);
print " ";
}
print "</td><td><input name=$targetfield value=\"" .
join(',', @list) . "\"></td>\n";
}
$bug{'dependson'} = \@list;
if (Param("usedependencies")) {
print "<table><tr>\n";
EmitDependList("Bug $id depends on", "blocked", "dependson");
print qq{
<td rowspan=2><a href="showdependencytree.cgi?id=$id">Show dependency tree</a>
};
if (Param("webdotbase") ne "") {
print qq{
<br><a href="showdependencygraph.cgi?id=$id">Show dependency graph</a>
};
}
print "</td></tr><tr>";
EmitDependList("Bug $id blocks", "dependson", "blocked");
print "</tr></table>\n";
}
my @list2;
SendSQL("SELECT blocked FROM dependencies WHERE
dependson = $id ORDER BY blocked");
if ($::prodmaxvotes{$bug{'product'}}) {
print qq{
<table><tr>
<th><a href="votehelp.html">Votes:</a></th>
<td>
$bug{'votes'}&nbsp;&nbsp;&nbsp;
<a href="showvotes.cgi?bug_id=$id">Show votes for this bug</a>&nbsp;&nbsp;&nbsp;
<a href="showvotes.cgi?voteon=$id">Vote for this bug</a>
</td>
</tr></table>
};
}
print "
<br>
<B>Additional Comments:</B>
<BR>
<TEXTAREA WRAP=HARD NAME=comment ROWS=10 COLS=80></TEXTAREA><BR>";
if ($::usergroupset ne '0' || $bug{'groupset'} ne '0') {
SendSQL("select bit, name, description, (bit & $bug{'groupset'} != 0), " .
"(bit & $::usergroupset != 0) from groups where isbuggroup != 0 " .
# Include active groups as well as inactive groups to which
# the bug already belongs. This way the bug can be removed
# from an inactive group but can only be added to active ones.
"and ((isactive = 1 and (bit & $::usergroupset != 0)) or " .
"(bit & $bug{'groupset'} != 0)) " .
"order by description");
# We only print out a header bit for this section if there are any
# results.
my $groupFound = 0;
my $inAllGroups = 1;
while (MoreSQLData()) {
my ($i) = FetchSQLData();
push(@list2, $i);
}
$bug{'blocked'} = \@list2;
# Groups
my @groups;
my (%buggroups, %usergroups);
# Find out if this bug is private to any group
SendSQL("SELECT group_id FROM bug_group_map WHERE bug_id = $id");
while (my $group_id = FetchOneColumn()) {
$buggroups{$group_id} = 1;
}
# Get a list of active groups the user is in, subject to the above conditions
if ($userid) {
# NB - the number of groups is likely to be small - should we just select
# everything, and weed manually? OTOH, the number of products is likely
# to be small, too. This buggroup stuff needs to be rethought
SendSQL("SELECT groups.group_id, groups.isactive " .
"FROM user_group_map, " .
"groups LEFT JOIN products ON groups.name = products.product " .
"WHERE groups.group_id = user_group_map.group_id AND " .
"user_group_map.user_id = $userid AND groups.isbuggroup != 0 AND " .
"(groups.name = " . SqlQuote($bug{'product'}) . " OR " .
"products.product IS NULL)");
while (my $group_id = FetchOneColumn()) {
$usergroups{$group_id} = 1;
my ($bit, $name, $description, $ison, $ingroup) = (FetchSQLData());
# For product groups, we only want to display the checkbox if either
# (1) The bit is already set, or
# (2) The user is in the group, but either:
# (a) The group is a product group for the current product, or
# (b) The group name isn't a product name
# This measns that all product groups will be skipped, but non-product
# bug groups will still be displayed.
if($ison || ($ingroup && (($name eq $bug{'product'}) ||
(!defined $::proddesc{$name})))) {
if(!$groupFound) {
print "<br><b>Only users in the selected groups can view this bug:</b><br>\n";
print "<font size=\"-1\">(Unchecking all boxes makes this a public bug.)</font><br><br>\n";
$groupFound = 1;
}
if(!$ingroup) {
$inAllGroups = 0;
}
# Modifying this to use checkboxes instead
my $checked = $ison ? " CHECKED" : "";
my $disabled = $ingroup ? "" : " DISABLED=\"disabled\"";
# indent these a bit
print "&nbsp;&nbsp;&nbsp;&nbsp;";
print "<input type=checkbox name=\"bit-$bit\" value=1$checked$disabled>\n";
print "$description<br>\n";
}
}
if (!$inAllGroups) {
print "<b>Only members of a group can change the visibility of a bug for that group</b><br>";
}
# Now get information about each group
SendSQL("SELECT group_id, name, description " .
"FROM groups " .
# "WHERE group_id IN (" . join(',', @groups) . ") " .
"ORDER BY description");
while (MoreSQLData()) {
my ($group_id, $name, $description) = FetchSQLData();
my ($ison, $ingroup);
if ($buggroups{$group_id} ||
($usergroups{$group_id} && (($name eq $bug{'product'}) ||
(!defined $::proddesc{$name}))))
{
$user{'inallgroups'} &= $ingroup;
# If the bug is restricted to a group, display checkboxes that allow
# the user to set whether or not the reporter, assignee, QA contact,
# and cc list can see the bug even if they are not members of all
# groups to which the bug is restricted.
if ( $bug{'groupset'} != 0 ) {
# Determine whether or not the bug is always accessible by the reporter,
# QA contact, and/or users on the cc: list.
SendSQL("SELECT reporter_accessible , assignee_accessible ,
qacontact_accessible , cclist_accessible
FROM bugs
WHERE bug_id = $id
");
my ($reporter_accessible, $assignee_accessible, $qacontact_accessible, $cclist_accessible) = FetchSQLData();
push (@groups, { "bit" => $group_id,
"ison" => $buggroups{$group_id},
"ingroup" => $usergroups{$group_id},
"description" => $description });
# Convert boolean data about which roles always have access to the bug
# into "checked" attributes for the HTML checkboxes by which users
# set and change these values.
my $reporter_checked = $reporter_accessible ? " checked" : "";
my $assignee_checked = $assignee_accessible ? " checked" : "";
my $qacontact_checked = $qacontact_accessible ? " checked" : "";
my $cclist_checked = $cclist_accessible ? " checked" : "";
# Display interface for changing the values.
print qq|
<p>
<b>But users in the roles selected below can always view this bug:</b><br>
<small>(Does not take effect unless the bug is restricted to at least one group.)</small>
</p>
<p>
<input type="checkbox" name="reporter_accessible" value="1" $reporter_checked>Reporter
<input type="checkbox" name="assignee_accessible" value="1" $assignee_checked>Assignee
<input type="checkbox" name="qacontact_accessible" value="1" $qacontact_checked>QA Contact
<input type="checkbox" name="cclist_accessible" value="1" $cclist_checked>CC List
</p>
|;
}
}
print "<br>
<INPUT TYPE=radio NAME=knob VALUE=none CHECKED>
Leave as <b>$bug{'bug_status'} $bug{'resolution'}</b><br>";
# knum is which knob number we're generating, in javascript terms.
my $knum = 1;
my $status = $bug{'bug_status'};
# In the below, if the person hasn't logged in ($::userid == 0), then
# we treat them as if they can do anything. That's because we don't
# know why they haven't logged in; it may just be because they don't
# use cookies. Display everything as if they have all the permissions
# in the world; their permissions will get checked when they log in
# and actually try to make the change.
my $canedit = UserInGroup("editbugs") || ($::userid == 0);
my $canconfirm;
if ($status eq $::unconfirmedstate) {
$canconfirm = UserInGroup("canconfirm") || ($::userid == 0);
if ($canedit || $canconfirm) {
print "<INPUT TYPE=radio NAME=knob VALUE=confirm>";
print "Confirm bug (change status to <b>NEW</b>)<br>";
$knum++;
}
}
my $movers = Param("movers");
$movers =~ s/\s?,\s?/|/g;
$movers =~ s/@/\@/g;
if ($canedit || $::userid == $assignedtoid ||
$::userid == $reporterid || $::userid == $qacontactid) {
if (IsOpenedState($status)) {
if ($status ne "ASSIGNED") {
print "<INPUT TYPE=radio NAME=knob VALUE=accept>";
my $extra = "";
if ($status eq $::unconfirmedstate && ($canconfirm || $canedit)) {
$extra = "confirm bug, ";
}
print "Accept bug (${extra}change status to <b>ASSIGNED</b>)<br>";
$knum++;
}
if ($bug{'resolution'} ne "") {
print "<INPUT TYPE=radio NAME=knob VALUE=clearresolution>\n";
print "Clear the resolution (remove the current resolution of\n";
print "<b>$bug{'resolution'}</b>)<br>\n";
$knum++;
}
my $resolution_popup = make_options(\@::settable_normal_resolution,
$bug{'resolution'});
print "<INPUT TYPE=radio NAME=knob VALUE=resolve>
Resolve bug, changing <A HREF=\"bug_status.cgi\">resolution</A> to
<SELECT NAME=resolution
ONCHANGE=\"document.changeform.knob\[$knum\].checked=true\">
$resolution_popup</SELECT><br>\n";
$knum++;
print "<INPUT TYPE=radio NAME=knob VALUE=duplicate>
Resolve bug, mark it as ";
if (@::settable_dupe_resolution == 1) {
print $::settable_dupe_resolution[0] . " ";
} else {
my $resolution_popup = make_options(\@::settable_dupe_resolution);
print "<select name=\"dupe_resolution\" onchange=\"if (this.value != '') {document.changeform.knob\[$knum\].checked=true}\">" .
"$resolution_popup</select>";
}
# If the bug is restricted to a group, display checkboxes that allow
# the user to set whether or not the reporter
# and cc list can see the bug even if they are not members of all
# groups to which the bug is restricted.
if (%buggroups) {
$bug{'inagroup'} = 1;
print "of bug #
<INPUT NAME=dup_id SIZE=6 ONCHANGE=\"if (this.value != '') {document.changeform.knob\[$knum\].checked=true}\"><br>\n";
$knum++;
# Determine whether or not the bug is always accessible by the
# reporter, QA contact, and/or users on the cc: list.
SendSQL("SELECT reporter_accessible, cclist_accessible
FROM bugs
WHERE bug_id = $id
");
($bug{'reporter_accessible'},
$bug{'cclist_accessible'}) = FetchSQLData();
my $assign_element = "<INPUT NAME=\"assigned_to\" SIZE=32 ONCHANGE=\"if ((this.value != ".SqlQuote($bug{'assigned_to_email'}) .") && (this.value != '')) { document.changeform.knob\[$knum\].checked=true; }\" VALUE=\"$bug{'assigned_to_email'}\">";
print "<INPUT TYPE=radio NAME=knob VALUE=reassign>
<A HREF=\"bug_status.cgi#assigned_to\">Reassign</A> bug to
$assign_element
<br>\n";
if ($status eq $::unconfirmedstate && ($canconfirm || $canedit)) {
print "&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE=checkbox NAME=andconfirm> and confirm bug (change status to <b>NEW</b>)<BR>";
}
$knum++;
print "<INPUT TYPE=radio NAME=knob VALUE=reassignbycomponent>
Reassign bug to owner ";
if (Param("useqacontact")) { print "and QA contact "; }
print "of selected component<br>\n";
if ($status eq $::unconfirmedstate && ($canconfirm || $canedit)) {
print "&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE=checkbox NAME=compconfirm> and confirm bug (change status to <b>NEW</b>)<BR>";
}
$knum++;
} elsif ( Param("move-enabled") && lsearch(\@::settable_moved_resolution, $bug{'resolution'}) != -1) {
if ( (defined $::COOKIE{"Bugzilla_login"})
&& ($::COOKIE{"Bugzilla_login"} =~ /($movers)/) ){
print "<INPUT TYPE=radio NAME=knob VALUE=reopen> Reopen bug<br>\n";
$knum++;
if ($status eq "RESOLVED") {
print "<INPUT TYPE=radio NAME=knob VALUE=verify>
Mark bug as <b>VERIFIED</b><br>\n";
$knum++;
}
if ($status ne "CLOSED") {
print "<INPUT TYPE=radio NAME=knob VALUE=close>
Mark bug as <b>CLOSED</b><br>\n";
$knum++;
}
}
} else {
print "<INPUT TYPE=radio NAME=knob VALUE=reopen> Reopen bug<br>\n";
$knum++;
if ($status eq "RESOLVED") {
print "<INPUT TYPE=radio NAME=knob VALUE=verify>
Mark bug as <b>VERIFIED</b><br>\n";
$knum++;
}
if ($status ne "CLOSED") {
print "<INPUT TYPE=radio NAME=knob VALUE=close>
Mark bug as <b>CLOSED</b><br>\n";
$knum++;
}
}
$vars->{'groups'} = \@groups;
my $movers = Param("movers");
$user{'canmove'} = Param("move-enabled")
&& (defined $::COOKIE{"Bugzilla_login"})
&& ($::COOKIE{"Bugzilla_login"} =~ /\Q$movers\E/);
# User permissions
# In the below, if the person hasn't logged in ($userid == 0), then
# we treat them as if they can do anything. That's because we don't
# know why they haven't logged in; it may just be because they don't
# use cookies. Display everything as if they have all the permissions
# in the world; their permissions will get checked when they log in
# and actually try to make the change.
$user{'canedit'} = $userid == 0
|| $userid == $bug{'reporter'}
|| $userid == $bug{'qa_contact'}
|| $userid == $bug{'assigned_to'}
|| UserInGroup("editbugs");
$user{'canconfirm'} = ($userid == 0) || UserInGroup($userid, "canconfirm");
# Bug states
$bug{'isunconfirmed'} = ($bug{'bug_status'} eq $::unconfirmedstate);
$bug{'isopened'} = IsOpenedState($bug{'bug_status'});
# People involved with the bug
$bug{'assigned_to_email'} = DBID_to_name($bug{'assigned_to'});
$bug{'assigned_to'} = DBID_to_real_or_loginname($bug{'assigned_to'});
$bug{'reporter'} = DBID_to_real_or_loginname($bug{'reporter'});
$bug{'qa_contact'} = $bug{'qa_contact'} > 0 ?
DBID_to_name($bug{'qa_contact'}) : "";
my $ccset = new RelationSet;
$ccset->mergeFromDB("SELECT who FROM cc WHERE bug_id=$id");
my @cc = $ccset->toArrayOfStrings();
$bug{'cc'} = \@cc if $cc[0];
# Next bug in list (if there is one)
my @bug_list;
if ($::COOKIE{"BUGLIST"} && $id)
{
@bug_list = split(/:/, $::COOKIE{"BUGLIST"});
}
$vars->{'bug_list'} = \@bug_list;
$bug{'comments'} = GetComments($bug{'bug_id'});
# This is length in number of comments
$bug{'longdesclength'} = scalar(@{$bug{'comments'}});
# Add the bug and user hashes to the variables
$vars->{'bug'} = \%bug;
$vars->{'user'} = \%user;
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("bug/edit.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
}
print "
<INPUT TYPE=\"submit\" VALUE=\"Commit\">
<INPUT TYPE=\"reset\" VALUE=\"Reset\">
<INPUT TYPE=\"hidden\" name=\"form_name\" VALUE=\"process_bug\">
<P>
<FONT size=\"+1\"><B>
<A HREF=\"show_activity.cgi?id=$id\">View Bug Activity</A>
&nbsp; | &nbsp;
<A HREF=\"long_list.cgi?buglist=$id\">Format For Printing</A>
</B></FONT>
";
if ( Param("move-enabled") && (defined $::COOKIE{"Bugzilla_login"}) && ($::COOKIE{"Bugzilla_login"} =~ /($movers)/) ){
print qq{&nbsp; <font size="+1"><B> | </B></font> &nbsp;
<input type="submit" name="action" value="} .
Param("move-button-text") . qq{">\n};
if (@::settable_moved_resolution == 1) {
print qq{<input type="hidden" name="move_resolution" value="$::settable_moved_resolution[0]">};
}
else {
my $resolution_popup = make_options(\@::settable_moved_resolution);
print qq{Resolution: <select name="move_resolution">$resolution_popup</select>};
}
}
print "<BR></FORM>";
print qq|
<table><tr><td align=left><B><a name="c0" href="#c0">Description:</a></B></td>
<td align=right width=100%>Opened: $bug{'creation_ts'}</td></tr></table>
<HR>
|;
print $bug{'long_desc'};
print "
<HR>\n";
# To add back option of editing the long description, insert after the above
# long_list.cgi line:
# <A HREF=\"edit_desc.cgi?id=$id\">Edit Long Description</A>
navigation_header();
PutFooter();
1;

View File

@@ -1,38 +1,43 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
#!/usr/bonsaitools/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Matthew Tuck <matty@chariot.net.au>
<!--
The contents of this file are subject to the Mozilla Public
License Version 1.1 (the "License"); you may not use this file
except in compliance with the License. You may obtain a copy of
the License at http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
The Original Code is the Bugzilla Bug Tracking System.
The Initial Developer of the Original Code is Netscape Communications
Corporation. Portions created by Netscape are
Copyright (C) 1998 Netscape Communications Corporation. All
Rights Reserved.
Contributor(s):
use diagnostics;
use strict;
use lib ".";
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
require "CGI.pl";
<head>
<TITLE>A Bug's Life Cycle</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
# Silliness
my $silly = $::queryable_resolution;
<h1 ALIGN=CENTER>A Bug's Life Cycle</h1>
ConnectToDatabase();
GetVersionTable();
The <B>status</B> and <B>resolution</B> field define and track the
print "Content-type: text/html\n\n";
PutHeader("A Bug's Life Cycle");
print qq{The <B>status</B> and <B>resolution</B> field define and track the
life cycle of a bug.
<a name="status"></a>
@@ -96,29 +101,22 @@ certain status transitions are allowed.
</DL>
<TD>
<DL>
<DT><B>FIXED</B>
<DD> A fix for this bug is checked into the tree and tested.
<DT><B>INVALID</B>
<DD> The problem described is not a bug
<DT><B>WONTFIX</B>
<DD> The problem described is a bug which will never be fixed.
<DT><B>LATER</B>
<DD> The problem described is a bug which will not be fixed in this
version of the product.
<DT><B>REMIND</B>
<DD> The problem described is a bug which will probably not be fixed in this
version of the product, but might still be.
<DT><B>DUPLICATE</B>
<DD> The problem is a duplicate of an existing bug. Marking a bug
duplicate requires the bug# of the duplicating bug and will at
least put that bug number in the description field.
<DT><B>WORKSFORME</B>
<DD> All attempts at reproducing this bug were futile, reading the
code produces no clues as to why this behavior would occur. If
more information appears later, please re-assign the bug, for
now, file it.
</DL>
<DL>};
SendSQL("SELECT name, description FROM resolutions ORDER BY sortkey, name");
while (MoreSQLData()) {
my ($name, $description) = FetchSQLData();
if (lsearch(\@::queryable_resolution, $name) != -1) {
$name = html_quote($name);
$description = html_quote($description);
print "<dt><b>$name</b>\n";
print "<dd> $description\n";
}
}
print qq{</DL>
</TABLE>
<H1>Other Fields</H1>
@@ -186,21 +184,19 @@ operating systems include:
<LI> Linux
</UL>
Note that the operating system implies the platform, but not always.
For example, Linux can run on PC and Macintosh and others.
<p>Note that the operating system implies the platform, but not always.
For example, Linux can run on PC and Macintosh and others.</p>
<h2><a name="assigned_to">Assigned To</a></h2>
This is the person in charge of resolving the bug. Every time this
field changes, the status changes to <B>NEW</B> to make it easy to see
which new bugs have appeared on a person's list.
<p>This is the person in charge of resolving the bug. Every time this
field changes, the status changes to <b>NEW</b> to make it easy to see
which new bugs have appeared on a person's list.</p>
The default status for queries is set to NEW, ASSIGNED and REOPENED. When
<p>The default status for queries is set to NEW, ASSIGNED and REOPENED. When
searching for bugs that have been resolved or verified, remember to set the
status field appropriately.
status field appropriately.</p>
<hr>
<!-- hhmts start -->
Last modified: Sun Apr 14 12:51:23 EST 2002
<!-- hhmts end -->
</body> </html>
};
PutFooter();

File diff suppressed because it is too large Load Diff

View File

@@ -1,392 +1,281 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Bug Writing Guidelines</title>
</head>
<body>
<center>
<h1>Bug Writing Guidelines</h1>
</center>
<h3>Why You Should Read This</h3>
<blockquote>
<p>Simply put, the more effectively you report a bug, the more
likely an engineer will actually fix it.</p>
<p>These guidelines are a general
tutorial to teach novice and intermediate bug reporters how to compose effective bug reports. Not every sentence may precisely apply to
your software project.</p>
</blockquote>
<h3>How to Write a Useful Bug Report</h3>
<blockquote>
<p>Useful bug reports are ones that get bugs fixed. A useful bug
report normally has two qualities:</p>
<ol>
<li><b>Reproducible.</b> If an engineer can't see the bug herself to prove that it exists, she'll probably stamp your bug report "WORKSFORME" or "INVALID" and move on to the next bug. Every detail you can provide helps.<br>
<br>
</li>
<li><b>Specific.</b> The quicker the engineer can isolate the bug
to a specific area, the more likely she'll expediently fix it.
(If a programmer or tester has to decypher a bug, they may spend
more time cursing the submitter than solving the problem.)
<br>
<br>
[ <a href="#tips" name="Anchor">Tell Me More</a> ]
</li>
</ol>
<p>Let's say the application you're testing is a web browser. You
crash at foo.com, and want to write up a bug report:</p>
<blockquote>
<p><b>BAD:</b> "My browser crashed. I think I was on www.foo.com. I play golf with Bill Gates, so you better fix this problem, or I'll report you to him. By the way, your Back icon looks like a squashed rodent. UGGGLY. And my grandmother's home page is all messed up in your browser. Thx 4 UR help."
</p>
<p>
<b>GOOD:</b> "I crashed each time I went to www.foo.com, using
the 2002-02-25 build on a Windows 2000 system. I also
rebooted into Linux, and reproduced this problem using the 2002-02-24
Linux build.
</p>
<p>
It again crashed each time upon drawing the Foo banner at the top
of the page. I broke apart the page, and discovered that the
following image link will crash the application reproducibly,
unless you remove the "border=0" attribute:
</p>
<p>
<tt>&lt;IMG SRC="http://www.foo.com/images/topics/topicfoos.gif"
width="34" height="44" border="0" alt="News"&gt;</tt>
</p>
</blockquote>
</blockquote>
<h3>How to Enter your Useful Bug Report into Bugzilla:</h3>
<blockquote>
<p>Before you enter your bug, use Bugzilla's
<a href="query.cgi">search page</a> to determine whether the defect you've discovered is a known, already-reported bug. If your bug is the 37th duplicate of a known issue, you're more likely to annoy the engineer. (Annoyed
engineers fix fewer bugs.)
</p>
<p>
Next, be sure to reproduce your bug using a recent
build. Engineers tend to be most interested in problems affecting
the code base that they're actively working on. After all, the bug you're reporting
may already be fixed.
</p>
<p>
If you've discovered a new bug using a current build, report it in
Bugzilla:
</p>
<ol>
<li>From your Bugzilla main page, choose
"<a href="enter_bug.cgi">Enter a new bug</a>".</li>
<li>Select the product that you've found a bug in.</li>
<li>Enter your e-mail address, password, and press the "Login"
button. (If you don't yet have a password, leave the password field empty,
and press the "E-mail me a password" button instead.
You'll quickly receive an e-mail message with your password.)</li>
</ol>
<p>Now, fill out the form. Here's what it all means:</p>
<p><b>Where did you find the bug?</b></p>
<blockquote>
<p><b>Product: In which product did you find the bug?</b><br>
You just specified this on the last page, so you can't edit it here.</p>
<p><b>Version: In which product version did you find the
bug?</b><br>
(If applicable)</p>
<p><b>Component: In which component does the bug exist?</b><br>
Bugzilla requires that you select a component to enter a bug. (Not sure which to choose?
Click on the Component link. You'll see a description of each component, to help you make the best choice.)</p>
<p><b>OS: On which Operating System (OS) did you find this bug?</b>
(e.g. Linux, Windows 2000, Mac OS 9.)<br>
If you know the bug happens on all OSs, choose 'All'. Otherwise,
select the OS that you found the bug on, or "Other" if your OS
isn't listed.</p>
</blockquote>
<p><b>How important is the bug?</b></p>
<blockquote>
<p><b>Severity: How damaging is the bug?</b><br>
This item defaults to 'normal'. If you're not sure what severity your bug deserves, click on the Severity link.
You'll see a description of each severity rating. <br>
</p>
</blockquote>
<p><b>Who will be following up on the bug?</b></p>
<blockquote>
<p><b>Assigned To: Which engineer should be responsible for fixing
this bug?</b><br>
Bugzilla will automatically assign the bug to a default engineer
upon submitting a bug report. If you'd prefer to directly assign the bug to
someone else, enter their e-mail address into this field. (To see the list of
default engineers for each component, click on the Component
link.)</p>
<p><b>Cc: Who else should receive e-mail updates on changes to this
bug?</b><br>
List the full e-mail addresses of other individuals who should
receive an e-mail update upon every change to the bug report. You
can enter as many e-mail addresses as you'd like, separated by spaces or commas, as long as those
people have Bugzilla accounts.</p>
</blockquote>
<p><b>What else can you tell the engineer about the bug?</b></p>
<blockquote>
<p><b>Summary:</b> <b>How would you describe the bug, in
approximately 60 or fewer characters?</b><br>
A good summary should <b>quickly and uniquely identify a bug
report</b>. Otherwise, an engineer cannot meaningfully identify
your bug by its summary, and will often fail to pay attention to
your bug report when skimming through a 10 page bug list.<br>
<br>
A useful summary might be
"<tt>PCMCIA install fails on Tosh Tecra 780DVD w/ 3c589C</tt>".
"<tt>Software fails</tt>" or "<tt>install problem</tt>" would be
examples of a bad summary.<br>
<br>
[ <a href="#summary">Tell Me More</a> ]<br>
<br>
<b>Description: </b><br>
Please provide a detailed problem report in this field.
Your bug's recipients will most likely expect the following information:</p>
<blockquote>
<p><b>Overview Description:</b> More detailed expansion of
summary.</p>
<blockquote>
<pre>
Drag-selecting any page crashes Mac builds in NSGetFactory
</pre>
</blockquote>
<p><b>Steps to Reproduce:</b> Minimized, easy-to-follow steps that will
trigger the bug. Include any special setup steps.</p>
<blockquote>
<pre>
1) View any web page. (I used the default sample page,
resource:/res/samples/test0.html)
2) Drag-select the page. (Specifically, while holding down
the mouse button, drag the mouse pointer downwards from any
point in the browser's content region to the bottom of the
browser's content region.)
</pre>
</blockquote>
<p>
<b>Actual Results:</b> What the application did after performing
the above steps.
</p>
<blockquote>
<pre>
The application crashed. Stack crawl appended below from MacsBug.
</pre>
</blockquote>
<p><b>Expected Results:</b> What the application should have done,
were the bug not present.</p>
<blockquote>
<pre>
The window should scroll downwards. Scrolled content should be selected.
(Or, at least, the application should not crash.)
</pre>
</blockquote>
<p><b>Build Date &amp; Platform:</b> Date and platform of the build
that you first encountered the bug in.</p>
<blockquote>
<pre>
Build 2002-03-15 on Mac OS 9.0
</pre>
</blockquote>
<p><b>Additional Builds and Platforms:</b> Whether or not the bug
takes place on other platforms (or browsers, if applicable).</p>
<blockquote>
<pre>
- Also Occurs On
Mozilla (2002-03-15 build on Windows NT 4.0)
- Doesn't Occur On
Mozilla (2002-03-15 build on Red Hat Linux; feature not supported)
Internet Explorer 5.0 (shipping build on Windows NT 4.0)
Netscape Communicator 4.5 (shipping build on Mac OS 9.0)
</pre>
</blockquote>
<p><b>Additional Information:</b> Any other debugging information.
For crashing bugs:</p>
<ul>
<li><b>Win32:</b> if you receive a Dr. Watson error, please note
the type of the crash, and the module that the application crashed
in. (e.g. access violation in apprunner.exe)</li>
<li><b>Mac OS:</b> if you're running MacsBug, please provide the
results of a <b>how</b> and an <b>sc</b>:</li>
</ul>
<blockquote>
<pre>
*** MACSBUG STACK CRAWL OF CRASH (Mac OS)
Calling chain using A6/R1 links
Back chain ISA Caller
00000000 PPC 0BA85E74
03AEFD80 PPC 0B742248
03AEFD30 PPC 0B50FDDC NSGetFactory+027FC
PowerPC unmapped memory exception at 0B512BD0 NSGetFactory+055F0
</pre>
</blockquote>
</blockquote>
</blockquote>
<p>You're done!<br>
<br>
After double-checking your entries for any possible errors, press
the "Commit" button, and your bug report will now be in the
Bugzilla database.<br>
</p>
</blockquote>
<hr>
<h3>More Information on Writing Good Bugs</h3>
<blockquote>
<p><b><a name="tips"></a> 1. General Tips for a Useful Bug
Report</b>
</p>
<blockquote>
<p>
<b>Use an explicit structure, so your bug reports are easy to
skim.</b> Bug report users often need immediate access to specific
sections of your bug. If your Bugzilla installation supports the
Bugzilla Helper, use it.
</p>
<p>
<b>Avoid cuteness if it costs clarity.</b> Nobody will be laughing
at your funny bug title at 3:00 AM when they can't remember how to
find your bug.
</p>
<p>
<b>One bug per report.</b> Completely different people typically
fix, verify, and prioritize different bugs. If you mix a handful of
bugs into a single report, the right people probably won't discover
your bugs in a timely fashion, or at all. Certain bugs are also
more important than others. It's impossible to prioritize a bug
report when it contains four different issues, all of differing
importance.
</p>
<p>
<b>No bug is too trivial to report.</b> Unless you're reading the
source code, you can't see actual software bugs, like a dangling
pointer -- you'll see their visible manifestations, such as the
segfault when the application finally crashes. Severe software
problems can manifest themselves in superficially trivial ways.
File them anyway.<br>
</p>
</blockquote>
<p><b><a name="summary"></a>2. How and Why to Write Good Bug Summaries</b>
</p>
<blockquote>
<p><b>You want to make a good first impression on the bug
recipient.</b> Just like a New York Times headline guides readers
towards a relevant article from dozens of choices, will your bug summary
suggest that your bug report is worth reading from dozens or hundreds of
choices?
</p>
<p>
Conversely, a vague bug summary like <tt>install problem</tt> forces anyone
reviewing installation bugs to waste time opening up your bug to
determine whether it matters.
</p>
<p>
<b>Your bug will often be searched by its summary.</b> Just as
you'd find web pages with Google by searching by keywords through
intuition, so will other people locate your bugs. Descriptive bug
summaries are naturally keyword-rich, and easier to find.
</p>
<p>
For example, you'll find a bug titled "<tt>Dragging icons from List View to
gnome-terminal doesn't paste path</tt>" if you search on "List",
"terminal", or "path". Those search keywords wouldn't have found a
bug titled "<tt>Dragging icons
doesn't paste</tt>".
</p>
<p>
Ask yourself, "Would someone understand my bug from just this
summary?" If so, you've written a fine summary.
</p>
<p><b>Don't write titles like these:</b></p>
<ol>
<li>"Can't install" - Why can't you install? What happens when you
try to install?</li>
<li>"Severe Performance Problems" - ...and they occur when you do
what?</li>
<li>"back button does not work" - Ever? At all?</li>
</ol>
<p><b>Good bug titles:</b></p>
<ol>
<li>"1.0 upgrade installation fails if Mozilla M18 package present"
- Explains problem and the context.</li>
<li>"RPM 4 installer crashes if launched on Red Hat 6.2 (RPM 3)
system" - Explains what happens, and the context.</li>
</ol>
</blockquote>
</blockquote>
<p>(Written and maintained by
<a href="http://www.prometheus-music.com/eli">Eli Goldberg</a>. Claudius
Gayle, Gervase Markham, Peter Mock, Chris Pratt, Tom Schutter and Chris Yeh also
contributed significant changes. Constructive
<a href="mailto:eli@prometheus-music.com">suggestions</a> welcome.)</p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Symantec Visual Page 1.0">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">
<TITLE>Bug Writing Guidelines</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000">
<H1 ALIGN="CENTER">bug writing guidelines</H1>
<P ALIGN="CENTER"><FONT SIZE="2"><B>(Please send feedback/update requests to </B></FONT><A
HREF="mailto:eli@prometheus-music.com"><FONT SIZE="2"><B>Eli Goldberg</B></FONT></A><FONT
SIZE="2"><B>)</B></FONT></P>
<P><FONT SIZE="4"><B><BR>
Why You Should Read This</B></FONT>
<BLOCKQUOTE>
<P>Simply put, the more effectively you report a bug, the more likely an engineer
will actually fix it. <BR>
<A HREF="http://bugzilla.mozilla.org"><BR>
</A>These bug writing guidelines are an attempt at a general tutorial on writing
effective bug reports for novice bug writers; not every sentence may precisely apply
to your software project.
</BLOCKQUOTE>
<P><FONT SIZE="4"><B><BR>
How to Write a Useful Bug Report</B></FONT>
<BLOCKQUOTE>
<P>Useful bug reports are ones that get bugs fixed. A useful bug report normally
has two qualities:
<OL>
<LI><B>Reproducible.</B> If an engineer can't see it or conclusively prove that it
exists, the engineer will probably stamp it &quot;WORKSFORME&quot; or &quot;INVALID&quot;,
and move on to the next bug. Every detail you can provide helps. <BR>
<BR>
<LI><B>Specific.</B> The quicker the engineer can isolate the issue to a specific
problem, the more likely it'll be expediently fixed.<B> </B>(If a programmer or tester
has to decypher a bug, they spend more time cursing the submitter than fixing or
testing the problem.)
</OL>
<P>Let's say the application you're testing is a web browser. You crash at foo.com,
and want to write up a bug report:
<BLOCKQUOTE>
<P><B>BAD:</B> &quot;My browser crashed. I think I was on foo.com. My computer uses
Windows. I think that this is a really bad problem and you should fix it now. By
the way, your icons really suck. Nobody will use your software if you keep those
ugly icons. Oh, and my grandmother's home page doesn't look right, either, it's all
messed up. Good luck.&quot;<BR>
<BR>
<B>GOOD: </B>&quot;I crashed each time when I went to foo.com, using the 10.28.99
build on a Win NT 4.0 (Service Pack 5) system. I also rebooted into Linux, and reproduced
this problem using the 10.28.99 Linux build.<BR>
<BR>
It again crashed each time upon drawing the Foo banner at the top of the page. I
broke apart the page, and discovered that the following image link will crash the
application reproducibly, unless you remove the &quot;border=0&quot; attribute:<BR>
<BR>
<FONT SIZE="2"><TT>&lt;IMG SRC=&quot;http://foo.com/images/topics/topicfoos.gif&quot;
width=34 height=44 border=0 alt=&quot;News&quot;&gt;</TT>&quot;</FONT>
</BLOCKQUOTE>
</BLOCKQUOTE>
<P><FONT SIZE="4"><B><BR>
<BR>
How to Enter your Useful Bug Report into Bugzilla</B>:</FONT>
<BLOCKQUOTE>
<P>Before you enter your bug, use the Bugzilla Query Page to determine whether the
defect you've discovered is a known bug, and has already been reported. (If your
bug is the 37th duplicate of a known issue, you're more likely to annoy the engineer.
Annoyed engineers fix fewer bugs.)<BR>
<BR>
Next, be sure that you've reproduced your bug using a recent build. (Engineers tend
to be most interested in problems afflicting the code base that they're actively
working on, rather than those in a code base that's hundreds of bug fixes obsolete.)<BR>
<BR>
If you've discovered a new bug using a current build, report it in Bugzilla:
</BLOCKQUOTE>
<OL>
<OL>
<LI>From your Bugzilla main page, choose &quot;Enter a new bug&quot;.
<LI>Select the product that you've found a bug in.
<LI>Enter your E-mail address, Password, and press the &quot;Login&quot; button.
(If you don't yet have a password, leave the password text box empty, and press the
&quot;E-mail me a password&quot; button instead. You'll receive an E-mail message
with your password shortly.)
</OL>
<P>Now, fill out the form. Here's what it all means:
</OL>
<BLOCKQUOTE>
<P><B>Where did you find the bug?</B>
<BLOCKQUOTE>
<P><B>Product: In which product did you find the bug?</B><BR>
You just filled this out on the last page.</P>
<P><B>Version: In which product version did you find the bug?</B><BR>
If applicable.</P>
<P><B>Component: In which component does the bug exist?</B><BR>
Bugzilla requires that you select a component to enter a bug. (If they all look meaningless,
click on the Component link, which links to descriptions of each component, to help
you make the best choice.)</P>
<P><B>Platform:&#160;On which hardware platform did you find this bug?</B><FONT SIZE="2"><B>
</B>(e.g. Macintosh, SGI, Sun, PC.) </FONT><BR>
If you know the bug happens on all hardware platforms, choose 'All'. Otherwise, select
the platform that you found the bug on, or &quot;Other&quot; if your platform isn't
listed.</P>
<P><B>OS: On which Operating System (OS) did you find this bug?</B> <FONT SIZE="2">(e.g.
Linux, Windows NT, Mac OS 8.5.)</FONT><BR>
If you know the bug happens on all OSs, choose 'All'. Otherwise, select the OS that
you found the bug on, or &quot;Other&quot; if your OS isn't listed.</P>
</BLOCKQUOTE>
<P><B><BR>
How important is the bug?</B>
<BLOCKQUOTE>
<P><B>Severity: How damaging is the bug?</B><BR>
This item defaults to 'normal'. (To determine the most appropriate severity for a
particular bug, click on the Severity link for a full explanation of each choice,
from Critical to Enhancement.)
</BLOCKQUOTE>
<P><B><BR>
Who will be following up on the bug?</B>
<BLOCKQUOTE>
<P><B>Assigned To: Which engineer should be responsible for fixing this bug?</B><BR>
Bugzilla will automatically assign the bug to a default engineer upon submitting
a bug report; the text box exists to allow you to manually assign it to a different
engineer. (To see the list of default engineers for each component, click on the
Component link.)</P>
<P><B>Cc: Who else should receive e-mail updates on changes to this bug? </B><BR>
List the full e-mail addresses of other individuals who should receive an e-mail
update upon every change to the bug report. You can enter as many e-mail addresses
as you'd like; e-mail addresses must be separated by commas, with no spaces between
the addresses.
</BLOCKQUOTE>
<P><B><BR>
What else can you tell the engineer about the bug?</B></P>
<BLOCKQUOTE>
<P><B>URL: On what URL did you discover this bug?</B><BR>
If you encountered the bug on a particular URL, please provide it (or, them) here.
If you've isolated the bug to a specific HTML snippet, please also provide a URL
for that, too.</P>
<P><B>Summary:</B> <B>How would you describe the bug, in approximately 60 or fewer
characters?</B><BR>
A good summary should <U>quickly and uniquely identify a bug report</U>. Otherwise,
developers cannot meaningfully query by bug summary, and will often fail to pay attention
to your bug report when reviewing a 10 page bug list.<BR>
<BR>
A summary of &quot;PCMCIA install fails on Tosh Tecra 780DVD w/ 3c589C&quot; is a
useful title. &quot;Software fails&quot; or &quot;install problem&quot; would be
examples of a bad title.</P>
<P><BR>
<B>Description: What else can you tell the engineer about this bug? </B><BR>
Please provide as detailed of a problem diagnosis in this field as possible. <BR>
<BR>
Where applicable, using the following bug report template will help ensure that all
relevant information comes through:
<BLOCKQUOTE>
<P><B>Overview Description:</B> More detailed expansion of summary.
<BLOCKQUOTE>
<PRE><FONT SIZE="2">Drag-selecting any page crashes Mac builds in NSGetFactory</FONT></PRE>
</BLOCKQUOTE>
<P><B>Steps to Reproduce: </B>The minimal set of steps necessary to trigger the bug.
Include any special setup steps.
<BLOCKQUOTE>
<PRE><FONT SIZE="2">1) View any web page. (I used the default sample page,
resource:/res/samples/test0.html)
2) Drag-select the page. (Specifically, while holding down the
mouse button, drag the mouse pointer downwards from any point in
the browser's content region to the bottom of the browser's
content region.)</FONT></PRE>
</BLOCKQUOTE>
<P><B>Actual Results:</B> What the application did after performing the above steps.
<BLOCKQUOTE>
<PRE><FONT SIZE="2">The application crashed. Stack crawl appended below from MacsBug.</FONT></PRE>
</BLOCKQUOTE>
<P><B>Expected Results:</B> What the application should have done, were the bug not
present.
<BLOCKQUOTE>
<PRE><FONT SIZE="2">The window should scroll downwards. Scrolled content should
be selected. (Or, at least, the application should not crash.)</FONT></PRE>
</BLOCKQUOTE>
<P><B>Build Date &amp; Platform:</B> Date and platform of the build that you first
encountered the bug in.
<BLOCKQUOTE>
<PRE><FONT SIZE="2">11/2/99 build on Mac OS (Checked Viewer &amp; Apprunner)</FONT></PRE>
</BLOCKQUOTE>
<P><B>Additional Builds and Platforms:</B> Whether or not the bug takes place on
other platforms or browsers.
<BLOCKQUOTE>
<PRE><FONT SIZE="2"> - Occurs On
Seamonkey (11/2/99 build on Windows NT 4.0)
- Doesn't Occur On
Seamonkey (11/4/99 build on Red Hat Linux; feature not supported)
Internet Explorer 5.0 (RTM build on Windows NT 4.0)
Netscape Communicator 4.5 (RTM build on Mac OS)</FONT>
</PRE>
</BLOCKQUOTE>
<P><B>Additional Information:</B> Any other debugging information. For crashing bugs:
<UL>
<LI><B>Win32:</B> if you receive a Dr. Watson error, please note the type of the
crash, and the module that the application crashed in. (e.g. access violation in
apprunner.exe)
<LI><B>Mac OS:</B> if you're running MacsBug, please provide the results of a <B><TT>how</TT></B>
and an <B><TT>sc</TT></B>.
<LI><B>Unix: </B>please provide a minimized stack trace, which can be generated by
typing <B><TT>gdb apprunner core</TT></B> into a shell prompt.
</UL>
<BLOCKQUOTE>
<P>
<PRE><FONT SIZE="2">*** MACSBUG STACK CRAWL OF CRASH (Mac OS)
Calling chain using A6/R1 links
Back chain ISA Caller
00000000 PPC 0BA85E74
03AEFD80 PPC 0B742248
03AEFD30 PPC 0B50FDDC NSGetFactory+027FC
PowerPC unmapped memory exception at 0B512BD0 NSGetFactory+055F0</FONT></PRE>
</BLOCKQUOTE>
</BLOCKQUOTE>
</BLOCKQUOTE>
<P>You're done! <BR>
<BR>
After double-checking your entries for any possible errors, press the &quot;Commit&quot;
button, and your bug report will now be in the Bugzilla database.<BR>
<I><BR>
<BR>
</I><FONT SIZE="2">(Thanks to Claudius Gayle, Peter Mock, Chris Pratt, Tom Schutter,
and Chris Yeh for contributing to this document. Constructive </FONT><A HREF="mailto:eli@prometheus-music.com"><FONT
SIZE="2">suggestions</FONT></A><FONT SIZE="2"> welcome.)</FONT>
</BLOCKQUOTE>
</BODY>
</HTML>

View File

@@ -5,7 +5,7 @@
maintainer CDATA #REQUIRED
exporter CDATA #IMPLIED
>
<!ELEMENT bug (bug_id, (bug_status, product, priority, version, rep_platform, assigned_to, delta_ts, component, reporter, target_milestone?, bug_severity, creation_ts, qa_contact?, op_sys, resolution?, bug_file_loc?, short_desc?, keywords*, status_whiteboard?, dependson*, blocks*, cc*, long_desc*, attachment*)?)>
<!ELEMENT bug (bug_id, (exporter?, urlbase?, bug_status, product, priority, version, rep_platform, assigned_to, delta_ts, component, reporter, target_milestone?, bug_severity, creation_ts, qa_contact?, op_sys, resolution?, bug_file_loc?, short_desc?, keywords*, status_whiteboard?, dependson*, blocks*, cc*, long_desc*, attachment*)?)>
<!ATTLIST bug
error (NotFound | NotPermitted | InvalidBugId) #IMPLIED
>

File diff suppressed because it is too large Load Diff

View File

@@ -25,12 +25,10 @@ use strict;
use lib qw(.);
use vars qw(
@legal_keywords
$buffer
$template
$vars
);
sub sillyness { # shut up "used only once" warnings
my $zz = @::legal_keywords;
$zz = $::buffer;
}
require "CGI.pl";
@@ -151,6 +149,7 @@ $vars->{buffer} = $::buffer;
# Generate and return the UI (HTML page) from the appropriate template.
print "Content-type: text/html\n\n";
$template->process("list/change-columns.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("buglist/colchange.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;

View File

@@ -88,11 +88,16 @@ sub collect_stats {
push @row, FetchOneColumn();
}
foreach my $resolution ('FIXED', 'INVALID', 'WONTFIX', 'LATER', 'REMIND', 'DUPLICATE', 'WORKSFORME', 'MOVED') {
foreach my $resolution (@::queryable_resolution) {
if( $product eq "-All-" ) {
SendSQL("select count(resolution) from bugs where resolution='$resolution'");
SendSQL("select count(resolution_id) from bugs, resolutions " .
"where bugs.resolution_id = resolutions.id " .
"and resolutions.name='$resolution'");
} else {
SendSQL("select count(resolution) from bugs where resolution='$resolution' and product='$product'");
SendSQL("select count(resolution_id) from bugs, resolutions " .
"where bugs.resolution_id = resolutions.id " .
"and resolutions.name='$resolution' " .
"and product='$product'");
}
push @row, FetchOneColumn();
@@ -104,7 +109,9 @@ sub collect_stats {
#
# Do not edit me! This file is generated.
#
# fields: DATE|NEW|ASSIGNED|REOPENED|UNCONFIRMED|RESOLVED|VERIFIED|CLOSED|FIXED|INVALID|WONTFIX|LATER|REMIND|DUPLICATE|WORKSFORME|MOVED
FIN
print DATA "# fields: DATE|NEW|ASSIGNED|REOPENED|UNCONFIRMED|RESOLVED|VERIFIED|CLOSED|" . join('|', @::queryable_resolution);
print DATA <<FIN;
# Product: $product
# Created: $when
FIN

View File

@@ -1,5 +1,4 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<HTML><head>
<!--
The contents of this file are subject to the Mozilla Public
@@ -22,18 +21,15 @@
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Understanding the UNCONFIRMED state, and other recent changes</title>
</head>
<body>
<h1>Understanding the UNCONFIRMED state, and other recent changes</h1>
<p>
[This document is aimed primarily at people who have used Bugzilla
before the UNCONFIRMED state was implemented. It might be helpful for
newer users as well.]
</p>
<p>
@@ -43,67 +39,60 @@ bug is real. Very busy engineers will probably generally ignore
UNCONFIRMED that have been assigned to them, until they have been
confirmed in one way or another. (Engineers with more time will
hopefully glance over their UNCONFIRMED bugs regularly.)
</p>
<p>
The <a href="bug_status.html">page describing bug fields</a> has been
The <a href="bug_status.cgi">page describing bug fields</a> has been
updated to include UNCONFIRMED.
</p>
<p>
There are two basic ways that a bug can become confirmed (and enter
the NEW) state.
</p>
<ul>
<li> A user with the appropriate permissions (see below for more on
permissions) decides that the bug is a valid one, and confirms
it. We hope to gather a small army of responsible volunteers
to regularly go through bugs for us.</li>
<li> The bug gathers a certain number of votes. <b>Any</b> valid Bugzilla user may vote for
to regularly go through bugs for us.
<li> The bug gathers a certain number of votes. <B>Any</B> valid Bugzilla user may vote for
bugs (each user gets a certain number of bugs); any UNCONFIRMED bug which
gets enough votes becomes automatically confirmed, and enters the NEW state.</li>
gets enough votes becomes automatically confirmed, and enters the NEW state.
</ul>
<p>
One implication of this is that it is worth your time to search the
bug system for duplicates of your bug to vote on them, before
submitting your own bug. If we can spread around knowledge of this
fact, it ought to help cut down the number of duplicate bugs in the
system.
</p>
<h2>Permissions.</h2>
<p>
Users now have a certain set of permissions. To see your permissions,
check out the
<a href="userprefs.cgi?bank=permissions">user preferences</a> page.
</p>
<p>
If you have the "Can confirm a bug" permission, then you will be able
to move UNCONFIRMED bugs into the NEW state.
</p>
<p>
If you have the "Can edit all aspects of any bug" permission, then you
can tweak anything about any bug. If not, you may only edit those
bugs that you have submitted, or that you have assigned to you (or
qa-assigned to you). However, anyone may add a comment to any bug.
</p>
<p>
Some people (initially, the initial owners and initial qa-contacts for
components in the system) have the ability to give the above two
permissions to other people. So, if you really feel that you ought to
have one of these permissions, a good person to ask (via private
email, please!) is the person who is assigned a relevant bug.
</p>
<h2>Other details.</h2>
<p>
An initial stab was taken to decide who would be given which of the
above permissions. This was determined by some simple heurstics of
who was assigned bugs, and who the default owners of bugs were, and a
@@ -111,58 +100,54 @@ look at people who seem to have submitted several bugs that appear to
have been interesting and valid. Inevitably, we have failed to give
someone the permissions they deserve. Please don't take it
personally; just bear with us as we shake out the new system.
</p>
<p>
People with one of the two bits above can easily confirm their own
bugs, so bugs they submit will actually start out in the NEW state.
They can override this when submitting a bug.
</p>
<p>
People can ACCEPT or RESOLVE a bug assigned to them, even if they
aren't allowed to confirm it. However, the system remembers, and if
the bug gets REOPENED or reassigned to someone else, it will revert
back to the UNCONFIRMED state. If the bug has ever been confirmed,
then REOPENing or reassigning will cause it to go to the NEW or
REOPENED state.
</p>
<p>
Note that only some products support the UNCONFIRMED state. In other
products, all new bugs will automatically start in the NEW state.
</p>
<h2>Things still to be done.</h2>
<p>
There probably ought to be a way to get a bug back into the
UNCONFIRMED state, but there isn't yet.
</p>
<p>
If a person has submitted several bugs that get confirmed, then this
is probably a person who understands the system well, and deserves the
"Can confirm a bug" permission. This kind of person should be
detected and promoted automatically.
</p>
<p>
There should also be a way to automatically promote people to get the
"Can edit all aspects of any bug" permission.
</p>
<p>
The "enter a new bug" page needs to be revamped with easy ways for new
people to educate themselves on the benefit of searching for a bug
like the one they're about to submit and voting on it, rather than
adding a new useless duplicate.
</p>
<hr>
<p>
<!-- hhmts start -->
Last modified: Sun Apr 14 12:55:14 EST 2002
Last modified: Wed Feb 16 21:04:56 2000
<!-- hhmts end -->
</p>
</body> </html>

View File

@@ -1,303 +0,0 @@
#!/usr/local/bin/python
# -*- mode: python -*-
"""
jb2bz.py - a nonce script to import bugs from JitterBug to Bugzilla
Written by Tom Emerson, tree@basistech.com
This script is provided in the hopes that it will be useful. No
rights reserved. No guarantees expressed or implied. Use at your own
risk. May be dangerous if swallowed. If it doesn't work for you, don't
blame me. It did what I needed it to do.
This code requires a recent version of Andy Dustman's MySQLdb interface,
http://sourceforge.net/projects/mysql-python
Share and enjoy.
"""
import rfc822, mimetools, multifile, mimetypes
import sys, re, glob, StringIO, os, stat, time
import MySQLdb, getopt
# mimetypes doesn't include everything we might encounter, yet.
if not mimetypes.types_map.has_key('.doc'):
mimetypes.types_map['.doc'] = 'application/msword'
if not mimetypes.encodings_map.has_key('.bz2'):
mimetypes.encodings_map['.bz2'] = "bzip2"
bug_status='NEW'
component="default"
version=""
product="" # this is required, the rest of these are defaulted as above
"""
Each bug in JitterBug is stored as a text file named by the bug number.
Additions to the bug are indicated by suffixes to this:
<bug>
<bug>.followup.*
<bug>.reply.*
<bug>.notes
The dates on the files represent the respective dates they were created/added.
All <bug>s and <bug>.reply.*s include RFC 822 mail headers. These could include
MIME file attachments as well that would need to be extracted.
There are other additions to the file names, such as
<bug>.notify
which are ignored.
Bugs in JitterBug are organized into directories. At Basis we used the following
naming conventions:
<product>-bugs Open bugs
<product>-requests Open Feature Requests
<product>-resolved Bugs/Features marked fixed by engineering, but not verified
<product>-verified Resolved defects that have been verified by QA
where <product> is either:
<product-name>
or
<product-name>-<version>
"""
def process_notes_file(current, fname):
try:
new_note = {}
notes = open(fname, "r")
s = os.fstat(notes.fileno())
new_note['text'] = notes.read()
new_note['timestamp'] = time.gmtime(s[stat.ST_MTIME])
notes.close()
current['notes'].append(new_note)
except IOError:
pass
def process_reply_file(current, fname):
new_note = {}
reply = open(fname, "r")
msg = rfc822.Message(reply)
new_note['text'] = "%s\n%s" % (msg['From'], msg.fp.read())
new_note['timestamp'] = rfc822.parsedate_tz(msg['Date'])
current["notes"].append(new_note)
def add_notes(current):
"""Add any notes that have been recorded for the current bug."""
process_notes_file(current, "%d.notes" % current['number'])
for f in glob.glob("%d.reply.*" % current['number']):
process_reply_file(current, f)
for f in glob.glob("%d.followup.*" % current['number']):
process_reply_file(current, f)
def maybe_add_attachment(current, file, submsg):
"""Adds the attachment to the current record"""
cd = submsg["Content-Disposition"]
m = re.search(r'filename="([^"]+)"', cd)
if m == None:
return
attachment_filename = m.group(1)
if (submsg.gettype() == 'application/octet-stream'):
# try get a more specific content-type for this attachment
type, encoding = mimetypes.guess_type(m.group(1))
if type == None:
type = submsg.gettype()
else:
type = submsg.gettype()
try:
data = StringIO.StringIO()
mimetools.decode(file, data, submsg.getencoding())
except:
return
current['attachments'].append( ( attachment_filename, type, data.getvalue() ) )
def process_mime_body(current, file, submsg):
data = StringIO.StringIO()
mimetools.decode(file, data, submsg.getencoding())
current['description'] = data.getvalue()
def process_text_plain(msg, current):
print "Processing: %d" % current['number']
current['description'] = msg.fp.read()
def process_multi_part(file, msg, current):
print "Processing: %d" % current['number']
mf = multifile.MultiFile(file)
mf.push(msg.getparam("boundary"))
while mf.next():
submsg = mimetools.Message(file)
if submsg.has_key("Content-Disposition"):
maybe_add_attachment(current, mf, submsg)
else:
# This is the message body itself (always?), so process
# accordingly
process_mime_body(current, mf, submsg)
def process_jitterbug(filename):
current = {}
current['number'] = int(filename)
current['notes'] = []
current['attachments'] = []
current['description'] = ''
current['date-reported'] = ()
current['short-description'] = ''
file = open(filename, "r")
msg = mimetools.Message(file)
msgtype = msg.gettype()
add_notes(current)
current['date-reported'] = rfc822.parsedate_tz(msg['Date'])
current['short-description'] = msg['Subject']
if msgtype[:5] == 'text/':
process_text_plain(msg, current)
elif msgtype[:10] == "multipart/":
process_multi_part(file, msg, current)
else:
# Huh? This should never happen.
print "Unknown content-type: %s" % msgtype
sys.exit(1)
# At this point we have processed the message: we have all of the notes and
# attachments stored, so it's time to add things to the database.
# The schema for JitterBug 2.14 can be found at:
#
# http://www.trilobyte.net/barnsons/html/dbschema.html
#
# The following fields need to be provided by the user:
#
# bug_status
# product
# version
# reporter
# component
# resolution
# change this to the user_id of the Bugzilla user who is blessed with the
# imported defects
reporter=6
# the resolution will need to be set manually
resolution=""
db = MySQLdb.connect(db='bugs',user='root',host='localhost')
cursor = db.cursor()
cursor.execute( "INSERT INTO bugs SET " \
"bug_id=%s," \
"bug_severity='normal'," \
"bug_status=%s," \
"creation_ts=%s," \
"short_desc=%s," \
"product=%s," \
"rep_platform='All'," \
"assigned_to=%s,"
"reporter=%s," \
"version=%s," \
"component=%s," \
"resolution=%s",
[ current['number'],
bug_status,
time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]),
current['short-description'],
product,
reporter,
reporter,
version,
component,
resolution] )
# This is the initial long description associated with the bug report
cursor.execute( "INSERT INTO longdescs VALUES (%s,%s,%s,%s)",
[ current['number'],
reporter,
time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]),
current['description'] ] )
# Add whatever notes are associated with this defect
for n in current['notes']:
cursor.execute( "INSERT INTO longdescs VALUES (%s,%s,%s,%s)",
[current['number'],
reporter,
time.strftime("%Y-%m-%d %H:%M:%S", n['timestamp'][:9]),
n['text']])
# add attachments associated with this defect
for a in current['attachments']:
cursor.execute( "INSERT INTO attachments SET " \
"bug_id=%s, creation_ts=%s, description='', mimetype=%s," \
"filename=%s, thedata=%s, submitter_id=%s",
[ current['number'],
time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]),
a[1], a[0], a[2], reporter ])
cursor.close()
db.close()
def usage():
print """Usage: jb2bz.py [OPTIONS] Product
Where OPTIONS are one or more of the following:
-h This help information.
-s STATUS One of UNCONFIRMED, NEW, ASSIGNED, REOPENED, RESOLVED, VERIFIED, CLOSED
(default is NEW)
-c COMPONENT The component to attach to each bug as it is important. This should be
valid component for the Product.
-v VERSION Version to assign to these defects.
Product is the Product to assign these defects to.
All of the JitterBugs in the current directory are imported, including replies, notes,
attachments, and similar noise.
"""
sys.exit(1)
def main():
global bug_status, component, version, product
opts, args = getopt.getopt(sys.argv[1:], "hs:c:v:")
for o,a in opts:
if o == "-s":
if a in ('UNCONFIRMED','NEW','ASSIGNED','REOPENED','RESOLVED','VERIFIED','CLOSED'):
bug_status = a
elif o == '-c':
component = a
elif o == '-v':
version = a
elif o == '-h':
usage()
if len(args) != 1:
sys.stderr.write("Must specify the Product.\n")
sys.exit(1)
product = args[0]
for bug in filter(lambda x: re.match(r"\d+$", x), glob.glob("*")):
process_jitterbug(bug)
if __name__ == "__main__":
main()

View File

@@ -32,11 +32,27 @@ use lib qw(.);
require "CGI.pl";
# Shut up misguided -w warnings about "used only once":
use vars qw(
%FORM
$template
$vars
);
use vars %::FORM;
# Use the template toolkit (http://www.template-toolkit.org/)
use Template;
# Create the global template object that processes templates
my $template = Template->new(
{
# Colon-separated list of directories containing templates.
INCLUDE_PATH => "template/custom:template/default",
RELATIVE => 1,
PRE_CHOMP => 1,
});
# Define the global variables and functions that will be passed to the UI
# template.
my $vars =
{
'Param' => \&Param,
'PerformSubsts' => \&PerformSubsts,
};
ConnectToDatabase();
@@ -63,13 +79,12 @@ my $realname = trim($::FORM{'realname'});
if (defined($login)) {
# We've been asked to create an account.
CheckEmailSyntax($login);
trick_taint($login);
$vars->{'login'} = $login;
if (!ValidateNewUser($login)) {
if (DBname_to_id($login) != 0) {
# Account already exists
$template->process("account/exists.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("admin/account_exists.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error());
exit;
}
@@ -77,11 +92,12 @@ if (defined($login)) {
my $password = InsertNewUser($login, $realname);
MailPassword($login, $password);
$template->process("account/created.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("admin/account_created.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error());
exit;
}
# Show the standard "would you like to create an account?" form.
$template->process("account/create.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("admin/create_account.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;

View File

@@ -1,38 +0,0 @@
/* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Bugzilla Bug Tracking System.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): Myk Melez <myk@mozilla.org>
*/
/* Right align bug IDs. */
.bz_id_column { text-align: right; }
/* Style bug rows according to severity. */
.bz_blocker { color: red; font-weight: bold; }
.bz_critical { color: red; }
.bz_enhancement { font-style: italic; }
/* Style secure bugs if the installation is not using bug groups.
* Installations that *are* using bug groups are likely to be using
* them for almost all bugs, in which case special styling is not
* informative and generally a nuisance.
*/
.bz_secure { color: black; background-color: lightgrey; }
/* Align columns in the "change multiple bugs" form to the right. */
table#form tr th { text-align: right; }

View File

@@ -54,7 +54,18 @@ sub WriteParams {
}
}
}
# If Bugzilla has been upgraded since the last time parameters were edited,
# and some parameters have been removed in the new version of Bugzilla,
# remove them from the parameters file.
foreach my $item (keys %::param) {
if (!grep($_ eq $item, @::param_list) && $item ne "version") {
print "The <em>$item</em> parameter is no longer used in Bugzilla
and has been removed from your parameters file.<br>";
delete $::param{$item};
}
}
mkdir("data", 0777);
chmod 0777, "data";
my $tmpname = "data/params.$$";
open(FID, ">$tmpname") || die "Can't create $tmpname";
my $v = $::param{'version'};
@@ -65,7 +76,7 @@ sub WriteParams {
print FID "1;\n";
close FID;
rename $tmpname, "data/params" || die "Can't rename $tmpname to data/params";
ChmodDataFile('data/params', 0666);
chmod 0666, "data/params";
}
@@ -144,6 +155,17 @@ DefParam("cookiepath",
"t",
"/");
DefParam("preferlists",
"If this is on, Bugzilla will display most selection options as selection lists. If this is off, Bugzilla will use radio buttons and checkboxes instead.",
"b",
1);
DefParam("capitalizelists",
"If this is on, Bugzilla will capitalize list entries, checkboxes, and radio buttons. If this is off, Bugzilla will leave these items untouched.",
"b",
0);
DefParam("usequip",
"If this is on, Bugzilla displays a silly quip at the beginning of buglists, and lets users add to the list of quips.",
"b",
@@ -173,6 +195,27 @@ DefParam("queryagainstshadowdb",
0);
DefParam("usedespot",
"If this is on, then we are using the Despot system to control our database of users. Bugzilla won't ever write into the user database, it will let the Despot code maintain that. And Bugzilla will send the user over to Despot URLs if they need to change their password. Also, in that case, Bugzilla will treat the passwords stored in the database as being crypt'd, not plaintext.",
"b",
0);
DefParam("despotbaseurl",
"The base URL for despot. Used only if <b>usedespot</b> is turned on, above.",
"t",
"http://cvs-mirror.mozilla.org/webtools/despot/despot.cgi",
\&check_despotbaseurl);
sub check_despotbaseurl {
my ($url) = (@_);
if ($url !~ /^http.*cgi$/) {
return "must be a legal URL, that starts with http and ends with .cgi";
}
return "";
}
# Adding in four parameters for LDAP authentication. -JMR, 7/28/00
DefParam("useLDAP",
"Turn this on to use an LDAP directory for user authentication ".
@@ -203,18 +246,113 @@ DefParam("LDAPmailattribute",
#End of LDAP parameters
DefParam("headerhtml",
"Additional HTML to add to the HEAD area of documents, eg. links to stylesheets.",
"l",
'');
DefParam("bodyhtml",
"Additional parameters to add to the BODY tag at the beginning of documents, eg. background image/colors, link colors, etc",
"l",
'BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000"');
DefParam("footerhtml",
"HTML to add to the bottom of every page. By default it displays the blurbhtml, and %commandmenu%, a menu of useful commands. You probably really want either bannerhtml or footerhtml to include %commandmenu%.",
"l",
'<TABLE BORDER="0"><TR><TD BGCOLOR="#000000" VALIGN="TOP">
<TABLE BORDER="0" CELLPADDING="10" CELLSPACING="0" WIDTH="100%" BGCOLOR="lightyellow">
<TR><TD>
%blurbhtml%
<BR>
%commandmenu%
</TD></TR></TABLE></TD></TR></TABLE>');
DefParam("errorhtml",
"This is what is printed out when a form is improperly filled out. %errormsg% is replaced by the actual error itself; %<i>anythingelse</i>% gets replaced by the definition of that parameter (as defined on this page).",
"l",
qq{<TABLE CELLPADDING=20><TR><TD BGCOLOR="#ff0000">
<FONT SIZE="+2">%errormsg%</FONT></TD></TR></TABLE>
<P>Please press <B>Back</B> and try again.<P>});
DefParam("bannerhtml",
"The html that gets emitted at the head of every Bugzilla page.
Anything of the form %<i>word</i>% gets replaced by the defintion of that
word (as defined on this page).",
"l",
q{<TABLE BGCOLOR="#000000" WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR><TD><A HREF="http://www.mozilla.org/"><IMG
SRC="http://www.mozilla.org/images/mozilla-banner.gif" ALT=""
BORDER=0 WIDTH=600 HEIGHT=58></A></TD></TR></TABLE>
<CENTER><FONT SIZE=-1>Bugzilla version %version%
</FONT></CENTER>});
DefParam("blurbhtml",
"A blurb that appears as part of the header of every Bugzilla page. This is a place to put brief warnings, pointers to one or two related pages, etc.",
"l",
"This is <B>Bugzilla</B>: the Mozilla bug system. For more
information about what Bugzilla is and what it can do, see
<A HREF=\"http://www.mozilla.org/\">mozilla.org</A>'s
<A HREF=\"http://www.mozilla.org/bugs/\"><B>bug pages</B></A>.");
DefParam("mostfreqhtml",
"The HTML which appears at the top of the list of most-frequently-reported bugs. Use it to explain the page, set a maintainer etc.",
"l",
q{
<br><p>
<b>What are "most frequent bugs"?</b>
<blockquote>The Most Frequent Bugs page lists the known open bugs which
are reported most frequently in recent builds of Mozilla. It is automatically
generated from the Bugzilla database every 24 hours, by counting the number
of direct and indirect duplicates of bugs.
This information is provided in order to assist in minimizing
the amount of duplicate bugs entered into Bugzilla which in turn cuts down
on development time.
</blockquote>
<b>How do I use this list?</b>
<ul>
<li>Review the most frequent bugs list.</li>
<li>If problem is listed:</li>
<ul>
<li>Click on Bug # link to confirm that you have found the same bug and comment
if you have additional information. Or move on with your testing
of the product.</li>
</ul>
<li>If problem not listed:</li>
<ul>
<li>Go to the <a href="query.cgi">Bugzilla Query/Search</a>
page to try and locate a similar bug that has already been written.</li>
<li>If you find your bug in Bugzilla, feel free to comment with any new or
additional data you may have.</li>
<li>If you cannot find your problem already documented in Bugzilla, go to the
<a href="http://www.mozilla.org/quality/help/bug-form.html">Bugzilla Helper</a> and post a new bug.</li>
</ul>
</ul>
<br>
});
DefParam("mostfreqthreshold",
"The minimum number of duplicates a bug needs to show up on the <A HREF=\"duplicates.cgi\">most frequently reported bugs page</a>. If you have a large database and this page takes a long time to load, try increasing this number.",
"t",
"2");
DefParam("mybugstemplate",
"This is the URL to use to bring up a simple 'all of my bugs' list for a user. %userid% will get replaced with the login name of a user.",
"t",
"buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=%userid%&amp;emailtype1=exact&amp;emailassigned_to1=1&amp;emailreporter1=1");
"buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=%userid%&emailtype1=exact&emailassigned_to1=1&emailreporter1=1");
DefParam("shutdownhtml",
"If this field is non-empty, then Bugzilla will be completely disabled and this text will be displayed instead of all the Bugzilla pages.",
"l",
@@ -330,7 +468,7 @@ You will get this message once a day until you've dealt with these bugs!
DefParam("defaultquery",
"This is the default query that initially comes up when you submit a bug. It's in URL parameter format, which makes it hard to read. Sorry!",
"t",
"bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailqa_contact2=1&order=%22Importance%22");
"bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=%22Importance%22");
DefParam("letsubmitterchoosepriority",
@@ -401,43 +539,14 @@ DefParam("usedependencies",
1);
DefParam("webdotbase",
"It is possible to show graphs of dependent bugs. You may set this parameter to
any of the following:
<ul>
<li>A complete file path to \'dot\' (part of <a
href=\"http://www.graphviz.org\">GraphViz</a>) will generate the graphs
locally.</li>
<li>A URL prefix pointing to an installation of the <a
href=\"http://www.research.att.com/~north/cgi-bin/webdot.cgi\">webdot
package</a> will generate the graphs remotely.</li>
<li>A blank value will disable dependency graphing.</li>
</ul>
The default value is a publically-accessible webdot server.",
"This is the URL prefix that is common to all requests for webdot. The <a href=\"http://www.research.att.com/~north/cgi-bin/webdot.cgi\">webdot package</a> is a very swell thing that generates pictures of graphs. If you have an installation of bugsplat that hides behind a firewall, then to get graphs to work, you will have to install a copy of webdot behind your firewall, and change this path to match. Also, webdot has some trouble with software domain names, so you may have to play games and hack the %urlbase% part of this. If this all seems like too much trouble, you can set this paramater to be the empty string, which will cause the graphing feature to be disabled entirely.",
"t",
"http://www.research.att.com/~north/cgi-bin/webdot.cgi/%urlbase%",
\&check_webdotbase);
"http://www.research.att.com/~north/cgi-bin/webdot.cgi/%urlbase%");
sub check_webdotbase {
my ($value) = (@_);
$value = trim($value);
if ($value eq "") {
return "";
}
if($value !~ /^https?:/) {
if(! -x $value) {
return "The file path \"$value\" is not a valid executable. Please specify the complete file path to 'dot' if you intend to generate graphs locally.";
}
# Check .htaccess allows access to generated images
if(-e "data/webdot/.htaccess") {
open HTACCESS, "data/webdot/.htaccess";
if(! grep(/png/,<HTACCESS>)) {
print "Dependency graph images are not accessible.\nDelete data/webdot/.htaccess and re-run checksetup.pl to rectify.\n";
}
close HTACCESS;
}
}
return "";
}
DefParam("entryheaderhtml",
"This is a special header for the bug entry page. The text will be printed after the page header, before the bug entry form. It is meant to be a place to put pointers to intructions on how to enter bugs.",
"l",
'<A HREF="bugwritinghelp.html">Bug writing guidelines</A>');
DefParam("expectbigqueries",
"If this is on, then we will tell mysql to <tt>set option SQL_BIG_TABLES=1</tt> before doing queries on bugs. This will be a little slower, but one will not get the error <tt>The table ### is full</tt> for big queries that require a big temporary table.",
@@ -484,12 +593,6 @@ DefParam("allowbugdeletion",
0);
DefParam("allowemailchange",
q{Users can change their own email address through the preferences. Note that the change is validated by emailing both addresses, so switching this option on will not let users use an invalid address.},
"b",
0);
DefParam("allowuserdeletion",
q{The pages to edit users can also let you delete a user. But there is no code that goes and cleans up any references to that user in other tables, so such deletions are kinda scary. So, you have to turn on this option before any such deletions will ever happen.},
"b",

View File

@@ -19,12 +19,8 @@
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Bradley Baetz <bbaetz@student.usyd.edu.au>
use vars qw(
%FORM
$userid
);
use vars %::FORM;
use diagnostics;
use strict;
@@ -36,94 +32,120 @@ require "CGI.pl";
ConnectToDatabase();
GetVersionTable();
my $userid = quietly_check_login();
quietly_check_login();
if (!defined $::FORM{'product'}) {
# Reference to a subset of %::proddesc, which the user is allowed to see
my %products;
######################################################################
# Begin Data/Security Validation
######################################################################
foreach my $p (@::legal_product) {
next if !CanSeeProduct($userid, $p);
$products{$p} = $::proddesc{$p};
}
my $prodsize = scalar(keys %products);
if ($prodsize == 0) {
DisplayError("Either no products have been defined ".
"or you have not been given access to any.\n");
exit;
}
elsif ($prodsize > 1) {
$::vars->{'proddesc'} = \%products;
$::vars->{'target'} = "describecomponents.cgi";
$::vars->{'title'} = "Bugzilla component description";
$::vars->{'h2'} =
"Please specify the product whose components you want described.";
print "Content-type: text/html\n\n";
$::template->process("global/choose-product.html.tmpl", $::vars)
|| ThrowTemplateError($::template->error());
exit;
}
$::FORM{'product'} = (keys %::proddesc)[0];
# If this installation uses bug groups to restrict access to products,
# only show the user products that don't have their own bug group or
# those whose bug group the user is a member of. Otherwise, if this
# installation doesn't use bug groups, show the user all legal products.
my @products;
if ( Param("usebuggroups") ) {
@products = grep( !GroupExists($_) || UserInGroup($_) , @::legal_product );
} else {
@products = @::legal_product;
}
my $product = $::FORM{'product'};
# Make sure the user specified a valid product name. Note that
# if the user specifies a valid product name but is not authorized
# to access that product, they will receive a different error message
# which could enable people guessing product names to determine
# whether or not certain products exist in Bugzilla, even if they
# cannot get any other information about that product.
grep($product eq $_ , @::legal_product)
if ( defined $::FORM{'product'} ) {
# Make sure the user specified a valid product name. Note that
# if the user specifies a valid product name but is not authorized
# to access that product, they will receive a different error message
# which could enable people guessing product names to determine
# whether or not certain products exist in Bugzilla, even if they
# cannot get any other information about that product.
grep( $::FORM{'product'} eq $_ , @::legal_product )
|| DisplayError("The product name is invalid.")
&& exit;
# Make sure the user is authorized to access this product.
!CanSeeProduct($userid, $product)
&& DisplayError("You are not authorized to access that product.")
# Make sure the user is authorized to access this product.
if ( Param("usebuggroups") && GroupExists($::FORM{'product'}) ) {
UserInGroup($::FORM{'product'})
|| DisplayError("You are not authorized to access that product.")
&& exit;
# Make sure the user specified a valid product name. Note that
# if the user specifies a valid product name but is not authorized
# to access that product, they will receive a different error message
# which could enable people guessing product names to determine
# whether or not certain products exist in Bugzilla, even if they
# cannot get any other information about that product.
grep($product eq $_ , @::legal_product)
|| DisplayError("The product name is invalid.")
&& exit;
}
}
######################################################################
# End Data/Security Validation
######################################################################
my @components;
SendSQL("SELECT value, initialowner, initialqacontact, description FROM " .
"components WHERE program = " . SqlQuote($product) . " ORDER BY " .
"value");
while (MoreSQLData()) {
my ($name, $initialowner, $initialqacontact, $description) =
FetchSQLData();
print "Content-type: text/html\n\n";
my %component;
my $product = $::FORM{'product'};
if (!defined $product || lsearch(\@products, $product) < 0) {
$component{'name'} = $name;
$component{'initialowner'} = $initialowner ?
DBID_to_name($initialowner) : '';
$component{'initialqacontact'} = $initialqacontact ?
DBID_to_name($initialqacontact) : '';
$component{'description'} = $description;
push @components, \%component;
PutHeader("Bugzilla component description");
print "
<FORM>
Please specify the product whose components you want described.
<P>
Product: <SELECT NAME=product>
";
print make_options(\@products);
print "
</SELECT>
<P>
<INPUT TYPE=\"submit\" VALUE=\"Submit\">
</FORM>
";
PutFooter();
exit;
}
$::vars->{'product'} = $product;
$::vars->{'components'} = \@components;
print "Content-type: text/html\n\n";
$::template->process("reports/components.html.tmpl", $::vars)
|| ThrowTemplateError($::template->error());
PutHeader("Bugzilla component description", "Bugzilla component description",
$product);
print "
<TABLE>
<tr>
<th align=left>Component</th>
<th align=left>Default owner</th>
";
my $emailsuffix = Param("emailsuffix");
my $useqacontact = Param("useqacontact");
my $cols = 2;
if ($useqacontact) {
print "<th align=left>Default qa contact</th>";
$cols++;
}
my $colbut1 = $cols - 1;
print "</tr>";
SendSQL("select value, initialowner, initialqacontact, description from components where program = " . SqlQuote($product) . " order by value");
my @data;
while (MoreSQLData()) {
push @data, [FetchSQLData()];
}
foreach (@data) {
my ($component, $initialownerid, $initialqacontactid, $description) = @$_;
my ($initialowner, $initialqacontact) = ($initialownerid ? DBID_to_name ($initialownerid) : '',
$initialqacontactid ? DBID_to_name ($initialqacontactid) : '');
print qq|
<tr><td colspan=$cols><hr></td></tr>
<tr><td rowspan=2><a name="|
.value_quote($component).
qq|">$component</a></td>
<td><a href="mailto:$initialowner$emailsuffix">$initialowner</a></td>
|;
if ($useqacontact) {
print qq|
<td><a href="mailto:$initialqacontact$emailsuffix">$initialqacontact</a></td>
|;
}
print "</tr><tr><td colspan=$colbut1>$description</td></tr>\n";
}
print "<tr><td colspan=$cols><hr></td></tr></table>\n";
PutFooter();

View File

@@ -19,40 +19,74 @@
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Contributor(s): Gervase Markham <gerv@gerv.net>
use diagnostics;
use strict;
use lib ".";
use lib qw(.);
require "CGI.pl";
# Use the global template variables.
use vars qw($vars $template);
ConnectToDatabase();
my $userid = quietly_check_login();
print "Content-type: text/html\n\n";
PutHeader("Bugzilla keyword description");
my $tableheader = qq{
<TABLE BORDER=1 CELLPADDING=4 CELLSPACING=0>
<TR BGCOLOR="#6666FF">
<TH ALIGN="left">Name</TH>
<TH ALIGN="left">Description</TH>
<TH ALIGN="left">Bugs</TH>
</TR>
};
print $tableheader;
my $line_count = 0;
my $max_table_size = 50;
SendSQL("SELECT keyworddefs.name, keyworddefs.description,
COUNT(keywords.bug_id)
COUNT(keywords.bug_id), keywords.bug_id
FROM keyworddefs LEFT JOIN keywords ON keyworddefs.id=keywords.keywordid
GROUP BY keyworddefs.id
ORDER BY keyworddefs.name");
my @keywords;
while (MoreSQLData()) {
my ($name, $description, $bugs) = FetchSQLData();
push (@keywords, { name => $name,
description => $description,
bugcount => $bugs });
my ($name, $description, $bugs, $onebug) = FetchSQLData();
if ($bugs && $onebug) {
# This 'onebug' stuff is silly hackery for old versions of
# MySQL that seem to return a count() of 1 even if there are
# no matching. So, we ask for an actual bug number. If it
# can't find any bugs that match the keyword, then we set the
# count to be zero, ignoring what it had responded.
my $q = url_quote($name);
$bugs = qq{<A HREF="buglist.cgi?keywords=$q">$bugs</A>};
} else {
$bugs = "none";
}
if ($line_count == $max_table_size) {
print "</table>\n$tableheader";
$line_count = 0;
}
$line_count++;
print qq{
<TR>
<TH><a name="}
.value_quote($name).
qq{">$name</A></TH>
<TD>$description</TD>
<TD ALIGN="right">$bugs</TD>
</TR>
};
}
$vars->{'keywords'} = \@keywords;
$vars->{'caneditkeywords'} = UserInGroup($userid, "editkeywords");
print "Content-type: text/html\n\n";
$template->process("reports/keywords.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
print "</TABLE><P>\n";
quietly_check_login();
if (UserInGroup("editkeywords")) {
print "<p><a href=editkeywords.cgi>Edit keywords</a><p>\n";
}
PutFooter();

View File

@@ -62,19 +62,19 @@ rpms:
openjade
jadetex
docbook-dtds
docbook-dtd41-sgml
docbook-style-dsssl
docbook-dtd31-sgml
docbook-style-dsssl-doc
docbook-utils
xemacs
psgml
sgml-tools
sgml-common
Set up environment:
If you're getting these from RedHat, make sure you get the ones in the
rawhide area. The ones in the 7.2 distribution are too old and don't
include the XML stuff.
in your .bashrc add this line (after installing above RPMS):
export SGML_CATALOG_FILES=/etc/sgml/catalog
Download "ldp.dsl" from the Resources page on linuxdoc.org. This is the
stylesheet I use to get the HTML and text output. It works well, and has a
@@ -83,67 +83,59 @@ adjust the paths in ldp.dsl at the top of the file to reflect the actual
locations of your docbook catalog files. I created a directory,
/usr/share/sgml/docbook/ldp, and put the ldp.dsl file there. I then edited
ldp.dsl and changed two lines near the top:
<!ENTITY docbook.dsl SYSTEM "../dsssl-stylesheets/html/docbook.dsl" CDATA
<!ENTITY docbook.dsl SYSTEM "../dsssl-stylesheets-1.62/html/docbook.dsl" CDATA
dsssl>
...and...
<!ENTITY docbook.dsl SYSTEM "../dsssl-stylesheets/print/docbook.dsl" CDATA
<!ENTITY docbook.dsl SYSTEM "../dsssl-stylesheets-1.62/print/docbook.dsl" CDATA
dsssl>
Note the difference is the top one points to the HTML docbook stylesheet,
and the next one points to the PRINT docbook stylesheet.
You know, this sure looks awful involved. Anyway, once you have this in
You know, this sure looks awful involved. Anyway, once you have this in
place, add to your .bashrc:
export SGML_CATALOG_FILES=/etc/sgml/catalog
export LDP_HOME=/usr/share/sgml/docbook/ldp
export JADE_PUB=/usr/share/doc/openjade-1.3.1/pubtext
or in .tcshrc:
setenv SGML_CATALOG_FILES /etc/sgml/catalog
setenv LDP_HOME /usr/share/sgml/docbook/ldp
setenv JADE_PUB /usr/share/doc/openjade-1.3.1/pubtext
If you have root access and want to set this up for anyone on your box,
you can add those lines to /etc/profile for bash users and /etc/csh.login
for tcsh users.
Make sure you edit the paths in the above environment variables if those
folders are anywhere else on your system (for example, the openjade version
might change if you get a new version at some point).
I suggest xemacs for editing your SGML/XML Docbook documents. The darn
thing just works, and generally includes PSGML mode by default. Not to
mention you can validate the SGML from right within it without having to
remember the command-line syntax for nsgml (not that it's that hard
anyway). If not, you can download psgml at
http://www.sourceforge.net/projects/psgml.
thing just works, and generally includes PSGML mode by default. You can
download psgml at http://www.sourceforge.net/projects/psgml.
==========
NOTES:
==========
Here are the commands I use to maintain this documentation.
You MUST have DocBook 4.1.2 set up correctly in order for this to work.
You MUST have DocBook 4.1 set up correctly in order for this to work.
Substitute your own path to "ldp.dsl" for "$LDP_HOME". Additionally,
there is now a dependency on "xml.dcl" since we converted the Guide
to XML. Note that below, it is hard-coded to
/usr/share/doc/openjade-1.3/pubtext/xml.dcl. Modify it to point to
openjade's xml.dcl on your system.
To create HTML documentation:
bash$ cd html
bash$ jade -t sgml -i html -d $LDP_HOME/ldp.dsl\#html \
$JADE_PUB/xml.dcl ../sgml/Bugzilla-Guide.sgml
bash$ jade -t sgml -i html -d $LDP_HOME/ldp.dsl\#html \
/usr/share/doc/openjade-1.3/pubtext/xml.dcl ../sgml/Bugzilla-Guide.sgml
To create HTML documentation as a single big HTML file:
bash$ cd html
bash$ jade -V nochunks -t sgml -i html -d $LDP_HOME/ldp.dsl\#html \
$JADE_PUB/xml.dcl ../sgml/Bugzilla-Guide.sgml >Bugzilla-Guide.html
bash$ jade -V nochunks -t sgml -i html -d $LDP_HOME/ldp.dsl\#html \
/usr/share/doc/openjade-1.3/pubtext/xml.dcl ../sgml/Bugzilla-Guide.sgml
To create TXT documentation as a single big TXT file:
bash$ cd txt
bash$ lynx -dump -nolist ../html/Bugzilla-Guide.html >Bugzilla-Guide.txt
## Change for XML
There's a small change in how you use Jade now that we've converted the
Bugzilla Guide to XML from SGML. Now call Jade this way to compile HTML
documentation:
(I need to remove the hard-coded path to xml.dcl for openjade)
Sincerely,
Matthew P. Barnson
The Bugzilla "Doc Knight"
mbarnson@sisna.com
with major edits by Dave Miller <justdave@syndicomm.com> based on
experience setting this up on the Landfill test server.
barnboy@trilobyte.net

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
>About This Guide</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="aboutthisguide.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="about">Chapter 1. About This Guide</H1
NAME="about"
>Chapter 1. About This Guide</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -104,11 +103,21 @@ HREF="credits.html"
></DT
><DT
>1.6. <A
HREF="contributors.html"
>Contributors</A
></DT
><DT
>1.7. <A
HREF="feedback.html"
>Feedback</A
></DT
><DT
>1.8. <A
HREF="translations.html"
>Translations</A
></DT
><DT
>1.7. <A
>1.9. <A
HREF="conventions.html"
>Document Conventions</A
></DT
@@ -120,7 +129,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -132,7 +140,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -141,7 +148,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -150,7 +156,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="aboutthisguide.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Purpose and Scope of this Guide</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="about.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="copyright.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,16 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="aboutthisguide">1.1. Purpose and Scope of this Guide</H1
NAME="aboutthisguide"
>1.1. Purpose and Scope of this Guide</A
></H1
><P
>&#13; 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.
</P
><P
>&#13; Bugzilla is simply the best piece of bug-tracking software the
world has ever seen. This document is intended to be the
@@ -83,7 +89,7 @@ NAME="aboutthisguide">1.1. Purpose and Scope of this Guide</H1
><P
>&#13; This release of the Bugzilla Guide is the
<EM
>2.16</EM
>2.14</EM
> 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,
@@ -105,24 +111,37 @@ NAME="aboutthisguide">1.1. Purpose and Scope of this Guide</H1
>&#13; Newer revisions of the Bugzilla Guide follow the numbering
conventions of the main-tree Bugzilla releases, available at
<A
HREF="http://www.bugzilla.org/"
HREF="http://www.mozilla.org/projects/bugzilla"
TARGET="_top"
>http://www.bugzilla.org/</A
>http://www.mozilla.org/projects/bugzilla</A
>. Intermediate releases will have
a minor revision number following a period. The current version
of Bugzilla, as of this writing (April 2nd, 2002) is 2.16; if
of Bugzilla, as of this writing (August 10, 2001) is 2.14; if
something were seriously wrong with that edition of the Guide,
subsequent releases would receive an additional dotted-decimal
digit to indicate the update (2.16.1, 2.16.2, etc.).
digit to indicate the update (2.14.1, 2.14.2, etc.).
Got it? Good.
</P
><P
>&#13; 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
<TT
CLASS="email"
>&#60;<A
HREF="mailto:barnboy@trilobyte.net"
>barnboy@trilobyte.net</A
>&#62;</TT
> to correct them.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -134,7 +153,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -143,7 +161,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -152,7 +169,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="copyright.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -168,7 +184,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Administering Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="win32.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="postinstall-check.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="administration">Chapter 4. Administering Bugzilla</H1
NAME="administration"
>Chapter 4. Administering Bugzilla</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -99,6 +98,30 @@ HREF="useradmin.html#defaultuser"
HREF="useradmin.html#manageusers"
>Managing Other Users</A
></DT
><DD
><DL
><DT
>4.2.2.1. <A
HREF="useradmin.html#login"
>Logging In</A
></DT
><DT
>4.2.2.2. <A
HREF="useradmin.html#createnewusers"
>Creating new users</A
></DT
><DT
>4.2.2.3. <A
HREF="useradmin.html#disableusers"
>Disabling Users</A
></DT
><DT
>4.2.2.4. <A
HREF="useradmin.html#modifyusers"
>Modifying Users</A
></DT
></DL
></DD
></DL
></DD
><DT
@@ -175,7 +198,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -187,7 +209,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="win32.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -196,7 +217,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -205,7 +225,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="postinstall-check.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Bonsai</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="integration.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="cvs.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="bonsai">5.1. Bonsai</H1
NAME="bonsai"
>5.1. Bonsai</A
></H1
><P
>Bonsai is a web-based tool for managing <A
HREF="cvs.html"
@@ -98,7 +97,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -110,7 +108,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -119,7 +116,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -128,7 +124,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="cvs.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -144,7 +139,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>BSD Installation Notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="osx.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="geninstall.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="bsdinstall">3.4. BSD Installation Notes</H1
NAME="bsdinstall"
>3.4. BSD Installation Notes</A
></H1
><P
>&#13; For instructions on how to set up Bugzilla on FreeBSD, NetBSD, OpenBSD, BSDi, etc. please
consult <A
@@ -87,7 +86,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -99,7 +97,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="osx.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -108,7 +105,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -117,7 +113,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="geninstall.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -133,7 +128,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Hacking Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="quicksearch.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="bzhacking">D.5. Hacking Bugzilla</H1
NAME="bzhacking"
>D.5. Hacking Bugzilla</A
></H1
><P
>&#13; The following is a guide for reviewers when checking code into Bugzilla's
CVS repostory at mozilla.org. If you wish to submit patches to Bugzilla,
@@ -86,7 +85,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN2436">D.5.1. Things that have caused problems and should be avoided</H2
NAME="AEN2504"
>D.5.1. Things that have caused problems and should be avoided</A
></H2
><P
></P
><OL
@@ -180,7 +181,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN2450">D.5.2. Coding Style for Bugzilla</H2
NAME="AEN2518"
>D.5.2. Coding Style for Bugzilla</A
></H2
><P
>&#13; While it's true that not all of the code currently in Bugzilla adheres to
this (or any) styleguide, it is something that is being worked toward. Therefore,
@@ -214,7 +217,7 @@ CLASS="command"
>&#13; Whitespace
</P
><P
>&#13; Bugzilla's preferred indentation is 4 spaces (no tabs, please).
>&#13; Bugzilla's prefered indentation is 4 spaces (no tabs, please).
</P
></LI
><LI
@@ -430,7 +433,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -442,7 +444,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="quicksearch.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -451,7 +452,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -460,7 +460,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -476,7 +475,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Command-line Bugzilla Queries</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="setperl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="quicksearch.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="cmdline">D.3. Command-line Bugzilla Queries</H1
NAME="cmdline"
>D.3. Command-line Bugzilla Queries</A
></H1
><P
>&#13; Users can query Bugzilla from the command line using this suite
of utilities.
@@ -207,7 +206,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -219,7 +217,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="setperl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -228,7 +225,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -237,7 +233,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="quicksearch.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -253,7 +248,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Contributors</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="credits.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="feedback.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="contributors">1.6. Contributors</H1
NAME="contributors"
>1.6. Contributors</A
></H1
><P
>&#13; Thanks go to these people for significant contributions to this
documentation (in no particular order):
@@ -88,7 +87,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -100,7 +98,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="credits.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -109,7 +106,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -118,7 +114,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="feedback.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -134,7 +129,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Document Conventions</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="translations.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="using.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,14 +70,18 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="conventions">1.7. Document Conventions</H1
NAME="conventions"
>1.9. Document Conventions</A
></H1
><P
>&#13; This document uses the following conventions
</P
><DIV
CLASS="informaltable"
><A
NAME="AEN91"><P
NAME="AEN129"
></A
><P
></P
><TABLE
BORDER="0"
@@ -127,7 +128,7 @@ ALT="Caution"></TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Don't run with scissors!</P
>Warnings.</P
></TD
></TR
></TABLE
@@ -163,7 +164,7 @@ ALT="Tip"></TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Warm jar lids under the hot tap to loosen them.</P
>Hint.</P
></TD
></TR
></TABLE
@@ -199,7 +200,7 @@ ALT="Note"></TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Dear John...</P
>Note.</P
></TD
></TR
></TABLE
@@ -235,7 +236,7 @@ ALT="Warning"></TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Read this or the cat gets it.</P
>Warning.</P
></TD
></TR
></TABLE
@@ -400,7 +401,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -412,7 +412,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="translations.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -421,7 +420,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -430,7 +428,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -446,7 +443,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Copyright Information</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="aboutthisguide.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="disclaimer.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,9 +70,13 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="copyright">1.2. Copyright Information</H1
NAME="copyright"
>1.2. Copyright Information</A
></H1
><A
NAME="AEN39"><TABLE
NAME="AEN70"
></A
><TABLE
BORDER="0"
WIDTH="100%"
CELLSPACING="0"
@@ -96,7 +97,7 @@ VALIGN="TOP"
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".
Documentation LIcense".
</P
></TD
><TD
@@ -111,7 +112,7 @@ ALIGN="RIGHT"
VALIGN="TOP"
>--<SPAN
CLASS="attribution"
>Copyright (c) 2000-2002 Matthew P. Barnson and The Bugzilla Team</SPAN
>Copyright (c) 2000-2001 Matthew P. Barnson</SPAN
></TD
><TD
WIDTH="10%"
@@ -121,7 +122,7 @@ WIDTH="10%"
><P
>&#13; If you have any questions regarding this document, its
copyright, or publishing this document in non-electronic form,
please contact The Bugzilla Team.
please contact Matthew P. Barnson.
</P
></DIV
><DIV
@@ -129,7 +130,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -141,7 +141,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="aboutthisguide.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -150,7 +149,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -159,7 +157,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="disclaimer.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -175,7 +172,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Credits</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -16,8 +16,8 @@ REL="PREVIOUS"
TITLE="New Versions"
HREF="newversions.html"><LINK
REL="NEXT"
TITLE="Translations"
HREF="translations.html"></HEAD
TITLE="Contributors"
HREF="contributors.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="newversions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -59,8 +57,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="translations.html"
ACCESSKEY="N"
HREF="contributors.html"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="credits">1.5. Credits</H1
NAME="credits"
>1.5. Credits</A
></H1
><P
>&#13; The people listed below have made enormous contributions to the
creation of this Guide, through their dedicated hacking efforts,
@@ -82,14 +81,6 @@ NAME="credits">1.5. Credits</H1
</P
><P
>&#13; <A
HREF="mailto://mbarnson@sisna.com"
TARGET="_top"
>Matthew P. Barnson</A
>
for pulling together the Bugzilla Guide and shepherding it to 2.14.
</P
><P
>&#13; <A
HREF="mailto://terry@mozilla.org"
TARGET="_top"
>Terry Weissman</A
@@ -132,21 +123,12 @@ TARGET="_top"
> netscape.public.mozilla.webtools</A
> newsgroup. Without your discussions, insight, suggestions, and patches, this could never have happened.
</P
><P
>&#13; Thanks also go to the following people for significant contributions
to this documentation (in no particular order):
</P
><P
>&#13; Zach Liption, Andrew Pearson, Spencer Smith, Eric Hanson, Kevin Brannen,
Ron Teitelbaum, Jacob Steenhagen, Joe Robins.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -158,7 +140,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="newversions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -167,7 +148,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -175,8 +155,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="translations.html"
ACCESSKEY="N"
HREF="contributors.html"
>Next</A
></TD
></TR
@@ -192,14 +171,13 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Translations</TD
>Contributors</TD
></TR
></TABLE
></DIV

View File

@@ -4,7 +4,7 @@
>CVS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="bonsai.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="scm.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="cvs">5.2. CVS</H1
NAME="cvs"
>5.2. CVS</A
></H1
><P
>CVS integration is best accomplished, at this point, using
the Bugzilla Email Gateway. There have been some files
@@ -112,7 +111,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -124,7 +122,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="bonsai.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -133,7 +130,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -142,7 +138,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="scm.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -158,7 +153,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>The Bugzilla Database</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="downloadlinks.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="dbschema.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="appendix"
><H1
><A
NAME="database">Appendix C. The Bugzilla Database</H1
NAME="database"
>Appendix C. The Bugzilla Database</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -127,7 +126,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -139,7 +137,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="downloadlinks.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -148,7 +145,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -157,7 +153,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="dbschema.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>MySQL Bugzilla Database Introduction</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="dbschema.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="granttables.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="dbdoc">C.2. MySQL Bugzilla Database Introduction</H1
NAME="dbdoc"
>C.2. MySQL Bugzilla Database Introduction</A
></H1
><P
>&#13; This information comes straight from my life. I was forced to learn how
Bugzilla organizes database because of nitpicky requests from users for tiny
@@ -138,7 +137,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN2272">C.2.1. Bugzilla Database Basics</H2
NAME="AEN2340"
>C.2.1. Bugzilla Database Basics</A
></H2
><P
>&#13; If you were like me, at this point you're totally clueless
about the internals of MySQL, and if it weren't for this
@@ -259,7 +260,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="AEN2301">C.2.1.1. Bugzilla Database Tables</H3
NAME="AEN2369"
>C.2.1.1. Bugzilla Database Tables</A
></H3
><P
> Imagine your MySQL database as a series of
spreadsheets, and you won't be too far off. If you use this
@@ -514,7 +517,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -526,7 +528,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="dbschema.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -535,7 +536,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -544,7 +544,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="granttables.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -560,7 +559,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="database.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Database Schema Chart</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="database.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="dbdoc.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,13 +70,18 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="dbschema">C.1. Database Schema Chart</H1
NAME="dbschema"
>C.1. Database Schema Chart</A
></H1
><P
>&#13; <DIV
CLASS="mediaobject"
><P
><IMG
SRC="../images/dbschema.jpg"><DIV
SRC="../images/dbschema.jpg"
ALT="Database Relationships"
></IMG
><DIV
CLASS="caption"
><P
>Bugzilla database relationships chart</P
@@ -94,7 +96,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -106,7 +107,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="database.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -115,7 +115,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -124,7 +123,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="dbdoc.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -140,7 +138,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="database.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Disclaimer</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="copyright.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="newversions.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="disclaimer">1.3. Disclaimer</H1
NAME="disclaimer"
>1.3. Disclaimer</A
></H1
><P
>&#13; No liability for the contents of this document can be accepted.
Use the concepts, examples, and other content at your own risk.
@@ -92,7 +91,7 @@ NAME="disclaimer">1.3. Disclaimer</H1
</P
><P
>&#13; Naming of particular products or brands should not be seen as
endorsements, with the exception of the term "GNU/Linux". We
endorsements, with the exception of the term "GNU/Linux". I
wholeheartedly endorse the use of GNU/Linux in every situation
where it is appropriate. It is an extremely versatile, stable,
and robust operating system that offers an ideal operating
@@ -101,7 +100,8 @@ NAME="disclaimer">1.3. Disclaimer</H1
><P
>&#13; You are strongly recommended to make a backup of your system
before installing Bugzilla and at regular intervals thereafter.
If you implement any suggestion in this Guide, implement this one!
Heaven knows it's saved my bacon time after time; if you
implement any suggestion in this Guide, implement this one!
</P
><P
>&#13; Although the Bugzilla development team has taken great care to
@@ -122,7 +122,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -134,7 +133,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="copyright.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -143,7 +141,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -152,7 +149,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="newversions.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -168,7 +164,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Software Download Links</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="faq.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="database.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="appendix"
><H1
><A
NAME="downloadlinks">Appendix B. Software Download Links</H1
NAME="downloadlinks"
>Appendix B. Software Download Links</A
></H1
><P
>&#13; All of these sites are current as of April, 2001. Hopefully
they'll stay current for a while.
@@ -179,7 +178,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -191,7 +189,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="faq.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -200,7 +197,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -209,7 +205,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="database.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>ERRATA</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="installation.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="stepbystep.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="errata">3.1. ERRATA</H1
NAME="errata"
>3.1. ERRATA</A
></H1
><P
>Here are some miscellaneous notes about possible issues you
main run into when you begin your Bugzilla installation.
@@ -127,7 +126,7 @@ CLASS="filename"
></TR
><TR
><TD
>&#13; Release Notes for Bugzilla 2.16 are available at
>&#13; Release Notes for Bugzilla 2.14 are available at
<TT
CLASS="filename"
>docs/rel_notes.txt</TT
@@ -217,7 +216,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -229,7 +227,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -238,7 +235,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -247,7 +243,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="stepbystep.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -263,7 +258,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
>Feedback</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="contributors.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="translations.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="feedback">1.7. Feedback</H1
NAME="feedback"
>1.7. Feedback</A
></H1
><P
>&#13; I welcome feedback on this document. Without your submissions
and input, this Guide cannot continue to exist. Please mail
@@ -99,7 +98,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -111,7 +109,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="contributors.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -120,7 +117,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -129,7 +125,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="translations.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -145,7 +140,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -0,0 +1,741 @@
<HTML
><HEAD
><TITLE
>The Future of Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Tinderbox/Tinderbox2"
HREF="tinderbox.html"><LINK
REL="NEXT"
TITLE="Bugzilla Variants and Competitors"
HREF="variants.html"></HEAD
><BODY
CLASS="chapter"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="tinderbox.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variants.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="chapter"
><H1
><A
NAME="future"
>Chapter 6. The Future of Bugzilla</A
></H1
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="synopsis"
>Bugzilla's Future. Much of this is the present, now.</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13; Bugzilla's future is a constantly-changing thing, as various developers
<SPAN
CLASS="QUOTE"
>"scratch an itch"</SPAN
> when it comes to functionality.
Thus this section is very malleable, subject to change without notice, etc.
You'll probably also notice the lack of formatting. I apologize that it's
not quite as readable as the rest of the Guide.
</P
><P
>&#13; <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;Blue&nbsp;Sky<br>
<br>
Customisability<br>
<br>
&nbsp;&nbsp;&nbsp;One&nbsp;of&nbsp;the&nbsp;major&nbsp;stumbling&nbsp;blocks&nbsp;of&nbsp;Bugzilla&nbsp;has&nbsp;been&nbsp;that&nbsp;it&nbsp;is&nbsp;too<br>
&nbsp;&nbsp;&nbsp;rigid&nbsp;and&nbsp;does&nbsp;not&nbsp;adapt&nbsp;itself&nbsp;well&nbsp;enough&nbsp;to&nbsp;the&nbsp;needs&nbsp;of&nbsp;an<br>
&nbsp;&nbsp;&nbsp;organisation.&nbsp;&nbsp;This&nbsp;has&nbsp;led&nbsp;to&nbsp;organisations&nbsp;making&nbsp;changes&nbsp;to&nbsp;the<br>
&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;code&nbsp;that&nbsp;need&nbsp;to&nbsp;be&nbsp;redone&nbsp;each&nbsp;new&nbsp;version&nbsp;of&nbsp;Bugzilla.<br>
&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;should&nbsp;attempt&nbsp;to&nbsp;move&nbsp;away&nbsp;from&nbsp;this&nbsp;to&nbsp;a&nbsp;world&nbsp;where&nbsp;this<br>
&nbsp;&nbsp;&nbsp;doesn't&nbsp;need&nbsp;to&nbsp;occur.<br>
<br>
&nbsp;&nbsp;&nbsp;Most&nbsp;of&nbsp;the&nbsp;subsections&nbsp;in&nbsp;this&nbsp;section&nbsp;are&nbsp;currently&nbsp;explicit&nbsp;design<br>
&nbsp;&nbsp;&nbsp;goals&nbsp;for&nbsp;the&nbsp;"Bugzilla&nbsp;3"&nbsp;rewrite.&nbsp;&nbsp;This&nbsp;does&nbsp;not&nbsp;necessarily&nbsp;mean<br>
&nbsp;&nbsp;&nbsp;that&nbsp;they&nbsp;will&nbsp;not&nbsp;occur&nbsp;before&nbsp;them&nbsp;in&nbsp;Bugzilla&nbsp;2,&nbsp;but&nbsp;most&nbsp;are<br>
&nbsp;&nbsp;&nbsp;significant&nbsp;undertakings.<br>
<br>
&nbsp;&nbsp;Field&nbsp;Customisation<br>
<br>
&nbsp;&nbsp;&nbsp;Many&nbsp;installations&nbsp;wish&nbsp;to&nbsp;customise&nbsp;the&nbsp;fields&nbsp;that&nbsp;appear&nbsp;on&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;reports.&nbsp;&nbsp;&nbsp;Current&nbsp;versions&nbsp;of&nbsp;Bugzilla&nbsp;offer&nbsp;limited<br>
&nbsp;&nbsp;&nbsp;customisability.&nbsp;&nbsp;In&nbsp;particular,&nbsp;some&nbsp;fields&nbsp;can&nbsp;be&nbsp;turned&nbsp;off.<br>
<br>
&nbsp;&nbsp;&nbsp;However,&nbsp;many&nbsp;administrators&nbsp;wish&nbsp;to&nbsp;add&nbsp;their&nbsp;own&nbsp;fields,&nbsp;and&nbsp;rename<br>
&nbsp;&nbsp;&nbsp;or&nbsp;otherwise&nbsp;modify&nbsp;existing&nbsp;fields.&nbsp;&nbsp;An&nbsp;architecture&nbsp;that&nbsp;supports<br>
&nbsp;&nbsp;&nbsp;this&nbsp;would&nbsp;be&nbsp;extraordinarily&nbsp;useful.<br>
<br>
&nbsp;&nbsp;&nbsp;Indeed,&nbsp;many&nbsp;fields&nbsp;work&nbsp;similarly&nbsp;and&nbsp;could&nbsp;be&nbsp;abstracted&nbsp;into&nbsp;"field<br>
&nbsp;&nbsp;&nbsp;types",&nbsp;so&nbsp;that&nbsp;an&nbsp;administrator&nbsp;need&nbsp;write&nbsp;little&nbsp;or&nbsp;no&nbsp;code&nbsp;to<br>
&nbsp;&nbsp;&nbsp;support&nbsp;the&nbsp;new&nbsp;fields&nbsp;they&nbsp;desire.<br>
<br>
&nbsp;&nbsp;&nbsp;Possible&nbsp;field&nbsp;types&nbsp;include&nbsp;text&nbsp;(eg&nbsp;status&nbsp;whiteboard),&nbsp;numbers,<br>
&nbsp;&nbsp;&nbsp;dates&nbsp;(eg&nbsp;report&nbsp;time),&nbsp;accounts&nbsp;(eg&nbsp;reporter,&nbsp;qa,&nbsp;cc),&nbsp;inter-bug<br>
&nbsp;&nbsp;&nbsp;relationships&nbsp;(dependencies,&nbsp;duplicates),&nbsp;option&nbsp;groups&nbsp;(platform,&nbsp;os,<br>
&nbsp;&nbsp;&nbsp;severity,&nbsp;priority,&nbsp;target&nbsp;milestone,&nbsp;version)&nbsp;etc.<br>
<br>
&nbsp;&nbsp;&nbsp;Ideally&nbsp;an&nbsp;administrator&nbsp;could&nbsp;configure&nbsp;their&nbsp;fields&nbsp;through&nbsp;a<br>
&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;interface&nbsp;that&nbsp;requires&nbsp;no&nbsp;code&nbsp;to&nbsp;be&nbsp;added.&nbsp;&nbsp;However,&nbsp;it&nbsp;is<br>
&nbsp;&nbsp;&nbsp;highly&nbsp;unlikely&nbsp;this&nbsp;ideal&nbsp;will&nbsp;never&nbsp;be&nbsp;met,&nbsp;and&nbsp;in&nbsp;a&nbsp;similar&nbsp;way<br>
&nbsp;&nbsp;&nbsp;that&nbsp;office&nbsp;applications&nbsp;have&nbsp;scripting&nbsp;languages,&nbsp;Bugzilla&nbsp;should<br>
&nbsp;&nbsp;&nbsp;allow&nbsp;new&nbsp;field&nbsp;types&nbsp;to&nbsp;be&nbsp;written.<br>
<br>
&nbsp;&nbsp;&nbsp;Similarly,&nbsp;a&nbsp;common&nbsp;desire&nbsp;is&nbsp;for&nbsp;resolutions&nbsp;to&nbsp;be&nbsp;added&nbsp;or&nbsp;removed.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Allocations<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Option&nbsp;Groups<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Relations<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
&nbsp;&nbsp;Database&nbsp;Integrity<br>
<br>
&nbsp;&nbsp;&nbsp;Furthermore,&nbsp;it&nbsp;is&nbsp;desirable&nbsp;for&nbsp;administrators&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;specify<br>
&nbsp;&nbsp;&nbsp;rules&nbsp;that&nbsp;must&nbsp;or&nbsp;should&nbsp;apply&nbsp;between&nbsp;the&nbsp;fields&nbsp;on&nbsp;a&nbsp;bug&nbsp;report.<br>
<br>
&nbsp;&nbsp;&nbsp;For&nbsp;example,&nbsp;you&nbsp;might&nbsp;wish&nbsp;to&nbsp;specify&nbsp;that&nbsp;a&nbsp;bug&nbsp;with&nbsp;status&nbsp;ASSIGNED<br>
&nbsp;&nbsp;&nbsp;must&nbsp;have&nbsp;a&nbsp;target&nbsp;milestone&nbsp;field&nbsp;that&nbsp;that&nbsp;is&nbsp;not&nbsp;untargetted.&nbsp;&nbsp;Or<br>
&nbsp;&nbsp;&nbsp;that&nbsp;a&nbsp;bug&nbsp;with&nbsp;a&nbsp;certain&nbsp;number&nbsp;of&nbsp;votes&nbsp;should&nbsp;get&nbsp;ASSIGNED.&nbsp;&nbsp;Or<br>
&nbsp;&nbsp;&nbsp;that&nbsp;the&nbsp;QA&nbsp;contact&nbsp;must&nbsp;be&nbsp;different&nbsp;from&nbsp;the&nbsp;assignee.<br>
<br>
&nbsp;&nbsp;&nbsp;"Must"&nbsp;relationships&nbsp;could&nbsp;be&nbsp;implemented&nbsp;by&nbsp;refusing&nbsp;to&nbsp;make&nbsp;changes<br>
&nbsp;&nbsp;&nbsp;that&nbsp;violate&nbsp;the&nbsp;relationships,&nbsp;or&nbsp;alternatively,&nbsp;automatically<br>
&nbsp;&nbsp;&nbsp;updating&nbsp;certain&nbsp;fields&nbsp;in&nbsp;order&nbsp;to&nbsp;satisfy&nbsp;the&nbsp;criteria.&nbsp;&nbsp;Which<br>
&nbsp;&nbsp;&nbsp;occurs&nbsp;should&nbsp;be&nbsp;up&nbsp;to&nbsp;the&nbsp;administrator.<br>
<br>
&nbsp;&nbsp;&nbsp;"Should"&nbsp;relationships&nbsp;could&nbsp;be&nbsp;implemented&nbsp;by&nbsp;a&nbsp;combination&nbsp;of<br>
&nbsp;&nbsp;&nbsp;emitting&nbsp;warnings&nbsp;on&nbsp;the&nbsp;process&nbsp;bug&nbsp;page,&nbsp;the&nbsp;same&nbsp;on&nbsp;notification<br>
&nbsp;&nbsp;&nbsp;mails,&nbsp;or&nbsp;emitting&nbsp;periodic&nbsp;whine&nbsp;mails&nbsp;about&nbsp;the&nbsp;situation.&nbsp;&nbsp;Again,<br>
&nbsp;&nbsp;&nbsp;which&nbsp;occurs&nbsp;should&nbsp;be&nbsp;up&nbsp;to&nbsp;the&nbsp;administrator.<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;should&nbsp;also&nbsp;be&nbsp;possible&nbsp;for&nbsp;whine&nbsp;mails&nbsp;to&nbsp;be&nbsp;emitted&nbsp;for&nbsp;"must"<br>
&nbsp;&nbsp;&nbsp;relationships,&nbsp;as&nbsp;they&nbsp;might&nbsp;become&nbsp;violated&nbsp;through&nbsp;direct&nbsp;database<br>
&nbsp;&nbsp;&nbsp;access,&nbsp;Bugzilla&nbsp;bugs,&nbsp;or&nbsp;because&nbsp;they&nbsp;were&nbsp;there&nbsp;before&nbsp;the<br>
&nbsp;&nbsp;&nbsp;relationship&nbsp;was&nbsp;enforced.<br>
<br>
&nbsp;&nbsp;&nbsp;As&nbsp;well&nbsp;as&nbsp;implementing&nbsp;intra-bug&nbsp;constraints,&nbsp;it&nbsp;would&nbsp;be&nbsp;useful&nbsp;to<br>
&nbsp;&nbsp;&nbsp;create&nbsp;inter-bug&nbsp;constraints.&nbsp;&nbsp;For&nbsp;example,&nbsp;a&nbsp;bug&nbsp;that&nbsp;is&nbsp;dependent&nbsp;on<br>
&nbsp;&nbsp;&nbsp;another&nbsp;bug&nbsp;should&nbsp;not&nbsp;have&nbsp;an&nbsp;earlier&nbsp;milestone&nbsp;or&nbsp;greater&nbsp;priority<br>
&nbsp;&nbsp;&nbsp;than&nbsp;that&nbsp;bug.<br>
<br>
&nbsp;&nbsp;Database&nbsp;Adaptability<br>
<br>
&nbsp;&nbsp;&nbsp;Often&nbsp;an&nbsp;administrator&nbsp;desires&nbsp;that&nbsp;fields&nbsp;adapt&nbsp;to&nbsp;the&nbsp;values&nbsp;of<br>
&nbsp;&nbsp;&nbsp;other&nbsp;fields.&nbsp;&nbsp;For&nbsp;example,&nbsp;the&nbsp;value&nbsp;of&nbsp;a&nbsp;field&nbsp;might&nbsp;determine&nbsp;the<br>
&nbsp;&nbsp;&nbsp;possible&nbsp;values&nbsp;of&nbsp;another&nbsp;field&nbsp;or&nbsp;even&nbsp;whether&nbsp;it&nbsp;appears&nbsp;(whether<br>
&nbsp;&nbsp;&nbsp;it&nbsp;is&nbsp;"applicable").<br>
<br>
&nbsp;&nbsp;&nbsp;Limited&nbsp;adaptability&nbsp;is&nbsp;present&nbsp;in&nbsp;Bugzilla&nbsp;2,&nbsp;and&nbsp;only&nbsp;on&nbsp;the<br>
&nbsp;&nbsp;&nbsp;"Product"&nbsp;field:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;possible&nbsp;values&nbsp;of&nbsp;the&nbsp;target&nbsp;milestone,&nbsp;version&nbsp;and&nbsp;component<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields&nbsp;depend&nbsp;on&nbsp;the&nbsp;product.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;UNCONFIRMED&nbsp;can&nbsp;be&nbsp;turned&nbsp;off&nbsp;for&nbsp;specific&nbsp;products.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Voting&nbsp;can&nbsp;be&nbsp;configured&nbsp;differently&nbsp;or&nbsp;turned&nbsp;off&nbsp;for&nbsp;different<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;products,&nbsp;and&nbsp;there&nbsp;is&nbsp;a&nbsp;separate&nbsp;user&nbsp;vote&nbsp;limits&nbsp;for&nbsp;each<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;product.<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;good&nbsp;if&nbsp;more&nbsp;adaptability&nbsp;was&nbsp;present,&nbsp;both&nbsp;in&nbsp;terms&nbsp;of<br>
&nbsp;&nbsp;&nbsp;all&nbsp;fields&nbsp;relying&nbsp;on&nbsp;the&nbsp;product,&nbsp;as&nbsp;well&nbsp;as&nbsp;the&nbsp;ability&nbsp;to&nbsp;adapt<br>
&nbsp;&nbsp;&nbsp;based&nbsp;on&nbsp;the&nbsp;value&nbsp;of&nbsp;all&nbsp;fields.<br>
<br>
&nbsp;&nbsp;&nbsp;Example&nbsp;???<br>
<br>
&nbsp;&nbsp;&nbsp;General&nbsp;adaptability&nbsp;raises&nbsp;the&nbsp;issue&nbsp;of&nbsp;circular&nbsp;references&nbsp;between<br>
&nbsp;&nbsp;&nbsp;fields&nbsp;causing&nbsp;problems.&nbsp;&nbsp;One&nbsp;possible&nbsp;solution&nbsp;to&nbsp;this&nbsp;is&nbsp;to&nbsp;place<br>
&nbsp;&nbsp;&nbsp;the&nbsp;fields&nbsp;in&nbsp;a&nbsp;total&nbsp;ordering&nbsp;and&nbsp;require&nbsp;a&nbsp;field&nbsp;refer&nbsp;only&nbsp;to&nbsp;the<br>
&nbsp;&nbsp;&nbsp;previous&nbsp;fields.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;Bugzilla&nbsp;2,&nbsp;changing&nbsp;the&nbsp;product&nbsp;of&nbsp;a&nbsp;bug&nbsp;meant&nbsp;a&nbsp;second&nbsp;page&nbsp;would<br>
&nbsp;&nbsp;&nbsp;appear&nbsp;that&nbsp;allowed&nbsp;you&nbsp;to&nbsp;choose&nbsp;a&nbsp;new&nbsp;milestone,&nbsp;component&nbsp;and<br>
&nbsp;&nbsp;&nbsp;version,&nbsp;as&nbsp;those&nbsp;fields&nbsp;adapted&nbsp;themselves&nbsp;to&nbsp;the&nbsp;new&nbsp;product.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;page&nbsp;could&nbsp;be&nbsp;generalised&nbsp;to&nbsp;support&nbsp;all&nbsp;instances&nbsp;where:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;a&nbsp;field&nbsp;value&nbsp;must&nbsp;or&nbsp;might&nbsp;be&nbsp;changed&nbsp;because&nbsp;the&nbsp;possible&nbsp;values<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;have&nbsp;changed<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;is&nbsp;going&nbsp;to&nbsp;drop&nbsp;off&nbsp;because&nbsp;it&nbsp;it&nbsp;is&nbsp;no&nbsp;longer&nbsp;applicable,&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;should&nbsp;be&nbsp;confirmed<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;must&nbsp;be&nbsp;specified&nbsp;because&nbsp;it&nbsp;is&nbsp;suddenly&nbsp;applicable,&nbsp;and&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;value,&nbsp;if&nbsp;one&nbsp;exists,&nbsp;might&nbsp;not&nbsp;be&nbsp;acceptable<br>
<br>
&nbsp;&nbsp;Database&nbsp;Independence<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;Bugzilla&nbsp;only&nbsp;runs&nbsp;on&nbsp;the&nbsp;MySQL&nbsp;database.&nbsp;&nbsp;It&nbsp;would&nbsp;be<br>
&nbsp;&nbsp;&nbsp;desirable&nbsp;for&nbsp;Bugzilla&nbsp;to&nbsp;run&nbsp;on&nbsp;other&nbsp;databases,&nbsp;because:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Organisations&nbsp;may&nbsp;have&nbsp;existing&nbsp;database&nbsp;products&nbsp;they&nbsp;use&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;would&nbsp;prefer&nbsp;to&nbsp;run&nbsp;a&nbsp;homogenous&nbsp;environment.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Databases&nbsp;each&nbsp;have&nbsp;their&nbsp;own&nbsp;shortcomings,&nbsp;including&nbsp;MySQL.&nbsp;&nbsp;An<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;administrator&nbsp;might&nbsp;choose&nbsp;a&nbsp;database&nbsp;that&nbsp;would&nbsp;work&nbsp;better&nbsp;with<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;their&nbsp;Bugzilla.<br>
<br>
&nbsp;&nbsp;&nbsp;This&nbsp;raises&nbsp;the&nbsp;possibility&nbsp;that&nbsp;we&nbsp;could&nbsp;use&nbsp;features&nbsp;that&nbsp;are&nbsp;only<br>
&nbsp;&nbsp;&nbsp;present&nbsp;in&nbsp;some&nbsp;databases,&nbsp;by&nbsp;appropriately&nbsp;falling&nbsp;back.&nbsp;&nbsp;For<br>
&nbsp;&nbsp;&nbsp;example,&nbsp;in&nbsp;the&nbsp;MySQL&nbsp;world,&nbsp;we&nbsp;live&nbsp;without:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;record-level&nbsp;locking,&nbsp;instead&nbsp;we&nbsp;use&nbsp;table-level&nbsp;locking<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;referential&nbsp;and&nbsp;record&nbsp;constraints,&nbsp;instead&nbsp;we&nbsp;checking&nbsp;code<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;subselects,&nbsp;instead&nbsp;we&nbsp;use&nbsp;multiple&nbsp;queries&nbsp;and&nbsp;redundant&nbsp;"caches"<br>
<br>
&nbsp;&nbsp;Multiple&nbsp;Front&nbsp;Ends<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;Bugzilla&nbsp;is&nbsp;manipulated&nbsp;via&nbsp;the&nbsp;Web,&nbsp;and&nbsp;notifies&nbsp;via<br>
&nbsp;&nbsp;&nbsp;E-Mail.&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;desirable&nbsp;for&nbsp;Bugzilla&nbsp;to&nbsp;easily&nbsp;support&nbsp;various<br>
&nbsp;&nbsp;&nbsp;front&nbsp;ends.<br>
<br>
&nbsp;&nbsp;&nbsp;There&nbsp;is&nbsp;no&nbsp;reason&nbsp;that&nbsp;Bugzilla&nbsp;could&nbsp;not&nbsp;be&nbsp;controlled&nbsp;via&nbsp;a&nbsp;whole<br>
&nbsp;&nbsp;&nbsp;range&nbsp;of&nbsp;front&nbsp;ends,&nbsp;including&nbsp;Web,&nbsp;E-Mail,&nbsp;IRC,&nbsp;ICQ,&nbsp;etc,&nbsp;and<br>
&nbsp;&nbsp;&nbsp;similarly&nbsp;for&nbsp;how&nbsp;it&nbsp;notifies.&nbsp;&nbsp;It's&nbsp;also&nbsp;possible&nbsp;that&nbsp;we&nbsp;could<br>
&nbsp;&nbsp;&nbsp;introduce&nbsp;a&nbsp;special&nbsp;Bugzilla&nbsp;client&nbsp;that&nbsp;uses&nbsp;its&nbsp;own&nbsp;protocol,&nbsp;for<br>
&nbsp;&nbsp;&nbsp;maximum&nbsp;user&nbsp;productivity.<br>
<br>
&nbsp;&nbsp;&nbsp;Indeed&nbsp;a&nbsp;request&nbsp;reply&nbsp;might&nbsp;be&nbsp;returned&nbsp;via&nbsp;a&nbsp;totally&nbsp;different<br>
&nbsp;&nbsp;&nbsp;transport&nbsp;method&nbsp;than&nbsp;was&nbsp;use&nbsp;to&nbsp;submit&nbsp;the&nbsp;request.<br>
<br>
Internationalisation<br>
<br>
&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;currently&nbsp;supports&nbsp;only&nbsp;English.&nbsp;&nbsp;All&nbsp;of&nbsp;the&nbsp;field&nbsp;names,<br>
&nbsp;&nbsp;&nbsp;user&nbsp;instructions,&nbsp;etc&nbsp;are&nbsp;written&nbsp;in&nbsp;English.&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;desirable<br>
&nbsp;&nbsp;&nbsp;to&nbsp;allow&nbsp;"language&nbsp;packs"&nbsp;so&nbsp;Bugzilla&nbsp;can&nbsp;be&nbsp;easily&nbsp;used&nbsp;in<br>
&nbsp;&nbsp;&nbsp;non-English&nbsp;speaking&nbsp;locales.<br>
<br>
&nbsp;&nbsp;&nbsp;To&nbsp;a&nbsp;degree&nbsp;field&nbsp;customisation&nbsp;supports&nbsp;this,&nbsp;because&nbsp;administrators<br>
&nbsp;&nbsp;&nbsp;could&nbsp;specify&nbsp;their&nbsp;own&nbsp;fields&nbsp;names&nbsp;anyway.&nbsp;&nbsp;However,&nbsp;there&nbsp;will<br>
&nbsp;&nbsp;&nbsp;always&nbsp;be&nbsp;some&nbsp;basic&nbsp;facilities&nbsp;not&nbsp;covered&nbsp;by&nbsp;this,&nbsp;and&nbsp;it&nbsp;is<br>
&nbsp;&nbsp;&nbsp;desirable&nbsp;that&nbsp;the&nbsp;administrator's&nbsp;interface&nbsp;also&nbsp;is<br>
&nbsp;&nbsp;&nbsp;internationalisable.<br>
<br>
Better&nbsp;Searching<br>
<br>
&nbsp;&nbsp;General&nbsp;Summary&nbsp;Reports<br>
<br>
&nbsp;&nbsp;&nbsp;Sometimes,&nbsp;the&nbsp;normal&nbsp;querying&nbsp;page&nbsp;leaves&nbsp;a&nbsp;lot&nbsp;to&nbsp;be&nbsp;desired.&nbsp;&nbsp;There<br>
&nbsp;&nbsp;&nbsp;are&nbsp;other&nbsp;facilities&nbsp;already&nbsp;in&nbsp;place&nbsp;or&nbsp;which&nbsp;people&nbsp;have&nbsp;asked&nbsp;for:<br>
<br>
&nbsp;&nbsp;&nbsp;Most&nbsp;Doomed&nbsp;Reports&nbsp;-&nbsp;All&nbsp;Bugs&nbsp;or&nbsp;All&nbsp;Bugs&nbsp;In&nbsp;A&nbsp;Product,&nbsp;Categorised<br>
&nbsp;&nbsp;&nbsp;On&nbsp;Assignee,&nbsp;Shows&nbsp;and&nbsp;Counts&nbsp;Number&nbsp;of&nbsp;Bugs&nbsp;For&nbsp;Each&nbsp;Assignee<br>
&nbsp;&nbsp;&nbsp;Most&nbsp;Voted&nbsp;For&nbsp;Bugs&nbsp;-&nbsp;All&nbsp;Bugs,&nbsp;Categorised&nbsp;On&nbsp;Product,&nbsp;Shows&nbsp;Top&nbsp;Ten<br>
&nbsp;&nbsp;&nbsp;Bugs&nbsp;Voters&nbsp;Most&nbsp;Want&nbsp;Fixed<br>
&nbsp;&nbsp;&nbsp;Number&nbsp;of&nbsp;Open&nbsp;Bugs&nbsp;For&nbsp;An&nbsp;Assignee&nbsp;-&nbsp;Bug&nbsp;List,&nbsp;Categorised&nbsp;On<br>
&nbsp;&nbsp;&nbsp;Developers,&nbsp;Counts&nbsp;Number&nbsp;of&nbsp;Bugs&nbsp;In&nbsp;Category<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;important&nbsp;thing&nbsp;to&nbsp;realise&nbsp;is&nbsp;that&nbsp;people&nbsp;want&nbsp;categorised&nbsp;reports<br>
&nbsp;&nbsp;&nbsp;on&nbsp;all&nbsp;sorts&nbsp;of&nbsp;things&nbsp;-&nbsp;a&nbsp;general&nbsp;summary&nbsp;report.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;a&nbsp;categorised&nbsp;report,&nbsp;you&nbsp;choose&nbsp;the&nbsp;subset&nbsp;of&nbsp;bugs&nbsp;you&nbsp;wish&nbsp;to<br>
&nbsp;&nbsp;&nbsp;operate&nbsp;on&nbsp;(similar&nbsp;to&nbsp;how&nbsp;you&nbsp;would&nbsp;specify&nbsp;a&nbsp;query),&nbsp;and&nbsp;then<br>
&nbsp;&nbsp;&nbsp;categorise&nbsp;them&nbsp;on&nbsp;one&nbsp;or&nbsp;more&nbsp;fields.<br>
<br>
&nbsp;&nbsp;&nbsp;For&nbsp;each&nbsp;category&nbsp;you&nbsp;display&nbsp;the&nbsp;count&nbsp;of&nbsp;the&nbsp;number&nbsp;of&nbsp;things&nbsp;in<br>
&nbsp;&nbsp;&nbsp;that&nbsp;category.&nbsp;&nbsp;You&nbsp;can&nbsp;optionally&nbsp;display&nbsp;the&nbsp;bugs&nbsp;themselves,&nbsp;or<br>
&nbsp;&nbsp;&nbsp;leave&nbsp;them&nbsp;out,&nbsp;just&nbsp;showing&nbsp;the&nbsp;counts.&nbsp;&nbsp;And&nbsp;you&nbsp;can&nbsp;optionally&nbsp;limit<br>
&nbsp;&nbsp;&nbsp;the&nbsp;number&nbsp;of&nbsp;things&nbsp;(bugs&nbsp;or&nbsp;subcategories)&nbsp;that&nbsp;display&nbsp;in&nbsp;each<br>
&nbsp;&nbsp;&nbsp;category.<br>
<br>
&nbsp;&nbsp;&nbsp;Such&nbsp;a&nbsp;mechanism&nbsp;would&nbsp;let&nbsp;you&nbsp;do&nbsp;all&nbsp;of&nbsp;the&nbsp;above&nbsp;and&nbsp;more.<br>
&nbsp;&nbsp;&nbsp;Applications&nbsp;of&nbsp;this&nbsp;mechanism&nbsp;would&nbsp;only&nbsp;be&nbsp;recognised&nbsp;once&nbsp;it&nbsp;was<br>
&nbsp;&nbsp;&nbsp;implemented.<br>
<br>
&nbsp;&nbsp;Related&nbsp;Bugs<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;nice&nbsp;to&nbsp;have&nbsp;a&nbsp;field&nbsp;where&nbsp;you&nbsp;could&nbsp;enter&nbsp;other&nbsp;bugs<br>
&nbsp;&nbsp;&nbsp;related&nbsp;to&nbsp;the&nbsp;current&nbsp;bug.&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;handy&nbsp;for&nbsp;navigation&nbsp;and<br>
&nbsp;&nbsp;&nbsp;possibly&nbsp;even&nbsp;finding&nbsp;duplicates.<br>
<br>
&nbsp;&nbsp;Column&nbsp;Specification&nbsp;Support<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;bug&nbsp;lists&nbsp;use&nbsp;the&nbsp;columns&nbsp;that&nbsp;you&nbsp;last&nbsp;used.&nbsp;&nbsp;This&nbsp;doesn't<br>
&nbsp;&nbsp;&nbsp;work&nbsp;well&nbsp;for&nbsp;"prepackaged&nbsp;queries",&nbsp;where&nbsp;you&nbsp;followed&nbsp;a&nbsp;link.&nbsp;&nbsp;You<br>
&nbsp;&nbsp;&nbsp;can&nbsp;probably&nbsp;add&nbsp;a&nbsp;column&nbsp;by&nbsp;specifying&nbsp;a&nbsp;sort&nbsp;column,&nbsp;but&nbsp;this&nbsp;is<br>
&nbsp;&nbsp;&nbsp;difficult&nbsp;and&nbsp;suboptimal.<br>
<br>
&nbsp;&nbsp;&nbsp;Furthermore,&nbsp;I&nbsp;find&nbsp;that&nbsp;when&nbsp;I&nbsp;want&nbsp;to&nbsp;add&nbsp;a&nbsp;column&nbsp;to&nbsp;a&nbsp;bug&nbsp;list,<br>
&nbsp;&nbsp;&nbsp;it's&nbsp;usually&nbsp;a&nbsp;one&nbsp;off&nbsp;and&nbsp;I&nbsp;would&nbsp;prefer&nbsp;it&nbsp;to&nbsp;go&nbsp;away&nbsp;for&nbsp;the&nbsp;next<br>
&nbsp;&nbsp;&nbsp;query.&nbsp;&nbsp;Hence,&nbsp;it&nbsp;would&nbsp;be&nbsp;nice&nbsp;to&nbsp;specify&nbsp;the&nbsp;columns&nbsp;that&nbsp;appear&nbsp;on<br>
&nbsp;&nbsp;&nbsp;the&nbsp;bug&nbsp;list&nbsp;(and&nbsp;general&nbsp;summary&nbsp;report)&nbsp;pages.&nbsp;&nbsp;The&nbsp;default&nbsp;query<br>
&nbsp;&nbsp;&nbsp;mechanism&nbsp;should&nbsp;be&nbsp;able&nbsp;to&nbsp;let&nbsp;you&nbsp;specify&nbsp;your&nbsp;default&nbsp;columns.<br>
<br>
&nbsp;&nbsp;Advanced&nbsp;Querying&nbsp;Redesign<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
Keywords<br>
<br>
&nbsp;&nbsp;&nbsp;People&nbsp;have&nbsp;a&nbsp;need&nbsp;to&nbsp;apply&nbsp;tags&nbsp;to&nbsp;bugs.&nbsp;&nbsp;In&nbsp;the&nbsp;beginning,&nbsp;people<br>
&nbsp;&nbsp;&nbsp;placed&nbsp;designators&nbsp;in&nbsp;the&nbsp;summary&nbsp;and&nbsp;status&nbsp;whiteboard.&nbsp;&nbsp;However,<br>
&nbsp;&nbsp;&nbsp;these&nbsp;fields&nbsp;were&nbsp;not&nbsp;designed&nbsp;for&nbsp;that,&nbsp;and&nbsp;so&nbsp;there&nbsp;were&nbsp;many&nbsp;flaws<br>
&nbsp;&nbsp;&nbsp;with&nbsp;this&nbsp;system:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;They&nbsp;pollute&nbsp;the&nbsp;field&nbsp;with&nbsp;information&nbsp;that&nbsp;was&nbsp;never&nbsp;intended&nbsp;to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;present.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Removing&nbsp;them&nbsp;with&nbsp;a&nbsp;bulk&nbsp;change&nbsp;is&nbsp;a&nbsp;difficult&nbsp;problem&nbsp;that&nbsp;has<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;too&nbsp;many&nbsp;pitfalls&nbsp;to&nbsp;implement.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;You&nbsp;can&nbsp;easily&nbsp;get&nbsp;the&nbsp;capitalisation&nbsp;wrong.<br>
<br>
&nbsp;&nbsp;&nbsp;Then&nbsp;dependencies&nbsp;were&nbsp;introduced&nbsp;(when?),&nbsp;and&nbsp;people&nbsp;realised&nbsp;that<br>
&nbsp;&nbsp;&nbsp;they&nbsp;could&nbsp;use&nbsp;them&nbsp;for&nbsp;"tracking&nbsp;bugs".&nbsp;&nbsp;Again,&nbsp;dependencies&nbsp;were&nbsp;not<br>
&nbsp;&nbsp;&nbsp;designed&nbsp;for&nbsp;that,&nbsp;and&nbsp;so&nbsp;there&nbsp;were&nbsp;more&nbsp;flaws,&nbsp;albeit&nbsp;different<br>
&nbsp;&nbsp;&nbsp;ones,&nbsp;including:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;They&nbsp;aren't&nbsp;really&nbsp;bugs,&nbsp;so&nbsp;it's&nbsp;difficult&nbsp;to&nbsp;distinguish&nbsp;issues<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;bugs.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;They&nbsp;can&nbsp;pollute&nbsp;bugs&nbsp;counts,&nbsp;and&nbsp;you&nbsp;must&nbsp;somehow&nbsp;exclude&nbsp;them<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;queries.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;There&nbsp;is&nbsp;a&nbsp;whole&nbsp;lot&nbsp;of&nbsp;useless&nbsp;information&nbsp;on&nbsp;them.&nbsp;&nbsp;They&nbsp;have&nbsp;an<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assignee&nbsp;but&nbsp;there&nbsp;is&nbsp;nothing&nbsp;to&nbsp;fix,&nbsp;and&nbsp;that&nbsp;person&nbsp;can&nbsp;get<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;whined&nbsp;at&nbsp;by&nbsp;Bugzilla.&nbsp;&nbsp;They&nbsp;have&nbsp;target&nbsp;milestones&nbsp;which&nbsp;must&nbsp;be<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;manually&nbsp;maintained.&nbsp;&nbsp;And&nbsp;so&nbsp;on.<br>
<br>
&nbsp;&nbsp;&nbsp;Finally,&nbsp;keywords&nbsp;were&nbsp;introduced&nbsp;(when?)&nbsp;for&nbsp;this&nbsp;purpose&nbsp;to&nbsp;remove<br>
&nbsp;&nbsp;&nbsp;the&nbsp;need&nbsp;for&nbsp;these&nbsp;two&nbsp;systems.&nbsp;&nbsp;Unfortunately,&nbsp;the&nbsp;simple&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;implementation&nbsp;was&nbsp;itself&nbsp;lacking&nbsp;in&nbsp;certain&nbsp;features&nbsp;provided&nbsp;by&nbsp;the<br>
&nbsp;&nbsp;&nbsp;two&nbsp;previous&nbsp;systems,&nbsp;and&nbsp;has&nbsp;remained&nbsp;almost&nbsp;unchanged&nbsp;since&nbsp;its<br>
&nbsp;&nbsp;&nbsp;inception.&nbsp;&nbsp;Furthermore,&nbsp;it&nbsp;could&nbsp;not&nbsp;be&nbsp;forseen&nbsp;that&nbsp;in&nbsp;large<br>
&nbsp;&nbsp;&nbsp;installations,&nbsp;the&nbsp;sheer&nbsp;number&nbsp;of&nbsp;keywords&nbsp;could&nbsp;become&nbsp;unwieldly&nbsp;and<br>
&nbsp;&nbsp;&nbsp;could&nbsp;lead&nbsp;to&nbsp;a&nbsp;movement&nbsp;back&nbsp;to&nbsp;the&nbsp;other&nbsp;systems.<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;keywords&nbsp;system&nbsp;was&nbsp;the&nbsp;right&nbsp;idea,&nbsp;however,&nbsp;and&nbsp;it&nbsp;remains&nbsp;so.<br>
&nbsp;&nbsp;&nbsp;Fixing&nbsp;the&nbsp;keywords&nbsp;system&nbsp;is&nbsp;one&nbsp;of&nbsp;the&nbsp;most&nbsp;important&nbsp;Bugzilla<br>
&nbsp;&nbsp;&nbsp;issues.<br>
<br>
&nbsp;&nbsp;Bringing&nbsp;Keywords&nbsp;Up&nbsp;To&nbsp;Par<br>
<br>
&nbsp;&nbsp;&nbsp;For&nbsp;the&nbsp;most&nbsp;part,&nbsp;keywords&nbsp;are&nbsp;very&nbsp;good&nbsp;at&nbsp;what&nbsp;they&nbsp;do.&nbsp;&nbsp;It&nbsp;is&nbsp;easy<br>
&nbsp;&nbsp;&nbsp;to&nbsp;add&nbsp;and&nbsp;remove&nbsp;them&nbsp;(unlike&nbsp;summary/whiteboard&nbsp;designators),&nbsp;we&nbsp;can<br>
&nbsp;&nbsp;&nbsp;simply&nbsp;see&nbsp;what&nbsp;issues&nbsp;are&nbsp;present&nbsp;on&nbsp;a&nbsp;bug&nbsp;(unlike&nbsp;tracking&nbsp;bugs),<br>
&nbsp;&nbsp;&nbsp;and&nbsp;we&nbsp;do&nbsp;not&nbsp;confuse&nbsp;bugs&nbsp;with&nbsp;issues&nbsp;(unlike&nbsp;tracking&nbsp;bugs).<br>
<br>
&nbsp;&nbsp;&nbsp;However,&nbsp;there&nbsp;are&nbsp;still&nbsp;some&nbsp;"regressions"&nbsp;in&nbsp;the&nbsp;keyword&nbsp;system&nbsp;over<br>
&nbsp;&nbsp;&nbsp;previous&nbsp;systems:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Users&nbsp;wish&nbsp;to&nbsp;view&nbsp;the&nbsp;"dependency&nbsp;forest"&nbsp;of&nbsp;a&nbsp;keyword.&nbsp;&nbsp;While&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dependency&nbsp;tree&nbsp;is&nbsp;of&nbsp;one&nbsp;bug,&nbsp;a&nbsp;dependency&nbsp;forest&nbsp;is&nbsp;of&nbsp;a&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list,&nbsp;and&nbsp;consists&nbsp;of&nbsp;a&nbsp;dependency&nbsp;tree&nbsp;for&nbsp;each&nbsp;member&nbsp;of&nbsp;the&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.&nbsp;&nbsp;Users&nbsp;can&nbsp;work&nbsp;around&nbsp;this&nbsp;with&nbsp;tracking&nbsp;bugs&nbsp;by&nbsp;creating&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tracking&nbsp;bug&nbsp;and&nbsp;viewing&nbsp;the&nbsp;dependency&nbsp;tree&nbsp;of&nbsp;that&nbsp;tracking&nbsp;bug.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Users&nbsp;wish&nbsp;to&nbsp;specify&nbsp;the&nbsp;keywords&nbsp;that&nbsp;initially&nbsp;apply&nbsp;to&nbsp;a&nbsp;bug,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;instead&nbsp;they&nbsp;must&nbsp;edit&nbsp;the&nbsp;bug&nbsp;once&nbsp;it&nbsp;has&nbsp;already&nbsp;been<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;submitted.&nbsp;&nbsp;They&nbsp;can&nbsp;work&nbsp;around&nbsp;this&nbsp;with&nbsp;summary&nbsp;designators,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;since&nbsp;they&nbsp;specify&nbsp;the&nbsp;summary&nbsp;at&nbsp;reporting&nbsp;time.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Users&nbsp;wish&nbsp;to&nbsp;store&nbsp;or&nbsp;share&nbsp;a&nbsp;bug&nbsp;list&nbsp;that&nbsp;contains&nbsp;a&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;column.&nbsp;&nbsp;Hence&nbsp;they&nbsp;wish&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;specify&nbsp;what&nbsp;columns&nbsp;appear<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;bug&nbsp;list&nbsp;URL,&nbsp;as&nbsp;mentioned&nbsp;earlier.&nbsp;&nbsp;They&nbsp;can&nbsp;work&nbsp;around<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;using&nbsp;summary&nbsp;designators,&nbsp;since&nbsp;almost&nbsp;all&nbsp;bug&nbsp;lists&nbsp;have&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;summary&nbsp;column.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Users&nbsp;wish&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;view&nbsp;keywords&nbsp;on&nbsp;a&nbsp;bug&nbsp;list.&nbsp;&nbsp;However<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;often&nbsp;they&nbsp;are&nbsp;only&nbsp;interested&nbsp;in&nbsp;a&nbsp;small&nbsp;number&nbsp;of&nbsp;keywords.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Having&nbsp;a&nbsp;bug&nbsp;list&nbsp;with&nbsp;a&nbsp;keywords&nbsp;column&nbsp;means&nbsp;that&nbsp;all&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;appear&nbsp;on&nbsp;a&nbsp;bug&nbsp;list.&nbsp;&nbsp;This&nbsp;can&nbsp;take&nbsp;a&nbsp;substantial&nbsp;amount&nbsp;of<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;space&nbsp;where&nbsp;a&nbsp;bug&nbsp;has&nbsp;a&nbsp;lot&nbsp;of&nbsp;keywords,&nbsp;since&nbsp;the&nbsp;table&nbsp;columns<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;Bugzilla&nbsp;adjust&nbsp;to&nbsp;the&nbsp;largest&nbsp;cell&nbsp;in&nbsp;that&nbsp;column.&nbsp;&nbsp;Hence<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;users&nbsp;wish&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;specify&nbsp;which&nbsp;keywords&nbsp;should&nbsp;appear&nbsp;in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;bug&nbsp;list.&nbsp;&nbsp;In&nbsp;a&nbsp;very&nbsp;real&nbsp;sense,&nbsp;each&nbsp;keyword&nbsp;is&nbsp;a&nbsp;field&nbsp;unto<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itself.&nbsp;&nbsp;Users&nbsp;can&nbsp;work&nbsp;around&nbsp;this&nbsp;by&nbsp;using&nbsp;summary&nbsp;designators,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;since&nbsp;they&nbsp;keywords&nbsp;will&nbsp;share&nbsp;the&nbsp;space&nbsp;in&nbsp;the&nbsp;summary&nbsp;column.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Users&nbsp;wish&nbsp;to&nbsp;know&nbsp;when&nbsp;bugs&nbsp;with&nbsp;a&nbsp;specific&nbsp;issue&nbsp;are&nbsp;resolved.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hence&nbsp;they&nbsp;wish&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;receive&nbsp;notifications&nbsp;on&nbsp;all&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bugs&nbsp;with&nbsp;a&nbsp;specific&nbsp;keyword.&nbsp;&nbsp;The&nbsp;introduction&nbsp;a&nbsp;generic&nbsp;watching<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;facility&nbsp;(also&nbsp;for&nbsp;things&nbsp;like&nbsp;watching&nbsp;all&nbsp;bugs&nbsp;in&nbsp;a&nbsp;component)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;would&nbsp;achieve&nbsp;this.&nbsp;&nbsp;Users&nbsp;can&nbsp;work&nbsp;around&nbsp;this&nbsp;by&nbsp;using&nbsp;tracking<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bugs,&nbsp;as&nbsp;dependencies&nbsp;have&nbsp;an&nbsp;existing&nbsp;way&nbsp;of&nbsp;detecting&nbsp;fixes&nbsp;to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bug&nbsp;a&nbsp;bug&nbsp;was&nbsp;blocked&nbsp;by.<br>
<br>
&nbsp;&nbsp;Dealing&nbsp;With&nbsp;The&nbsp;Keyword&nbsp;Overload<br>
<br>
&nbsp;&nbsp;&nbsp;At&nbsp;the&nbsp;time&nbsp;of&nbsp;writing,&nbsp;the&nbsp;mozilla.org&nbsp;installation&nbsp;has&nbsp;approximately<br>
&nbsp;&nbsp;&nbsp;100&nbsp;keywords,&nbsp;and&nbsp;many&nbsp;more&nbsp;would&nbsp;be&nbsp;in&nbsp;use&nbsp;if&nbsp;the&nbsp;keywords&nbsp;system<br>
&nbsp;&nbsp;&nbsp;didn't&nbsp;have&nbsp;the&nbsp;problems&nbsp;it&nbsp;does.<br>
<br>
&nbsp;&nbsp;&nbsp;Such&nbsp;a&nbsp;large&nbsp;number&nbsp;of&nbsp;keywords&nbsp;introduces&nbsp;logistical&nbsp;problems:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;It&nbsp;must&nbsp;be&nbsp;easy&nbsp;for&nbsp;someone&nbsp;to&nbsp;learn&nbsp;what&nbsp;a&nbsp;keyword&nbsp;means.&nbsp;&nbsp;If&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword&nbsp;is&nbsp;buried&nbsp;within&nbsp;a&nbsp;lot&nbsp;of&nbsp;other&nbsp;keywords,&nbsp;it&nbsp;can&nbsp;be<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;difficult&nbsp;to&nbsp;find.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;It&nbsp;must&nbsp;be&nbsp;easy&nbsp;to&nbsp;see&nbsp;what&nbsp;keywords&nbsp;are&nbsp;on&nbsp;a&nbsp;bug.&nbsp;&nbsp;If&nbsp;the&nbsp;number<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;keywords&nbsp;is&nbsp;large,&nbsp;then&nbsp;this&nbsp;can&nbsp;be&nbsp;difficult.<br>
<br>
&nbsp;&nbsp;&nbsp;These&nbsp;lead&nbsp;some&nbsp;people&nbsp;to&nbsp;feel&nbsp;that&nbsp;there&nbsp;are&nbsp;"too&nbsp;many&nbsp;keywords".<br>
<br>
&nbsp;&nbsp;&nbsp;These&nbsp;problems&nbsp;are&nbsp;not&nbsp;without&nbsp;solutions&nbsp;however.&nbsp;&nbsp;It&nbsp;is&nbsp;harder&nbsp;to<br>
&nbsp;&nbsp;&nbsp;find&nbsp;a&nbsp;list&nbsp;of&nbsp;designators&nbsp;or&nbsp;tracking&nbsp;bugs&nbsp;than&nbsp;it&nbsp;is&nbsp;a&nbsp;list&nbsp;of<br>
&nbsp;&nbsp;&nbsp;keywords.<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;essential&nbsp;problem&nbsp;is&nbsp;it&nbsp;needs&nbsp;to&nbsp;be&nbsp;easy&nbsp;to&nbsp;find&nbsp;the&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;we're&nbsp;interested&nbsp;in&nbsp;through&nbsp;the&nbsp;mass&nbsp;of&nbsp;keywords.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Keyword&nbsp;Applicability<br>
<br>
&nbsp;&nbsp;&nbsp;As&nbsp;has&nbsp;been&nbsp;previously&nbsp;mentioned,&nbsp;it&nbsp;is&nbsp;desirable&nbsp;for&nbsp;fields&nbsp;to&nbsp;be<br>
&nbsp;&nbsp;&nbsp;able&nbsp;to&nbsp;adapt&nbsp;to&nbsp;the&nbsp;values&nbsp;of&nbsp;other&nbsp;fields.&nbsp;&nbsp;This&nbsp;is&nbsp;certainly&nbsp;true<br>
&nbsp;&nbsp;&nbsp;for&nbsp;keywords.&nbsp;&nbsp;Many&nbsp;keywords&nbsp;are&nbsp;simply&nbsp;not&nbsp;relevant&nbsp;because&nbsp;of&nbsp;the<br>
&nbsp;&nbsp;&nbsp;bugs&nbsp;product,&nbsp;component,&nbsp;etc.<br>
<br>
&nbsp;&nbsp;&nbsp;Hence,&nbsp;by&nbsp;introducing&nbsp;keyword&nbsp;applicability,&nbsp;and&nbsp;not&nbsp;displaying<br>
&nbsp;&nbsp;&nbsp;keywords&nbsp;that&nbsp;are&nbsp;not&nbsp;relevant&nbsp;to&nbsp;the&nbsp;current&nbsp;bug,&nbsp;or&nbsp;clearly<br>
&nbsp;&nbsp;&nbsp;separating&nbsp;them,&nbsp;we&nbsp;can&nbsp;make&nbsp;the&nbsp;keyword&nbsp;overload&nbsp;problem&nbsp;less<br>
&nbsp;&nbsp;&nbsp;significant.<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;when&nbsp;you&nbsp;click&nbsp;on&nbsp;"keywords"&nbsp;on&nbsp;a&nbsp;bug,&nbsp;you&nbsp;get&nbsp;a&nbsp;list&nbsp;of&nbsp;all<br>
&nbsp;&nbsp;&nbsp;bugs.&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;desirable&nbsp;to&nbsp;introduce&nbsp;a&nbsp;list&nbsp;of&nbsp;keywords&nbsp;tailored<br>
&nbsp;&nbsp;&nbsp;to&nbsp;a&nbsp;specific&nbsp;bug,&nbsp;that&nbsp;reports,&nbsp;in&nbsp;order:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;keywords&nbsp;currently&nbsp;on&nbsp;the&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;keywords&nbsp;not&nbsp;currently&nbsp;on&nbsp;the&nbsp;bug,&nbsp;but&nbsp;applicable&nbsp;to&nbsp;the&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;optionally,&nbsp;the&nbsp;keywords&nbsp;not&nbsp;applicable&nbsp;to&nbsp;the&nbsp;bug<br>
<br>
&nbsp;&nbsp;&nbsp;This&nbsp;essentially&nbsp;orders&nbsp;the&nbsp;keywords&nbsp;into&nbsp;three&nbsp;groups,&nbsp;where&nbsp;each<br>
&nbsp;&nbsp;&nbsp;group&nbsp;is&nbsp;more&nbsp;important&nbsp;than&nbsp;the&nbsp;previous,&nbsp;and&nbsp;therefore&nbsp;appears<br>
&nbsp;&nbsp;&nbsp;closer&nbsp;to&nbsp;the&nbsp;top.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Keyword&nbsp;Grouping&nbsp;&#38;&nbsp;Ordering<br>
<br>
&nbsp;&nbsp;&nbsp;We&nbsp;could&nbsp;further&nbsp;enhance&nbsp;both&nbsp;the&nbsp;global&nbsp;and&nbsp;bug&nbsp;specific&nbsp;keyword&nbsp;list<br>
&nbsp;&nbsp;&nbsp;by&nbsp;grouping&nbsp;keywords.&nbsp;&nbsp;We&nbsp;should&nbsp;always&nbsp;have&nbsp;a&nbsp;"flat"&nbsp;view&nbsp;of<br>
&nbsp;&nbsp;&nbsp;keywords,&nbsp;but&nbsp;other&nbsp;ways&nbsp;of&nbsp;viewing&nbsp;the&nbsp;keywords&nbsp;would&nbsp;be&nbsp;useful&nbsp;too.<br>
<br>
&nbsp;&nbsp;&nbsp;If&nbsp;keyword&nbsp;applicability&nbsp;was&nbsp;implemented,&nbsp;we&nbsp;could&nbsp;group&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;based&nbsp;on&nbsp;their&nbsp;"applicability&nbsp;condition".&nbsp;&nbsp;Keywords&nbsp;that&nbsp;apply&nbsp;to&nbsp;all<br>
&nbsp;&nbsp;&nbsp;bugs&nbsp;could&nbsp;be&nbsp;separated&nbsp;from&nbsp;keywords&nbsp;that&nbsp;apply&nbsp;to&nbsp;a&nbsp;specific<br>
&nbsp;&nbsp;&nbsp;product,&nbsp;both&nbsp;on&nbsp;the&nbsp;global&nbsp;keyword&nbsp;list&nbsp;and&nbsp;the&nbsp;keyword&nbsp;list&nbsp;of&nbsp;a&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;that&nbsp;is&nbsp;in&nbsp;that&nbsp;product.<br>
<br>
&nbsp;&nbsp;&nbsp;We&nbsp;could&nbsp;specify&nbsp;groups&nbsp;of&nbsp;our&nbsp;own.&nbsp;&nbsp;For&nbsp;example,&nbsp;many&nbsp;keywords&nbsp;are&nbsp;in<br>
&nbsp;&nbsp;&nbsp;a&nbsp;mutually&nbsp;exclusive&nbsp;group,&nbsp;essentially&nbsp;like&nbsp;radio&nbsp;buttons&nbsp;in&nbsp;a&nbsp;user<br>
&nbsp;&nbsp;&nbsp;interface.&nbsp;&nbsp;This&nbsp;creates&nbsp;a&nbsp;natural&nbsp;grouping,&nbsp;although&nbsp;other&nbsp;groupings<br>
&nbsp;&nbsp;&nbsp;occur&nbsp;(which&nbsp;depends&nbsp;on&nbsp;your&nbsp;keywords).<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;is&nbsp;possible&nbsp;that&nbsp;we&nbsp;could&nbsp;use&nbsp;collapsing/expanding&nbsp;operations&nbsp;on<br>
&nbsp;&nbsp;&nbsp;"twisties"&nbsp;to&nbsp;only&nbsp;should&nbsp;the&nbsp;groups&nbsp;we&nbsp;are&nbsp;interested&nbsp;in.<br>
<br>
&nbsp;&nbsp;&nbsp;And&nbsp;instead&nbsp;of&nbsp;grouping&nbsp;keywords,&nbsp;we&nbsp;could&nbsp;order&nbsp;them&nbsp;on&nbsp;some&nbsp;metric<br>
&nbsp;&nbsp;&nbsp;of&nbsp;usefulness,&nbsp;such&nbsp;as:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;when&nbsp;the&nbsp;keyword&nbsp;was&nbsp;last&nbsp;added&nbsp;to&nbsp;a&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;how&nbsp;many&nbsp;bugs&nbsp;the&nbsp;keyword&nbsp;is&nbsp;on<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;how&nbsp;many&nbsp;open&nbsp;bugs&nbsp;the&nbsp;keyword&nbsp;is&nbsp;on<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Opting&nbsp;Out&nbsp;Of&nbsp;Keywords<br>
<br>
&nbsp;&nbsp;&nbsp;Not&nbsp;all&nbsp;people&nbsp;are&nbsp;going&nbsp;to&nbsp;care&nbsp;about&nbsp;all&nbsp;keywords.&nbsp;&nbsp;Therefore&nbsp;it<br>
&nbsp;&nbsp;&nbsp;makes&nbsp;sense&nbsp;that&nbsp;you&nbsp;may&nbsp;wish&nbsp;to&nbsp;specify&nbsp;which&nbsp;keywords&nbsp;you&nbsp;are<br>
&nbsp;&nbsp;&nbsp;interested&nbsp;in,&nbsp;either&nbsp;on&nbsp;the&nbsp;bug&nbsp;page,&nbsp;or&nbsp;on&nbsp;notifications.<br>
<br>
&nbsp;&nbsp;&nbsp;Other&nbsp;keywords&nbsp;will&nbsp;therefore&nbsp;not&nbsp;bother&nbsp;users&nbsp;who&nbsp;are&nbsp;not&nbsp;interested<br>
&nbsp;&nbsp;&nbsp;in&nbsp;them.<br>
<br>
&nbsp;&nbsp;Keyword&nbsp;Security<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;all&nbsp;keywords&nbsp;are&nbsp;available&nbsp;and&nbsp;editable&nbsp;to&nbsp;all&nbsp;people&nbsp;with<br>
&nbsp;&nbsp;&nbsp;edit&nbsp;bugs&nbsp;access.&nbsp;&nbsp;This&nbsp;situation&nbsp;is&nbsp;clearly&nbsp;suboptimal.<br>
<br>
&nbsp;&nbsp;&nbsp;Although&nbsp;relying&nbsp;on&nbsp;good&nbsp;behaviour&nbsp;for&nbsp;people&nbsp;to&nbsp;not&nbsp;do&nbsp;what&nbsp;they<br>
&nbsp;&nbsp;&nbsp;shouldn't&nbsp;works&nbsp;reasonably&nbsp;well&nbsp;on&nbsp;the&nbsp;mozilla.org,&nbsp;it&nbsp;is&nbsp;better&nbsp;to<br>
&nbsp;&nbsp;&nbsp;enforce&nbsp;that&nbsp;behaviour&nbsp;-&nbsp;it&nbsp;can&nbsp;be&nbsp;breached&nbsp;through&nbsp;malice,&nbsp;accident<br>
&nbsp;&nbsp;&nbsp;or&nbsp;ignorance.<br>
<br>
&nbsp;&nbsp;&nbsp;And&nbsp;in&nbsp;the&nbsp;situation&nbsp;where&nbsp;it&nbsp;is&nbsp;desirable&nbsp;for&nbsp;the&nbsp;presence&nbsp;or&nbsp;absence<br>
&nbsp;&nbsp;&nbsp;of&nbsp;a&nbsp;keyword&nbsp;not&nbsp;to&nbsp;be&nbsp;revealed,&nbsp;organisations&nbsp;either&nbsp;need&nbsp;to&nbsp;be<br>
&nbsp;&nbsp;&nbsp;content&nbsp;with&nbsp;the&nbsp;divulgence,&nbsp;or&nbsp;not&nbsp;use&nbsp;keywords&nbsp;at&nbsp;all.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;the&nbsp;situation&nbsp;where&nbsp;they&nbsp;choose&nbsp;to&nbsp;divulge,&nbsp;introducing&nbsp;the&nbsp;ability<br>
&nbsp;&nbsp;&nbsp;to&nbsp;restrict&nbsp;who&nbsp;can&nbsp;see&nbsp;the&nbsp;keyword&nbsp;would&nbsp;also&nbsp;reduce&nbsp;keyword<br>
&nbsp;&nbsp;&nbsp;overload.<br>
<br>
&nbsp;&nbsp;Personal&nbsp;Keywords<br>
<br>
&nbsp;&nbsp;&nbsp;Keywords&nbsp;join&nbsp;together&nbsp;a&nbsp;set&nbsp;of&nbsp;bugs&nbsp;which&nbsp;would&nbsp;otherwise&nbsp;be<br>
&nbsp;&nbsp;&nbsp;unrelated&nbsp;in&nbsp;the&nbsp;bug&nbsp;system.<br>
<br>
&nbsp;&nbsp;&nbsp;We&nbsp;allow&nbsp;users&nbsp;to&nbsp;store&nbsp;their&nbsp;own&nbsp;queries.&nbsp;&nbsp;However&nbsp;we&nbsp;don't&nbsp;allow<br>
&nbsp;&nbsp;&nbsp;them&nbsp;to&nbsp;store&nbsp;their&nbsp;own&nbsp;keywords&nbsp;on&nbsp;a&nbsp;bug.&nbsp;&nbsp;This&nbsp;reduces&nbsp;the<br>
&nbsp;&nbsp;&nbsp;usefulness&nbsp;of&nbsp;personal&nbsp;queries,&nbsp;since&nbsp;you&nbsp;cannot&nbsp;join&nbsp;a&nbsp;set&nbsp;of<br>
&nbsp;&nbsp;&nbsp;unrelated&nbsp;bugs&nbsp;together&nbsp;in&nbsp;a&nbsp;way&nbsp;that&nbsp;you&nbsp;wish.&nbsp;&nbsp;Lists&nbsp;of&nbsp;bug&nbsp;numbers<br>
&nbsp;&nbsp;&nbsp;can&nbsp;work,&nbsp;by&nbsp;they&nbsp;can&nbsp;only&nbsp;be&nbsp;used&nbsp;for&nbsp;small&nbsp;lists,&nbsp;and&nbsp;it&nbsp;is<br>
&nbsp;&nbsp;&nbsp;impossible&nbsp;to&nbsp;share&nbsp;a&nbsp;list&nbsp;between&nbsp;multiple&nbsp;queries.<br>
<br>
&nbsp;&nbsp;&nbsp;Personal&nbsp;keywords&nbsp;are&nbsp;necessary&nbsp;to&nbsp;replace&nbsp;personal&nbsp;tracking&nbsp;bugs,&nbsp;as<br>
&nbsp;&nbsp;&nbsp;they&nbsp;would&nbsp;not&nbsp;pollute&nbsp;the&nbsp;keyword&nbsp;space.&nbsp;&nbsp;Indeed,&nbsp;on&nbsp;many<br>
&nbsp;&nbsp;&nbsp;installations&nbsp;this&nbsp;could&nbsp;remove&nbsp;some&nbsp;keywords&nbsp;out&nbsp;of&nbsp;the&nbsp;global<br>
&nbsp;&nbsp;&nbsp;keyword&nbsp;space.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;a&nbsp;similar&nbsp;vein&nbsp;and&nbsp;with&nbsp;similar&nbsp;effects,&nbsp;group&nbsp;keywords&nbsp;could&nbsp;be<br>
&nbsp;&nbsp;&nbsp;introduced&nbsp;that&nbsp;are&nbsp;only&nbsp;available&nbsp;to&nbsp;members&nbsp;of&nbsp;a&nbsp;specific&nbsp;group.<br>
<br>
&nbsp;&nbsp;Keyword&nbsp;Restrictions<br>
<br>
&nbsp;&nbsp;&nbsp;Keywords&nbsp;are&nbsp;not&nbsp;islands&nbsp;unto&nbsp;themselves.&nbsp;&nbsp;Along&nbsp;with&nbsp;their&nbsp;potential<br>
&nbsp;&nbsp;&nbsp;to&nbsp;be&nbsp;involved&nbsp;in&nbsp;the&nbsp;inter-field&nbsp;relationships&nbsp;mentioned&nbsp;earlier,<br>
&nbsp;&nbsp;&nbsp;keywords&nbsp;can&nbsp;also&nbsp;be&nbsp;related&nbsp;to&nbsp;other&nbsp;keywords.<br>
<br>
&nbsp;&nbsp;&nbsp;Essentially,&nbsp;there&nbsp;are&nbsp;two&nbsp;possibilities:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;a&nbsp;set&nbsp;of&nbsp;keywords&nbsp;are&nbsp;mutually&nbsp;exclusive<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;presence&nbsp;of&nbsp;a&nbsp;keyword&nbsp;implies&nbsp;another&nbsp;keyword&nbsp;must&nbsp;be&nbsp;present<br>
<br>
&nbsp;&nbsp;&nbsp;Introduction&nbsp;of&nbsp;the&nbsp;ability&nbsp;to&nbsp;specify&nbsp;these&nbsp;restrictions&nbsp;would&nbsp;have<br>
&nbsp;&nbsp;&nbsp;benefits.<br>
<br>
&nbsp;&nbsp;&nbsp;If&nbsp;mutually&nbsp;exclusive&nbsp;keywords&nbsp;were&nbsp;present&nbsp;on&nbsp;a&nbsp;bug,&nbsp;their&nbsp;removal<br>
&nbsp;&nbsp;&nbsp;would&nbsp;fix&nbsp;up&nbsp;the&nbsp;database,&nbsp;as&nbsp;well&nbsp;as&nbsp;reducing&nbsp;the&nbsp;number&nbsp;of&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;on&nbsp;that&nbsp;bug.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;the&nbsp;situation&nbsp;where&nbsp;a&nbsp;keyword&nbsp;implies&nbsp;another&nbsp;keyword,&nbsp;there&nbsp;are<br>
&nbsp;&nbsp;&nbsp;two&nbsp;possiblities&nbsp;as&nbsp;to&nbsp;how&nbsp;to&nbsp;handle&nbsp;the&nbsp;situation.<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;first&nbsp;is&nbsp;automatically&nbsp;add&nbsp;the&nbsp;keyword.&nbsp;&nbsp;This&nbsp;would&nbsp;fix&nbsp;up&nbsp;the<br>
&nbsp;&nbsp;&nbsp;database,&nbsp;but&nbsp;it&nbsp;would&nbsp;increase&nbsp;the&nbsp;number&nbsp;of&nbsp;keywords&nbsp;on&nbsp;a&nbsp;bug.<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;second&nbsp;is&nbsp;to&nbsp;automatically&nbsp;remove&nbsp;the&nbsp;keyword,&nbsp;and&nbsp;alter&nbsp;queries<br>
&nbsp;&nbsp;&nbsp;so&nbsp;they&nbsp;pick&nbsp;up&nbsp;the&nbsp;first&nbsp;keyword&nbsp;as&nbsp;well&nbsp;as&nbsp;the&nbsp;removed&nbsp;keyword.<br>
&nbsp;&nbsp;&nbsp;This&nbsp;would&nbsp;fix&nbsp;up&nbsp;the&nbsp;database&nbsp;and&nbsp;reduce&nbsp;the&nbsp;number&nbsp;of&nbsp;keywords&nbsp;on&nbsp;a<br>
&nbsp;&nbsp;&nbsp;bug,&nbsp;but&nbsp;it&nbsp;might&nbsp;confuse&nbsp;users&nbsp;who&nbsp;don't&nbsp;see&nbsp;the&nbsp;keyword.<br>
&nbsp;&nbsp;&nbsp;Alternatively,&nbsp;the&nbsp;implied&nbsp;keywords&nbsp;could&nbsp;be&nbsp;listed&nbsp;separately.<br>
<br>
Notifications<br>
<br>
&nbsp;&nbsp;&nbsp;Every&nbsp;time&nbsp;a&nbsp;bug&nbsp;gets&nbsp;changed&nbsp;notifications&nbsp;get&nbsp;sent&nbsp;out&nbsp;to&nbsp;people<br>
&nbsp;&nbsp;&nbsp;letting&nbsp;them&nbsp;know&nbsp;about&nbsp;what&nbsp;changes&nbsp;have&nbsp;been&nbsp;made.&nbsp;&nbsp;This&nbsp;is&nbsp;a<br>
&nbsp;&nbsp;&nbsp;significant&nbsp;feature,&nbsp;and&nbsp;all&nbsp;sorts&nbsp;of&nbsp;questions&nbsp;can&nbsp;be&nbsp;raised,&nbsp;but<br>
&nbsp;&nbsp;&nbsp;they&nbsp;mainly&nbsp;boil&nbsp;down&nbsp;to&nbsp;when&nbsp;they&nbsp;should&nbsp;be&nbsp;sent&nbsp;and&nbsp;what&nbsp;they&nbsp;should<br>
&nbsp;&nbsp;&nbsp;look&nbsp;like.<br>
<br>
&nbsp;&nbsp;Changes&nbsp;You're&nbsp;Interested&nbsp;In<br>
<br>
&nbsp;&nbsp;&nbsp;As&nbsp;of&nbsp;version&nbsp;2.12&nbsp;users&nbsp;can&nbsp;specify&nbsp;what&nbsp;sort&nbsp;of&nbsp;changes&nbsp;they&nbsp;are<br>
&nbsp;&nbsp;&nbsp;interested&nbsp;in&nbsp;receiving&nbsp;notifications&nbsp;for.&nbsp;&nbsp;However,&nbsp;this&nbsp;is&nbsp;still<br>
&nbsp;&nbsp;&nbsp;limited.&nbsp;&nbsp;As&nbsp;yet&nbsp;there&nbsp;is&nbsp;no&nbsp;facility&nbsp;to&nbsp;specify&nbsp;which&nbsp;keywords&nbsp;you<br>
&nbsp;&nbsp;&nbsp;care&nbsp;about,&nbsp;and&nbsp;whether&nbsp;you&nbsp;care&nbsp;about&nbsp;changes&nbsp;to&nbsp;fields&nbsp;such&nbsp;as&nbsp;the<br>
&nbsp;&nbsp;&nbsp;QA&nbsp;contact&nbsp;changes.<br>
&nbsp;&nbsp;&nbsp;Furthermore,&nbsp;often&nbsp;an&nbsp;unnecessary&nbsp;comment&nbsp;will&nbsp;go&nbsp;along&nbsp;with&nbsp;a&nbsp;change,<br>
&nbsp;&nbsp;&nbsp;either&nbsp;because&nbsp;it&nbsp;is&nbsp;required,&nbsp;or&nbsp;the&nbsp;commenter&nbsp;is&nbsp;ignorant&nbsp;of&nbsp;how&nbsp;the<br>
&nbsp;&nbsp;&nbsp;new&nbsp;system&nbsp;works.&nbsp;&nbsp;While&nbsp;explaining&nbsp;why&nbsp;you&nbsp;did&nbsp;something&nbsp;is&nbsp;useful,<br>
&nbsp;&nbsp;&nbsp;merely&nbsp;commenting&nbsp;on&nbsp;what&nbsp;you&nbsp;did&nbsp;is&nbsp;not&nbsp;because&nbsp;that&nbsp;information&nbsp;is<br>
&nbsp;&nbsp;&nbsp;already&nbsp;accessible&nbsp;view&nbsp;"Bug&nbsp;Activity".<br>
<br>
&nbsp;&nbsp;&nbsp;Because&nbsp;of&nbsp;this&nbsp;unnecessary&nbsp;comment,&nbsp;a&nbsp;lot&nbsp;of&nbsp;changes&nbsp;that&nbsp;would<br>
&nbsp;&nbsp;&nbsp;otherwise&nbsp;not&nbsp;generate&nbsp;notifications&nbsp;for&nbsp;certain&nbsp;people&nbsp;do&nbsp;so,&nbsp;because<br>
&nbsp;&nbsp;&nbsp;few&nbsp;people&nbsp;are&nbsp;willing&nbsp;to&nbsp;turn&nbsp;off&nbsp;comments.&nbsp;&nbsp;One&nbsp;way&nbsp;to&nbsp;deal&nbsp;with<br>
&nbsp;&nbsp;&nbsp;this&nbsp;problem&nbsp;is&nbsp;to&nbsp;allow&nbsp;people&nbsp;to&nbsp;specify&nbsp;that&nbsp;their&nbsp;comments&nbsp;are<br>
&nbsp;&nbsp;&nbsp;purely&nbsp;explanatory,&nbsp;and&nbsp;that&nbsp;anyone&nbsp;who&nbsp;is&nbsp;not&nbsp;interested&nbsp;in&nbsp;the<br>
&nbsp;&nbsp;&nbsp;change&nbsp;will&nbsp;not&nbsp;be&nbsp;interested&nbsp;in&nbsp;the&nbsp;comment.<br>
<br>
&nbsp;&nbsp;&nbsp;Furthermore,&nbsp;one&nbsp;possible&nbsp;rationale&nbsp;for&nbsp;unnecessary&nbsp;comments&nbsp;is&nbsp;that<br>
&nbsp;&nbsp;&nbsp;the&nbsp;bug&nbsp;activity&nbsp;does&nbsp;not&nbsp;display&nbsp;on&nbsp;the&nbsp;normal&nbsp;page&nbsp;and&nbsp;hence&nbsp;it&nbsp;is<br>
&nbsp;&nbsp;&nbsp;difficult&nbsp;to&nbsp;cross&nbsp;reference&nbsp;comments&nbsp;and&nbsp;actions.&nbsp;&nbsp;Hence,&nbsp;it&nbsp;would&nbsp;be<br>
&nbsp;&nbsp;&nbsp;beneficial&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;do&nbsp;this.<br>
<br>
&nbsp;&nbsp;Bugs&nbsp;You're&nbsp;Watching<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;to&nbsp;receive&nbsp;a&nbsp;notification&nbsp;about&nbsp;a&nbsp;bug&nbsp;you&nbsp;need&nbsp;to&nbsp;have&nbsp;your<br>
&nbsp;&nbsp;&nbsp;name&nbsp;on&nbsp;it.&nbsp;&nbsp;This&nbsp;is&nbsp;suboptimal&nbsp;because&nbsp;you&nbsp;need&nbsp;to&nbsp;know&nbsp;about&nbsp;a&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;before&nbsp;you&nbsp;can&nbsp;receive&nbsp;notifications&nbsp;on&nbsp;it.&nbsp;&nbsp;Often&nbsp;you&nbsp;are&nbsp;interested<br>
&nbsp;&nbsp;&nbsp;in&nbsp;any&nbsp;bug&nbsp;with&nbsp;a&nbsp;field&nbsp;set&nbsp;to&nbsp;a&nbsp;specific&nbsp;value.&nbsp;&nbsp;For&nbsp;example,&nbsp;you<br>
&nbsp;&nbsp;&nbsp;might&nbsp;be&nbsp;interested&nbsp;in&nbsp;all&nbsp;bugs&nbsp;with&nbsp;a&nbsp;specific&nbsp;product,&nbsp;component&nbsp;or<br>
&nbsp;&nbsp;&nbsp;keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;If&nbsp;someone&nbsp;could&nbsp;automatically&nbsp;receive&nbsp;notifications&nbsp;about&nbsp;these&nbsp;bugs,<br>
&nbsp;&nbsp;&nbsp;it&nbsp;would&nbsp;make&nbsp;everyone's&nbsp;lives&nbsp;easier.&nbsp;&nbsp;Currently&nbsp;the&nbsp;default&nbsp;assignee<br>
&nbsp;&nbsp;&nbsp;and&nbsp;QA&nbsp;contact&nbsp;for&nbsp;a&nbsp;component&nbsp;will&nbsp;automatically&nbsp;receive<br>
&nbsp;&nbsp;&nbsp;notifications&nbsp;for<br>
<br>
&nbsp;&nbsp;&nbsp;Question:&nbsp;&nbsp;This&nbsp;moves&nbsp;half&nbsp;way&nbsp;to&nbsp;a&nbsp;BCC.<br>
<br>
&nbsp;&nbsp;Bulk&nbsp;Changes<br>
<br>
&nbsp;&nbsp;&nbsp;A&nbsp;very&nbsp;useful&nbsp;feature&nbsp;of&nbsp;Bugzilla&nbsp;is&nbsp;the&nbsp;ability&nbsp;to&nbsp;perform&nbsp;an&nbsp;action<br>
&nbsp;&nbsp;&nbsp;on&nbsp;multiple&nbsp;bugs&nbsp;at&nbsp;once.&nbsp;&nbsp;However,&nbsp;this&nbsp;means&nbsp;that&nbsp;similar<br>
&nbsp;&nbsp;&nbsp;notifications&nbsp;are&nbsp;currently&nbsp;generated&nbsp;for&nbsp;each&nbsp;bug&nbsp;modified.<br>
<br>
&nbsp;&nbsp;&nbsp;This&nbsp;can&nbsp;result&nbsp;in&nbsp;a&nbsp;torrent&nbsp;of&nbsp;notifications&nbsp;that&nbsp;can&nbsp;annoy.<br>
<br>
&nbsp;&nbsp;&nbsp;Furthermore,&nbsp;since&nbsp;the&nbsp;bugs&nbsp;are&nbsp;all&nbsp;changed&nbsp;close&nbsp;to&nbsp;each&nbsp;other&nbsp;in<br>
&nbsp;&nbsp;&nbsp;time,&nbsp;it&nbsp;is&nbsp;easy&nbsp;for&nbsp;someone&nbsp;to&nbsp;mass&nbsp;delete&nbsp;all&nbsp;the&nbsp;notifications<br>
&nbsp;&nbsp;&nbsp;generated&nbsp;by&nbsp;a&nbsp;bulk&nbsp;change&nbsp;and&nbsp;miss&nbsp;an&nbsp;unrelated&nbsp;notification&nbsp;in&nbsp;the<br>
&nbsp;&nbsp;&nbsp;middle.<br>
<br>
&nbsp;&nbsp;&nbsp;These&nbsp;factors&nbsp;can&nbsp;lead&nbsp;to&nbsp;a&nbsp;tendency&nbsp;for&nbsp;people&nbsp;to&nbsp;delay&nbsp;bulk&nbsp;changes,<br>
&nbsp;&nbsp;&nbsp;or&nbsp;avoid&nbsp;them&nbsp;entirely.&nbsp;&nbsp;This&nbsp;is&nbsp;suboptimal.<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;better&nbsp;if&nbsp;a&nbsp;bulk&nbsp;change&nbsp;generated&nbsp;only&nbsp;one&nbsp;notification<br>
&nbsp;&nbsp;&nbsp;mail.&nbsp;&nbsp;This&nbsp;would&nbsp;vastly&nbsp;reduce&nbsp;the&nbsp;annoyance&nbsp;factor,&nbsp;and&nbsp;prevent<br>
&nbsp;&nbsp;&nbsp;accidental&nbsp;deletion&nbsp;of&nbsp;notifications.<br>
<br>
&nbsp;&nbsp;&nbsp;One&nbsp;problem&nbsp;with&nbsp;this&nbsp;change&nbsp;is&nbsp;that&nbsp;some&nbsp;people&nbsp;separate&nbsp;out<br>
&nbsp;&nbsp;&nbsp;notifications&nbsp;using&nbsp;filtering.&nbsp;&nbsp;This&nbsp;means&nbsp;that&nbsp;they&nbsp;would&nbsp;no&nbsp;longer<br>
&nbsp;&nbsp;&nbsp;be&nbsp;match&nbsp;parts&nbsp;of&nbsp;a&nbsp;bulk&nbsp;change&nbsp;under&nbsp;different&nbsp;filtering&nbsp;rules.<br>
<br>
&nbsp;&nbsp;&nbsp;One&nbsp;possibility&nbsp;to&nbsp;resolve&nbsp;this&nbsp;is&nbsp;to&nbsp;allow&nbsp;people&nbsp;to&nbsp;specify&nbsp;groups<br>
&nbsp;&nbsp;&nbsp;of&nbsp;bugs.&nbsp;&nbsp;All&nbsp;bugs&nbsp;within&nbsp;a&nbsp;group&nbsp;would&nbsp;go&nbsp;into&nbsp;the&nbsp;same<br>
&nbsp;&nbsp;&nbsp;notification.&nbsp;&nbsp;The&nbsp;filters&nbsp;could&nbsp;then&nbsp;distinguish&nbsp;the&nbsp;different&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;groups.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;any&nbsp;case,&nbsp;it&nbsp;is&nbsp;likely&nbsp;there&nbsp;would&nbsp;need&nbsp;to&nbsp;be&nbsp;a&nbsp;transition&nbsp;period<br>
&nbsp;&nbsp;&nbsp;to&nbsp;allow&nbsp;people&nbsp;to&nbsp;alter&nbsp;their&nbsp;filters.<br>
<br>
Nominations<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
Linking&nbsp;Bugzilla&nbsp;Installations<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;first&nbsp;example&nbsp;of&nbsp;linking&nbsp;Bugzilla&nbsp;installations&nbsp;together&nbsp;has&nbsp;is<br>
&nbsp;&nbsp;&nbsp;the&nbsp;introduction&nbsp;of&nbsp;bug&nbsp;moving&nbsp;in&nbsp;version&nbsp;2.12.&nbsp;&nbsp;However,&nbsp;it&nbsp;would&nbsp;be<br>
&nbsp;&nbsp;&nbsp;useful&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;link&nbsp;installations&nbsp;in&nbsp;more&nbsp;ways.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Dependencies&nbsp;and&nbsp;other&nbsp;relationships&nbsp;between&nbsp;bugs&nbsp;in&nbsp;other<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;installations.&nbsp;&nbsp;This&nbsp;is&nbsp;difficult&nbsp;because&nbsp;dependencies&nbsp;are<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;synchronised&nbsp;on&nbsp;both&nbsp;bugs,&nbsp;so&nbsp;the&nbsp;installation&nbsp;that&nbsp;changes<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dependencies&nbsp;would&nbsp;need&nbsp;to&nbsp;communicate&nbsp;the&nbsp;new&nbsp;state&nbsp;to&nbsp;the&nbsp;other<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;installation.&nbsp;&nbsp;It&nbsp;would&nbsp;also&nbsp;mean&nbsp;that&nbsp;relationships&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifications&nbsp;that&nbsp;refer&nbsp;to&nbsp;other&nbsp;bugs&nbsp;would&nbsp;need&nbsp;to&nbsp;communicate<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;the&nbsp;other&nbsp;installation.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;References&nbsp;to&nbsp;bugs&nbsp;in&nbsp;other&nbsp;installations.&nbsp;&nbsp;Currently&nbsp;if&nbsp;you&nbsp;type<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"bug&nbsp;XXX"&nbsp;or&nbsp;"bug&nbsp;#XXX"&nbsp;where&nbsp;XXX&nbsp;is&nbsp;a&nbsp;number,&nbsp;you&nbsp;get&nbsp;an<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;automatic&nbsp;hyperlink&nbsp;to&nbsp;that&nbsp;bug.&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;useful&nbsp;if&nbsp;you&nbsp;could<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;say&nbsp;"YYY&nbsp;bug&nbsp;#XXX"&nbsp;where&nbsp;YYY&nbsp;is&nbsp;the&nbsp;name&nbsp;of&nbsp;another&nbsp;installation.<br>
<br>
Retirement<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
Whiny&nbsp;Reports<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
&nbsp;&nbsp;Group&nbsp;Redesign<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
&nbsp;&nbsp;Hard&nbsp;Wrapping&nbsp;Comments<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;Bugzilla&nbsp;"hard&nbsp;wraps"&nbsp;its&nbsp;comments&nbsp;to&nbsp;a&nbsp;specific&nbsp;line&nbsp;size,<br>
&nbsp;&nbsp;&nbsp;similar&nbsp;to&nbsp;E-Mail.&nbsp;&nbsp;This&nbsp;has&nbsp;various&nbsp;problems:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;way&nbsp;it&nbsp;currently&nbsp;works,&nbsp;wrapping&nbsp;is&nbsp;done&nbsp;in&nbsp;the&nbsp;browser&nbsp;at<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;submission&nbsp;time&nbsp;using&nbsp;a&nbsp;non-standard&nbsp;HTML&nbsp;extension&nbsp;not&nbsp;supported<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;by&nbsp;some&nbsp;(uncommon)&nbsp;browsers.&nbsp;&nbsp;These&nbsp;browsers&nbsp;generate&nbsp;comments<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that&nbsp;scroll&nbsp;off&nbsp;the&nbsp;right&nbsp;side&nbsp;of&nbsp;the&nbsp;screen.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Because&nbsp;comments&nbsp;are&nbsp;of&nbsp;fixed&nbsp;width,&nbsp;when&nbsp;you&nbsp;expand&nbsp;your&nbsp;browser<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window,&nbsp;the&nbsp;comments&nbsp;do&nbsp;not&nbsp;expand&nbsp;to&nbsp;fit&nbsp;available&nbsp;space.<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;much&nbsp;better&nbsp;to&nbsp;move&nbsp;to&nbsp;a&nbsp;world&nbsp;of&nbsp;soft&nbsp;wrapping,&nbsp;where&nbsp;the<br>
&nbsp;&nbsp;&nbsp;browser&nbsp;wraps&nbsp;the&nbsp;text&nbsp;at&nbsp;display&nbsp;time,&nbsp;similar&nbsp;to&nbsp;a&nbsp;world&nbsp;processor.<br>
&nbsp;&nbsp;&nbsp;&nbsp;And&nbsp;as&nbsp;in&nbsp;a&nbsp;word&nbsp;processor,&nbsp;soft&nbsp;wrapping&nbsp;does&nbsp;not&nbsp;preclude&nbsp;the<br>
&nbsp;&nbsp;&nbsp;insertion&nbsp;of&nbsp;newlines.<br>
<br>
&nbsp;&nbsp;&nbsp;Hard&nbsp;wrapping&nbsp;is&nbsp;too&nbsp;entrenched&nbsp;into&nbsp;text&nbsp;E-Mail&nbsp;to&nbsp;fix,&nbsp;but&nbsp;we&nbsp;can<br>
&nbsp;&nbsp;&nbsp;fix&nbsp;Bugzilla&nbsp;without&nbsp;causing&nbsp;any&nbsp;problems.&nbsp;&nbsp;The&nbsp;old&nbsp;content&nbsp;will&nbsp;still<br>
&nbsp;&nbsp;&nbsp;be&nbsp;wrapped&nbsp;too&nbsp;early,&nbsp;but&nbsp;at&nbsp;least&nbsp;new&nbsp;content&nbsp;will&nbsp;work.<br>
&nbsp;&nbsp;&nbsp;</P
>
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="tinderbox.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="variants.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Tinderbox/Tinderbox2</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Bugzilla Variants and Competitors</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -4,7 +4,7 @@
>Installation General Notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="bsdinstall.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="win32.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,13 +70,17 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="geninstall">3.5. Installation General Notes</H1
NAME="geninstall"
>3.5. Installation General Notes</A
></H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN874">3.5.1. Modifying Your Running System</H2
NAME="AEN941"
>3.5.1. Modifying Your Running System</A
></H2
><P
>&#13; Bugzilla optimizes database lookups by storing all relatively static
information in the versioncache file, located in the data/ subdirectory
@@ -110,26 +111,15 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN881">3.5.2. Upgrading From Previous Versions</H2
NAME="AEN948"
>3.5.2. Upgrading From Previous Versions</A
></H2
><P
>&#13; A plain Bugzilla is fairly easy to upgrade from one version to a newer one.
However, things get a bit more complicated if you've made changes to
Bugzilla's code. In this case, you may have to re-make or reapply those
changes.
It is recommended that you take a backup of your database and your entire
Bugzilla installation before attempting an upgrade. You can upgrade a 'clean'
installation by untarring a new tarball over the old installation. If you
are upgrading from 2.12 or later, you can type <TT
CLASS="filename"
>cvs -z3
update</TT
>, and resolve conflicts if there are any.
</P
><P
>&#13; Because the developers of Bugzilla are constantly adding new tables, columns
and fields, you'll probably get SQL errors if you just update the code and
attempt to use Bugzilla. Always run the checksetup.pl script whenever
you upgrade your installation.
>&#13; 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.
</P
><P
>&#13; If you are running Bugzilla version 2.8 or lower, and wish to upgrade to
@@ -142,10 +132,12 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="htaccess">3.5.3. <TT
NAME="htaccess"
>3.5.3. <TT
CLASS="filename"
>.htaccess</TT
> files and security</H2
> files and security</A
></H2
><P
>&#13; To enhance the security of your Bugzilla installation,
Bugzilla will generate
@@ -161,9 +153,7 @@ CLASS="filename"
generate the <TT
CLASS="filename"
>.htaccess</TT
> files. These .htaccess files
will not work with Apache 1.2.x - but this has security holes, so you
shouldn't be using it anyway.
> files.
<DIV
CLASS="note"
@@ -297,10 +287,12 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="mod-throttle">3.5.4. <TT
NAME="mod-throttle"
>3.5.4. <TT
CLASS="filename"
>mod_throttle</TT
> and Security</H2
> and Security</A
></H2
><P
>&#13; It is possible for a user, by mistake or on purpose, to access
the database many times in a row which can result in very slow
@@ -331,7 +323,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="content-type">3.5.5. Preventing untrusted Bugzilla content from executing malicious Javascript code</H2
NAME="content-type"
>3.5.5. Preventing untrusted Bugzilla content from executing malicious Javascript code</A
></H2
><P
>It is possible for a Bugzilla to execute malicious
Javascript code. Due to internationalization concerns, we are
@@ -388,7 +382,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="unixhistory">3.5.6. UNIX Installation Instructions History</H2
NAME="unixhistory"
>3.5.6. UNIX Installation Instructions History</A
></H2
><P
>&#13; This document was originally adapted from the Bonsai
installation instructions by Terry Weissman
@@ -427,7 +423,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -439,7 +434,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="bsdinstall.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -448,7 +442,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -457,7 +450,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="win32.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -473,7 +465,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>PREAMBLE</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-1.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-0">0. PREAMBLE</H1
NAME="gfdl-0"
>0. PREAMBLE</A
></H1
><P
>The purpose of this License is to make a manual, textbook,
or other written document "free" in the sense of freedom: to
@@ -103,7 +102,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -115,7 +113,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -124,7 +121,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -133,7 +129,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-1.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -149,7 +144,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>APPLICABILITY AND DEFINITIONS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-0.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-2.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-1">1. APPLICABILITY AND DEFINITIONS</H1
NAME="gfdl-1"
>1. APPLICABILITY AND DEFINITIONS</A
></H1
><P
>This License applies to any manual or other work that
contains a notice placed by the copyright holder saying it can be
@@ -144,7 +143,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -156,7 +154,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-0.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -165,7 +162,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -174,7 +170,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-2.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -190,7 +185,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>FUTURE REVISIONS OF THIS LICENSE</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-9.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-howto.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-10">10. FUTURE REVISIONS OF THIS LICENSE</H1
NAME="gfdl-10"
>10. FUTURE REVISIONS OF THIS LICENSE</A
></H1
><P
>The Free Software Foundation may publish new, revised
versions of the GNU Free Documentation License from time to time.
@@ -100,7 +99,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -112,7 +110,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-9.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -121,7 +118,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -130,7 +126,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-howto.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -146,7 +141,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>VERBATIM COPYING</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-1.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-3.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-2">2. VERBATIM COPYING</H1
NAME="gfdl-2"
>2. VERBATIM COPYING</A
></H1
><P
>You may copy and distribute the Document in any medium,
either commercially or noncommercially, provided that this
@@ -94,7 +93,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -106,7 +104,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-1.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -115,7 +112,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -124,7 +120,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-3.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -140,7 +135,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>COPYING IN QUANTITY</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-2.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-4.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-3">3. COPYING IN QUANTITY</H1
NAME="gfdl-3"
>3. COPYING IN QUANTITY</A
></H1
><P
>If you publish printed copies of the Document numbering more
than 100, and the Document's license notice requires Cover Texts,
@@ -118,7 +117,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -130,7 +128,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-2.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -139,7 +136,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -148,7 +144,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-4.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -164,7 +159,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>MODIFICATIONS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-3.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-5.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-4">4. MODIFICATIONS</H1
NAME="gfdl-4"
>4. MODIFICATIONS</A
></H1
><P
>You may copy and distribute a Modified Version of the
Document under the conditions of sections 2 and 3 above, provided
@@ -224,7 +223,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -236,7 +234,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-3.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -245,7 +242,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -254,7 +250,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-5.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -270,7 +265,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>COMBINING DOCUMENTS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-4.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-6.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-5">5. COMBINING DOCUMENTS</H1
NAME="gfdl-5"
>5. COMBINING DOCUMENTS</A
></H1
><P
>You may combine the Document with other documents released
under this License, under the terms defined in section 4 above for
@@ -103,7 +102,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -115,7 +113,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-4.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -124,7 +121,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -133,7 +129,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-6.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -149,7 +144,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>COLLECTIONS OF DOCUMENTS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-5.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-7.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-6">6. COLLECTIONS OF DOCUMENTS</H1
NAME="gfdl-6"
>6. COLLECTIONS OF DOCUMENTS</A
></H1
><P
>You may make a collection consisting of the Document and
other documents released under this License, and replace the
@@ -93,7 +92,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -105,7 +103,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-5.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -114,7 +111,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -123,7 +119,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-7.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -139,7 +134,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>AGGREGATION WITH INDEPENDENT WORKS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-6.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-8.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-7">7. AGGREGATION WITH INDEPENDENT WORKS</H1
NAME="gfdl-7"
>7. AGGREGATION WITH INDEPENDENT WORKS</A
></H1
><P
>A compilation of the Document or its derivatives with other
separate and independent documents or works, in or on a volume of
@@ -97,7 +96,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -109,7 +107,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-6.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -118,7 +115,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -127,7 +123,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-8.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -143,7 +138,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>TRANSLATION</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-7.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-9.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-8">8. TRANSLATION</H1
NAME="gfdl-8"
>8. TRANSLATION</A
></H1
><P
>Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section
@@ -92,7 +91,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -104,7 +102,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-7.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -113,7 +110,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -122,7 +118,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-9.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -138,7 +133,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>TERMINATION</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-8.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-10.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-9">9. TERMINATION</H1
NAME="gfdl-9"
>9. TERMINATION</A
></H1
><P
>You may not copy, modify, sublicense, or distribute the
Document except as expressly provided for under this License. Any
@@ -89,7 +88,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -101,7 +99,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-8.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -110,7 +107,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -119,7 +115,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-10.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -135,7 +130,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>How to use this License for your documents</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-10.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="glossary.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,13 +70,17 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-howto">How to use this License for your documents</H1
NAME="gfdl-howto"
>How to use this License for your documents</A
></H1
><P
>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:</P
><A
NAME="AEN2605"><BLOCKQUOTE
NAME="AEN2673"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13; Copyright (c) YEAR YOUR NAME.
@@ -109,7 +110,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -121,7 +121,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-10.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -130,7 +129,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -139,7 +137,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="glossary.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -155,7 +152,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>GNU Free Documentation License</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="bzhacking.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-0.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="appendix"
><H1
><A
NAME="gfdl">Appendix E. GNU Free Documentation License</H1
NAME="gfdl"
>Appendix E. GNU Free Documentation License</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -142,7 +141,9 @@ HREF="gfdl-howto.html"
><P
>Version 1.1, March 2000</P
><A
NAME="AEN2515"><BLOCKQUOTE
NAME="AEN2583"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>Copyright (C) 2000 Free Software Foundation, Inc.
@@ -156,7 +157,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -168,7 +168,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="bzhacking.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -177,7 +176,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -186,7 +184,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-0.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Glossary</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -22,7 +22,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -40,7 +39,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-howto.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -62,13 +60,17 @@ WIDTH="100%"></DIV
CLASS="GLOSSARY"
><H1
><A
NAME="glossary">Glossary</H1
NAME="glossary"
>Glossary</A
></H1
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="AEN2610">0-9, high ascii</H1
NAME="AEN2678"
>0-9, high ascii</A
></H1
><DL
><DT
><B
@@ -102,7 +104,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-a">A</H1
NAME="gloss-a"
>A</A
></H1
><DL
><DT
><B
@@ -135,7 +139,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-b">B</H1
NAME="gloss-b"
>B</A
></H1
><DL
><DT
><B
@@ -206,12 +212,16 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-c"></H1
NAME="gloss-c"
></A
></H1
><DL
><DT
><A
NAME="gloss-component"><B
NAME="gloss-component"
><B
>Component</B
></A
></DT
><DD
><P
@@ -224,11 +234,13 @@ NAME="gloss-component"><B
></DD
><DT
><A
NAME="gloss-cpan"><B
NAME="gloss-cpan"
><B
><SPAN
CLASS="acronym"
>CPAN</SPAN
></B
></A
></DT
><DD
><P
@@ -256,7 +268,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-d">D</H1
NAME="gloss-d"
>D</A
></H1
><DL
><DT
><B
@@ -284,7 +298,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-g"></H1
NAME="gloss-g"
></A
></H1
><DL
><DT
><B
@@ -319,12 +335,16 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-i">I</H1
NAME="gloss-i"
>I</A
></H1
><DL
><DT
><A
NAME="gloss-infiniteloop"><B
NAME="gloss-infiniteloop"
><B
>Infinite Loop</B
></A
></DT
><DD
><P
@@ -337,7 +357,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-m">M</H1
NAME="gloss-m"
>M</A
></H1
><DL
><DT
><B
@@ -362,7 +384,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-p">P</H1
NAME="gloss-p"
>P</A
></H1
><DL
><DT
><B
@@ -378,7 +402,9 @@ NAME="gloss-p">P</H1
><DIV
CLASS="example"
><A
NAME="AEN2701"><P
NAME="AEN2769"
></A
><P
><B
>Example 1. A Sample Product</B
></P
@@ -443,7 +469,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-q">Q</H1
NAME="gloss-q"
>Q</A
></H1
><DL
><DT
><B
@@ -482,12 +510,16 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-r">R</H1
NAME="gloss-r"
>R</A
></H1
><DL
><DT
><A
NAME="gloss-recursion"><B
NAME="gloss-recursion"
><B
>Recursion</B
></A
></DT
><DD
><P
@@ -510,7 +542,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-s">S</H1
NAME="gloss-s"
>S</A
></H1
><DL
><DT
><B
@@ -573,12 +607,16 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-t">T</H1
NAME="gloss-t"
>T</A
></H1
><DL
><DT
><A
NAME="gloss-target-milestone"><B
NAME="gloss-target-milestone"
><B
>Target Milestone</B
></A
></DT
><DD
><P
@@ -602,12 +640,16 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-z">Z</H1
NAME="gloss-z"
>Z</A
></H1
><DL
><DT
><A
NAME="zarro-boogs-found"><B
NAME="zarro-boogs-found"
><B
>Zarro Boogs Found</B
></A
></DT
><DD
><P
@@ -623,7 +665,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -635,7 +676,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-howto.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -644,7 +684,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>MySQL Permissions &#38; Grant Tables</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="dbdoc.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="patches.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="granttables">C.3. MySQL Permissions &#38; Grant Tables</H1
NAME="granttables"
>C.3. MySQL Permissions &#38; Grant Tables</A
></H1
><DIV
CLASS="note"
><P
@@ -223,7 +222,7 @@ FILE,<br>
<br>
OR<br>
<br>
mysql&#62;&nbsp;GRANT&nbsp;ALL&nbsp;PRIVILEGES&nbsp;<br>
mysql&#62;&nbsp;GRANT&nbsp;ALL&nbsp;PRIVELEGES&nbsp;<br>
ON&nbsp;keystone.*<br>
TO&nbsp;&#60;$sys_dbuser&nbsp;name&#62;@localhost<br>
IDENTIFIED&nbsp;BY&nbsp;'(password)'<br>
@@ -289,7 +288,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -301,7 +299,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="dbdoc.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -310,7 +307,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -319,7 +315,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -335,7 +330,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="database.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
>The Bugzilla Guide</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="NEXT"
TITLE="About This Guide"
@@ -37,42 +37,180 @@ ALINK="#0000FF"
><DIV
CLASS="BOOK"
><A
NAME="index"><DIV
NAME="index"
></A
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="title"
><A
NAME="AEN2">The Bugzilla Guide</H1
NAME="AEN2"
>The Bugzilla Guide</A
></H1
><H3
CLASS="author"
><A
NAME="AEN5">Matthew P. Barnson</H3
NAME="AEN27"
>Matthew P. Barnson</A
></H3
><DIV
CLASS="affiliation"
><DIV
CLASS="address"
><P
CLASS="address"
>mbarnson@sisna.com</P
>barnboy@trilobyte.net</P
></DIV
></DIV
><SPAN
CLASS="collab"
><SPAN
CLASS="collabname"
>Zach Lipton</SPAN
><DIV
CLASS="affiliation"
><DIV
CLASS="address"
><P
CLASS="address"
>zach AT zachlipton DOT com</P
></DIV
></DIV
><BR></SPAN
><DIV
CLASS="revhistory"
><TABLE
WIDTH="100%"
BORDER="0"
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
COLSPAN="3"
><B
>Revision History</B
></TH
></TR
><TR
><TD
ALIGN="LEFT"
>Revision v2.11</TD
><TD
ALIGN="LEFT"
>20 December 2000</TD
><TD
ALIGN="LEFT"
>Revised by: MPB</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Converted the README, FAQ, and DATABASE information into
SGML docbook format.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 2.11.1</TD
><TD
ALIGN="LEFT"
>06 March 2001</TD
><TD
ALIGN="LEFT"
>Revised by: MPB</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>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.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 2.12.0</TD
><TD
ALIGN="LEFT"
>24 April 2001</TD
><TD
ALIGN="LEFT"
>Revised by: MPB</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>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.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 2.14.0</TD
><TD
ALIGN="LEFT"
>07 August 2001</TD
><TD
ALIGN="LEFT"
>Revised by: MPB</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Attempted to integrate relevant portions of the UNIX and
Windows installation instructions, moved some data from FAQ
to Install, removed references to README from text, added
Mac OS X install instructions, fixed a bunch
of tpyos (Mark Harig), linked text that referenced other
parts of the Guide, and nuked the old MySQL permissions
section.</TD
></TR
></TABLE
></DIV
><DIV
><DIV
CLASS="abstract"
><A
NAME="AEN12"><P
NAME="AEN39"
></A
><P
></P
><P
>&#13; This is the documentation for Bugzilla, the mozilla.org
>&#13; This is the documentation for Bugzilla, the Mozilla
bug-tracking system.
Bugzilla is an enterprise-class piece of software
that powers issue-tracking for hundreds of
organizations around the world, tracking millions of bugs.
</P
><P
>&#13; This documentation is maintained in DocBook 4.1.2 XML format.
Changes are best submitted as plain text or SGML diffs, attached
to a Bugzilla bug.
>&#13; Bugzilla is an enterprise-class set of software utilities
that, when used together, power issue-tracking for hundreds of
organizations around the world, tracking millions of bugs.
While it is easy to use and quite flexible, it is
difficult for a novice to install and maintain. Although we
have provided step-by-step directions, Bugzilla is not always
easy to get working. Please be sure the person responsible
for installing and maintaining this software is a qualified
professional for the operating system upon which you install
Bugzilla.
</P
><P
>&#13; THIS DOCUMENTATION IS MAINTAINED IN DOCBOOK 4.1.2 XML FORMAT.
IF YOU WISH TO MAKE CORRECTIONS, PLEASE MAKE THEM IN PLAIN
TEXT OR SGML DIFFS AGAINST THE SOURCE. I CANNOT ACCEPT
ADDITIONS TO THE GUIDE WRITTEN IN HTML!
</P
><P
></P
@@ -120,11 +258,21 @@ HREF="credits.html"
></DT
><DT
>1.6. <A
HREF="contributors.html"
>Contributors</A
></DT
><DT
>1.7. <A
HREF="feedback.html"
>Feedback</A
></DT
><DT
>1.8. <A
HREF="translations.html"
>Translations</A
></DT
><DT
>1.7. <A
>1.9. <A
HREF="conventions.html"
>Document Conventions</A
></DT
@@ -152,11 +300,87 @@ HREF="why.html"
HREF="how.html"
>How do I use Bugzilla?</A
></DT
><DD
><DL
><DT
>2.3.1. <A
HREF="how.html#myaccount"
>Create a Bugzilla Account</A
></DT
><DT
>2.3.2. <A
HREF="how.html#query"
>The Bugzilla Query Page</A
></DT
><DT
>2.3.3. <A
HREF="how.html#bugreports"
>Creating and Managing Bug Reports</A
></DT
><DD
><DL
><DT
>2.3.3.1. <A
HREF="how.html#bug-writing"
>Writing a Great Bug Report</A
></DT
><DT
>2.3.3.2. <A
HREF="how.html#bug-manage"
>Managing your Bug Reports</A
></DT
></DL
></DD
></DL
></DD
><DT
>2.4. <A
HREF="init4me.html"
>Where can I find my user preferences?</A
></DT
><DD
><DL
><DT
>2.4.1. <A
HREF="init4me.html#accountsettings"
>Account Settings</A
></DT
><DT
>2.4.2. <A
HREF="init4me.html#emailsettings"
>Email Settings</A
></DT
><DD
><DL
><DT
>2.4.2.1. <A
HREF="init4me.html#notification"
>Email Notification</A
></DT
><DT
>2.4.2.2. <A
HREF="init4me.html#newemailtech"
>New Email Technology</A
></DT
><DT
>2.4.2.3. <A
HREF="init4me.html#watchsettings"
>"Watching" Users</A
></DT
></DL
></DD
><DT
>2.4.3. <A
HREF="init4me.html#footersettings"
>Page Footer</A
></DT
><DT
>2.4.4. <A
HREF="init4me.html#permissionsettings"
>Permissions</A
></DT
></DL
></DD
><DT
>2.5. <A
HREF="usingbz-conc.html"
@@ -181,6 +405,108 @@ HREF="errata.html"
HREF="stepbystep.html"
>Step-by-step Install</A
></DT
><DD
><DL
><DT
>3.2.1. <A
HREF="stepbystep.html#AEN509"
>Introduction</A
></DT
><DT
>3.2.2. <A
HREF="stepbystep.html#AEN515"
>Installing the Prerequisites</A
></DT
><DT
>3.2.3. <A
HREF="stepbystep.html#install-mysql"
>Installing MySQL Database</A
></DT
><DT
>3.2.4. <A
HREF="stepbystep.html#install-perl"
>Perl (5.004 or greater)</A
></DT
><DT
>3.2.5. <A
HREF="stepbystep.html#AEN602"
>DBI Perl Module</A
></DT
><DT
>3.2.6. <A
HREF="stepbystep.html#AEN640"
>Data::Dumper Perl Module</A
></DT
><DT
>3.2.7. <A
HREF="stepbystep.html#AEN645"
>MySQL related Perl Module Collection</A
></DT
><DT
>3.2.8. <A
HREF="stepbystep.html#AEN654"
>TimeDate Perl Module Collection</A
></DT
><DT
>3.2.9. <A
HREF="stepbystep.html#AEN658"
>GD Perl Module (1.8.3)</A
></DT
><DT
>3.2.10. <A
HREF="stepbystep.html#AEN667"
>Chart::Base Perl Module (0.99c)</A
></DT
><DT
>3.2.11. <A
HREF="stepbystep.html#AEN671"
>DB_File Perl Module</A
></DT
><DT
>3.2.12. <A
HREF="stepbystep.html#AEN674"
>HTTP Server</A
></DT
><DT
>3.2.13. <A
HREF="stepbystep.html#AEN692"
>Installing the Bugzilla Files</A
></DT
><DT
>3.2.14. <A
HREF="stepbystep.html#AEN721"
>Setting Up the MySQL Database</A
></DT
><DT
>3.2.15. <A
HREF="stepbystep.html#AEN768"
>Tweaking <TT
CLASS="filename"
>localconfig</TT
></A
></DT
><DT
>3.2.16. <A
HREF="stepbystep.html#AEN806"
>Setting Up Maintainers Manually (Optional)</A
></DT
><DT
>3.2.17. <A
HREF="stepbystep.html#AEN817"
>The Whining Cron (Optional)</A
></DT
><DT
>3.2.18. <A
HREF="stepbystep.html#AEN827"
>Bug Graphs (Optional)</A
></DT
><DT
>3.2.19. <A
HREF="stepbystep.html#AEN839"
>Securing MySQL</A
></DT
></DL
></DD
><DT
>3.3. <A
HREF="osx.html"
@@ -196,11 +522,70 @@ HREF="bsdinstall.html"
HREF="geninstall.html"
>Installation General Notes</A
></DT
><DD
><DL
><DT
>3.5.1. <A
HREF="geninstall.html#AEN941"
>Modifying Your Running System</A
></DT
><DT
>3.5.2. <A
HREF="geninstall.html#AEN948"
>Upgrading From Previous Versions</A
></DT
><DT
>3.5.3. <A
HREF="geninstall.html#htaccess"
><TT
CLASS="filename"
>.htaccess</TT
> files and security</A
></DT
><DT
>3.5.4. <A
HREF="geninstall.html#mod-throttle"
><TT
CLASS="filename"
>mod_throttle</TT
> and Security</A
></DT
><DT
>3.5.5. <A
HREF="geninstall.html#content-type"
>Preventing untrusted Bugzilla content from executing malicious Javascript code</A
></DT
><DT
>3.5.6. <A
HREF="geninstall.html#unixhistory"
>UNIX Installation Instructions History</A
></DT
></DL
></DD
><DT
>3.6. <A
HREF="win32.html"
>Win32 Installation Notes</A
></DT
><DD
><DL
><DT
>3.6.1. <A
HREF="win32.html#wininstall"
>Win32 Installation: Step-by-step</A
></DT
><DT
>3.6.2. <A
HREF="win32.html#addlwintips"
>Additional Windows Tips</A
></DT
><DT
>3.6.3. <A
HREF="win32.html#bzldap"
>Bugzilla LDAP Integration</A
></DT
></DL
></DD
></DL
></DD
><DT
@@ -220,12 +605,84 @@ HREF="postinstall-check.html"
HREF="useradmin.html"
>User Administration</A
></DT
><DD
><DL
><DT
>4.2.1. <A
HREF="useradmin.html#defaultuser"
>Creating the Default User</A
></DT
><DT
>4.2.2. <A
HREF="useradmin.html#manageusers"
>Managing Other Users</A
></DT
><DD
><DL
><DT
>4.2.2.1. <A
HREF="useradmin.html#login"
>Logging In</A
></DT
><DT
>4.2.2.2. <A
HREF="useradmin.html#createnewusers"
>Creating new users</A
></DT
><DT
>4.2.2.3. <A
HREF="useradmin.html#disableusers"
>Disabling Users</A
></DT
><DT
>4.2.2.4. <A
HREF="useradmin.html#modifyusers"
>Modifying Users</A
></DT
></DL
></DD
></DL
></DD
><DT
>4.3. <A
HREF="programadmin.html"
>Product, Component, Milestone, and Version
Administration</A
></DT
><DD
><DL
><DT
>4.3.1. <A
HREF="programadmin.html#products"
>Products</A
></DT
><DT
>4.3.2. <A
HREF="programadmin.html#components"
>Components</A
></DT
><DT
>4.3.3. <A
HREF="programadmin.html#versions"
>Versions</A
></DT
><DT
>4.3.4. <A
HREF="programadmin.html#milestones"
>Milestones</A
></DT
><DT
>4.3.5. <A
HREF="programadmin.html#voting"
>Voting</A
></DT
><DT
>4.3.6. <A
HREF="programadmin.html#groups"
>Groups and Group Security</A
></DT
></DL
></DD
><DT
>4.4. <A
HREF="security.html"
@@ -264,38 +721,43 @@ HREF="tinderbox.html"
></DD
><DT
>6. <A
HREF="future.html"
>The Future of Bugzilla</A
></DT
><DT
>7. <A
HREF="variants.html"
>Bugzilla Variants and Competitors</A
></DT
><DD
><DL
><DT
>6.1. <A
>7.1. <A
HREF="rhbugzilla.html"
>Red Hat Bugzilla</A
></DT
><DT
>6.2. <A
>7.2. <A
HREF="variant-fenris.html"
>Loki Bugzilla (Fenris)</A
></DT
><DT
>6.3. <A
>7.3. <A
HREF="variant-issuezilla.html"
>Issuezilla</A
></DT
><DT
>6.4. <A
>7.4. <A
HREF="variant-scarab.html"
>Scarab</A
></DT
><DT
>6.5. <A
>7.5. <A
HREF="variant-perforce.html"
>Perforce SCM</A
></DT
><DT
>6.6. <A
>7.6. <A
HREF="variant-sourceforge.html"
>SourceForge</A
></DT
@@ -328,6 +790,24 @@ HREF="dbschema.html"
HREF="dbdoc.html"
>MySQL Bugzilla Database Introduction</A
></DT
><DD
><DL
><DT
>C.2.1. <A
HREF="dbdoc.html#AEN2340"
>Bugzilla Database Basics</A
></DT
><DD
><DL
><DT
>C.2.1.1. <A
HREF="dbdoc.html#AEN2369"
>Bugzilla Database Tables</A
></DT
></DL
></DD
></DL
></DD
><DT
>C.3. <A
HREF="granttables.html"
@@ -370,6 +850,20 @@ HREF="quicksearch.html"
HREF="bzhacking.html"
>Hacking Bugzilla</A
></DT
><DD
><DL
><DT
>D.5.1. <A
HREF="bzhacking.html#AEN2504"
>Things that have caused problems and should be avoided</A
></DT
><DT
>D.5.2. <A
HREF="bzhacking.html#AEN2518"
>Coding Style for Bugzilla</A
></DT
></DL
></DD
></DL
></DD
><DT
@@ -457,75 +951,79 @@ CLASS="LOT"
>List of Examples</B
></DT
><DT
>2-1. <A
HREF="how.html#AEN307"
>Some Famous Software Versions</A
></DT
><DT
>2-2. <A
HREF="how.html#AEN317"
>Mozilla's Bugzilla Components</A
></DT
><DT
>3-1. <A
HREF="stepbystep.html#AEN641"
HREF="stepbystep.html#AEN708"
>Setting up bonsaitools symlink</A
></DT
><DT
>3-2. <A
HREF="stepbystep.html#AEN732"
HREF="stepbystep.html#AEN799"
>Running checksetup.pl as the web user</A
></DT
><DT
>3-3. <A
HREF="win32.html#AEN985"
HREF="win32.html#AEN1048"
>Installing ActivePerl ppd Modules on Microsoft Windows</A
></DT
><DT
>3-4. <A
HREF="win32.html#AEN998"
>Installing OpenInteract ppd Modules manually on Microsoft
Windows</A
></DT
><DT
>3-5. <A
HREF="win32.html#AEN1180"
HREF="win32.html#AEN1233"
>Removing encrypt() for Windows NT Bugzilla version
2.12 or earlier</A
></DT
><DT
>4-1. <A
HREF="programadmin.html#AEN1405"
HREF="programadmin.html#AEN1470"
>Creating some Components</A
></DT
><DT
>4-2. <A
HREF="programadmin.html#AEN1434"
HREF="programadmin.html#AEN1499"
>Common Use of Versions</A
></DT
><DT
>4-3. <A
HREF="programadmin.html#AEN1438"
HREF="programadmin.html#AEN1503"
>A Different Use of Versions</A
></DT
><DT
>4-4. <A
HREF="programadmin.html#AEN1466"
HREF="programadmin.html#AEN1531"
>Using SortKey with Target Milestone</A
></DT
><DT
>4-5. <A
HREF="programadmin.html#AEN1502"
HREF="programadmin.html#AEN1567"
>When to Use Group Security</A
></DT
><DT
>4-6. <A
HREF="programadmin.html#AEN1519"
HREF="programadmin.html#AEN1584"
>Creating a New Group</A
></DT
><DT
>4-7. <A
HREF="programadmin.html#AEN1536"
HREF="programadmin.html#AEN1601"
>Bugzilla Groups</A
></DT
><DT
>D-1. <A
HREF="setperl.html#AEN2380"
HREF="setperl.html#AEN2448"
>Using Setperl to set your perl path</A
></DT
><DT
>1. <A
HREF="glossary.html#AEN2701"
HREF="glossary.html#AEN2769"
>A Sample Product</A
></DT
></DL
@@ -536,7 +1034,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -558,7 +1055,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Where can I find my user preferences?</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="how.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="usingbz-conc.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="init4me">2.4. Where can I find my user preferences?</H1
NAME="init4me"
>2.4. Where can I find my user preferences?</A
></H1
><TABLE
BORDER="0"
WIDTH="100%"
@@ -116,7 +115,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="accountsettings">2.4.1. Account Settings</H2
NAME="accountsettings"
>2.4.1. Account Settings</A
></H2
><P
>&#13; On this page, you can change your basic Account Settings,
including your password and full name. For security reasons,
@@ -149,13 +150,17 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="emailsettings">2.4.2. Email Settings</H2
NAME="emailsettings"
>2.4.2. Email Settings</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="notification">2.4.2.1. Email Notification</H3
NAME="notification"
>2.4.2.1. Email Notification</A
></H3
><P
>&#13; Here you can reduce or increase the amount of email sent you
from Bugzilla. Although this is referred to as
@@ -187,7 +192,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="newemailtech">2.4.2.2. New Email Technology</H3
NAME="newemailtech"
>2.4.2.2. New Email Technology</A
></H3
><DIV
CLASS="note"
><P
@@ -240,7 +247,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="watchsettings">2.4.2.3. "Watching" Users</H3
NAME="watchsettings"
>2.4.2.3. "Watching" Users</A
></H3
><DIV
CLASS="note"
><P
@@ -289,7 +298,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="footersettings">2.4.3. Page Footer</H2
NAME="footersettings"
>2.4.3. Page Footer</A
></H2
><DIV
CLASS="note"
><P
@@ -373,7 +384,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="permissionsettings">2.4.4. Permissions</H2
NAME="permissionsettings"
>2.4.4. Permissions</A
></H2
><P
>&#13; This is a purely informative page which outlines your current
permissions on this installation of Bugzilla. If you have
@@ -389,7 +402,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -401,7 +413,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="how.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -410,7 +421,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -419,7 +429,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="usingbz-conc.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -435,7 +444,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Installation</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="usingbz-conc.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="errata.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="installation">Chapter 3. Installation</H1
NAME="installation"
>Chapter 3. Installation</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -91,12 +90,12 @@ HREF="stepbystep.html"
><DL
><DT
>3.2.1. <A
HREF="stepbystep.html#AEN441"
HREF="stepbystep.html#AEN509"
>Introduction</A
></DT
><DT
>3.2.2. <A
HREF="stepbystep.html#AEN447"
HREF="stepbystep.html#AEN515"
>Installing the Prerequisites</A
></DT
><DT
@@ -111,57 +110,57 @@ HREF="stepbystep.html#install-perl"
></DT
><DT
>3.2.5. <A
HREF="stepbystep.html#AEN534"
HREF="stepbystep.html#AEN602"
>DBI Perl Module</A
></DT
><DT
>3.2.6. <A
HREF="stepbystep.html#AEN572"
HREF="stepbystep.html#AEN640"
>Data::Dumper Perl Module</A
></DT
><DT
>3.2.7. <A
HREF="stepbystep.html#AEN577"
HREF="stepbystep.html#AEN645"
>MySQL related Perl Module Collection</A
></DT
><DT
>3.2.8. <A
HREF="stepbystep.html#AEN586"
HREF="stepbystep.html#AEN654"
>TimeDate Perl Module Collection</A
></DT
><DT
>3.2.9. <A
HREF="stepbystep.html#AEN590"
HREF="stepbystep.html#AEN658"
>GD Perl Module (1.8.3)</A
></DT
><DT
>3.2.10. <A
HREF="stepbystep.html#AEN599"
HREF="stepbystep.html#AEN667"
>Chart::Base Perl Module (0.99c)</A
></DT
><DT
>3.2.11. <A
HREF="stepbystep.html#AEN603"
HREF="stepbystep.html#AEN671"
>DB_File Perl Module</A
></DT
><DT
>3.2.12. <A
HREF="stepbystep.html#AEN606"
HREF="stepbystep.html#AEN674"
>HTTP Server</A
></DT
><DT
>3.2.13. <A
HREF="stepbystep.html#AEN625"
HREF="stepbystep.html#AEN692"
>Installing the Bugzilla Files</A
></DT
><DT
>3.2.14. <A
HREF="stepbystep.html#AEN654"
HREF="stepbystep.html#AEN721"
>Setting Up the MySQL Database</A
></DT
><DT
>3.2.15. <A
HREF="stepbystep.html#AEN701"
HREF="stepbystep.html#AEN768"
>Tweaking <TT
CLASS="filename"
>localconfig</TT
@@ -169,22 +168,22 @@ CLASS="filename"
></DT
><DT
>3.2.16. <A
HREF="stepbystep.html#AEN739"
HREF="stepbystep.html#AEN806"
>Setting Up Maintainers Manually (Optional)</A
></DT
><DT
>3.2.17. <A
HREF="stepbystep.html#AEN750"
HREF="stepbystep.html#AEN817"
>The Whining Cron (Optional)</A
></DT
><DT
>3.2.18. <A
HREF="stepbystep.html#AEN760"
HREF="stepbystep.html#AEN827"
>Bug Graphs (Optional)</A
></DT
><DT
>3.2.19. <A
HREF="stepbystep.html#AEN772"
HREF="stepbystep.html#AEN839"
>Securing MySQL</A
></DT
></DL
@@ -208,12 +207,12 @@ HREF="geninstall.html"
><DL
><DT
>3.5.1. <A
HREF="geninstall.html#AEN874"
HREF="geninstall.html#AEN941"
>Modifying Your Running System</A
></DT
><DT
>3.5.2. <A
HREF="geninstall.html#AEN881"
HREF="geninstall.html#AEN948"
>Upgrading From Previous Versions</A
></DT
><DT
@@ -283,7 +282,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -295,7 +293,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="usingbz-conc.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -304,7 +301,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -313,7 +309,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="errata.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Integrating Bugzilla with Third-Party Tools</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="security.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="bonsai.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="integration">Chapter 5. Integrating Bugzilla with Third-Party Tools</H1
NAME="integration"
>Chapter 5. Integrating Bugzilla with Third-Party Tools</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -105,7 +104,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -117,7 +115,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="security.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -126,7 +123,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -135,7 +131,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="bonsai.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>New Versions</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="disclaimer.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="credits.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,9 +70,11 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="newversions">1.4. New Versions</H1
NAME="newversions"
>1.4. New Versions</A
></H1
><P
>&#13; This is the 2.16 version of The Bugzilla Guide. If you are
>&#13; This is the 2.14 version of The Bugzilla Guide. If you are
reading this from any source other than those below, please
check one of these mirrors to make sure you are reading an
up-to-date version of the Guide.
@@ -90,9 +89,18 @@ NAME="newversions">1.4. New Versions</H1
><LI
><P
>&#13; <A
HREF="http://www.bugzilla.org/"
HREF="http://www.trilobyte.net/barnsons/"
TARGET="_top"
>bugzilla.org</A
>TriloBYTE</A
>
</P
></LI
><LI
><P
>&#13; <A
HREF="http://www.mozilla.org/projects/bugzilla/"
TARGET="_top"
>Mozilla.org</A
>
</P
></LI
@@ -115,10 +123,7 @@ TARGET="_top"
HREF="http://www.mozilla.org/cvs.html"
TARGET="_top"
>the Mozilla CVS page</A
>, and check out the <TT
CLASS="filename"
>mozilla/webtools/bugzilla/docs/</TT
> branch.
>, and check out the mozilla/webtools/bugzilla/docs/ branch.
</P
></DIV
><DIV
@@ -126,7 +131,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -138,7 +142,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="disclaimer.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -147,7 +150,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -156,7 +158,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="credits.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -172,7 +173,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Mac OS X Installation Notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="stepbystep.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="bsdinstall.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="osx">3.3. Mac OS X Installation Notes</H1
NAME="osx"
>3.3. Mac OS X Installation Notes</A
></H1
><P
>&#13; There are a lot of common libraries and utilities out there
that Apple did not include with Mac OS X, but which run
@@ -234,7 +233,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -246,7 +244,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="stepbystep.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -255,7 +252,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -264,7 +260,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="bsdinstall.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -280,7 +275,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Useful Patches and Utilities for Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="granttables.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="rewrite.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="appendix"
><H1
><A
NAME="patches">Appendix D. Useful Patches and Utilities for Bugzilla</H1
NAME="patches"
>Appendix D. Useful Patches and Utilities for Bugzilla</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -109,12 +108,12 @@ HREF="bzhacking.html"
><DL
><DT
>D.5.1. <A
HREF="bzhacking.html#AEN2436"
HREF="bzhacking.html#AEN2504"
>Things that have caused problems and should be avoided</A
></DT
><DT
>D.5.2. <A
HREF="bzhacking.html#AEN2450"
HREF="bzhacking.html#AEN2518"
>Coding Style for Bugzilla</A
></DT
></DL
@@ -129,7 +128,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -141,7 +139,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="granttables.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -150,7 +147,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -159,7 +155,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="rewrite.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Post-Installation Checklist</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="administration.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="useradmin.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="postinstall-check">4.1. Post-Installation Checklist</H1
NAME="postinstall-check"
>4.1. Post-Installation Checklist</A
></H1
><P
>&#13; After installation, follow the checklist below to help ensure
that you have a successful installation. If you do not see a
@@ -475,7 +474,7 @@ CLASS="QUOTE"
> would not normally be
allowed to view a bug, the watcher cannot get around the
system by setting herself up to watch the bugs of someone
with bugs outside her privileges. She would still only
with bugs outside her priveleges. She would still only
receive email updates for those bugs she could normally
view.</P
><P
@@ -503,7 +502,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -515,7 +513,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -524,7 +521,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -533,7 +529,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="useradmin.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -549,7 +544,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -5,7 +5,7 @@
Administration</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -29,7 +29,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -47,7 +46,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="useradmin.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -61,7 +59,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="security.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -74,8 +71,10 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="programadmin">4.3. Product, Component, Milestone, and Version
Administration</H1
NAME="programadmin"
>4.3. Product, Component, Milestone, and Version
Administration</A
></H1
><TABLE
BORDER="0"
WIDTH="100%"
@@ -104,7 +103,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="products">4.3.1. Products</H2
NAME="products"
>4.3.1. Products</A
></H2
><FONT
COLOR="RED"
>Formerly, and in some spots still, called
@@ -222,21 +223,27 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="components">4.3.2. Components</H2
NAME="components"
>4.3.2. Components</A
></H2
><P
>&#13; Components are subsections of a Product.
<DIV
CLASS="example"
><A
NAME="AEN1405"><P
NAME="AEN1470"
></A
><P
><B
>Example 4-1. Creating some Components</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1407"><P
NAME="AEN1472"
></A
><P
></P
><P
>&#13; The computer game you are designing may have a "UI"
@@ -369,7 +376,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="versions">4.3.3. Versions</H2
NAME="versions"
>4.3.3. Versions</A
></H2
><P
>&#13; Versions are the revisions of the product, such as "Flinders
3.1", "Flinders 95", and "Flinders 2000". Using Versions
@@ -378,14 +387,18 @@ NAME="versions">4.3.3. Versions</H2
<DIV
CLASS="example"
><A
NAME="AEN1434"><P
NAME="AEN1499"
></A
><P
><B
>Example 4-2. Common Use of Versions</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1436"><P
NAME="AEN1501"
></A
><P
></P
><P
>&#13; A user reports a bug against Version "Beta 2.0" of your
@@ -405,14 +418,18 @@ NAME="AEN1436"><P
<DIV
CLASS="example"
><A
NAME="AEN1438"><P
NAME="AEN1503"
></A
><P
><B
>Example 4-3. A Different Use of Versions</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1440"><P
NAME="AEN1505"
></A
><P
></P
><P
>&#13; This field has been used to good effect by an online
@@ -479,7 +496,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="milestones">4.3.4. Milestones</H2
NAME="milestones"
>4.3.4. Milestones</A
></H2
><P
>&#13; 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
@@ -545,14 +564,18 @@ TYPE="1"
><DIV
CLASS="example"
><A
NAME="AEN1466"><P
NAME="AEN1531"
></A
><P
><B
>Example 4-4. Using SortKey with Target Milestone</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1468"><P
NAME="AEN1533"
></A
><P
></P
><P
>&#13; Let's say you create a target milestone called
@@ -643,7 +666,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="voting">4.3.5. Voting</H2
NAME="voting"
>4.3.5. Voting</A
></H2
><P
>&#13; The concept of "voting" is a poorly understood, yet powerful
feature for the management of open-source projects. Each user
@@ -750,7 +775,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="groups">4.3.6. Groups and Group Security</H2
NAME="groups"
>4.3.6. Groups and Group Security</A
></H2
><P
>&#13; Groups can be very useful in bugzilla, because they allow
users to isolate bugs or products that should only be seen by
@@ -760,14 +787,18 @@ NAME="groups">4.3.6. Groups and Group Security</H2
<DIV
CLASS="example"
><A
NAME="AEN1502"><P
NAME="AEN1567"
></A
><P
><B
>Example 4-5. When to Use Group Security</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1504"><P
NAME="AEN1569"
></A
><P
></P
><P
>&#13; Many Bugzilla sites isolate "Security-related" bugs from
@@ -882,14 +913,18 @@ TYPE="1"
<DIV
CLASS="example"
><A
NAME="AEN1519"><P
NAME="AEN1584"
></A
><P
><B
>Example 4-6. Creating a New Group</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1521"><P
NAME="AEN1586"
></A
><P
></P
><P
>&#13; I created a group called DefaultGroup with a
@@ -1013,7 +1048,9 @@ VALIGN="TOP"
<DIV
CLASS="example"
><A
NAME="AEN1536"><P
NAME="AEN1601"
></A
><P
><B
>Example 4-7. Bugzilla Groups</B
></P
@@ -1103,7 +1140,7 @@ because&nbsp;he&nbsp;is&nbsp;not&nbsp;in&nbsp;Group3.<br>
<br>
Bug7&nbsp;can&nbsp;be&nbsp;seen&nbsp;by&nbsp;anyone&nbsp;who&nbsp;is&nbsp;in&nbsp;Group1,&nbsp;Group2,&nbsp;and&nbsp;Group3.&nbsp;&nbsp;This<br>
is&nbsp;only&nbsp;User4.&nbsp;&nbsp;All&nbsp;of&nbsp;the&nbsp;others&nbsp;are&nbsp;missing&nbsp;at&nbsp;least&nbsp;one&nbsp;of&nbsp;those<br>
group&nbsp;privileges,&nbsp;and&nbsp;thus&nbsp;cannot&nbsp;see&nbsp;the&nbsp;bug.<br>
group&nbsp;priveleges,&nbsp;and&nbsp;thus&nbsp;cannot&nbsp;see&nbsp;the&nbsp;bug.<br>
<br>
Bug8&nbsp;can&nbsp;be&nbsp;seen&nbsp;by&nbsp;anyone&nbsp;who&nbsp;is&nbsp;in&nbsp;Group1,&nbsp;Group2,&nbsp;Group3,&nbsp;and<br>
Group4.&nbsp;&nbsp;There&nbsp;is&nbsp;nobody&nbsp;in&nbsp;all&nbsp;four&nbsp;of&nbsp;these&nbsp;groups,&nbsp;so&nbsp;nobody&nbsp;can<br>
@@ -1120,7 +1157,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -1132,7 +1168,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="useradmin.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -1141,7 +1176,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -1150,7 +1184,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="security.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -1166,7 +1199,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>The Quicksearch Utility</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="cmdline.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="bzhacking.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="quicksearch">D.4. The Quicksearch Utility</H1
NAME="quicksearch"
>D.4. The Quicksearch Utility</A
></H1
><P
>&#13; Quicksearch is a new, experimental feature of the 2.12 release.
It consist of two Javascript files, "quicksearch.js" and
@@ -135,7 +134,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -147,7 +145,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="cmdline.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -156,7 +153,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -165,7 +161,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="bzhacking.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -181,7 +176,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Apache mod_rewrite magic</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="patches.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="setperl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,10 +70,12 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="rewrite">D.1. Apache <TT
NAME="rewrite"
>D.1. Apache <TT
CLASS="filename"
>mod_rewrite</TT
> magic</H1
> magic</A
></H1
><P
>Apache's <TT
CLASS="filename"
@@ -137,7 +136,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -149,7 +147,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -158,7 +155,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -167,7 +163,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="setperl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -183,7 +178,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Red Hat Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="variants.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variant-fenris.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="rhbugzilla">6.1. Red Hat Bugzilla</H1
NAME="rhbugzilla"
>7.1. Red Hat Bugzilla</A
></H1
><P
>&#13; Red Hat Bugzilla is probably the most popular Bugzilla variant
on the planet. One of the major benefits of Red Hat Bugzilla is
@@ -95,7 +94,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -107,7 +105,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -116,7 +113,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -125,7 +121,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="variant-fenris.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -141,7 +136,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Perforce SCM</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="cvs.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="tinderbox.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="scm">5.3. Perforce SCM</H1
NAME="scm"
>5.3. Perforce SCM</A
></H1
><P
>&#13; You can find the project page for Bugzilla and Teamtrack
Perforce integration (p4dti) at: <A
@@ -104,7 +103,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -116,7 +114,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="cvs.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -125,7 +122,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -134,7 +130,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="tinderbox.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -150,7 +145,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Bugzilla Security</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -29,7 +29,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -47,7 +46,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="programadmin.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -61,7 +59,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="integration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -74,7 +71,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="security">4.4. Bugzilla Security</H1
NAME="security"
>4.4. Bugzilla Security</A
></H1
><TABLE
BORDER="0"
WIDTH="100%"
@@ -323,45 +322,6 @@ TARGET="_top"
></TABLE
></DIV
><P
>&#13; When you run checksetup.pl, the script will attempt to modify various
permissions on files which Bugzilla uses. If you do not have a
webservergroup set in the localconfig file, then Bugzilla will have to
make certain files world readable and/or writable. <EM
>THIS IS
INSECURE!</EM
>. This means that anyone who can get access to
your system can do whatever they want to your Bugzilla installation.
</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13; This also means that if your webserver runs all cgi scripts as the
same user/group, anyone on the system who can run cgi scripts will
be able to take control of your Bugzilla installation.
</P
></TD
></TR
></TABLE
></DIV
><P
>&#13; On Apache, you can use .htaccess files to protect access
to these directories, as outlined in <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=57161"
@@ -415,7 +375,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -427,7 +386,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="programadmin.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -436,7 +394,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -445,7 +402,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -462,7 +418,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>The setperl.csh Utility</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="rewrite.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="cmdline.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="setperl">D.2. The setperl.csh Utility</H1
NAME="setperl"
>D.2. The setperl.csh Utility</A
></H1
><P
> You can use the "setperl.csh" utility to quickly and
easily change the path to perl on all your Bugzilla files. This
@@ -217,7 +216,9 @@ CLASS="command"
<DIV
CLASS="example"
><A
NAME="AEN2380"><P
NAME="AEN2448"
></A
><P
><B
>Example D-1. Using Setperl to set your perl path</B
></P
@@ -247,7 +248,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -259,7 +259,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="rewrite.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -268,7 +267,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -277,7 +275,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="cmdline.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -296,7 +293,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Step-by-step Install</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="errata.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="osx.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,13 +70,17 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="stepbystep">3.2. Step-by-step Install</H1
NAME="stepbystep"
>3.2. Step-by-step Install</A
></H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN441">3.2.1. Introduction</H2
NAME="AEN509"
>3.2.1. Introduction</A
></H2
><P
>&#13; Installation of bugzilla is pretty straightforward, particularly if your
machine already has MySQL and the MySQL-related perl packages installed.
@@ -108,7 +109,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN447">3.2.2. Installing the Prerequisites</H2
NAME="AEN515"
>3.2.2. Installing the Prerequisites</A
></H2
><DIV
CLASS="note"
><P
@@ -358,7 +361,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="install-mysql">3.2.3. Installing MySQL Database</H2
NAME="install-mysql"
>3.2.3. Installing MySQL Database</A
></H2
><P
>&#13; Visit MySQL homepage at <A
HREF="http://www.mysql.com"
@@ -473,7 +478,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="install-perl">3.2.4. Perl (5.004 or greater)</H2
NAME="install-perl"
>3.2.4. Perl (5.004 or greater)</A
></H2
><P
>&#13; Any machine that doesn't have perl on it is a sad machine
indeed. Perl for *nix systems can be gotten in source form
@@ -538,7 +545,9 @@ CLASS="QUOTE"
><DIV
CLASS="tip"
><A
NAME="bundlebugzilla"><P
NAME="bundlebugzilla"
></A
><P
></P
><TABLE
CLASS="tip"
@@ -604,7 +613,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN534">3.2.5. DBI Perl Module</H2
NAME="AEN602"
>3.2.5. DBI Perl Module</A
></H2
><P
>&#13; 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
@@ -631,7 +642,9 @@ HREF="downloadlinks.html"
<DIV
CLASS="informalexample"
><A
NAME="AEN541"><P
NAME="AEN609"
></A
><P
></P
><P
>&#13; <TT
@@ -683,7 +696,9 @@ VALIGN="TOP"
<DIV
CLASS="informalexample"
><A
NAME="AEN548"><P
NAME="AEN616"
></A
><P
></P
><P
>&#13; Untar the module tarball -- it should create its own directory
@@ -774,7 +789,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN572">3.2.6. Data::Dumper Perl Module</H2
NAME="AEN640"
>3.2.6. Data::Dumper Perl Module</A
></H2
><P
>&#13; The Data::Dumper module provides data structure persistence for Perl
(similar to Java's serialization). It comes with later sub-releases of
@@ -797,7 +814,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN577">3.2.7. MySQL related Perl Module Collection</H2
NAME="AEN645"
>3.2.7. MySQL related Perl Module Collection</A
></H2
><P
>&#13; The Perl/MySQL interface requires a few mutually-dependent perl
modules. These modules are grouped together into the the
@@ -841,7 +860,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN586">3.2.8. TimeDate Perl Module Collection</H2
NAME="AEN654"
>3.2.8. TimeDate Perl Module Collection</A
></H2
><P
>&#13; Many of the more common date/time/calendar related Perl
modules have been grouped into a bundle similar to the MySQL
@@ -861,7 +882,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN590">3.2.9. GD Perl Module (1.8.3)</H2
NAME="AEN658"
>3.2.9. GD Perl Module (1.8.3)</A
></H2
><P
>&#13; The GD library was written by Thomas Boutell a long while
ago to programatically generate images in C. Since then it's
@@ -925,7 +948,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN599">3.2.10. Chart::Base Perl Module (0.99c)</H2
NAME="AEN667"
>3.2.10. Chart::Base Perl Module (0.99c)</A
></H2
><P
>&#13; The Chart module provides bugzilla with on-the-fly charting
abilities. It can be installed in the usual fashion after it
@@ -944,7 +969,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN603">3.2.11. DB_File Perl Module</H2
NAME="AEN671"
>3.2.11. DB_File Perl Module</A
></H2
><P
>&#13; DB_File is a module which allows Perl programs to make use
of the facilities provided by Berkeley DB version 1.x. This
@@ -958,7 +985,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN606">3.2.12. HTTP Server</H2
NAME="AEN674"
>3.2.12. HTTP Server</A
></H2
><P
>&#13; You have a freedom of choice here - Apache, Netscape or any
other server on UNIX would do. You can easily run the web
@@ -1037,7 +1066,6 @@ COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;Options ExecCGI
AllowOverride Limit
</PRE
></FONT
></TD
@@ -1068,10 +1096,6 @@ ALT="Note"></TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13; AllowOverride Limit allows the use of a Deny statement in the
.htaccess file generated by checksetup.pl
</P
><P
>&#13; Users of newer versions of Apache will generally find both
of the above lines will be in the httpd.conf file, rather
than srm.conf or access.conf.
@@ -1133,7 +1157,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN625">3.2.13. Installing the Bugzilla Files</H2
NAME="AEN692"
>3.2.13. Installing the Bugzilla Files</A
></H2
><P
>&#13; You should untar the Bugzilla files into a directory that
you're willing to make writable by the default web server user
@@ -1222,7 +1248,9 @@ HREF="patches.html"
<DIV
CLASS="example"
><A
NAME="AEN641"><P
NAME="AEN708"
></A
><P
><B
>Example 3-1. Setting up bonsaitools symlink</B
></P
@@ -1277,8 +1305,7 @@ WIDTH="100%"
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;perl -pi -e 's@#\!/usr/bonsaitools/bin/perl@#\!/usr/bin/perl@' *cgi *pl Bug.pm
processmail syncshadowdb
>&#13;perl -pi -e 's@#!/usr/bonsaitools/bin/perl@#!/usr/bin/perl@' *cgi *pl Bug.pm
</PRE
></FONT
></TD
@@ -1332,7 +1359,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN654">3.2.14. Setting Up the MySQL Database</H2
NAME="AEN721"
>3.2.14. Setting Up the MySQL Database</A
></H2
><P
>&#13; 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
@@ -1568,9 +1597,11 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN701">3.2.15. Tweaking <TT
NAME="AEN768"
>3.2.15. Tweaking <TT
CLASS="filename"
>localconfig</TT
></A
></H2
><P
>&#13; This file contains a variety of settings you may need to tweak including
@@ -1692,7 +1723,9 @@ CLASS="QUOTE"
<DIV
CLASS="example"
><A
NAME="AEN732"><P
NAME="AEN799"
></A
><P
><B
>Example 3-2. Running checksetup.pl as the web user</B
></P
@@ -1770,7 +1803,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN739">3.2.16. Setting Up Maintainers Manually (Optional)</H2
NAME="AEN806"
>3.2.16. Setting Up Maintainers Manually (Optional)</A
></H2
><P
>&#13; If you want to add someone else to every group by hand, you
can do it by typing the appropriate MySQL commands. Run
@@ -1818,7 +1853,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN750">3.2.17. The Whining Cron (Optional)</H2
NAME="AEN817"
>3.2.17. The Whining Cron (Optional)</A
></H2
><P
>&#13; By now you have a fully functional bugzilla, but what good
are bugs if they're not annoying? To help make those bugs
@@ -1902,7 +1939,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN760">3.2.18. Bug Graphs (Optional)</H2
NAME="AEN827"
>3.2.18. Bug Graphs (Optional)</A
></H2
><P
>&#13; As long as you installed the GD and Graph::Base Perl modules
you might as well turn on the nifty bugzilla bug reporting
@@ -1957,7 +1996,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN772">3.2.19. Securing MySQL</H2
NAME="AEN839"
>3.2.19. Securing MySQL</A
></H2
><P
>&#13; If you followed the installation instructions for setting up
your "bugs" and "root" user in MySQL, much of this should not
@@ -2242,7 +2283,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -2254,7 +2294,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="errata.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -2263,7 +2302,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -2272,7 +2310,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="osx.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -2288,7 +2325,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Tinderbox/Tinderbox2</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -16,8 +16,8 @@ REL="PREVIOUS"
TITLE="Perforce SCM"
HREF="scm.html"><LINK
REL="NEXT"
TITLE="Bugzilla Variants and Competitors"
HREF="variants.html"></HEAD
TITLE="The Future of Bugzilla"
HREF="future.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="scm.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -59,8 +57,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variants.html"
ACCESSKEY="N"
HREF="future.html"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="tinderbox">5.4. Tinderbox/Tinderbox2</H1
NAME="tinderbox"
>5.4. Tinderbox/Tinderbox2</A
></H1
><P
>We need Tinderbox integration information.</P
></DIV
@@ -82,7 +81,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -94,7 +92,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="scm.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -103,7 +100,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -111,8 +107,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="N"
HREF="future.html"
>Next</A
></TD
></TR
@@ -128,14 +123,13 @@ ALIGN="center"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Bugzilla Variants and Competitors</TD
>The Future of Bugzilla</TD
></TR
></TABLE
></DIV

View File

@@ -4,7 +4,7 @@
>Translations</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -13,8 +13,8 @@ REL="UP"
TITLE="About This Guide"
HREF="about.html"><LINK
REL="PREVIOUS"
TITLE="Credits"
HREF="credits.html"><LINK
TITLE="Feedback"
HREF="feedback.html"><LINK
REL="NEXT"
TITLE="Document Conventions"
HREF="conventions.html"></HEAD
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -45,8 +44,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="credits.html"
ACCESSKEY="P"
HREF="feedback.html"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="conventions.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="translations">1.6. Translations</H1
NAME="translations"
>1.8. Translations</A
></H1
><P
>&#13; The Bugzilla Guide needs translators! Please volunteer your
translation into the language of your choice. If you will
@@ -86,7 +85,7 @@ HREF="mailto:mozilla-webtools@mozilla.org"
>mozilla-webtools@mozilla.org</A
>&#62;</TT
>, and arrange with
The Bugzilla Team to check it into CVS.
Matt Barnson to check it into CVS.
</P
></DIV
><DIV
@@ -94,7 +93,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -105,8 +103,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="credits.html"
ACCESSKEY="P"
HREF="feedback.html"
>Prev</A
></TD
><TD
@@ -115,7 +112,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -124,7 +120,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="conventions.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -133,14 +128,13 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Credits</TD
>Feedback</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>User Administration</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -29,7 +29,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -47,7 +46,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="postinstall-check.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -61,7 +59,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="programadmin.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -74,7 +71,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="useradmin">4.2. User Administration</H1
NAME="useradmin"
>4.2. User Administration</A
></H1
><P
>&#13; User administration is one of the easiest parts of Bugzilla.
Keeping it from getting out of hand, however, can become a
@@ -85,7 +84,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="defaultuser">4.2.1. Creating the Default User</H2
NAME="defaultuser"
>4.2.1. Creating the Default User</A
></H2
><P
>&#13; When you first run checksetup.pl after installing Bugzilla, it
will prompt you for the administrative username (email
@@ -155,13 +156,17 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="manageusers">4.2.2. Managing Other Users</H2
NAME="manageusers"
>4.2.2. Managing Other Users</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="login">4.2.2.1. Logging In</H3
NAME="login"
>4.2.2.1. Logging In</A
></H3
><P
></P
><OL
@@ -198,7 +203,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="createnewusers">4.2.2.2. Creating new users</H3
NAME="createnewusers"
>4.2.2.2. Creating new users</A
></H3
><P
>&#13; Your users can create their own user accounts by clicking
the "New Account" link at the bottom of each page. However,
@@ -323,7 +330,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="disableusers">4.2.2.3. Disabling Users</H3
NAME="disableusers"
>4.2.2.3. Disabling Users</A
></H3
><P
>&#13; I bet you noticed that big "Disabled Text" entry box
available from the "Add New User" screen, when you edit an
@@ -377,7 +386,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="modifyusers">4.2.2.4. Modifying Users</H3
NAME="modifyusers"
>4.2.2.4. Modifying Users</A
></H3
><P
>&#13; Here I will attempt to describe the function of each option
on the Edit User screen.
@@ -443,6 +454,75 @@ VALIGN="TOP"
><LI
><P
>&#13; <EM
>Email Notification</EM
>: You may choose
from one of three options:
<P
></P
><OL
TYPE="1"
><LI
><P
>&#13; 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, QA
Contact, CC recipient, or "watcher".
</P
></LI
><LI
><P
>&#13; 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 QA
Contact, but will receive them if she is on the CC
list.
<DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13; She will still receive whining cron emails if
you set up the "whinemail" feature.
</P
></TD
></TR
></TABLE
></DIV
>
</P
></LI
><LI
><P
>&#13; <EM
>All Qualifying Bugs</EM
>: This
user is a glutton for punishment. If her name is
in the reporter, QA Contact, CC, assignee, or is a
"watcher", she will get email updates regarding
the bug.
</P
></LI
></OL
>
</P
><P
>&#13; <EM
>Disable Text</EM
>: If you type anything
in this box, including just a space, the user account is
@@ -616,7 +696,7 @@ VALIGN="TOP"
>: 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 privileges from other users or grant them
administrator priveleges from other users or grant them
to themselves. Enable with care.
</P
></LI
@@ -644,7 +724,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -656,7 +735,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="postinstall-check.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -665,7 +743,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -674,7 +751,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="programadmin.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -690,7 +766,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Using Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="conventions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="whatis.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="using">Chapter 2. Using Bugzilla</H1
NAME="using"
>Chapter 2. Using Bugzilla</A
></H1
><TABLE
BORDER="0"
WIDTH="100%"
@@ -124,24 +123,28 @@ HREF="how.html#myaccount"
></DT
><DT
>2.3.2. <A
HREF="how.html#bug_page"
>Anatomy of a Bug</A
HREF="how.html#query"
>The Bugzilla Query Page</A
></DT
><DT
>2.3.3. <A
HREF="how.html#query"
>Searching for Bugs</A
></DT
><DT
>2.3.4. <A
HREF="how.html#list"
>Bug Lists</A
></DT
><DT
>2.3.5. <A
HREF="how.html#bugreports"
>Filing Bugs</A
>Creating and Managing Bug Reports</A
></DT
><DD
><DL
><DT
>2.3.3.1. <A
HREF="how.html#bug-writing"
>Writing a Great Bug Report</A
></DT
><DT
>2.3.3.2. <A
HREF="how.html#bug-manage"
>Managing your Bug Reports</A
></DT
></DL
></DD
></DL
></DD
><DT
@@ -161,6 +164,25 @@ HREF="init4me.html#accountsettings"
HREF="init4me.html#emailsettings"
>Email Settings</A
></DT
><DD
><DL
><DT
>2.4.2.1. <A
HREF="init4me.html#notification"
>Email Notification</A
></DT
><DT
>2.4.2.2. <A
HREF="init4me.html#newemailtech"
>New Email Technology</A
></DT
><DT
>2.4.2.3. <A
HREF="init4me.html#watchsettings"
>"Watching" Users</A
></DT
></DL
></DD
><DT
>2.4.3. <A
HREF="init4me.html#footersettings"
@@ -186,7 +208,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -198,7 +219,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="conventions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -207,7 +227,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -216,7 +235,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="whatis.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Using Bugzilla-Conclusion</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="init4me.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="installation.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="usingbz-conc">2.5. Using Bugzilla-Conclusion</H1
NAME="usingbz-conc"
>2.5. Using Bugzilla-Conclusion</A
></H1
><P
>&#13; Thank you for reading through this portion of the Bugzilla
Guide. I anticipate it may not yet meet the needs of all
@@ -90,7 +89,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -102,7 +100,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="init4me.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -111,7 +108,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -120,7 +116,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -136,7 +131,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Loki Bugzilla (Fenris)</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="rhbugzilla.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variant-issuezilla.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="variant-fenris">6.2. Loki Bugzilla (Fenris)</H1
NAME="variant-fenris"
>7.2. Loki Bugzilla (Fenris)</A
></H1
><P
>Fenris can be found at <A
HREF="http://fenris.lokigames.com/"
@@ -86,7 +85,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -98,7 +96,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="rhbugzilla.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -107,7 +104,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -116,7 +112,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="variant-issuezilla.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -132,7 +127,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Issuezilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="variant-fenris.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variant-scarab.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="variant-issuezilla">6.3. Issuezilla</H1
NAME="variant-issuezilla"
>7.3. Issuezilla</A
></H1
><P
>Issuezilla is another fork from Bugzilla, and seems nearly
as popular as the Red Hat Bugzilla fork. Some Issuezilla team
@@ -97,7 +96,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -109,7 +107,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="variant-fenris.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -118,7 +115,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -127,7 +123,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="variant-scarab.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -143,7 +138,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Perforce SCM</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="variant-scarab.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variant-sourceforge.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="variant-perforce">6.5. Perforce SCM</H1
NAME="variant-perforce"
>7.5. Perforce SCM</A
></H1
><P
>Although Perforce isn't really a bug tracker, it can be used
as such through the <SPAN
@@ -92,7 +91,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -104,7 +102,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="variant-scarab.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -113,7 +110,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -122,7 +118,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="variant-sourceforge.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -138,7 +133,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Scarab</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="variant-issuezilla.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variant-perforce.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="variant-scarab">6.4. Scarab</H1
NAME="variant-scarab"
>7.4. Scarab</A
></H1
><P
>Scarab is a promising new bug-tracking system built using
Java Serlet technology. As of this writing, no source code has
@@ -92,7 +91,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -104,7 +102,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="variant-issuezilla.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -113,7 +110,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -122,7 +118,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="variant-perforce.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -138,7 +133,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>SourceForge</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="variant-perforce.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="faq.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="variant-sourceforge">6.6. SourceForge</H1
NAME="variant-sourceforge"
>7.6. SourceForge</A
></H1
><P
>SourceForge is more of a way of coordinating geographically
distributed free software and open source projects over the
@@ -92,7 +91,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -104,7 +102,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="variant-perforce.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -113,7 +110,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -122,7 +118,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="faq.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -138,7 +133,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,14 +4,14 @@
>Bugzilla Variants and Competitors</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Tinderbox/Tinderbox2"
HREF="tinderbox.html"><LINK
TITLE="The Future of Bugzilla"
HREF="future.html"><LINK
REL="NEXT"
TITLE="Red Hat Bugzilla"
HREF="rhbugzilla.html"></HEAD
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -42,8 +41,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="tinderbox.html"
ACCESSKEY="P"
HREF="future.html"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="rhbugzilla.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="variants">Chapter 6. Bugzilla Variants and Competitors</H1
NAME="variants"
>Chapter 7. Bugzilla Variants and Competitors</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -78,32 +77,32 @@ CLASS="TOC"
>Table of Contents</B
></DT
><DT
>6.1. <A
>7.1. <A
HREF="rhbugzilla.html"
>Red Hat Bugzilla</A
></DT
><DT
>6.2. <A
>7.2. <A
HREF="variant-fenris.html"
>Loki Bugzilla (Fenris)</A
></DT
><DT
>6.3. <A
>7.3. <A
HREF="variant-issuezilla.html"
>Issuezilla</A
></DT
><DT
>6.4. <A
>7.4. <A
HREF="variant-scarab.html"
>Scarab</A
></DT
><DT
>6.5. <A
>7.5. <A
HREF="variant-perforce.html"
>Perforce SCM</A
></DT
><DT
>6.6. <A
>7.6. <A
HREF="variant-sourceforge.html"
>SourceForge</A
></DT
@@ -124,7 +123,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -135,8 +133,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="tinderbox.html"
ACCESSKEY="P"
HREF="future.html"
>Prev</A
></TD
><TD
@@ -145,7 +142,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -154,7 +150,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="rhbugzilla.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -163,7 +158,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Tinderbox/Tinderbox2</TD
>The Future of Bugzilla</TD
><TD
WIDTH="34%"
ALIGN="center"

View File

@@ -4,7 +4,7 @@
>What is Bugzilla?</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="using.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="why.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,14 +70,16 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="whatis">2.1. What is Bugzilla?</H1
NAME="whatis"
>2.1. What is Bugzilla?</A
></H1
><P
>&#13; 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 by
"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
@@ -96,62 +95,90 @@ system against which all others are measured.
><UL
><LI
><P
>Powerful searching</P
>&#13; integrated, product-based granular security schema
</P
></LI
><LI
><P
>User-configurable email notifications of bug changes</P
>&#13; inter-bug dependencies and dependency graphing
</P
></LI
><LI
><P
>Full change history</P
>&#13; advanced reporting capabilities
</P
></LI
><LI
><P
>Inter-bug dependency tracking and graphing</P
>&#13; a robust, stable RDBMS back-end
</P
></LI
><LI
><P
>Excellent attachment management</P
>&#13; extensive configurability
</P
></LI
><LI
><P
>Integrated, product-based, granular security schema</P
>&#13; a very well-understood and well-thought-out natural bug resolution protocol
</P
></LI
><LI
><P
>Fully security-audited, and runs under Perl's taint mode</P
>&#13; email, XML, console, and HTTP APIs
</P
></LI
><LI
><P
>A robust, stable RDBMS back-end</P
>&#13; available integration with automated software
configuration management systems, including Perforce and
CVS (through the Bugzilla email interface and
checkin/checkout scripts)
</P
></LI
><LI
><P
>Web, XML, email and console interfaces</P
></LI
><LI
><P
>Completely customisable and/or localisable web user interface</P
></LI
><LI
><P
>Extensive configurability</P
></LI
><LI
><P
>Smooth upgrade pathway between versions</P
>&#13; too many more features to list
</P
></LI
></UL
>
</P
><P
>&#13; Despite its current robustness and popularity, 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, little internationalization (although non-US
character sets are accepted for comments), and dependence on
some nonstandard libraries.
</P
><P
>&#13; Some recent headway has been made on the query front, however.
If you are using the latest version of Bugzilla, you should see
a <SPAN
CLASS="QUOTE"
>"simple search"</SPAN
> 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".
</P
><P
>&#13; Despite these small problems, Bugzilla is very hard to beat. It
is under <EM
>very</EM
> active development to address
the current issues, and continually gains new features.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -163,7 +190,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -172,7 +198,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -181,7 +206,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="why.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -197,7 +221,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Why Should We Use Bugzilla?</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="whatis.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="how.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="why">2.2. Why Should We Use Bugzilla?</H1
NAME="why"
>2.2. Why Should We Use Bugzilla?</A
></H1
><TABLE
BORDER="0"
WIDTH="100%"
@@ -160,7 +159,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -172,7 +170,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="whatis.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -181,7 +178,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -190,7 +186,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="how.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -206,7 +201,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Win32 Installation Notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="geninstall.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="administration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="win32">3.6. Win32 Installation Notes</H1
NAME="win32"
>3.6. Win32 Installation Notes</A
></H1
><P
>This section covers installation on Microsoft Windows 95,
98, ME, NT, and 2000. Bugzilla works fine on Win32 platforms,
@@ -99,7 +98,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="wininstall">3.6.1. Win32 Installation: Step-by-step</H2
NAME="wininstall"
>3.6.1. Win32 Installation: Step-by-step</A
></H2
><DIV
CLASS="note"
><P
@@ -246,19 +247,11 @@ TARGET="_top"
></LI
><LI
><P
>&#13; Use ppm from your perl\bin directory to install the following
packs: DBI, DBD-Mysql, TimeDate, Chart, Date-Calc, Date-Manip,
GD, AppConfig, and Template. You may need to extract them from
.zip format using Winzip or other unzip program first. Most of
these additional ppm modules can be downloaded from ActiveState,
but AppConfig and Template should be obtained from OpenInteract
using <A
HREF="http://openinteract.sourceforge.net/"
TARGET="_top"
>the instructions on
the Template Toolkit web site</A
>.
</P
>&#13; 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.
</P
><DIV
CLASS="note"
><P
@@ -285,11 +278,6 @@ VALIGN="TOP"
HREF="http://www.activestate.com/PPMPackages/zips/5xx-builds-only"
TARGET="_top"
>&#13; http://www.activestate.com/PPMPackages/zips/5xx-builds-only/</A
>
or <A
HREF="http://www.activestate.com/PPMPackages/5.6plus"
TARGET="_top"
>http://www.activestate.com/PPMPackages/5.6plus</A
>
</P
></TD
@@ -313,7 +301,9 @@ CLASS="command"
><DIV
CLASS="example"
><A
NAME="AEN985"><P
NAME="AEN1048"
></A
><P
><B
>Example 3-3. Installing ActivePerl ppd Modules on Microsoft Windows</B
></P
@@ -333,58 +323,13 @@ CLASS="option"
>Watch your capitalization!</P
></DIV
><P
>&#13; ActiveState's 5.6Plus directory also contains an AppConfig ppm, so
you might see the following error when trying to install the
version at OpenInteract:
</P
><P
>&#13; <TT
CLASS="computeroutput"
>&#13; Error installing package 'AppConfig': Read a PPD for
'AppConfig', but it is not intended for this build of Perl
(MSWin32-x86-multi-thread)
</TT
>&#13; You can find ActiveState ppm modules at
<A
HREF="http://www.activestate.com/PPMPackages/5.6plus/"
TARGET="_top"
>&#13; http://www.activestate.com/PPMPackages/5.6plus</A
>
</P
><P
>&#13; If so, download both <A
HREF="http://openinteract.sourceforge.net/ppmpackages/AppConfig.tar.gz"
TARGET="_top"
>the
tarball</A
> and <A
HREF="http://openinteract.sourceforge.net/ppmpackages/AppConfig.ppd"
TARGET="_top"
>the
ppd</A
> directly from OpenInteract, then run ppm from within
the same directory to which you downloaded those files and
install the package by referencing the ppd file explicitly via in
the install command, f.e.:
<DIV
CLASS="example"
><A
NAME="AEN998"><P
><B
>Example 3-4. Installing OpenInteract ppd Modules manually on Microsoft
Windows</B
></P
><P
>&#13; <TT
CLASS="computeroutput"
><B
CLASS="command"
>install
<TT
CLASS="filename"
>C:\AppConfig.ppd</TT
></B
></TT
>
</P
></DIV
>
</P
></LI
><LI
><P
@@ -1298,20 +1243,13 @@ VALIGN="TOP"
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=62000"
TARGET="_top"
>bug 62000</A
>,
the perl documentation says that you should always use
<TT
>, the perl documentation says that you should always use <TT
CLASS="function"
>binmode()</TT
> when dealing with binary
files, but never when dealing with text files. That seems
to suggest that rather than arbitrarily putting
<TT
> when dealing with binary files, but never when dealing with text files. That seems to suggest that rather than aribtrarily putting <TT
CLASS="function"
>binmode()</TT
> at the beginning of the
attachment files, there should be logic to determine if
<TT
> at the begining of the attachment files, there should be logic to determine if <TT
CLASS="function"
>binmode()</TT
> is needed or not.
@@ -1383,7 +1321,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="addlwintips">3.6.2. Additional Windows Tips</H2
NAME="addlwintips"
>3.6.2. Additional Windows Tips</A
></H2
><DIV
CLASS="tip"
><P
@@ -1407,7 +1347,9 @@ VALIGN="TOP"
><P
>&#13; From Andrew Pearson:
<A
NAME="AEN1168"><BLOCKQUOTE
NAME="AEN1221"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13; You can make Bugzilla work with Personal Web Server for
@@ -1487,13 +1429,15 @@ VALIGN="TOP"
>not necessary</EM
> for Bugzilla 2.13 and
later, which includes the current release, Bugzilla
2.16.
2.14.
<DIV
CLASS="example"
><A
NAME="AEN1180"><P
NAME="AEN1233"
></A
><P
><B
>Example 3-5. Removing encrypt() for Windows NT Bugzilla version
>Example 3-4. Removing encrypt() for Windows NT Bugzilla version
2.12 or earlier</B
></P
><P
@@ -1551,7 +1495,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="bzldap">3.6.3. Bugzilla LDAP Integration</H2
NAME="bzldap"
>3.6.3. Bugzilla LDAP Integration</A
></H2
><P
>&#13; What follows is some late-breaking information on using the
LDAP authentication options with Bugzilla. The author has not
@@ -1632,7 +1578,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -1644,7 +1589,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="geninstall.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -1653,7 +1597,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -1662,7 +1605,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -1678,7 +1620,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 B

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

After

Width:  |  Height:  |  Size: 151 B

View File

@@ -1,15 +1,13 @@
2.16 has not been released yet - these are prerelease notes.
After many hours of banging heads against brick walls and
much imbibed caffeine, the Bugzilla team is proud to
announce Bugzilla 2.14.
Insert nice little intro for version 2.16 here.
This release is primarily a security release, in order to
rectify security issues. However, some other important
changes were made.
**************************
*** ABOUT THIS VERSION ***
**************************
Bug numbers referenced in this document are all on
bugzilla.mozilla.org unless otherwise specified.
*** Recommended Practice For The Upgrade ***
Recommended Practice For The Upgrade
------------------------------------
As always, please ensure you have ran checksetup.pl after
replacing the files in your installation.
@@ -25,370 +23,18 @@ contains more errors after an upgrade, it doesn't necessarily
mean there are more errors in your database, as it is likely
they weren't being checked for in the old version.
Failure to do this may mean that bugzilla will not
work correctly.
Administrators must make sure that certain files are
inaccessible or confidential information might become
available to enterprising individuals. This includes the
localconfig file and the entire data directory. Please
see the Bugzilla Guide for more information.
*** Dependency Requirements ***
**************************
*** ABOUT THIS VERSION ***
**************************
MySQL v3.22.5
Perl v5.005
DBI v1.13
DBD::MySQL v1.2209
AppConfig v1.52
Template Toolkit v2.07
Text::Wrap v20001.0131
File::Spec v0.82
Data::Dumper, Date::Parse, CGI::Carp (any)
GD v1.19 (optional)
Chart::Base v0.99 (optional)
XML::Parser (any)
*** Deprecated Features ***
- This is possibly the last stable release that will work with
MySQL version 3.22. Soon Bugzilla will require at least
version 3.23.x. The exact minimum version number required
has not yet been decided.
(bug 87958)
- This is possibly the last stable release to support the
shadow database. The replacement (using MySQL's built in
replication) is not present in 2.16, but we expect that
very few sites use this feature. If this would cause a
problem for you, please comment on the below bug.
(bug 124589)
*** Outstanding Issues Of Note ***
- Renaming or removing keywords will not update the "keyword
cache", and queries on keywords may not work properly, until
you rebuild the cache on the sanity check page
(sanitycheck.cgi). The changer will receive a warning to do
this when altering the keyword.
(bug 69621)
- Email notifications will not work out of the box if you are
using Postfix, Exim or possibly other non-SendMail mail
transfer agents, as Bugzilla sends mail by default in
"deferred" mode using the "-ODeliveryMode=deferred" command
line option, which needs to be supported by the sendmail
program. To fix this, you can turn on the "sendmailnow"
parameter on the Edit Parameters page (editparams.cgi).
(bug 37765)
- Users behind rotating transparent proxies or otherwise having
an IP that changes each URL fetch will find they need to log in
regularly.
(bug 20122)
- If you search on any CC or added comments, as well as at least
one other of CC, added comments, assignee, reporter, etc, then
the search can be very slow. This is because of limitations of
the MySQL optimiser.
(bug 96101)
- It is recommended you use the high speed XS Stash of the Template
Toolkit, in order to achieve best performance. However, there are
known problems with XS Stash and Perl 5.005_02 and lower. If you
wish to use these older versions of Perl, please use the regular
stash. You are asked which stash you want to use at Template Toolkit
installation time.
(bug 140674)
- This release of Bugzilla uses the Template Toolkit. For speed,
compiled templates are cached on disk. If you modify the templates
in order to customise the look and feel of your Bugzilla instalation,
the toolkit will normally detect the changes, and recompile the
changed templates.
However, if you do not set a webservergroup in the localconfig file,
(a generally unwise thing on a production installation of Bugzilla)
the template directory would have to be world-writable for automatic
recompilation to happen.
Doing that would be a security risk. So, if you modify templates locally
and do not have a webservergroup set, you will have to rerun checksetup.pl
to recompile the templates manually. If you do not do this, the changes
you make will not appear, and an error message will be reported.
Adding new directories anywhere inside the template directory may cause
permission errors. If you see these, rerun checksetup.pl as root. If you
do not have root access, or cannot get someone who does to do this for you,
you can rename the data/template directory to data/template.old (or any
other name bugzilla doesn't use). Then rerun checksetup.pl to regenerate
the compiled templates.
(bug 97832)
- Querying on CC takes too long on big databases.
(bug 127200)
************************************************************
*** USERS UPGRADING FROM 2.14.1 OR EARLIER - 2.16 ISSUES ***
************************************************************
*** SECURITY ISSUES RESOLVED ***
- The bug reporter could set the priority even when
'letsubmitterchoosepriority' was off.
(bug 63018)
- It was possible for random confidential information to be
divulged, if the shadow database was in use and became
corrupted.
(bug 92263)
- Mass change would set the groupset of every bug to be the
groupset of the first bug.
(bug 107718)
- Most CGIs now run in taint mode. This helps to prevent
failure to validate errors.
(bug 108982)
- queryhelp.cgi no longer shows confidential products to
people it shouldn't.
(bug 126801)
- The bug list sort order could take arbitrary SQL. There
are no known exploits for this problem.
(bug 130821)
- It was possible for a user to bypass the IP check by
setting up a fake reverse DNS, if the Bugzilla web server
was configured to do reverse DNS lookups. Apache is not
configured as such by default. This is not a complete
exploit, as the user's login cookie would also need to
be divulged for this to be a problem.
(bug 129466)
*** IMPORTANT CHANGES ***
- 2.16 introduces "templatisation", a new feature that allows
administrators to easily customise the HTML output of Bugzilla
without altering Perl code. Bugzilla uses the "Template Toolkit"
for this. ??? See the Bugzilla Guide?
Administrators who ran the 2.15 development version and customised
templates should check the templates are still valid, as file names
and file paths have changed.
Most output is now templatised. This process will be complete next
milestone.
(bug 86168)
- Administrators can now configure maximum attachment sizes. These
should remain below the maximum size for your MySQL server, or you
will get obscure MySQL errors if you attach a bigger attachment.
To find out the current size attachment that MySQL can accept, type
the command 'mysqladmin variables' and find out the value of the
'max_allowed_packet' varible in bytes.
To change the maximum size that MySQL can accept you can alter this
variable in your 'my.cnf' file.
(bug 91664)
- Perl 5.004 is no longer supported because the Template Toolkit
requires 5.005.
(bug 97721)
- New requirements: Text::Wrap, Template [requires AppConfig].
(bugs 97784, 84338)
- New version required: Perl v5.005, File::Spec v0.82
(bugs 97721, ???)
- The index page is now a CGI instead of an HTML page. You should remove
any existing HTML page and make sure your web server allows index.cgi to
be the default page in a directory. If you are not able to do that you
can instead set index_html in the 'localconfig' file to 1 and checksetup.pl
will create a redirect page for you.
(bug 80183)
- It is now strongly recommended that administrators run
"processmail rescanall" after upgrading to 2.16 or beyond.
This will send out notification emails for changes that were
made but not emailed, due to Bugzilla bugs. All known
causes of this have been fixed (bug 104589 and 99519).
It is also recommended that this be run nightly to avoid
lengthy delays in future if this reoccurs.
(bug 106377)
- If you wish to use ??? webdot htaccess stuff here ???
- In parallel with templatisation, a lot of changes have been made to the HTML
output of the Bugzilla CGIs. This could break code that attempts to parse
such code. For example, this breaks mozbot.
(no bug number)
*** Other changes of note ***
- The query page has been redesigned for better user friendliness.
(bug 98707)
- Users can now change their email account.
(bug 23067)
- "Dependent Bug Changed" notification emails now contain the
dependent bug's summary.
(bug 28736)
- Bugs with severity "critical", "blocker", and "enhancement" are
visually differentiated on bug lists for browsers with sufficient
CSS support.
(bug 28884)
- Bugzilla now has a sidebar for the Mozilla browser.
(bug 37339)
- A link to just created attachments now appears in notification
email.
(bug 66651)
- Comments now have numbers and can be referenced with
autohyperlinkifying similar to bugs.
(bug 71840)
- The attachment system has been rewritten, supporting new
"attachment statuses" (like keywords, but for attachments),
the ability to obsolete attachments, and the ability to
edit attachment metadata.
(bugs 84338, 75176)
- syncshadowdb now supports a configurable temp file location,
and properly shuts down Bugzilla.
(bug 75840)
- Dependency tree now lets you exclude resolve bugs and bugs
below a specific depth.
(bugs 83058)
- The "strictvaluechecks" parameter has gone away. These checks
are now always done.
(bug 119715)
- The midair collision page now shows all changes since the bug
page was loaded, not just the last one.
(bug 108312)
- Added support for making dependency graphs with 'dot', which
is better at creating complex graphs than 'webdot'.
(bug 120537)
*** Bug fixes of note ***
- Bugzilla scripts are now usually not terminated when the browser
window they are running in is closed. This caused hard to
reproduce bugs.
(bug 104589)
- On browsers that "reflow" the page, large component / milestone /
version fields were extremely slow to reflow when you altered
the product field.
(bug 96534)
- The selection in the component / milestone / version fields is
no longer lost when you change the selection in the product
field or use the back/forward buttons in your browser to return
to the page.
(bug 97966)
- You could not reverse dependencies in one step.
(bug 82143)
- Mass reassignment of non-open bugs will no longer reopen them.
(bug 30731)
- Attempting to bulk change no bugs will now give a user-friendly
error message.
(bug 90333)
- If you make a change to a bug where you only add yourself to CC,
email notifications are now properly sent out for MySQL 3.23.
(bug 99519)
- Bug entry now properly validates the data it has been sent.
(bug 107743)
- Midair collision checks will now properly work in all situations
where dependencies have changed.
(bug 73502)
- Some browsers were able to corrupt the params file with the wrong
end-of-line markers.
(bug 92500)
- The MySQL port defined in localconfig is now properly honoured.
(bug 98368)
- Apostrophes in component/milestone/version names no longer cause
a problem on the query page.
(bug 30689/42810)
- File attachment comments will now wrap.
(bug 52060)
- Saved queries are no longer mangled if you need to log in again,
for example if you had cookies off.
(bug 38835)
- Bug counts (on reports.cgi) were very slow if you had to
count a lot of bugs.
(bug 63249)
- 2.14 introduced options to let people see a bug when their name
is on it but who aren't in the groups the bug is restricted
to. These only allowed the people to view the bugs directly,
and not see them on buglists and receive email about them.
(bugs 95024, 97469)
- A new 'cookiepath' parameter on editparams.cgi allows multiple
Bugzilla installations to exist on one host without problems.
(bug 19910)
- whineatnews.pl now respects the 'sendmailnow' parameter.
(bug 52782)
- The query page came up even when Bugzilla was shut down.
(bug 121747)
- Quicksearch gave a weird error message when Bugzilla was
shut down.
(bug 121741)
- Operating system detection fixes.
(bugs 92763, 135666)
- QA contacts now receive emails when a new bug is created and
their only email preference was being added or removed from QA.
(bug 143091)
************************************************************
*** USERS UPGRADING FROM 2.14 OR EARLIER - 2.14.1 ISSUES ***
************************************************************
The 2.14.1 release fixes several security issues that became
known to us after the Bugzilla 2.14 release.
*** SECURITY ISSUES RESOLVED ***
- If LDAP Authentication was being used, Bugzilla would allow
you to log in as anyone if you left the password blank.
(bug 54901)
- It was possible to add comments or file a bug as someone else
by editing the HTML on the appropriate submission page before
submitting the form. User identity is checked now, and the
form values suggesting the user are now ignored.
(bug 108385, 108516)
- The Product popup menu on the show_bug form listed all
products, even if the user didn't have access to all of them.
It now only shows products the user has access to (and the
product the bug is in, if the user is viewing it because of
some other override).
(bug 102141)
- If a user had any blessgroupset privileges (the ability to
change only specific privileges for other users), it was
possible to change your own groupset (privileges) by
altering the page HTML before submitting on editusers.cgi.
(bug 108821)
- An untrusted variable was echoed back to user in the HTML
output if there was a login error while editing votes.
(bug 98146)
- buglist.cgi had an undocumented parameter that allowed you
to pass arbitrary SQL for the "WHERE" part of a query.
This has been disabled. (bug 108812)
- It was possible for a user to send arbitrary SQL by inserting
single quotes in the "mybugslink" field in the user
preferences. (bug 108822)
- buglist.cgi was not validating that the field names being
passed from the "boolean chart" query form were valid field
names, thus allowing arbitrary SQL to be inserted if you
edited the HTML by hand before submitting the form.
(bug 109679)
- long_list.cgi was not validating that the bug ID parameter
was actually a number, allowing arbitrary SQL to be inserted
if you edited the HTML by hand. (bug 109690)
**********************************************************
*** USERS UPGRADING FROM 2.12 OR EARLIER - 2.14 ISSUES ***
**********************************************************
Bugs referenced in the following text are bug numbers on
bugzilla.mozilla.org.
*** IMPORTANT CHANGES ***
@@ -567,6 +213,34 @@ known to us after the Bugzilla 2.14 release.
queries could still be sent to the database.
(bug 95082)
*** Outstanding issues of note ***
- Bug counts (on reports.cgi) can be very slow if you have to
count a lot of bugs. In this case the connection can time
out before the page finishes loading. Extending the cgi
timeout on your web server might help this situation.
(bug 63249)
- Renaming or removing keywords will not update the "keyword
cache", and queries on keywords may not work properly, until
you rebuild the cache on the sanity check page
(sanitycheck.cgi). The changer will receive a warning to do
this when altering the keyword.
(bug 69621)
- Email notifications will not work out of the box if you are
using Postfix, Exim or possibly other non-SendMail mail
transfer agents, as Bugzilla sends mail by default in
"deferred" mode using the "-ODeliveryMode=deferred" command
line option, which needs to be supported by the sendmail
program. To fix this, you can turn on the "sendmailnow"
parameter on the Edit Parameters page (editparams.cgi).
(bug 50159)
- The new options to let people see a bug when their name
is on it but who aren't in the groups the bug is restricted
to only allow people to view bugs if they know the bug number.
It still will not show up in these people's buglists and
they will not receive email about changes to the bugs.
(bugs 95024, 97469)
**********************************************************
*** USERS UPGRADING FROM 2.10 OR EARLIER - 2.12 ISSUES ***
**********************************************************

View File

@@ -19,14 +19,14 @@
<!ENTITY requiredsoftware SYSTEM "requiredsoftware.sgml">
<!ENTITY revhistory SYSTEM "revhistory.sgml">
<!ENTITY bz "http://www.bugzilla.org/">
<!ENTITY bz-ver "2.16">
<!ENTITY bz-cvs-ver "2.17">
<!ENTITY bzg-date "April 2nd, 2002">
<!ENTITY bzg-ver "2.16">
<!ENTITY bzg-cvs-ver "2.17.0">
<!ENTITY bzg-auth "The Bugzilla Team">
<!ENTITY bzg-bugs "<ulink url='http://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&amp;component=Documentation'>Bugzilla</ulink>">
<!ENTITY bz "http://www.mozilla.org/projects/bugzilla">
<!ENTITY bz-ver "2.14">
<!ENTITY bz-cvs-ver "2.15">
<!ENTITY bzg-date "August 10, 2001">
<!ENTITY bzg-ver "2.14">
<!ENTITY bzg-cvs-ver "2.15.0">
<!ENTITY bzg-auth "Matthew P. Barnson">
<!ENTITY bzg-auth-email "<email>barnboy@trilobyte.net</email>">
<!ENTITY mysql "http://www.mysql.com/">
<!ENTITY perl-ver "5.6.1">
@@ -59,6 +59,65 @@ try to avoid clutter and feel free to waste space in the code to make it more re
<bookinfo>
<title>The Bugzilla Guide</title>
<pubdate>2001-04-25</pubdate>
<revhistory>
<revision>
<revnumber>v2.11</revnumber>
<date>20 December 2000</date>
<authorinitials>MPB</authorinitials>
<revremark>
Converted the README, FAQ, and DATABASE information into
SGML docbook format.
</revremark>
</revision>
<revision>
<revnumber>2.11.1</revnumber>
<date>06 March 2001</date>
<authorinitials>MPB</authorinitials>
<revremark>
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.
</revremark>
</revision>
<revision>
<revnumber>2.12.0</revnumber>
<date>24 April 2001</date>
<authorinitials>MPB</authorinitials>
<revremark>
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.
</revremark>
</revision>
<revision>
<revnumber>2.14.0</revnumber>
<date>07 August 2001</date>
<authorinitials>MPB</authorinitials>
<revremark>
Attempted to integrate relevant portions of the UNIX and
Windows installation instructions, moved some data from FAQ
to Install, removed references to README from text, added
Mac OS X install instructions, fixed a bunch
of tpyos (Mark Harig), linked text that referenced other
parts of the Guide, and nuked the old MySQL permissions
section.
</revremark>
</revision>
</revhistory>
<authorgroup>
@@ -67,23 +126,41 @@ try to avoid clutter and feel free to waste space in the code to make it more re
<othername>P.</othername>
<surname>Barnson</surname>
<affiliation>
<address><email>mbarnson@sisna.com</email></address>
<address><email>barnboy@trilobyte.net</email></address>
</affiliation>
</author>
<collab>
<collabname>Zach Lipton</collabname>
<affiliation>
<address><email>zach AT zachlipton DOT com</email></address>
</affiliation>
</collab>
</authorgroup>
<abstract>
<para>
This is the documentation for Bugzilla, the mozilla.org
This is the documentation for Bugzilla, the Mozilla
bug-tracking system.
Bugzilla is an enterprise-class piece of software
that powers issue-tracking for hundreds of
organizations around the world, tracking millions of bugs.
</para>
<para>
This documentation is maintained in DocBook 4.1.2 XML format.
Changes are best submitted as plain text or SGML diffs, attached
to a Bugzilla bug.
Bugzilla is an enterprise-class set of software utilities
that, when used together, power issue-tracking for hundreds of
organizations around the world, tracking millions of bugs.
While it is easy to use and quite flexible, it is
difficult for a novice to install and maintain. Although we
have provided step-by-step directions, Bugzilla is not always
easy to get working. Please be sure the person responsible
for installing and maintaining this software is a qualified
professional for the operating system upon which you install
Bugzilla.
</para>
<para>
THIS DOCUMENTATION IS MAINTAINED IN DOCBOOK 4.1.2 XML FORMAT.
IF YOU WISH TO MAKE CORRECTIONS, PLEASE MAKE THEM IN PLAIN
TEXT OR SGML DIFFS AGAINST THE SOURCE. I CANNOT ACCEPT
ADDITIONS TO THE GUIDE WRITTEN IN HTML!
</para>
</abstract>
@@ -116,6 +193,9 @@ try to avoid clutter and feel free to waste space in the code to make it more re
<!-- Integrating Bugzilla with Third-Party Tools -->
&integration;
<!-- The Future of Bugzilla -->
&future;
<!-- Major Bugzilla Variants -->
&variants;

View File

@@ -6,6 +6,13 @@
<section id="aboutthisguide">
<title>Purpose and Scope of this Guide</title>
<para>
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.
</para>
<para>
Bugzilla is simply the best piece of bug-tracking software the
world has ever seen. This document is intended to be the
@@ -36,12 +43,20 @@
digit to indicate the update (&bzg-ver;.1, &bzg-ver;.2, etc.).
Got it? Good.
</para>
<para>
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
&bzg-auth-email; to correct them.
</para>
</section>
<section id="copyright">
<title>Copyright Information</title>
<blockquote>
<attribution>Copyright (c) 2000-2002 Matthew P. Barnson and &bzg-auth;</attribution>
<attribution>Copyright (c) 2000-2001 &bzg-auth;</attribution>
<para>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation
@@ -49,7 +64,7 @@
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".
Documentation LIcense".
</para>
</blockquote>
<para>
@@ -79,7 +94,7 @@
</para>
<para>
Naming of particular products or brands should not be seen as
endorsements, with the exception of the term "GNU/Linux". We
endorsements, with the exception of the term "GNU/Linux". I
wholeheartedly endorse the use of GNU/Linux in every situation
where it is appropriate. It is an extremely versatile, stable,
and robust operating system that offers an ideal operating
@@ -88,7 +103,8 @@
<para>
You are strongly recommended to make a backup of your system
before installing Bugzilla and at regular intervals thereafter.
If you implement any suggestion in this Guide, implement this one!
Heaven knows it's saved my bacon time after time; if you
implement any suggestion in this Guide, implement this one!
</para>
<para>
Although the Bugzilla development team has taken great care to
@@ -122,7 +138,12 @@
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.bugzilla.org/">bugzilla.org</ulink>
<ulink url="http://www.trilobyte.net/barnsons/">TriloBYTE</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.mozilla.org/projects/bugzilla/">Mozilla.org</ulink>
</para>
</listitem>
<listitem>
@@ -136,7 +157,7 @@
<para>
The latest version of this document can be checked out via CVS.
Please follow the instructions available at <ulink
url="http://www.mozilla.org/cvs.html">the Mozilla CVS page</ulink>, and check out the <filename>mozilla/webtools/bugzilla/docs/</filename> branch.
url="http://www.mozilla.org/cvs.html">the Mozilla CVS page</ulink>, and check out the mozilla/webtools/bugzilla/docs/ branch.
</para>
</section>
@@ -148,10 +169,6 @@
numerous e-mail and IRC support sessions, and overall excellent
contribution to the Bugzilla community:
</para>
<para>
<ulink url="mailto://mbarnson@sisna.com">Matthew P. Barnson</ulink>
for pulling together the Bugzilla Guide and shepherding it to 2.14.
</para>
<para>
<ulink url="mailto://terry@mozilla.org">Terry Weissman</ulink>
for initially writing Bugzilla and creating the
@@ -177,13 +194,27 @@
Last but not least, all the members of the <ulink
url="news://news.mozilla.org/netscape/public/mozilla/webtools"> netscape.public.mozilla.webtools</ulink> newsgroup. Without your discussions, insight, suggestions, and patches, this could never have happened.
</para>
</section>
<section id="contributors">
<title>Contributors</title>
<para>
Thanks also go to the following people for significant contributions
to this documentation (in no particular order):
Thanks go to these people for significant contributions to this
documentation (in no particular order):
</para>
<para>
Zach Liption, Andrew Pearson, Spencer Smith, Eric Hanson, Kevin Brannen,
Ron Teitelbaum, Jacob Steenhagen, Joe Robins.
Andrew Pearson, Spencer Smith, Eric Hanson, Kevin Brannen, Ron
Teitelbaum, Jacob Steenhagen, Joe Robins
</para>
</section>
<section id="feedback">
<title>Feedback</title>
<para>
I welcome feedback on this document. Without your submissions
and input, this Guide cannot continue to exist. Please mail
additions, comments, criticisms, etc. to
<email>barnboy@trilobyte.net</email>. Please send flames to
<email>devnull@localhost</email>
</para>
</section>
@@ -195,7 +226,7 @@
translate this Guide, please notify the members of the
mozilla-webtools mailing list at
<email>mozilla-webtools@mozilla.org</email>, and arrange with
&bzg-auth; to check it into CVS.
Matt Barnson to check it into CVS.
</para>
</section>

File diff suppressed because it is too large Load Diff

View File

@@ -1,156 +1,99 @@
<!-- <!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> -->
<section id="conventions">
<title>Document Conventions</title>
<indexterm zone="conventions">
<primary>conventions</primary>
</indexterm>
<para>This document uses the following conventions</para>
<para>
This document uses the following conventions
</para>
<informaltable frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Descriptions</entry>
<entry>Appearance</entry>
</row>
</thead>
<tbody>
<row>
<entry>Warnings</entry>
<entry>
<caution>
<para>Don't run with scissors!</para>
</caution>
</entry>
<entry><caution>
<para>Warnings.</para>
</caution></entry>
</row>
<row>
<entry>Hint</entry>
<entry>
<tip>
<para>Warm jar lids under the hot tap to loosen them.</para>
</tip>
</entry>
<entry><tip>
<para>Hint.</para>
</tip></entry>
</row>
<row>
<entry>Notes</entry>
<entry>
<note>
<para>Dear John...</para>
</note>
</entry>
<entry><note>
<para>Note.</para>
</note></entry>
</row>
<row>
<entry>Information requiring special attention</entry>
<entry>
<warning>
<para>Read this or the cat gets it.</para>
</warning>
</entry>
<entry><warning>
<para>Warning.</para>
</warning></entry>
</row>
<row>
<entry>File Names</entry>
<entry>
<filename>file.extension</filename>
</entry>
<entry><filename>file.extension</filename></entry>
</row>
<row>
<entry>Directory Names</entry>
<entry>
<filename class="directory">directory</filename>
</entry>
<entry><filename class="directory">directory</filename></entry>
</row>
<row>
<entry>Commands to be typed</entry>
<entry>
<command>command</command>
</entry>
<entry><command>command</command></entry>
</row>
<row>
<entry>Applications Names</entry>
<entry>
<application>application</application>
</entry>
<entry><application>application</application></entry>
</row>
<row>
<entry>
<foreignphrase>Prompt</foreignphrase>
of users command under bash shell</entry>
<entry><foreignphrase>Prompt</foreignphrase> of users command under bash shell</entry>
<entry>bash$</entry>
</row>
<row>
<entry>
<foreignphrase>Prompt</foreignphrase>
of root users command under bash shell</entry>
<entry><foreignphrase>Prompt</foreignphrase> of root users command under bash shell</entry>
<entry>bash#</entry>
</row>
<row>
<entry>
<foreignphrase>Prompt</foreignphrase>
of user command under tcsh shell</entry>
<entry>tcsh$</entry>
</row>
<row>
<entry><foreignphrase>Prompt</foreignphrase> of user command under tcsh shell</entry>
<entry>tcsh$</entry>
</row>
<row>
<entry>Environment Variables</entry>
<entry>
<envar>VARIABLE</envar>
</entry>
<entry><envar>VARIABLE</envar></entry>
</row>
<row>
<entry>Emphasized word</entry>
<entry>
<emphasis>word</emphasis>
</entry>
<entry><emphasis>word</emphasis></entry>
</row>
<row>
<entry>Code Example</entry>
<entry>
<programlisting>
<sgmltag class="starttag">para</sgmltag>
Beginning and end of paragraph
<sgmltag class="endtag">para</sgmltag>
</programlisting>
</entry>
<entry><programlisting><sgmltag class="starttag">para</sgmltag>Beginning and end of paragraph<sgmltag class="endtag">para</sgmltag></programlisting></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
@@ -171,4 +114,3 @@ sgml-shorttag:t
sgml-tag-region-if-active:t
End:
-->

Some files were not shown because too many files have changed in this diff Show More