diff --git a/.gitignore b/.gitignore
index 0076e91..65bac97 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
/__pycache__
+/venv
*.rej
*.orig
.DS_Store
diff --git a/.pylintrc b/.pylintrc
new file mode 100644
index 0000000..e89d85f
--- /dev/null
+++ b/.pylintrc
@@ -0,0 +1,2 @@
+[MESSAGES CONTROL]
+disable = invalid-name,missing-function-docstring
diff --git a/make_schema_doc.py b/make_schema_doc.py
old mode 100755
new mode 100644
index 9095120..575bdc5
--- a/make_schema_doc.py
+++ b/make_schema_doc.py
@@ -16,14 +16,8 @@
#
# This document is not confidential.
-import copy
import re
-import types
import time
-import sys
-import argparse
-from pprint import pprint, pformat
-from black import FileMode, format_str
import schema_remarks
import get_schema
@@ -880,393 +874,6 @@ def make_body(first, last):
return body
-def write_file(first, last, file):
- # file = open(filename, 'w')
- # file is an already-open filehandle
- (header, body, footer) = make_tables(first, last)
- file.write(header)
- file.write(body)
- file.write(footer)
- file.close()
-
-
-def test_schema_remarks(args):
- first = args.first
- last = args.last
- file = args.file
- if last == None:
- last = first
- if file:
- write_file(first, last, file)
- else:
- try:
- (header, body, footer) = make_tables(first, last)
- except BzSchemaProcessingException as e:
- print('\n'.join(e.errors))
- sys.exit()
- print("Succeeded!")
-
-
-class regex_in:
- string: str
- match: re.Match = None
-
- def __init__(self, thestring):
- self.string = thestring
-
- def __eq__(self, other: str | re.Pattern):
- if isinstance(other, str):
- other = re.compile(other)
- assert isinstance(other, re.Pattern)
- # TODO extend for search and match variants
- self.match = other.fullmatch(self.string)
- return self.match is not None
-
- def __getitem__(self, group):
- return self.match[group]
-
-
-# Note the `as m` in in the case specification
-# match regex_in(validated_string):
-# case r'\d(\d)' as m:
-# print(f'The second digit is {m[1]}')
-# print(f'The whole match is {m.match}')
-
-
-def generate_schema_remarks(args):
- first = args.first
- last = args.last
- if last == None:
- last = first
- print(f"generating missing remarks for {first} .. {last}")
- try:
- (header, body, footer) = make_tables(first, last)
- except BzSchemaProcessingException as e:
- for error in e.errors:
- match regex_in(error):
- case r"No column remarks for table '(\S+)'\." as m:
- if not m[1] in schema_remarks.table_remark:
- schema_remarks.table_remark[m[1]] = 'TODO'
- schema_remarks.column_remark[m[1]] = {}
- case r"Table '(\S+)' has no remark for column '(\S+)'\." as m:
- schema_remarks.column_remark[m[1]][m[2]] = 'TODO'
- case r"No index remarks for table '(\S+)'\." as m:
- schema_remarks.index_remark[m[1]] = {}
- case r"Table '(\S+)' has no remark for index '(\S+)'\." as m:
- schema_remarks.index_remark[m[1]][m[2]] = 'TODO'
- case _:
- print(f"Unhandled error: {error}")
- # pprint(schema_remarks.column_remark)
- if first != last:
- # we're comparing two versions, run it a second time to catch added/removed
- try:
- (header, body, footer) = make_tables(first, last)
- except BzSchemaProcessingException as e:
- for error in e.errors:
- match regex_in(error):
- case r"No remark to add table (\S+)" as m:
- schema_remarks.table_added_remark[m[1]] = 'TODO'
- case r"No remark to remove table (\S+)" as m:
- schema_remarks.table_removed_remark[m[1]] = 'TODO'
- case r"No remark to add column (\S+)\.(\S+)\." as m:
- if not m[1] in schema_remarks.column_added_remark:
- schema_remarks.column_added_remark[m[1]] = {}
- schema_remarks.column_added_remark[m[1]][m[2]] = 'TODO'
- case r"No remark to remove column (\S+)\.(\S+)\." as m:
- if not m[1] in schema_remarks.column_removed_remark:
- schema_remarks.column_removed_remark[m[1]] = {}
- schema_remarks.column_removed_remark[m[1]][m[2]] = 'TODO'
- case r"No remark to add index (\S+):(\S+)\." as m:
- if not m[1] in schema_remarks.index_added_remark:
- schema_remarks.index_added_remark[m[1]] = {}
- schema_remarks.index_added_remark[m[1]][m[2]] = 'TODO'
- case r"No remark to remove index (\S+):(\S+)\." as m:
- if not m[1] in schema_remarks.index_removed_remark:
- schema_remarks.index_removed_remark[m[1]] = {}
- schema_remarks.index_removed_remark[m[1]][m[2]] = 'TODO'
- case _:
- print(f"Unhandled error: {error}")
- var_dict = {
- 'version_order': format_str(
- 'version_order = %s' % pformat(schema_remarks.version_order),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'default_first_version': format_str(
- 'default_first_version = %s'
- % pformat(schema_remarks.default_first_version),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'default_last_version': format_str(
- 'default_last_version = %s'
- % pformat(schema_remarks.default_last_version),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'version_schema_map': format_str(
- 'version_schema_map = %s' % pformat(schema_remarks.version_schema_map),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'version_remark': format_str(
- 'version_remark = %s' % pformat(schema_remarks.version_remark),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'table_remark': format_str(
- 'table_remark = %s' % pformat(schema_remarks.table_remark),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'table_added_remark': format_str(
- 'table_added_remark = %s' % pformat(schema_remarks.table_added_remark),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'table_removed_remark': format_str(
- 'table_removed_remark = %s'
- % pformat(schema_remarks.table_removed_remark),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'column_remark': format_str(
- 'column_remark = %s' % pformat(schema_remarks.column_remark),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'column_renamed': format_str(
- 'column_renamed = %s' % pformat(schema_remarks.column_renamed),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'column_added_remark': format_str(
- 'column_added_remark = %s'
- % pformat(schema_remarks.column_added_remark),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'column_removed_remark': format_str(
- 'column_removed_remark = %s'
- % pformat(schema_remarks.column_removed_remark),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'index_remark': format_str(
- 'index_remark = %s' % pformat(schema_remarks.index_remark),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'index_renamed': format_str(
- 'index_renamed = %s' % pformat(schema_remarks.index_renamed),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'index_removed_remark': format_str(
- 'index_removed_remark = %s'
- % pformat(schema_remarks.index_removed_remark),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'index_added_remark': format_str(
- 'index_added_remark = %s' % pformat(schema_remarks.index_added_remark),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'notation_guide': format_str(
- 'notation_guide = %s' % pformat(schema_remarks.notation_guide),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'header': format_str(
- 'header = %s' % pformat(schema_remarks.header),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'footer': format_str(
- 'footer = %s' % pformat(schema_remarks.footer),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'prelude': format_str(
- 'prelude = %s' % pformat(schema_remarks.prelude),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- 'afterword': format_str(
- 'afterword = %s' % pformat(schema_remarks.afterword),
- mode=FileMode(
- string_normalization=False, experimental_string_processing=True
- ),
- ),
- }
-
- with open('schema_remarks_template.txt', 'r') as infile:
- template = infile.read()
- with open('schema_remarks_new.py', 'w') as outfile:
- output = template.format(**var_dict)
- outfile.write(output)
- print("Wrote changes to schema_remarks_new.py.")
- print(
- "diff the changes from schema_remarks.py and if you like them, move it"
- " overtop of it."
- )
- sys.exit()
- print("No changes detected.")
-
-
-def validate_schema_remarks(args):
- for v in schema_remarks.version_order:
- if not v in schema_remarks.version_schema_map:
- errors.append(
- f"Version {v} found in version_order is not listed in"
- " version_schema_map"
- )
- if len([item for item in schema_remarks.version_remark if item[0] == v]) < 1:
- errors.append(
- f"Version {v} found in version_order is not listed in version_remark"
- )
- for v in schema_remarks.version_schema_map.keys():
- if not v in schema_remarks.version_order:
- errors.append(
- f"Version {v} found in version_schema_map is not listed in"
- " version_order"
- )
- if len([item for item in schema_remarks.version_remark if item[0] == v]) < 1:
- errors.append(
- f"Version {v} found in version_schema_map is not listed in"
- " version_remark"
- )
- for item in schema_remarks.version_remark:
- v = item[0]
- if not v in schema_remarks.version_order:
- errors.append(
- f"Version {v} found in version_remark is not listed in version_order"
- )
- if not v in schema_remarks.version_schema_map:
- errors.append(
- f"Version {v} found in version_remark is not listed in"
- " version_schema_map"
- )
- if errors:
- print(str.join('\n', errors))
- sys.exit()
- print("Versions validated.")
-
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser(
- description="A utility for generating schema comparison documents."
- )
- subparsers = parser.add_subparsers(
- required=True,
- metavar='subcommand',
- help='Type `%(prog)s {subcommand} -h` for additional help',
- title='Available subcommands',
- )
- parser_validate = subparsers.add_parser(
- 'validate',
- help='Validate that the version-related lists are in sync with each other',
- description=(
- 'Validate that the version-related lists are in sync with each other'
- ),
- )
- parser_validate.set_defaults(func=validate_schema_remarks)
- parser_test = subparsers.add_parser(
- 'test',
- help=(
- 'Test schema document generation. By default it only prints errors or a'
- ' success message.'
- ),
- description=(
- 'Test schema document generation. By default it only prints errors or a'
- ' success message.'
- ),
- )
- parser_test.add_argument(
- 'first',
- metavar="first",
- choices=schema_remarks.version_order,
- help=(
- "The starting version of the schemas to compare, or the single version to"
- " display if 'last' is not provided."
- ),
- )
- parser_test.add_argument(
- 'last',
- metavar="last",
- choices=schema_remarks.version_order,
- nargs="?",
- default=None,
- help="The destination version of the schema to compare",
- )
- parser_test.add_argument(
- '-f',
- dest="file",
- metavar='FILENAME',
- type=argparse.FileType('w'),
- help=(
- "A file to write the generated schema doc to. Passing - will write it to"
- " standard out."
- ),
- )
- parser_test.set_defaults(func=test_schema_remarks)
- parser_generate = subparsers.add_parser(
- 'generate',
- help=(
- 'Add all of the missing remarks from a new schema to schema_remarks.py for'
- ' you as TODO items.'
- ),
- description=(
- 'Add all of the missing remarks from a new schema to schema_remarks.py for'
- ' you to as TODO items. Saves you the trouble of searching through the'
- ' massive file looking for the right spot in alphabetical order to put'
- ' them. Two benefits: gets a schema live faster (just without things'
- ' documented), and you can search for TODO in the file to find the things'
- ' that need updating.'
- ),
- )
- parser_generate.add_argument(
- 'first',
- metavar="first",
- choices=schema_remarks.version_order,
- help=(
- "The starting version of the schemas to compare, or the single version to"
- " display if 'last' is not provided."
- ),
- )
- parser_generate.add_argument(
- 'last',
- metavar="last",
- choices=schema_remarks.version_order,
- nargs="?",
- default=None,
- help="The destination version of the schema to compare",
- )
- parser_generate.set_defaults(func=generate_schema_remarks)
- args = parser.parse_args()
- args.func(args)
-
# A. REFERENCES
#
#
diff --git a/pyproject.toml b/pyproject.toml
index 08c2feb..693c920 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,5 +1,5 @@
[tool.black]
target-version = ["py310"]
skip-string-normalization = true
-experimental-string-processing = true
+unstable = true
color = true
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..9fa7856
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,4 @@
+mysqlclient
+black>=21.0 # need 21 for py3.10 compat
+argparse
+click<8.1 # 8.1 breaks black 21
diff --git a/schema-tool b/schema-tool
new file mode 100755
index 0000000..7e6b1a3
--- /dev/null
+++ b/schema-tool
@@ -0,0 +1,445 @@
+#!./venvwrapper.sh
+# vim:syntax=python
+#
+# Perforce Defect Tracking Integration Project
+# encrypt
is used to encrypt '
- 'passwords.',
+ (
+ '%(VERSION_STRING)sThe MySQL function '
+ 'encrypt
is used to encrypt '
+ 'passwords.'
+ ),
),
(
'2.14',
@@ -2260,14 +2276,18 @@
(
None,
'5.2',
- "The user's email address. Used when logging in "
- "or providing mailto: links.",
+ (
+ "The user's email address. Used when logging in "
+ "or providing mailto: links."
+ ),
),
(
'5.1.1',
None,
- "The user's username. Used when logging in and "
- "displayed to other users.",
+ (
+ "The user's username. Used when logging in and "
+ "displayed to other users."
+ ),
),
],
'mfa': 'TODO',
@@ -2421,19 +2441,25 @@
'The series category. (foreign key %(column-series_categories-id)s)'
),
'creator': [
- 'The user who created this series (foreign key '
- '%(column-profiles-userid)s).',
+ (
+ 'The user who created this series (foreign key '
+ '%(column-profiles-userid)s).'
+ ),
(
None,
'2.23.2',
- '%(VERSION_STRING)s 0 if this series is created by '
- 'checksetup when first installing Bugzilla.',
+ (
+ '%(VERSION_STRING)s 0 if this series is created by '
+ 'checksetup when first installing Bugzilla.'
+ ),
),
(
'2.23.3',
None,
- '%(VERSION_STRING)s NULL if this series is created by '
- 'checksetup when first installing Bugzilla.',
+ (
+ '%(VERSION_STRING)s NULL if this series is created by '
+ 'checksetup when first installing Bugzilla.'
+ ),
),
],
'frequency': 'The period between data samples for this series, in days.',
@@ -3735,216 +3761,237 @@
# schema itself.
prelude = [
- '\n\n
Quick links to table' - ' definitions:
\n\n%(QUICK_TABLES_TABLE)sThis document describes the' - ' Bugzilla database schema for Bugzilla\n%(BUGZILLA_VERSIONS)s.
\n\nThis' - ' document is generated automatically by a Python script which\nconstructs and' - ' colors the schema tables from the stored results of\nMySQL queries. For more' - ' information about the scripts, see' - ' GitHub.
\n\nThe' - ' purpose of this document is to act as a reference for\ndevelopers of Bugzilla and' - ' of code which interacts with Bugzilla\n(e.g. P4DTI).
\n\nThe intended' - ' readership is P4DTI developers and Bugzilla developers\nand' - ' administrators.
\n\nThis document is not confidential.
\n\nPlease file' - ' a bug report if you find any issues or what a new feature.
\n\nBugzilla is a' - ' defect tracking system, written in Perl with a CGI\nweb GUI. By default it uses' - ' MySQL to store its tables.', + ( + '\n\n
Quick links to table' + ' definitions:
\n\n%(QUICK_TABLES_TABLE)sThis document' + ' describes the Bugzilla database schema for' + ' Bugzilla\n%(BUGZILLA_VERSIONS)s.
\n\nThis document is generated' + ' automatically by a Python script which\nconstructs and colors the schema' + ' tables from the stored results of\nMySQL queries. For more information about' + ' the scripts, see' + ' GitHub.
\n\nThe' + ' purpose of this document is to act as a reference for\ndevelopers of Bugzilla' + ' and of code which interacts with Bugzilla\n(e.g. P4DTI).
\n\nThe' + ' intended readership is P4DTI developers and Bugzilla developers\nand' + ' administrators.
\n\nThis document is not confidential.
\n\nPlease' + ' file' + ' a bug report if you find any issues or what a new feature.
\n\nBugzilla' + ' is a defect tracking system, written in Perl with a CGI\nweb GUI. By default' + ' it uses MySQL to store its tables.' + ), ('2.22', None, '%(VERSION_STRING)s PostgreSQL is also supported.'), - '
\n' - '\n' - '%(NOTATION_GUIDE)s\n' - '\n' - 'Each defect is called a bug and corresponds to one row in\n' - '%(the-table-bugs)s. It is identified by its number,\n' - '%(column-bugs-bug_id)s.
\n' - '\n' - 'The work managed by Bugzilla is divided into products. The work\n' - 'for each product is in turn divided into the components of that\n' - 'product. Several properties of a new bug (e.g. ownership) are\n' - 'determined by the product and component to which it belongs. Each\n' - 'component is represented by a row in %(the-table-components)s.', + ( + '
\n' + '\n' + '%(NOTATION_GUIDE)s\n' + '\n' + 'Each defect is called a bug and corresponds to one row in\n' + '%(the-table-bugs)s. It is identified by its number,\n' + '%(column-bugs-bug_id)s.
\n' + '\n' + 'The work managed by Bugzilla is divided into products. The work\n' + 'for each product is in turn divided into the components of that\n' + 'product. Several properties of a new bug (e.g. ownership) are\n' + 'determined by the product and component to which it belongs. Each\n' + 'component is represented by a row in %(the-table-components)s.' + ), ( '2.2', None, - ' %(VERSION_STRING)sEach product is represented by a\n' - 'row in %(the-table-products)s.', + ( + ' %(VERSION_STRING)sEach product is represented by a\n' + 'row in %(the-table-products)s.' + ), ), '
', ( '2.19.1', None, + ( + '\n' + '\n' + '%(VERSION_STRING)sProducts are grouped by "classification". This\n' + 'is optional and controlled by the parameter \'useclassification\'. The\n' + 'classifications are used to help in finding bugs and in constructing\n' + 'meaningful time series, but have no other semantics in Bugzilla.\n' + 'There is a default classification, with ID 1, meaning\n' + '"Unclassified".
' + ), + ), + ( + '%(VERSION_STRING)sProducts are grouped by "classification". This\n' - 'is optional and controlled by the parameter \'useclassification\'. The\n' - 'classifications are used to help in finding bugs and in constructing\n' - 'meaningful time series, but have no other semantics in Bugzilla.\n' - 'There is a default classification, with ID 1, meaning\n' - '"Unclassified".
', + 'Each bug has a status (%(column-bugs-bug_status)s). If a bug has a\n' + 'status which shows it has been resolved, it also has a resolution\n' + '(%(column-bugs-resolution)s), otherwise the resolution field is empty.
' ), - 'Each bug has a status (%(column-bugs-bug_status)s). If a bug has a\n' - 'status which shows it has been resolved, it also has a resolution\n' - '(%(column-bugs-resolution)s), otherwise the resolution field is empty.
', ( '3.1.1', None, - '%(VERSION_STRING)sWorkflow is configurable. The\n' - 'possible status values are stored in %(the-table-bug_status)s; the\n' - 'transitions in %(the-table-status_workflow)s.
', + ( + '%(VERSION_STRING)sWorkflow is configurable. The\n' + 'possible status values are stored in %(the-table-bug_status)s; the\n' + 'transitions in %(the-table-status_workflow)s.
' + ), ), - 'This table shows the possible values and valid transitions of\n' - 'the status field in the default workflow.
\n' - '\n' - 'Status | \n' - '\n' - 'Resolved? | \n' - '\n' - 'Description | \n' - '\n' - 'Transitions | \n' - '\n' - '|||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
UNCONFIRMED | \n' + '
No | \n' + 'Status | \n' '\n' - '%(VERSION_STRING)sA new bug, when a product has voting | \n' + 'Resolved? | \n' '\n' - 'to NEW by voting or confirmation \n' - ' to ASSIGNED by acceptance \n' - ' to RESOLVED by resolution \n' - ' | \n'
+ ' Description | \n' + '\n' + 'Transitions | \n' + '\n' + '
---|---|---|---|---|---|---|
UNCONFIRMED | \n' + '\n' + 'No | \n' + '\n' + '%(VERSION_STRING)sA new bug, when a product has voting | \n' + '\n' + 'to NEW by voting or confirmation \n' + ' to ASSIGNED by acceptance \n' + ' to RESOLVED by resolution \n' + ' | \n'
+ '\n'
+ ' |||
UNCONFIRMED | \n' + '\n' + 'No | \n' + '\n' + '%(VERSION_STRING)sA new bug, when a product allows ' + 'UNCONFIRMED | \n' + '\n' + 'to NEW by confirmation \n' + ' to ASSIGNED by acceptance \n' + ' to RESOLVED by resolution \n' + ' | \n'
+ '\n'
+ ' |||
NEW | \n' + '\n' + 'No | \n' + '\n' + 'Recently added or confirmed | \n' + '\n' + 'to ASSIGNED by acceptance \n' + ' to RESOLVED by analysis and maybe fixing \n' + ' to NEW by reassignment \n' + ' | \n'
+ '\n'
+ ' |||
ASSIGNED | \n' + '\n' + 'No | \n' + '\n' + 'Has been assigned | \n' + '\n' + 'to NEW by reassignment \n' + ' to RESOLVED by analysis and maybe fixing \n' + ' | \n'
'\n'
- ' UNCONFIRMED | \n' + '||
REOPENED | \n' '\n' 'No | \n' '\n' - '%(VERSION_STRING)sA new bug, when a product allows ' - 'UNCONFIRMED | \n' + 'Was once resolved but has been reopened | \n' '\n' - 'to NEW by confirmation \n' + ' | to NEW by reassignment \n' ' to ASSIGNED by acceptance \n' - ' to RESOLVED by resolution \n' + ' to RESOLVED by analysis and maybe fixing \n' + ' | \n'
+ '\n'
+ ' |
RESOLVED | \n' + '\n' + 'Yes | \n' + '\n' + 'Has been resolved (e.g. fixed, deemed unfixable, etc. See ' + '"resolution" column) | \n' + '\n' + 'to REOPENED by reopening \n' + ' to VERIFIED by verification \n' + ' to CLOSED by closing \n' + ' | \n'
+ '\n'
+ ' |||
VERIFIED | \n' + '\n' + 'Yes | \n' + '\n' + 'The resolution has been approved by QA | \n' + '\n' + 'to CLOSED when the product ships \n' + ' to REOPENED by reopening \n' ' | \n'
'\n'
- ' |||
CLOSED | \n' + '\n' + 'Yes | \n' + '\n' + 'Over and done with | \n' + '\n' + 'to REOPENED by reopening | \n' + '\n' + '
This table shows the allowable values of the resolution field. The\n' + 'values "FIXED", "MOVED", and "DUPLICATE" have special meaning for\n' + 'Bugzilla. The other values may be changed, ' ), - '
This table shows the allowable values of the resolution field. The\n' - 'values "FIXED", "MOVED", and "DUPLICATE" have special meaning for\n' - 'Bugzilla. The other values may be changed, ', (None, '2.19.2', '%(VERSION_STRING)sby editing the schema of %(the-table-bugs)s, '), ( '2.19.3', @@ -3952,152 +3999,176 @@ '%(VERSION_STRING)sby manually updating %(the-table-resolution)s, ', ), ('2.23.3', None, '%(VERSION_STRING)sby using editvalues.cgi, '), - 'to add, remove, or rename values as necessary.
\n' - '\n' - 'Resolution | \n' - '\n' - 'Meaning | \n' - '\n' - '||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FIXED | \n' - '\n' - 'The bug has been fixed. | \n' - '\n' - '||||||||||||||||||||||
INVALID | \n' - '\n' - 'The problem described is not a bug. | \n' - '\n' - '||||||||||||||||||||||
WONTFIX | \n' - '\n' - 'This bug will never be fixed. | \n' - '\n' - '||||||||||||||||||||||
LATER | \n' - '\n' - 'This bug will not be fixed in this version. | \n' - '\n' - '||||||||||||||||||||||
REMIND | \n' - '\n' - 'This bug probably won\'t be fixed in this version. | \n' - '\n' - '||||||||||||||||||||||
DUPLICATE | \n' - '\n' - 'This is a duplicate of an existing bug A description comment\n'
- ' is added to this effect',
+ (
+ 'to add, remove, or rename values as necessary.\n'
+ '\n'
+ '
| MOVED | \n' + '%(VERSION_STRING)sThis bug has been moved to another ' - 'database. | \n' + '
Bugzilla has users. Each user is represented by one row in\n' - '%(the-table-profiles)s. Each user is referred by a number\n' - '(%(column-profiles-userid)s) and an email address\n' - '(%(column-profiles-login_name)s).
\n' - '\n' - '%(VERSION_STRING)sThere are various\n' - 'authentication mechanisms, including "environment variable\n' - 'authentication" (Bugzilla/Auth/Login/WWW/Env.pm) which uses\n' - 'environment variables to pass an external user ID\n' - '(%(column-profiles-extern_id)s) to the Bugzilla CGI. The rest of this\n' - 'section describes the password-based authentication which has always\n' - 'been in Bugzilla and which is still widely used.
', - ), - 'Each user has a password, used to authenticate that user to\n' - 'Bugzilla. The password is stored in %(column-profiles-cryptpassword)s in\n' - 'encrypted form.', + ( + '
%(VERSION_STRING)sThere are various\n' + 'authentication mechanisms, including "environment variable\n' + 'authentication" (Bugzilla/Auth/Login/WWW/Env.pm) which uses\n' + 'environment variables to pass an external user ID\n' + '(%(column-profiles-extern_id)s) to the Bugzilla CGI. The rest of this\n' + 'section describes the password-based authentication which has always\n' + 'been in Bugzilla and which is still widely used.
' + ), + ), + ( + 'Each user has a password, used to authenticate that user to\n' + 'Bugzilla. The password is stored in %(column-profiles-cryptpassword)s in\n' + 'encrypted form.' + ), ( None, '2.12', - ' %(VERSION_STRING)s it is also stored in\n' - '%(column-profiles-password)s as plaintext.', + ( + ' %(VERSION_STRING)s it is also stored in\n' + '%(column-profiles-password)s as plaintext.' + ), + ), + ( + '
\n' + '\n' + 'On a successful login, Bugzilla generates a pair of cookies for the\n' + 'user\'s browser. On subsequent accesses, a user gets access if these\n' + 'cookie checks pass:
\n' + '\n' + 'On a successful login, Bugzilla generates a pair of cookies for the\n' - 'user\'s browser. On subsequent accesses, a user gets access if these\n' - 'cookie checks pass:
\n' - '\n' - 'If the cookie checks fail, the user has to login (with their\n' - 'password), in which case a new row is added to\n' - '%(the-table-logincookies)s and the user gets a new pair of\n' - 'cookies.
\n' - '\n' - 'Rows in %(the-table-logincookies)s are deleted after 30 days (at\n' - 'user login time).
', + ( + 'If the cookie checks fail, the user has to login (with their\n' + 'password), in which case a new row is added to\n' + '%(the-table-logincookies)s and the user gets a new pair of\n' + 'cookies.
\n' + '\n' + 'Rows in %(the-table-logincookies)s are deleted after 30 days (at\n' + 'user login time).
' + ), ( '2.8', '3.6.13', - '%(VERSION_STRING)sUsers may vote for bugs which they think are\n' - 'important. A user can vote for a bug more than once. Votes are\n' - 'recorded in %(the-table-votes)s.
', + ( + '%(VERSION_STRING)sUsers may vote for bugs which they think are\n' + 'important. A user can vote for a bug more than once. Votes are\n' + 'recorded in %(the-table-votes)s.
' + ), ), ( '2.10', '3.6.13', - '%(VERSION_STRING)sThe maximum number of votes per\n' - 'bug per user is product-dependent. Whether or not project managers\n' - 'pay any attention to votes is up to them, apart from the "confirmation\n' - 'by acclamation" process, which is as follows:\n' - '\n' - 'New bugs have the status UNCONFIRMED. To enter the main workflow,\n' - 'they need the status NEW. To get the status NEW, they need a\n' - 'particular number of votes which is product-dependent.
', + ( + '%(VERSION_STRING)sThe maximum number of votes per\n' + 'bug per user is product-dependent. Whether or not project managers\n' + 'pay any attention to votes is up to them, apart from the "confirmation\n' + 'by acclamation" process, which is as follows:\n' + '\n' + 'New bugs have the status UNCONFIRMED. To enter the main workflow,\n' + 'they need the status NEW. To get the status NEW, they need a\n' + 'particular number of votes which is product-dependent.
' + ), ), ( '2.10', None, - '%(VERSION_STRING)sProducts may have "milestones" defined. The\n' - 'intention is that a milestone should be a point in a project at which\n' - 'a set of bugs has been resolved. An example might be a product\n' - 'release or a QA target. Milestones may be turned on and off with the\n' - 'parameter "usetargetmilestone".
\n' - '\n' - 'If milestones are on, each bug has a "target milestone" (by which\n' - 'it should be fixed). A product may have a URL associated with it\n' - 'which locates a document describing the milestones for that product.\n' - 'This document itself is entirely outside Bugzilla. A product may also\n' - 'have a default target milestone, which is given to new bugs.
\n' + ( + '%(VERSION_STRING)sProducts may have "milestones" defined. The\n' + 'intention is that a milestone should be a point in a project at which\n' + 'a set of bugs has been resolved. An example might be a product\n' + 'release or a QA target. Milestones may be turned on and off with the\n' + 'parameter "usetargetmilestone".
\n' + '\n' + 'If milestones are on, each bug has a "target milestone" (by which\n' + 'it should be fixed). A product may have a URL associated with it\n' + 'which locates a document describing the milestones for that product.\n' + 'This document itself is entirely outside Bugzilla. A product may also\n' + 'have a default target milestone, which is given to new bugs.
\n' + '\n' + 'Milestones for a product have a "sort key", which allows them to be\n' + 'presented in a specific order in the user interface.
\n' + '\n' + 'Milestones are kept in %(the-table-milestones)s.
' + ), + ), + ( + 'Products may have versions. This allows more accurate bug\n' + 'reporting: "we saw it in 1.3.7b3".' + ), + ('2.10', None, 'Versions are\ntotally independent of milestones.'), + ( + '
\n' '\n' - 'Milestones for a product have a "sort key", which allows them to be\n' - 'presented in a specific order in the user interface.
\n' + 'Milestones are kept in %(the-table-milestones)s.
', + 'The operation of Bugzilla is controlled by parameters. These are\n' + 'set in editparams.cgi. The current values are stored in data/params.\n' + 'They are not stored in the database.
\n' + '' ), - '
Products may have versions. This allows more accurate bug\n' - 'reporting: "we saw it in 1.3.7b3".', - ('2.10', None, 'Versions are\ntotally independent of milestones.'), - '
\n' - '\n' - 'The operation of Bugzilla is controlled by parameters. These are\n' - 'set in editparams.cgi. The current values are stored in data/params.\n' - 'They are not stored in the database.
\n' - '', ( None, '2.21.1', @@ -4202,383 +4289,356 @@ ( '2.22rc1', None, - '%(VERSION_STRING)sThe set of parameters is defined in the modules in ' - 'Bugzilla/Config/.', + ( + '%(VERSION_STRING)sThe set of parameters is defined in the modules in ' + 'Bugzilla/Config/.' + ), ), '
\n\n', ( '2.4', None, - '%(VERSION_STRING)sBugzilla has "groups" of users. Membership of a\n' - 'group allows a user to perform certain tasks. Each group is\n' - 'represented by a row of %(the-table-groups)s.
\n' - '\n' - 'There are a number of built-in groups, as follows:
\n' - '\n' - 'Name | \n' - '\n' - 'Description | \n' - '\n' - '
---|
Name | \n' + '\n' + 'Description | \n' + '\n' + '
---|---|
admin | \n' - '\n' - '%(VERSION_STRING)s Can administer all aspects of Bugzilla | \n' - '\n' - '
admin | \n' + '\n' + '%(VERSION_STRING)s Can administer all aspects of Bugzilla | \n' + '\n' + '
tweakparams | \n' - '\n' - 'Can tweak operating parameters | \n' - '\n' - '
tweakparams | \n' + '\n' + 'Can tweak operating parameters | \n' + '\n' + '
editgroupmembers | \n' - '\n' - '%(VERSION_STRING)sCan put people in and out of groups | \n' - '\n' - '
editgroupmembers | \n' + '\n' + '%(VERSION_STRING)sCan put people in and out of groups | \n' + '\n' + '
editusers | \n' - '\n' - 'Can edit or disable users | \n' - '\n' - '
editusers | \n' + '\n' + 'Can edit or disable users | \n' + '\n' + '
creategroups | \n' - '\n' - 'Can create and destroy groups | \n' - '\n' - '
editcomponents | \n' - '\n' - 'Can create, destroy, and edit components and other controls (e.g. ' - 'flagtypes). | \n' - '\n' - '
creategroups | \n' + '\n' + 'Can create and destroy groups | \n' + '\n' + '
editcomponents | \n' + '\n' + 'Can create, destroy, and edit components and other controls (e.g. ' + 'flagtypes). | \n' + '\n' + '
editkeywords | \n' - '\n' - '%(VERSION_STRING)sCan create, destroy, and edit keywords | \n' - '\n' - '
editbugs | \n' - '\n' - '%(VERSION_STRING)sCan edit all aspects of any bug | \n' - '\n' - '
canconfirm | \n' - '\n' - '%(VERSION_STRING)sCan confirm a bug | \n' - '\n' - '
editkeywords | \n' + '\n' + '%(VERSION_STRING)sCan create, destroy, and edit keywords | \n' + '\n' + '
editbugs | \n' + '\n' + '%(VERSION_STRING)sCan edit all aspects of any bug | \n' + '\n' + '
canconfirm | \n' + '\n' + '%(VERSION_STRING)sCan confirm a bug | \n' + '\n' + '
editclassifications | \n' - '\n' - '%(VERSION_STRING)s Can edit classifications | \n' - '\n' - '
bz_canusewhines | \n' - '\n' - '%(VERSION_STRING)s Can configure whine reports for self | \n' - '\n' - '
bz_canusewhineatothers | \n' - '\n' - '%(VERSION_STRING)s Can configure whine reports for other ' - 'users | \n' - '\n' - '
editclassifications | \n' + '\n' + '%(VERSION_STRING)s Can edit classifications | \n' + '\n' + '
bz_canusewhines | \n' + '\n' + '%(VERSION_STRING)s Can configure whine reports for self | \n' + '\n' + '
bz_canusewhineatothers | \n' + '\n' + '%(VERSION_STRING)s Can configure whine reports for other ' + 'users | \n' + '\n' + '
bz_sudoers | \n' - '\n' - '%(VERSION_STRING)s Can impersonate another user | \n' - '\n' - '
bz_sudo_protect | \n' - '\n' - '%(VERSION_STRING)s Cannot be impersonated | \n' - '\n' - '
bz_sudoers | \n' + '\n' + '%(VERSION_STRING)s Can impersonate another user | \n' + '\n' + '
bz_sudo_protect | \n' + '\n' + '%(VERSION_STRING)s Cannot be impersonated | \n' + '\n' + '
New groups may be added and used to control access to sets of bugs.\n' - 'These "bug groups" have %(column-groups-isbuggroup)s set to 1. A bug\n' - 'may be in any number of bug groups. To see a bug, a user must be a\n' - 'member of all the bug groups which the bug is in.
', + ( + 'New groups may be added and used to control access to sets of bugs.\n' + 'These "bug groups" have %(column-groups-isbuggroup)s set to 1. A bug\n' + 'may be in any number of bug groups. To see a bug, a user must be a\n' + 'member of all the bug groups which the bug is in.
' + ), ), ( '2.10', None, - '%(VERSION_STRING)sIf the parameter "usebuggroups"\n' - 'is on, each product automatically has a bug group associated with it.\n' - 'If the parameter "usebuggroupsentry" is also on, a user must be in the\n' - 'product\'s bug group in order to create new bugs for the\n' - 'product.
', + ( + '%(VERSION_STRING)sIf the parameter "usebuggroups"\n' + 'is on, each product automatically has a bug group associated with it.\n' + 'If the parameter "usebuggroupsentry" is also on, a user must be in the\n' + 'product\'s bug group in order to create new bugs for the\n' + 'product.
' + ), ), ( '2.10', None, - '%(VERSION_STRING)sUsers may be added to a group\n' - 'by any user who has the "bless" property for that group. The "bless"\n' - 'property itself may only be conferred by an administrator.
', + ( + '%(VERSION_STRING)sUsers may be added to a group\n' + 'by any user who has the "bless" property for that group. The "bless"\n' + 'property itself may only be conferred by an administrator.
' + ), ), ( '2.4', None, - 'Group membership for new users and new groups is\n' - 'determined by matching %(column-groups-userregexp)s against the user\'s\n' - 'email address.', + ( + '
Group membership for new users and new groups is\n' + 'determined by matching %(column-groups-userregexp)s against the user\'s\n' + 'email address.' + ), ), ( '2.10', None, - '%(VERSION_STRING)sThe default configuration has\n' - 'universal regexps for the "editbugs" and "canconfirm" groups.', + ( + '%(VERSION_STRING)sThe default configuration has\n' + 'universal regexps for the "editbugs" and "canconfirm" groups.' + ), ), ('2.4', None, '
\n\n'), ( '2.4', '2.16.7', - '%(VERSION_STRING)sEach group corresponds to a bit\n' - 'in a 64-bit bitset, %(column-groups-bit)s. User\n' - 'membership in a group is conferred by the bit being set in ' - '%(column-profiles-groupset)s. Bug\n' - 'membership in a bug group is conferred by the bit being set in ' - '%(column-bugs-groupset)s.', + ( + '%(VERSION_STRING)sEach group corresponds to a bit\n' + 'in a 64-bit bitset, %(column-groups-bit)s. User\n' + 'membership in a group is conferred by the bit being set in ' + '%(column-profiles-groupset)s. Bug\n' + 'membership in a bug group is conferred by the bit being set in ' + '%(column-bugs-groupset)s.' + ), ), ( '2.10', '2.16.7', - '%(VERSION_STRING)sThe bless\n' - 'privilege for a group is conferred by the bit being set in ' - '%(column-profiles-blessgroupset)s.', + ( + '%(VERSION_STRING)sThe bless\n' + 'privilege for a group is conferred by the bit being set in ' + '%(column-profiles-blessgroupset)s.' + ), ), ( '2.17.1', None, - '%(VERSION_STRING)sUser membership in a group is\n' - 'conferred by a row in %(the-table-user_group_map)s, with\n' - '%(column-user_group_map-isbless)s set to 0. The bless privilege for a\n' - 'group is conferred by a row with %(column-user_group_map-isbless)s set\n' - 'to 1. Bug membership in a bug group is conferred by a row in\n' - '%(the-table-bug_group_map)s.', + ( + '%(VERSION_STRING)sUser membership in a group is\n' + 'conferred by a row in %(the-table-user_group_map)s, with\n' + '%(column-user_group_map-isbless)s set to 0. The bless privilege for a\n' + 'group is conferred by a row with %(column-user_group_map-isbless)s set\n' + 'to 1. Bug membership in a bug group is conferred by a row in\n' + '%(the-table-bug_group_map)s.' + ), ), ('2.4', None, '
'), ( '2.17.1', None, - '%(VERSION_STRING)sGroups may be configured so\n' - 'that membership in one group automatically confers membership or the\n' - '"bless" privilege for another group. This is controlled by\n' - '%(the-table-group_group_map)s.
', + ( + '%(VERSION_STRING)sGroups may be configured so\n' + 'that membership in one group automatically confers membership or the\n' + '"bless" privilege for another group. This is controlled by\n' + '%(the-table-group_group_map)s.
' + ), ), ( '2.19.1', None, - '%(VERSION_STRING)sGroups may be configured so\n' - 'that the existence of a group is not visible to members of another\n' - 'group. This is controlled by %(the-table-group_group_map)s.
', + ( + '%(VERSION_STRING)sGroups may be configured so\n' + 'that the existence of a group is not visible to members of another\n' + 'group. This is controlled by %(the-table-group_group_map)s.
' + ), ), ( '2.17.3', None, - '%(VERSION_STRING)sA product may be configured\n' - 'so that membership in one or more groups is required to perform\n' - 'certain actions on bugs in the product. Whether or not a new bug for\n' - 'the product is placed in a group is also configurable (note that user\n' - 'membership in a group is required to place an existing bug in that\n' - 'group). All this is controlled by %(the-table-group_control_map)s.
\n' - '\n' - 'The %(column-group_control_map-membercontrol)s and\n' - '%(column-group_control_map-othercontrol)s\n' - 'columns of that table determine the treatment of a given group for a\n' - 'new bug in a given product, depending on whether the bug is being\n' - 'created by a member or non-member of that group respectively. The\n' - 'possible values of these columns are as follows:
\n' - '\n' - 'value | \n' - 'name | \n' - 'meaning | \n' - '
---|---|---|
0 | \n' - 'NA | \n' - 'A bug for this product cannot be placed in this group. | \n' - '
1 | \n' - 'Shown | \n' - 'A bug for this product may be placed in this group, but will not be ' - 'by default. | \n' - '
2 | \n' - 'Default | \n' - 'A bug for this product may be placed in this group, and is by ' - 'default. | \n' - '
3 | \n' - 'Mandatory | \n' - 'A bug for this product is always placed in this group. | \n' - '
Only certain combinations of membercontrol/othercontrol are\n' - 'permitted, as follows:
\n' - '\n' - 'membercontrol | \n' - 'othercontrol | \n' - 'Notes | \n' - '
---|---|---|
0(NA) | \n' - '0(NA) | \n' - 'A bug for this product can never be placed in this group (so the\n' - ' option isn\'t presented). | \n' - '\n' - '
1 (Shown) | \n' - '0(NA) | \n' - 'Only members can place a bug in this group.This is the default ' - 'setting. | \n' - '
1 (Shown) | \n' - 'Anyone can place a new bug in this group. | \n' - '|
2 (Default) | \n' - 'Anyone can place a bug in this group, and\n' - ' non-members will do so by default. | \n' - '|
3 (Mandatory) | \n' - 'Anyone can place a bug in this group, and non-members will always do ' - 'so. | \n' - '|
2 (Default) | \n' - '0(NA) | \n' - 'Only members can place a bug in this group, and do so by ' - 'default. | \n' - '
2 (Default) | \n' - 'Anyone can place a bug in this group, and does so by default. | \n' - '|
3 (Mandatory) | \n' - 'Members can place a bug in this group, and do so by default.\n' - ' Non-members always place a bug in this group. | \n' - '|
3(Mandatory) | \n' - '3(Mandatory) | \n' - 'A bug for this product can never be removed from this group (so\n' - ' the option isn\'t presented). | \n' - '
%(VERSION_STRING)sA product may be configured\nso that membership in' + ' one or more groups is required to perform\ncertain actions on bugs in the' + ' product. Whether or not a new bug for\nthe product is placed in a group' + ' is also configurable (note that user\nmembership in a group is required' + ' to place an existing bug in that\ngroup). All this is controlled by' + ' %(the-table-group_control_map)s.
\n\nThe' + ' %(column-group_control_map-membercontrol)s' + ' and\n%(column-group_control_map-othercontrol)s\ncolumns of that table' + ' determine the treatment of a given group for a\nnew bug in a given' + ' product, depending on whether the bug is being\ncreated by a member or' + ' non-member of that group respectively. The\npossible values of these' + ' columns are as follows:
\n\nvalue | \nname | \n ' + 'meaning | \n
---|---|---|
0 | \nNA | \nA bug' + ' for this product cannot be placed in this group. | \n
1 | \nShown | \nA bug for this product may be placed' + ' in this group, but will not be by default. | \n
2 | \nDefault | \nA bug for this product may be' + ' placed in this group, and is by default. | \n
3 | \nMandatory | \nA bug for this product is always' + ' placed in this group. | \n
Only certain' + ' combinations of membercontrol/othercontrol are\npermitted, as' + ' follows:
\n\nmembercontrol | \nothercontrol | \n ' + 'Notes | \n
---|---|---|
0(NA) | \n0(NA) | \nA' + ' bug for this product can never be placed in this group (so the\n option' + ' isn\'t presented). | \n\n
1' + ' (Shown) | \n0(NA) | \nOnly members can place a bug in' + ' this group.This is the default setting. | \n
1 (Shown) | \nAnyone can place a new bug in this' + ' group. | \n|
2 (Default) | \nAnyone can' + ' place a bug in this group, and\n non-members will do so by' + ' default. | \n|
3 (Mandatory) | \nAnyone can' + ' place a bug in this group, and non-members will always do' + ' so. | \n|
2 (Default) | \n ' + '0(NA) | \nOnly members can place a bug in this group, and do' + ' so by default. | \n
2 (Default) | \nAnyone' + ' can place a bug in this group, and does so by' + ' default. | \n|
3 (Mandatory) | \nMembers can' + ' place a bug in this group, and do so by default.\n Non-members always' + ' place a bug in this group. | \n|
3(Mandatory) | \n' + '3(Mandatory) | \nA bug for this product can never be removed' + ' from this group (so\n the option isn\'t' + ' presented). | \n
%(VERSION_STRING)sUsers can upload attachments to bugs. An\n' - 'attachments can be marked as a patch. Attachments are stored in\n' - '%(the-table-attachments)s.', + ( + '
%(VERSION_STRING)sUsers can upload attachments to bugs. An\n' + 'attachments can be marked as a patch. Attachments are stored in\n' + '%(the-table-attachments)s.' + ), ), ( '2.16rc1', @@ -4588,8 +4648,10 @@ ( '2.6', '2.20.7', - '%(VERSION_STRING)sAttachment data is stored in\n' - '%(column-attachments-thedata)s.', + ( + '%(VERSION_STRING)sAttachment data is stored in\n' + '%(column-attachments-thedata)s.' + ), ), ( '2.21.1', @@ -4599,222 +4661,250 @@ ( '2.22rc1', None, - '%(VERSION_STRING)sAttachments can be URLs, marked\n' - 'by the flag %(column-attachments-isurl)s. The URL itself is stored in\n' - '%(column-attach_data-thedata)s.', + ( + '%(VERSION_STRING)sAttachments can be URLs, marked\n' + 'by the flag %(column-attachments-isurl)s. The URL itself is stored in\n' + '%(column-attach_data-thedata)s.' + ), ), '
', ( '2.16rc1', '2.16.7', - '%(VERSION_STRING)sEach attachment may have\n' - 'one of a number of "status" keywords associated with it. The status\n' - 'keywords are user-defined on a per-product basis. The set of status\n' - 'keywords is defined in %(the-table-attachstatusdefs)s. Whether a\n' - 'given attachment has a given status keyword is defined by\n' - '%(the-table-attachstatuses)s.
', + ( + '%(VERSION_STRING)sEach attachment may have\n' + 'one of a number of "status" keywords associated with it. The status\n' + 'keywords are user-defined on a per-product basis. The set of status\n' + 'keywords is defined in %(the-table-attachstatusdefs)s. Whether a\n' + 'given attachment has a given status keyword is defined by\n' + '%(the-table-attachstatuses)s.
' + ), ), ( '2.17.1', None, - '%(VERSION_STRING)sAttachment statuses are\n' - 'implemented with the flags system.
', + ( + '%(VERSION_STRING)sAttachment statuses are\n' + 'implemented with the flags system.
' + ), ), ( '2.17.1', None, - '\n' - '\n' - '%(VERSION_STRING)sBugs and attachments may be marked with "flags".\n' - 'The set of flag types is user-defined (using editflagtypes.cgi). For\n' - 'instance, a flag type might be "candidate for version 7.3 triage", or\n' - '"7.3" for short. Flag types are recorded in %(the-table-flagtypes)s.\n' - 'Each flag type is either for bugs or for attachments, not both.
\n' - '\n' - 'Actual flags are recorded in %(the-table-flags)s. Each flag has a\n' - 'status of "+" ("granted"), "-" ("denied") or "?" ("requested"). For\n' - 'instance, one bug might have flag "7.3+", and another might have flag\n' - '"7.3-".
\n' - '\n' - 'A status of "?" indicates that a user has requested that this item\n' - 'be given this flag. There is an special interface for viewing request\n' - 'flags (request.cgi). A request flag may be marked for the attention\n' - 'of a particular user, the "requestee".
\n' - '\n' - 'A flag type may have a "CC list" of email addresses, of people to\n' - 'notify when a flag is requested.
\n' - '\n' - 'By default, a single bug or attachment may receive several flags of\n' - 'the same type, with the same or different statuses and the same or\n' - 'different requestees. This may be disabled for any given flag\n' - 'type.
\n' - '\n' - 'Particular flag types may only be available to bugs in certain\n' - 'products and components (or their attachments). This is recorded in\n' - '%(the-table-flaginclusions)s. Particular flag types may not\n' - 'be available to bugs in certain products and components (or their\n' - 'attachments). This is recorded in %(the-table-flagexclusions)s.
\n' - '\n' - 'Various features of flag types may be disabled: they can be made\n' - 'inactive, not requestable, not "requesteeable", not "multiplicable".
\n' - '\n', + ( + '\n' + '\n' + '%(VERSION_STRING)sBugs and attachments may be marked with "flags".\n' + 'The set of flag types is user-defined (using editflagtypes.cgi). For\n' + 'instance, a flag type might be "candidate for version 7.3 triage", or\n' + '"7.3" for short. Flag types are recorded in %(the-table-flagtypes)s.\n' + 'Each flag type is either for bugs or for attachments, not both.
\n' + '\n' + 'Actual flags are recorded in %(the-table-flags)s. Each flag has a\n' + 'status of "+" ("granted"), "-" ("denied") or "?" ("requested"). For\n' + 'instance, one bug might have flag "7.3+", and another might have flag\n' + '"7.3-".
\n' + '\n' + 'A status of "?" indicates that a user has requested that this item\n' + 'be given this flag. There is an special interface for viewing request\n' + 'flags (request.cgi). A request flag may be marked for the attention\n' + 'of a particular user, the "requestee".
\n' + '\n' + 'A flag type may have a "CC list" of email addresses, of people to\n' + 'notify when a flag is requested.
\n' + '\n' + 'By default, a single bug or attachment may receive several flags of\n' + 'the same type, with the same or different statuses and the same or\n' + 'different requestees. This may be disabled for any given flag\n' + 'type.
\n' + '\n' + 'Particular flag types may only be available to bugs in certain\n' + 'products and components (or their attachments). This is recorded in\n' + '%(the-table-flaginclusions)s. Particular flag types may not\n' + 'be available to bugs in certain products and components (or their\n' + 'attachments). This is recorded in %(the-table-flagexclusions)s.
\n' + '\n' + 'Various features of flag types may be disabled: they can be made\n' + 'inactive, not requestable, not "requesteeable", not "multiplicable".
\n' + '\n' + ), ), ( '2.10', None, - '\n' - '\n' - '%(VERSION_STRING)sBugzilla users can define a number of keywords,\n' - 'and then give each bug a set of keywords. This is mainly for use in\n' - 'finding related bugs. The keywords are stored in\n' - '%(the-table-keyworddefs)s, and the one-to-many mapping from bugs to\n' - 'keywords is stored in %(the-table-keywords)s, and also in\n' - '%(column-bugs-keywords)s.
\n' - '\n', + ( + '\n' + '\n' + '%(VERSION_STRING)sBugzilla users can define a number of keywords,\n' + 'and then give each bug a set of keywords. This is mainly for use in\n' + 'finding related bugs. The keywords are stored in\n' + '%(the-table-keyworddefs)s, and the one-to-many mapping from bugs to\n' + 'keywords is stored in %(the-table-keywords)s, and also in\n' + '%(column-bugs-keywords)s.
\n' + '\n' + ), ), ( '2.6', None, - '%(VERSION_STRING)sBugs may depend on other bugs being fixed. That\n' - 'is, it may be impossible to fix one bug until another one is fixed.\n' - 'Bugzilla records and displays such information and uses it to notify\n' - 'users when a bug changes (all contacts for all dependent bugs are\n' - 'notified when a bug changes).
\n' + ( + '%(VERSION_STRING)sBugs may depend on other bugs being fixed. That\n' + 'is, it may be impossible to fix one bug until another one is fixed.\n' + 'Bugzilla records and displays such information and uses it to notify\n' + 'users when a bug changes (all contacts for all dependent bugs are\n' + 'notified when a bug changes).
\n' + '\n' + 'Dependencies are recorded in %(the-table-dependencies)s.
' + ), + ), + ( + 'Dependencies are recorded in %(the-table-dependencies)s.
', + 'Bugzilla keeps a record of changes made to bugs. This record is in\n' + '%(the-table-bugs_activity)s. Each row in this table records a change\n' + 'to a field in %(the-table-bugs)s.' ), - '
Bugzilla keeps a record of changes made to bugs. This record is in\n' - '%(the-table-bugs_activity)s. Each row in this table records a change\n' - 'to a field in %(the-table-bugs)s.', ( '2.10', None, - '%(VERSION_STRING)sThe fields are referred to by a\n' - 'number which is looked up in %(the-table-fielddefs)s. This table\n' - 'records the name of the field and also a longer description used to\n' - 'display activity tables.', + ( + '%(VERSION_STRING)sThe fields are referred to by a\n' + 'number which is looked up in %(the-table-fielddefs)s. This table\n' + 'records the name of the field and also a longer description used to\n' + 'display activity tables.' + ), + ), + ( + '
\n' + '\n' + 'Each bug has a "severity" field, %(column-bugs-bug_severity)s,\n' + 'indicating the severity of the impact of the bug. There is no code in\n' + 'Bugzilla which distinguishes the values of this field, although it may\n' + 'naturally be used in queries.' ), - '
\n' - '\n' - 'Each bug has a "severity" field, %(column-bugs-bug_severity)s,\n' - 'indicating the severity of the impact of the bug. There is no code in\n' - 'Bugzilla which distinguishes the values of this field, although it may\n' - 'naturally be used in queries.', ( '2.19.3', None, - '%(VERSION_STRING)sThe set of values available for\n' - 'this field is stored in %(table-bug_severity)s and can be controlled\n' - 'by the administrator. ', + ( + '%(VERSION_STRING)sThe set of values available for\n' + 'this field is stored in %(table-bug_severity)s and can be controlled\n' + 'by the administrator. ' + ), + ), + ( + 'The intended meanings of the built-in values of this field are as\n' + 'follows:
\n' + '\n' + 'Value | \n' + '\n' + 'Intended meaning | \n' + '\n' + '
---|---|
Blocker | \n' + '\n' + 'Blocks development and/or testing work | \n' + '\n' + '
Critical | \n' + '\n' + 'Crashes, loss of data, severe memory leak | \n' + '\n' + '
Major | \n' + '\n' + 'Major loss of function | \n' + '\n' + '
Minor | \n' + '\n' + 'Minor loss of function, or other problem where easy workaround is ' + 'present | \n' + '\n' + '
Trivial | \n' + '\n' + 'Cosmetic problem | \n' + '\n' + '
Enhancement | \n' + '\n' + 'Request for enhancement | \n' + '\n' + '
When a bug changes, email notification is sent out to a number of\n' + 'users:
\n' + '\n' + '' ), - 'The intended meanings of the built-in values of this field are as\n' - 'follows:
\n' - '\n' - 'Value | \n' - '\n' - 'Intended meaning | \n' - '\n' - '
---|---|
Blocker | \n' - '\n' - 'Blocks development and/or testing work | \n' - '\n' - '
Critical | \n' - '\n' - 'Crashes, loss of data, severe memory leak | \n' - '\n' - '
Major | \n' - '\n' - 'Major loss of function | \n' - '\n' - '
Minor | \n' - '\n' - 'Minor loss of function, or other problem where easy workaround is ' - 'present | \n' - '\n' - '
Trivial | \n' - '\n' - 'Cosmetic problem | \n' - '\n' - '
Enhancement | \n' - '\n' - 'Request for enhancement | \n' - '\n' - '
When a bug changes, email notification is sent out to a number of\n' - 'users:
\n' - '\n' - '', ( '2.12', None, - '%(VERSION_STRING)sIndividual users may filter\n' - 'these messages according to the way in which the bug changes and their\n' - 'relationship to the bug.\n', + ( + '%(VERSION_STRING)sIndividual users may filter\n' + 'these messages according to the way in which the bug changes and their\n' + 'relationship to the bug.\n' + ), ), ( '2.12', '2.19.2', - '%(VERSION_STRING)sThese filtering preferences are\n' - 'recorded in %(column-profiles-emailflags)s.\n', + ( + '%(VERSION_STRING)sThese filtering preferences are\n' + 'recorded in %(column-profiles-emailflags)s.\n' + ), ), ( '2.19.3', None, - '%(VERSION_STRING)sThese filtering preferences are\n' - 'recorded in the %(table-email_setting)s table.\n', + ( + '%(VERSION_STRING)sThese filtering preferences are\n' + 'recorded in the %(table-email_setting)s table.\n' + ), ), ('2.12', None, '
\n\n'), ( @@ -4825,27 +4915,33 @@ ( '2.17.4', None, - '%(VERSION_STRING)sThis is handled by the\n' - 'Bugzilla::Bugmail module, which is invoked by the template system\n' - '(from Bugzilla::Template) when it encounters a call to SendBugMail()\n' - 'in a template. ', + ( + '%(VERSION_STRING)sThis is handled by the\n' + 'Bugzilla::Bugmail module, which is invoked by the template system\n' + '(from Bugzilla::Template) when it encounters a call to SendBugMail()\n' + 'in a template. ' + ), ), ( '3.3.1', None, - '
%(VERSION_STRING)sIf the parameter\n' - '"use_mailer_queue" is set, all email is queued to be sent\n' - 'asynchronously. This is managed by a third-party general-purpose Perl\n' - 'job queueing system called TheSchwartz, using several database tables\n' - 'of its own (%(table-ts_error)s, %(table-ts_exitstatus)s,\n' - '%(table-ts_funcmap)s, %(table-ts_job)s, and %(table-ts_note)s).', + ( + '%(VERSION_STRING)sIf the parameter\n' + '"use_mailer_queue" is set, all email is queued to be sent\n' + 'asynchronously. This is managed by a third-party general-purpose Perl\n' + 'job queueing system called TheSchwartz, using several database tables\n' + 'of its own (%(table-ts_error)s, %(table-ts_exitstatus)s,\n' + '%(table-ts_funcmap)s, %(table-ts_job)s, and %(table-ts_note)s).' + ), + ), + ( + '\n' + '\n' + 'Each bug has a number of comments associated with it. ' ), - '
\n' - '\n' - 'Each bug has a number of comments associated with it. ', ( None, '2.8', @@ -4856,75 +4952,87 @@ None, '%(VERSION_STRING)sThese are stored individually in\n%(the-table-longdescs)s.', ), - '
\n' - '\n' - 'They are displayed as the "Description" on the bug form, ordered by\n' - 'date and annotated with the user and date. Users can add new comments\n' - 'with the "Additional comment" field on the bug form.
', + ( + '\n' + '\n' + 'They are displayed as the "Description" on the bug form, ordered by\n' + 'date and annotated with the user and date. Users can add new comments\n' + 'with the "Additional comment" field on the bug form.
' + ), ( '2.10', None, - '%(VERSION_STRING)sUsers can name queries. Links to named query\n' - 'pages appear in a navigation footer bar on most Bugzilla pages. A\n' - 'query named "(Default query)" is a user\'s default query. Named\n' - 'queries are stored in %(the-table-namedqueries)s.
\n' - '\n', + ( + '%(VERSION_STRING)sUsers can name queries. Links to named query\n' + 'pages appear in a navigation footer bar on most Bugzilla pages. A\n' + 'query named "(Default query)" is a user\'s default query. Named\n' + 'queries are stored in %(the-table-namedqueries)s.
\n' + '\n' + ), ), ( '2.23.3', None, - '%(VERSION_STRING)sIf the parameter\n' - '"querysharegroup" is set, it names a group of users who are empowered\n' - 'to share named queries. An empowered user can share a given named\n' - 'query they create with all the members of a group, as long as he or\n' - 'she has the "bless" property for that group. A query can only be\n' - 'shared with a single group. Sharing is recorded in\n' - '%(the-table-namedquery_group_map)s.
\n' - '\n' - '%(VERSION_STRING)sAny user able to use a given named query can\n' - 'control whether or not that query appears in his or her navigation\n' - 'footer bar. This is recorded in\n' - '%(the-table-namedqueries_link_in_footer)s.
\n' - '\n', + ( + '%(VERSION_STRING)sIf the parameter\n' + '"querysharegroup" is set, it names a group of users who are empowered\n' + 'to share named queries. An empowered user can share a given named\n' + 'query they create with all the members of a group, as long as he or\n' + 'she has the "bless" property for that group. A query can only be\n' + 'shared with a single group. Sharing is recorded in\n' + '%(the-table-namedquery_group_map)s.
\n' + '\n' + '%(VERSION_STRING)sAny user able to use a given named query can\n' + 'control whether or not that query appears in his or her navigation\n' + 'footer bar. This is recorded in\n' + '%(the-table-namedqueries_link_in_footer)s.
\n' + '\n' + ), ), ( '2.17.5', None, - '%(VERSION_STRING)sBugzilla can draw general time-series charts.\n' - 'There are a number of default time series. Each product has a default\n' - 'series for each bug status or resolution (for instance "how many bugs\n' - 'are INVALID in product Foo") and each component has a default series\n' - 'for all open bugs (UNCONFIRMED/NEW/ASSIGNED/REOPENED) and one for all\n' - 'closed bugs (RESOLVED/VERIFIED/CLOSED). A user can also define a new\n' - 'time series based on any query, and give it a "frequency" (actually a\n' - 'period, measured in days). The set of series is stored in\n' - '%(the-table-series)s.
\n' - '\n' - 'To collect the data for the time series, the Bugzilla administrator\n' - 'needs to arrange for the collectstats.pl script to be run every day.\n' - 'This script stores the data in %(the-table-series_data)s.
\n' - '\n' - 'Series have categories and subcategories, which are provided in\n' - 'order to make it easier to manage large numbers of series. They are\n' - 'normalized in %(the-table-series_categories)s.
\n', + ( + '%(VERSION_STRING)sBugzilla can draw general time-series charts.\n' + 'There are a number of default time series. Each product has a default\n' + 'series for each bug status or resolution (for instance "how many bugs\n' + 'are INVALID in product Foo") and each component has a default series\n' + 'for all open bugs (UNCONFIRMED/NEW/ASSIGNED/REOPENED) and one for all\n' + 'closed bugs (RESOLVED/VERIFIED/CLOSED). A user can also define a new\n' + 'time series based on any query, and give it a "frequency" (actually a\n' + 'period, measured in days). The set of series is stored in\n' + '%(the-table-series)s.
\n' + '\n' + 'To collect the data for the time series, the Bugzilla administrator\n' + 'needs to arrange for the collectstats.pl script to be run every day.\n' + 'This script stores the data in %(the-table-series_data)s.
\n' + '\n' + 'Series have categories and subcategories, which are provided in\n' + 'order to make it easier to manage large numbers of series. They are\n' + 'normalized in %(the-table-series_categories)s.
\n' + ), ), ( '2.17.5', None, - 'By default, a time series is "private": only\n' - 'visible to the user who created it. An administrator may make a time\n' - 'series "public", or visible to other users.', + ( + '
By default, a time series is "private": only\n' + 'visible to the user who created it. An administrator may make a time\n' + 'series "public", or visible to other users.' + ), ), ( '2.17.5', '2.18rc2', - '%(VERSION_STRING)s this is determined by the\n' - '"subscription" system (see below).', + ( + '%(VERSION_STRING)s this is determined by the\n' + '"subscription" system (see below).' + ), ), ( '2.18rc3', @@ -4935,184 +5043,208 @@ ( '2.17.5', '2.18rc2', - '
%(VERSION_STRING)sIf a series is "private"\n' - '(not "public") then users may "subscribe" to it. Each user is\n' - 'automatically subscribed to any series created by that user. The\n' - 'subscription is recorded in %(the-table-user_series_map)s. If all\n' - 'users unsubscribe from a time series, data will stop being collected\n' - 'on it (by setting the period to 0 days). A series is "public" if\n' - '%(column-user_series_map-user_id)s is zero.
', + ( + '%(VERSION_STRING)sIf a series is "private"\n' + '(not "public") then users may "subscribe" to it. Each user is\n' + 'automatically subscribed to any series created by that user. The\n' + 'subscription is recorded in %(the-table-user_series_map)s. If all\n' + 'users unsubscribe from a time series, data will stop being collected\n' + 'on it (by setting the period to 0 days). A series is "public" if\n' + '%(column-user_series_map-user_id)s is zero.
' + ), ), ( '2.18rc3', None, - '%(VERSION_STRING)sVisibility of a time series\n' - 'to a user is determined on a per-category basis using the groups\n' - 'system. The group memberships required to see a time series in a\n' - 'given category are recorded in %(the-table-category_group_map)s. A\n' - 'user may see a time series if they are in all the groups for the\n' - 'category and either ths user created the series or it is\n' - 'public.
\n' - '\n', + ( + '%(VERSION_STRING)sVisibility of a time series\n' + 'to a user is determined on a per-category basis using the groups\n' + 'system. The group memberships required to see a time series in a\n' + 'given category are recorded in %(the-table-category_group_map)s. A\n' + 'user may see a time series if they are in all the groups for the\n' + 'category and either ths user created the series or it is\n' + 'public.
\n' + '\n' + ), ), ( '2.10', None, - '%(VERSION_STRING)sBugzilla lets users "watch" each other; receiving\n' - 'each other\'s Bugzilla email. For instance, if Sam goes on holiday,\n' - 'Phil can "watch" her, receiving all her Bugzilla email. This is set\n' - 'up by the user preferences (userprefs.cgi), recorded in\n' - '%(the-table-watch)s and handled by the email\n' - 'subsystem.
\n' - '\n', + ( + '%(VERSION_STRING)sBugzilla lets users "watch" each other; receiving\n' + 'each other\'s Bugzilla email. For instance, if Sam goes on holiday,\n' + 'Phil can "watch" her, receiving all her Bugzilla email. This is set\n' + 'up by the user preferences (userprefs.cgi), recorded in\n' + '%(the-table-watch)s and handled by the email\n' + 'subsystem.
\n' + '\n' + ), ), ( '2.10', '2.17.1', - '\n' - '%(VERSION_STRING)s: Bugzilla can maintain a shadow, read-only copy\n' - 'of everything in another database (with the parameter "shadowdb"). If\n' - 'the parameter "queryagainstshadowdb" is on, queries were run against\n' - 'the shadow. A record of SQL activity since the last reflection is\n' - 'kept in %(the-table-shadowlog)s.
', + ( + '\n' + '%(VERSION_STRING)s: Bugzilla can maintain a shadow, read-only copy\n' + 'of everything in another database (with the parameter "shadowdb"). If\n' + 'the parameter "queryagainstshadowdb" is on, queries were run against\n' + 'the shadow. A record of SQL activity since the last reflection is\n' + 'kept in %(the-table-shadowlog)s.
' + ), ), ( '2.17.1', None, - '\n' - '%(VERSION_STRING)s Bugzilla can track time for each bug, if the\n' - '"timetrackinggroup" parameter is set. Members of that group get the\n' - 'ability to estimate the amount of effort (measured in hours) a bug\n' - 'will take to fix, either when creating or when editing the bug.\n' - 'Members of that group are also permitted to record hours of effort\n' - 'spent on the bug
\n' - '\n' - '%(column-longdescs-work_time)s\n' - 'records each increment of work. The sum of this column for a bug is\n' - 'computed to display as "Hours Worked" for the bug.
\n' - '\n' - '%(column-bugs-estimated_time)s is\n' - 'the estimate for how much time the bug will take in total, displayed\n' - 'as "Orig. Est.". This can be changed by members of the\n' - 'timetrackinggroup.
\n' - '\n' - '%(column-bugs-remaining_time)s is\n' - 'the current estimate for how much more time the bug will take to fix,\n' - 'displayed as "Hours Left". This can be changed by members of the\n' - 'timetrackinggroup.
\n' - '\n' - 'The total of "Hours Left" and "Hours Worked" is shown as "Current\n' - 'Est.": the current estimate of the total effort required to fix the\n' - 'bug. "Hours Worked" as a percentage of "Current Est" is shown as "%%\n' - 'Complete". "Current Est" deducted from "Orig. Est" is shown as\n' - '"Gain"
', + ( + '\n' + '%(VERSION_STRING)s Bugzilla can track time for each bug, if the\n' + '"timetrackinggroup" parameter is set. Members of that group get the\n' + 'ability to estimate the amount of effort (measured in hours) a bug\n' + 'will take to fix, either when creating or when editing the bug.\n' + 'Members of that group are also permitted to record hours of effort\n' + 'spent on the bug
\n' + '\n' + '%(column-longdescs-work_time)s\n' + 'records each increment of work. The sum of this column for a bug is\n' + 'computed to display as "Hours Worked" for the bug.
\n' + '\n' + '%(column-bugs-estimated_time)s is\n' + 'the estimate for how much time the bug will take in total, displayed\n' + 'as "Orig. Est.". This can be changed by members of the\n' + 'timetrackinggroup.
\n' + '\n' + '%(column-bugs-remaining_time)s is\n' + 'the current estimate for how much more time the bug will take to fix,\n' + 'displayed as "Hours Left". This can be changed by members of the\n' + 'timetrackinggroup.
\n' + '\n' + 'The total of "Hours Left" and "Hours Worked" is shown as "Current\n' + 'Est.": the current estimate of the total effort required to fix the\n' + 'bug. "Hours Worked" as a percentage of "Current Est" is shown as "%%\n' + 'Complete". "Current Est" deducted from "Orig. Est" is shown as\n' + '"Gain"
' + ), ), ( '2.19.3', None, + ( + '\n' + '%(VERSION_STRING)s%(column-bugs-deadline)s records a calendar deadline ' + 'for the bug.
' + ), + ), + ( + 'Bugzilla has a system for sending "whine" email messages to\n' + 'specified users on a regular basis. This system relies on the\n' + 'administrator configuring the Bugzilla server to run a script at\n' + 'regular intervals (e.g. by using crontab).
\n' '\n' - '%(VERSION_STRING)s%(column-bugs-deadline)s records a calendar deadline ' - 'for the bug.
', + 'The whineatnews.pl
script should be run once a day.\n'
+ 'For each bug which has status NEW or REOPENED, and which has not\n'
+ 'changed for a certain number of days, it sends a message to the bug\'s\n'
+ 'owner. The number of days is controlled by a Bugzilla parameter\n'
+ 'called "whinedays". The content of the email message is controlled by\n'
+ 'a Bugzilla parameter called "whinemail".
Bugzilla has a system for sending "whine" email messages to\n' - 'specified users on a regular basis. This system relies on the\n' - 'administrator configuring the Bugzilla server to run a script at\n' - 'regular intervals (e.g. by using crontab).
\n' - '\n' - 'The whineatnews.pl
script should be run once a day.\n'
- 'For each bug which has status NEW or REOPENED, and which has not\n'
- 'changed for a certain number of days, it sends a message to the bug\'s\n'
- 'owner. The number of days is controlled by a Bugzilla parameter\n'
- 'called "whinedays". The content of the email message is controlled by\n'
- 'a Bugzilla parameter called "whinemail".
%(VERSION_STRING)sThe whine.pl
\n'
- 'script runs a separate whine system, which allows a number of whine\n'
- 'schedules to be established with varying frequency (up to every 15\n'
- 'minutes), criteria, and content of whine messages. It is configured\n'
- 'with editwhines.cgi
. Obviously, whine.pl
\n'
- 'needs to be run every 15 minutes in order to send the most frequent\n'
- 'messages.
Users must be in the bz_canusewhines group to configure whine\n' - 'messages. Users must be in the bz_canusewhineatothers group to\n' - 'configure whine messages to be sent to other users. These\n' - 'restrictions are checked when configuring whine messages and also\n' - 'before messages are sent, so removing a user from one of these groups\n' - 'will disable any whines which that user has configured.
\n' - '\n' - 'A whine schedule, stored in %(the-table-whine_schedules)s,\n' - 'specifies the frequency with which an email should be sent to a\n' - 'particular user. The email is specified with a whine event (see\n' - 'below). There is a variety of ways of specifying the frequency: both\n' - 'days (every day, a particular day of the week, weekdays only, a\n' - 'particular day of the month, the last day of the month) and times (a\n' - 'particular hour, or every 15, 30, or 60 minutes).
\n' - '\n', + ( + '%(VERSION_STRING)sThe whine.pl
\n'
+ 'script runs a separate whine system, which allows a number of whine\n'
+ 'schedules to be established with varying frequency (up to every 15\n'
+ 'minutes), criteria, and content of whine messages. It is configured\n'
+ 'with editwhines.cgi
. Obviously, whine.pl
\n'
+ 'needs to be run every 15 minutes in order to send the most frequent\n'
+ 'messages.
Users must be in the bz_canusewhines group to configure whine\n' + 'messages. Users must be in the bz_canusewhineatothers group to\n' + 'configure whine messages to be sent to other users. These\n' + 'restrictions are checked when configuring whine messages and also\n' + 'before messages are sent, so removing a user from one of these groups\n' + 'will disable any whines which that user has configured.
\n' + '\n' + 'A whine schedule, stored in %(the-table-whine_schedules)s,\n' + 'specifies the frequency with which an email should be sent to a\n' + 'particular user. The email is specified with a whine event (see\n' + 'below). There is a variety of ways of specifying the frequency: both\n' + 'days (every day, a particular day of the week, weekdays only, a\n' + 'particular day of the month, the last day of the month) and times (a\n' + 'particular hour, or every 15, 30, or 60 minutes).
\n' + '\n' + ), ), ( '2.19.3', None, - '\n' - '%(VERSION_STRING)sWhines may be scheduled for groups as well as ' - 'users.
', + ( + '\n' + '%(VERSION_STRING)sWhines may be scheduled for groups as well as ' + 'users.
' + ), ), ( '2.19.1', None, - '\n' - 'A whine schedule, stored in %(the-table-whine_schedules)s,\n' - 'specifies the frequency with which an email should be sent to a\n' - 'particular user. The email is specified with a whine event (see\n' - 'below). There is a variety of ways of specifying the frequency: both\n' - 'days (every day, a particular day of the week, weekdays only, a\n' - 'particular day of the month, the last day of the month) and times (a\n' - 'particular hour, or every 15, 30, or 60 minutes).
\n' - '\n' - 'A whine event, stored in %(the-table-whine_events)s, describes an\n' - 'email message: subject line and some body text to precede query\n' - 'results. A message may consist of more than one whine query.
\n' - '\n' - 'A whine query, stored in %(the-table-whine_queries)s is a named query, to which a title is given\n' - 'for use in email messages. Whine queries are stored in\n' - '%(the-table-whine_queries)s. A whine query may specify that a\n' - 'separate message is to be sent for each bug found.
\n', + ( + '\n' + 'A whine schedule, stored in %(the-table-whine_schedules)s,\n' + 'specifies the frequency with which an email should be sent to a\n' + 'particular user. The email is specified with a whine event (see\n' + 'below). There is a variety of ways of specifying the frequency: both\n' + 'days (every day, a particular day of the week, weekdays only, a\n' + 'particular day of the month, the last day of the month) and times (a\n' + 'particular hour, or every 15, 30, or 60 minutes).
\n' + '\n' + 'A whine event, stored in %(the-table-whine_events)s, describes an\n' + 'email message: subject line and some body text to precede query\n' + 'results. A message may consist of more than one whine query.
\n' + '\n' + 'A whine query, stored in %(the-table-whine_queries)s is a named query, to which a title is given\n' + 'for use in email messages. Whine queries are stored in\n' + '%(the-table-whine_queries)s. A whine query may specify that a\n' + 'separate message is to be sent for each bug found.
\n' + ), ), ( '2.19.3', None, + ( + '\n' + '%(VERSION_STRING)sThere are several user-interface preferences,\n' + 'each of which can take a number of values. Each preference has a row\n' + 'in the %(table-setting)s table, and possible values in the\n' + '%(table-setting_value)s table. The administrator may set a default\n' + 'value for each preference (%(column-setting-default_value)s) and\n' + 'determine whether users are able to override the default\n' + '(%(column-setting-is_enabled)s). The user\'s individual preferences\n' + 'are recorded in the %(table-profile_setting)s table.
' + ), + ), + ( '\n' - '%(VERSION_STRING)sThere are several user-interface preferences,\n' - 'each of which can take a number of values. Each preference has a row\n' - 'in the %(table-setting)s table, and possible values in the\n' - '%(table-setting_value)s table. The administrator may set a default\n' - 'value for each preference (%(column-setting-default_value)s) and\n' - 'determine whether users are able to override the default\n' - '(%(column-setting-is_enabled)s). The user\'s individual preferences\n' - 'are recorded in the %(table-profile_setting)s table.
', + 'Bugzilla supports "quips": small text messages, often humorous,\n' + 'which appear along with search results. The quips are selected at\n' + 'random from a set.
' ), - '\n' - '\n' - 'Bugzilla supports "quips": small text messages, often humorous,\n' - 'which appear along with search results. The quips are selected at\n' - 'random from a set.
', ( None, '2.16.7', @@ -5126,501 +5258,436 @@ ( '2.14', None, - '%(VERSION_STRING)sQuips may be entered or deleted\n'
- 'using quips.cgi
.
%(VERSION_STRING)sQuips may be entered or deleted\n'
+ 'using quips.cgi
.
%(VERSION_STRING)sQuips may be entered by any\n' - 'user but must be approved by an administrator before they can be\n' - 'displayed.
', + ( + '%(VERSION_STRING)sQuips may be entered by any\n' + 'user but must be approved by an administrator before they can be\n' + 'displayed.
' + ), ), ( '3.3.2', None, - '\n' - '%(VERSION_STRING)sBugzilla can record connections to bugs in other\n' - 'instances of Bugzilla, if the parameter "use_see_also" is set. The\n' - 'connections are displayed as clickable URLs and are stored as URLs in\n' - '%(the-table-bug_see_also)s. They are validated according to the\n' - 'system\'s notion of a valid form for Bugzilla URLs.
', + ( + '\n' + '%(VERSION_STRING)sBugzilla can record connections to bugs in other\n' + 'instances of Bugzilla, if the parameter "use_see_also" is set. The\n' + 'connections are displayed as clickable URLs and are stored as URLs in\n' + '%(the-table-bug_see_also)s. They are validated according to the\n' + 'system\'s notion of a valid form for Bugzilla URLs.
' + ), ), ( '2.23.1', None, - '\n' - '%(VERSION_STRING)sBugzilla supports custom fields. Each custom\n'
- 'field is a new column in %(the-table-bugs)s, with a name beginning\n'
- 'cf_
. The presence of each custom field is indicated by a\n'
- 'row in %(the-table-fielddefs)s, with %(column-fielddefs-custom)s set\n'
- 'to 1. The type of each custom field is specified by\n'
- '%(column-fielddefs-type)s:\n'
- '\n'
- '
The value 1 (FIELD_TYPE_FREETEXT) indicates a free-form text field\n' - '(type varchar(255)).
\n' - '\n', + ( + '\n' + '%(VERSION_STRING)sBugzilla supports custom fields. Each custom\n'
+ 'field is a new column in %(the-table-bugs)s, with a name beginning\n'
+ 'cf_
. The presence of each custom field is indicated by a\n'
+ 'row in %(the-table-fielddefs)s, with %(column-fielddefs-custom)s set\n'
+ 'to 1. The type of each custom field is specified by\n'
+ '%(column-fielddefs-type)s:\n'
+ '\n'
+ '
The value 1 (FIELD_TYPE_FREETEXT) indicates a free-form text field\n' + '(type varchar(255)).
\n' + '\n' + ), ), ( '2.23.3', None, - '\n' - '\n' - '%(VERSION_STRING)sThe value 2 (FIELD_TYPE_SINGLE_SELECT) indicates\n'
- 'a single-select field (type varchar(64), not null, default \'---\').\n'
- 'The allowable values of that field are stored in a special table with\n'
- 'the same cf_<name>
name as the field, and a schema\n'
- 'like this:
Field | \n' - 'Type | \n' - 'Default | \n' - 'Properties | \n' - 'Remarks | \n' - '
---|---|---|---|---|
id | \n' - 'smallint | \n' - '0 | \n' - 'auto_increment | \n' - 'a unique ID. | \n' - '
value | \n' - 'varchar(64) | \n' - '\'\' | \n' - '- | \n' - 'the text value | \n' - '
sortkey | \n' - 'smallint | \n' - '0 | \n' - '- | \n' - 'a number determining the order in which values appear. | \n' - '
isactive | \n' - 'tinyint | \n' - '1 | \n' - '- | \n' - '1 if this value is currently available, 0 otherwise | \n' - '
Field | \nType | \nDefault | \nProperties | \nRemarks | \n
---|---|---|---|---|
id | \nsmallint | \n0 | \nauto_increment | \na' + ' unique ID. | \n
value | \nvarchar(64) | \n\'\' | \n- | \nthe' + ' text value | \n
sortkey | \nsmallint | \n0 | \n- | \na' + ' number determining the order in which values appear. | \n
isactive | \ntinyint | \n1 | \n- | \n1' + ' if this value is currently available, 0 otherwise | \n
visibility_value_id | \n' - 'smallint | \n' - '0 | \n' - '- | \n' - 'If set, this value is only available if the chooser field (identified ' - 'by %(column-fielddefs-value_field_id)s) has the value with this ID. ' - 'Foreign key <field>.id, for example %(column-products-id)s or cf_<field>.id. | \n' - '
visibility_value_id | \nsmallint | \n0 | \n- | \nIf' + ' set, this value is only available if the chooser field (identified by' + ' %(column-fielddefs-value_field_id)s) has the value with this ID. Foreign' + ' key <field>.id, for example %(column-products-id)s or cf_<field>.id. | \n
Indexes:
\n\nName | \nFields | \nProperties | \nRemarks | \n
---|---|---|---|
PRIMARY | \nid | \nunique | \n- | \n
cf_<field>_value_idx | \nvalue | \nunique | \n- | \n
cf_<field>_sortkey_idx | \nsortkey | \n' - '- | \n- | \n
Indexes:
\n\nName | \nFields | \nProperties | \nRemarks | \n
---|---|---|---|
PRIMARY | \nid | \nunique | \n- | \n
cf_<field>_value_idx | \nvalue | \nunique | \n- | \n
cf_<field>_sortkey_idx | \nsortkey | \n' + '- | \n- | \n
cf_<field>_visibility_value_id_idx | \n' - 'visibility_value_id | \n' - '- | \n' - '- | \n' - '
cf_<field>_visibility_value_id_idx | \n' + 'visibility_value_id | \n' + '- | \n' + '- | \n' + '
%(VERSION_STRING)sThe value 3 (FIELD_TYPE_MULTI_SELECT)\nindicates a'
- ' multi-select field. The allowable values of that field\nare stored in a'
- ' cf_<name>
table as for\nFIELD_TYPE_SINGLE_SELECT, above. '
- ' The actual values of the field are\nnot stored in %(the-table-bugs)s, unlike'
- ' other custom fields, Instead\nthey are stored in another table, with the'
- ' name\nbug_cf_<name>
, and a schema like this:
Field | \nType | \nDefault | \nProperties | \nRemarks | \n
---|---|---|---|---|
bug_id | \nmediumint | \n0 | \n\n | The' - ' bug ID (foreign key %(column-bugs-bug_id)s). | \n
value | \nvarchar(64) | \n\'\' | \n- | \nthe' - ' value (foreign key cf_<name>.value). | \n
Indexes:
\n\nName | \nFields | \nProperties | \nRemarks | \n
---|---|---|---|
cf_<field>_bug_id_idx | \nbug_id,' - ' value | \nunique | \n- | \n
%(VERSION_STRING)sThe' - ' value 4 (FIELD_TYPE_TEXTAREA)\nindicates a large text-box field (type' - ' mediumtext).
\n', + ( + '%(VERSION_STRING)sThe value 3 (FIELD_TYPE_MULTI_SELECT)\nindicates a'
+ ' multi-select field. The allowable values of that field\nare stored in a'
+ ' cf_<name>
table as for\nFIELD_TYPE_SINGLE_SELECT,'
+ ' above. The actual values of the field are\nnot stored in'
+ ' %(the-table-bugs)s, unlike other custom fields, Instead\nthey are stored'
+ ' in another table, with the name\nbug_cf_<name>
, and a'
+ ' schema like this:
Field | \nType | \nDefault | \nProperties | \nRemarks | \n
---|---|---|---|---|
bug_id | \nmediumint | \n0 | \n\n | The' + ' bug ID (foreign key %(column-bugs-bug_id)s). | \n
value | \nvarchar(64) | \n\'\' | \n- | \nthe' + ' value (foreign key cf_<name>.value). | \n
Indexes:
\n\nName | \nFields | \nProperties | \nRemarks | \n
---|---|---|---|
cf_<field>_bug_id_idx | \nbug_id,' + ' value | \nunique | \n- | \n
%(VERSION_STRING)sThe' + ' value 4 (FIELD_TYPE_TEXTAREA)\nindicates a large text-box field (type' + ' mediumtext).
\n' + ), ), ( '3.1.3', None, - '%(VERSION_STRING)sThe value 5 (FIELD_TYPE_DATETIME)\n' - 'indicates a date/time field (type datetime).
\n', + ( + '%(VERSION_STRING)sThe value 5 (FIELD_TYPE_DATETIME)\n' + 'indicates a date/time field (type datetime).
\n' + ), ), ( '3.3.1', None, - '%(VERSION_STRING)sThe value 6 (FIELD_TYPE_BUG_ID)\n' - 'indicates a bug ID field (type mediumint).
\n', + ( + '%(VERSION_STRING)sThe value 6 (FIELD_TYPE_BUG_ID)\n' + 'indicates a bug ID field (type mediumint).
\n' + ), ), ( '2.23.1', '2.23.2', - '%(VERSION_STRING)sCustom fields are\n'
- 'manipulated from the command-line with the customfield.pl
\n'
- 'script.
%(VERSION_STRING)sCustom fields are\n'
+ 'manipulated from the command-line with the customfield.pl
\n'
+ 'script.
%(VERSION_STRING)sCustom fields are configured\n'
- 'using editfield.cgi
.
%(VERSION_STRING)sCustom fields are configured\n'
+ 'using editfield.cgi
.
This table gives the dates of all the Bugzilla releases since 2.0.
\n' - '\n' - 'Date | \n' - '\n' - 'Release | \n' - '\n' - 'Notes | \n' - '
---|
In Bugzilla release 2.2, the following schema\n' - 'changes were made:
\n' - '\n' - 'This table gives the dates of all the Bugzilla releases since 2.0.
\n' '\n' - 'Date | \n' '\n' - 'Release | \n' '\n' - 'Notes | \n' + '
---|
In Bugzilla release 2.2, the following schema\nchanges were' + ' made:
\n\nIn Bugzilla release 2.4, the following schema\nchanges were' + ' made:
\n\nIn Bugzilla release 2.6, the following schema\n' - 'changes were made:
\n' - '\n' - 'In Bugzilla release 2.6, the following schema\nchanges were' + ' made:
\n\nIn Bugzilla release 2.8, the following schema\n' - 'changes were made:
\n' - '\n' - 'In Bugzilla release 2.8, the following schema\nchanges were' + ' made:
\n\nIn Bugzilla release 2.10, the following schema changes were\n' - 'made:
\n' - '\n' - 'In Bugzilla release 2.10, the following schema changes' + ' were\nmade:
\n\nIn Bugzilla release 2.12, the following schema changes were\n' - 'made:
\n' - '\n' - 'In Bugzilla release 2.12, the following schema changes were\n' + 'made:
\n' + '\n' + 'In Bugzilla release 2.14, the following schema changes were\n' - 'made:
\n' - '\n' - 'In Bugzilla release 2.14, the following schema changes were\n' + 'made:
\n' + '\n' + 'In Bugzilla release 2.14.2, the following schema change was\n' - 'made:
\n' - '\n' - 'In Bugzilla release 2.14.2, the following schema change was\n' + 'made:
\n' + '\n' + 'The schema is identical in Bugzilla releases 2.14.2, 2.14.3,\n' - '2.14.4, and 2.14.5.
\n' - '\n', + ( + 'The schema is identical in Bugzilla releases 2.14.2, 2.14.3,\n' + '2.14.4, and 2.14.5.
\n' + '\n' + ), ), ( '2.16rc1', '2.16', - 'In Bugzilla release 2.16 (and the release candidates 2.16rc1 and\n' - '2.16rc2), the following schema changes were made:
\n' - '\n' - 'In Bugzilla release 2.16 (and the release candidates 2.16rc1 and\n' + '2.16rc2), the following schema changes were made:
\n' + '\n' + 'The schema is identical in Bugzilla releases 2.16rc1, 2.16rc2,\n' - '2.16, 2.16.1, 2.16.2, 2.16.3, 2.16.4, 2.16.5, 2.16.6, 2.16.7, 2.16.8, ' - '2.16.9, 2.16.10, and 2.16.11.
\n' - '\n', + ( + 'The schema is identical in Bugzilla releases 2.16rc1, 2.16rc2,\n' + '2.16, 2.16.1, 2.16.2, 2.16.3, 2.16.4, 2.16.5, 2.16.6, 2.16.7, 2.16.8, ' + '2.16.9, 2.16.10, and 2.16.11.
\n' + '\n' + ), ), ( '2.17.1', '2.17.1', - 'In Bugzilla release 2.17.1, the following schema changes were\n' - 'made:
\n' - '\n' - 'The groups system was radically changed. This included the\n' - ' following detailed schema changes:
\n' - 'In Bugzilla release 2.17.1, the following schema changes' + ' were\nmade:
\n\nThe groups system was radically' + ' changed. This included the\n following detailed schema changes:
\n ' + 'In Bugzilla release 2.17.3, the following schema changes were\n' - 'made:
\n' - '\n' - 'In Bugzilla release 2.17.3, the following schema changes were\n' + 'made:
\n' + '\n' + 'In Bugzilla release 2.17.4, the following schema changes were\n' - 'made:
\n' - '\n' - 'In Bugzilla release 2.17.4, the following schema changes were\n' + 'made:
\n' + '\n' + 'In Bugzilla release 2.17.5, the following schema changes were\n' - 'made:
\n' - '\n' - 'In Bugzilla release 2.17.5, the following schema changes were\n' + 'made:
\n' + '\n' + 'In Bugzilla 2.17.7, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.17.7, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 2.18rc1, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.18rc1, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 2.18rc3, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.18rc3, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 2.18.1, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.18.1, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 2.18.2, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.18.2, the following schema changes were' + ' made:
\n\nThe schema is identical in Bugzilla releases 2.18.2, 2.18.3, 2.18.4, ' - '2.18.5, and 2.18.6.
\n' - '\n', + ( + 'The schema is identical in Bugzilla releases 2.18.2, 2.18.3, 2.18.4, ' + '2.18.5, and 2.18.6.
\n' + '\n' + ), ), ( '2.19.1', '2.19.1', - 'In Bugzilla 2.19.1, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.19.1, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 2.19.2, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.19.2, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 2.19.3, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.19.3, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 2.20rc1, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.20rc1, the following schema changes were' + ' made:
\n\nIn Bugzilla 2.20rc2, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.20rc2, the following schema changes were made:
\n' + '\n' + 'The schema is identical in Bugzilla releases 2.20rc2, 2.20, 2.20.1, ' - '2.20.2, 2.20.3, 2.20.4, 2.20.5, 2.20.6, and 2.20.7.
\n' - '\n', + ( + 'The schema is identical in Bugzilla releases 2.20rc2, 2.20, 2.20.1, ' + '2.20.2, 2.20.3, 2.20.4, 2.20.5, 2.20.6, and 2.20.7.
\n' + '\n' + ), ), ( '2.21.1', '2.21.1', - 'In Bugzilla 2.21.1, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.21.1, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 2.22rc1, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.22rc1, the following schema changes were made:
\n' + '\n' + 'The schema is identical in Bugzilla releases 2.22rc1, 2.22, 2.22.1, ' - '2.22.2, 2.22.3, 2.22.4, 2.22.5, 2.22.6, and 2.22.7.
\n' - '\n', + ( + 'The schema is identical in Bugzilla releases 2.22rc1, 2.22, 2.22.1, ' + '2.22.2, 2.22.3, 2.22.4, 2.22.5, 2.22.6, and 2.22.7.
\n' + '\n' + ), ), ( '2.23.1', '2.23.1', - 'In Bugzilla 2.23.1, the following schema changes were made:
\n' - '\n' - 'cf_<name>
in %(the-table-bugs)s.In Bugzilla 2.23.1, the following schema changes were made:
\n' + '\n' + 'cf_<name>
in %(the-table-bugs)s.In Bugzilla 2.23.2, the following schema change was made:
\n' - '\n' - 'In Bugzilla 2.23.2, the following schema change was made:
\n' + '\n' + 'In Bugzilla 2.23.3, the following schema changes were made:
\n' - '\n' - 'cf_<name>
.In Bugzilla 2.23.3, the following schema changes were' + ' made:
\n\ncf_<name>
.In Bugzilla 2.23.4, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 2.23.4, the following schema changes were' + ' made:
\n\nThe schema is identical in Bugzilla releases 2.23.4, 3.0rc1, 3.0, 3.0.1, ' - '3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6, 3.0.7, 3.0.8, and 3.0.9.
\n' - '\n', + ( + 'The schema is identical in Bugzilla releases 2.23.4, 3.0rc1, 3.0,' + ' 3.0.1, 3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6, 3.0.7, 3.0.8, and' + ' 3.0.9.
\n\n' + ), ), ( '3.1.1', '3.1.1', - 'In Bugzilla 3.1.1, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 3.1.1, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 3.1.2, the following schema change was made:
\n' - '\n' - 'In Bugzilla 3.1.2, the following schema change was made:
\n' + '\n' + 'In Bugzilla 3.1.3, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 3.1.3, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 3.1.4, the following schema change was made:
\n' - '\n' - 'In Bugzilla 3.1.4, the following schema change was made:
\n' + '\n' + 'The schema is identical in Bugzilla releases 3.1.4, 3.2rc1, 3.2rc2, 3.2, ' - '3.2.1, 3.2.2, 3.2.3, 3.2.4, and 3.2.5.
\n' - '\n', + ( + 'The schema is identical in Bugzilla releases 3.1.4, 3.2rc1, 3.2rc2,' + ' 3.2, 3.2.1, 3.2.2, 3.2.3, 3.2.4, and 3.2.5.
\n\n' + ), ), ( '3.3.1', '3.3.1', - 'In Bugzilla 3.3.1, the following schema changes were' - ' made:
\n\nIn Bugzilla 3.3.1, the following schema changes were' + ' made:
\n\nIn Bugzilla 3.3.2, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 3.3.2, the following schema changes were made:
\n' + '\n' + 'In Bugzilla 3.3.4, the following schema changes were made:
\n' - '\n' - 'In Bugzilla 3.3.4, the following schema changes were made:
\n' + '\n' + 'The schema is identical in Bugzilla releases 3.3.4, 3.4rc1, 3.4, 3.4.1, ' - 'and 3.4.2.
\n' - '\n', + ( + 'The schema is identical in Bugzilla releases 3.3.4, 3.4rc1, 3.4, 3.4.1,' + ' and 3.4.2.
\n\n' + ), ), - 'To select bug number n:
\n' - '\n' - '\n'
- 'select * from bugs where bug_id = n\n'
- '
\n'
- '\n'
- 'To get a complete list of user ids and email addresses:
\n' - '\n' - '\n'
- 'select userid, login_name from profiles\n'
- '
\n'
- '\n'
- 'To get the email address of user n:
\n' - '\n' - '\n'
- 'select login_name from profiles where userid = n\n'
- '
\n'
- '\n'
- 'To get the set of cc addresses of bug n:
\n' - '\n' - '\n'
- 'select login_name from cc, profiles\n'
- ' where cc.bug_id = n\n'
- ' and profiles.userid = cc.who\n'
- '
\n'
- '\n',
(
- '2.10',
- None,
- '%(VERSION_STRING)sTo select the long descriptions\n' - 'of bug n, together with the name and email address of the\n' - 'commenters:
\n' + 'To select bug number n:
\n' + '\n' + '\n'
+ 'select * from bugs where bug_id = n\n'
+ '
\n'
+ '\n'
+ 'To get a complete list of user ids and email addresses:
\n' + '\n' + '\n'
+ 'select userid, login_name from profiles\n'
+ '
\n'
+ '\n'
+ 'To get the email address of user n:
\n' + '\n' + '\n'
+ 'select login_name from profiles where userid = n\n'
+ '
\n'
+ '\n'
+ 'To get the set of cc addresses of bug n:
\n' '\n' '\n'
- 'select profiles.login_name, profiles.realname,\n'
- ' longdescs.bug_when, longdescs.thetext\n'
- ' from longdescs, profiles\n'
- ' where profiles.userid = longdescs.who\n'
- ' and longdescs.bug_id = n\n'
- ' order by longdescs.bug_when\n'
- '
',
+ 'select login_name from cc, profiles\n'
+ ' where cc.bug_id = n\n'
+ ' and profiles.userid = cc.who\n'
+ '\n'
+ '\n'
+ ),
+ (
+ '2.10',
+ None,
+ (
+ '%(VERSION_STRING)sTo select the long descriptions\n' + 'of bug n, together with the name and email address of the\n' + 'commenters:
\n' + '\n' + '\n'
+ 'select profiles.login_name, profiles.realname,\n'
+ ' longdescs.bug_when, longdescs.thetext\n'
+ ' from longdescs, profiles\n'
+ ' where profiles.userid = longdescs.who\n'
+ ' and longdescs.bug_id = n\n'
+ ' order by longdescs.bug_when\n'
+ '
'
+ ),
),
('2.4', None, 'To find out the groups of user n:
'), ( '2.4', '2.16.7', - '%(VERSION_STRING)s
\n' - '\n' - '\n'
- 'select groupset from profiles where userid = n\n'
- '
',
+ (
+ '%(VERSION_STRING)s
\n' + '\n' + '\n'
+ 'select groupset from profiles where userid = n\n'
+ '
'
+ ),
),
(
'2.17.1',
None,
- '%(VERSION_STRING)s
\n' - '\n' - '\n'
- 'select group_id from user_group_map where userid = n and '
- 'isbless=0\n'
- '
',
+ (
+ '%(VERSION_STRING)s
\n' + '\n' + '\n'
+ 'select group_id from user_group_map where userid = n and '
+ 'isbless=0\n'
+ '
'
+ ),
+ ),
+ (
+ '2000-11-14 | \n' + '\n' + 'NB | \n' + '\n' + 'Created. | \n' + '\n' + '
2001-03-02 | \n' + '\n' + 'RB | \n' + '\n' + 'Transferred copyright to Perforce under their license. | \n' + '\n' + '
2001-04-06 | \n' + '\n' + 'NB | \n' + '\n' + 'Added sample queries. | \n' + '\n' + '
2001-09-12 | \n' + '\n' + 'NB | \n' + '\n' + 'Updated to reflect schema updates in Bugzilla 2.12 and 2.14 | \n' + '\n' + '
2002-01-31 | \n' + '\n' + 'NB | \n' + '\n' + 'Added notes on Bugzilla 2.14.1. | \n' + '\n' + '
2002-05-31 | \n' + '\n' + 'NB | \n' + '\n' + 'Updated for Bugzilla 2.16 (based on 2.16rc1). | \n' + '\n' + '
2002-09-26 | \n' + '\n' + 'NB | \n' + '\n' + 'Updated for Bugzilla 2.16/2.14.2/2.14.3. | \n' + '\n' + '
2002-10-04 | \n' + '\n' + 'NB | \n' + '\n' + 'Added notes on Bugzilla 2.14.4 and 2.16.1, and on identical ' + 'schemas. | \n' + '\n' + '
2003-05-14 | \n' + '\n' + 'NB | \n' + '\n' + 'Added extensive notes on schema changes, in section 2. | \n' + '\n' + '
2003-06-06 | \n' + '\n' + 'NB | \n' + '\n' + 'Added table of Bugzilla releases showing release date and support ' + 'status. | \n' + '\n' + '
2003-06-06 | \n' + '\n' + 'NB | \n' + '\n' + 'Added notes on schema changes in 2.17.x. | \n' + '\n' + '
2003-06-13 | \n' + '\n' + 'NB | \n' + '\n' + 'Added first cut at description of new Bugzilla tables. | \n' + '\n' + '
2003-06-27 | \n' + '\n' + 'NB | \n' + '\n' + 'Added more on recent schema changes. Colour-coded all schema\n' + ' changes. | \n' + '\n' + '
2003-07-09 | \n' + '\n' + 'NB | \n' + '\n' + 'Completely changed the way this document is produced. The\n' + ' schema tables themselves are now created and coloured\n' + ' automatically by querying MySQL. | \n' + '\n' + '
2003-11-04 | \n' + '\n' + 'NB | \n' + '\n' + 'Add Bugzilla 2.16.4 and 2.17.5. | \n' + '\n' + '
2003-11-10 | \n' + '\n' + 'NB | \n' + '\n' + 'Add Bugzilla 2.17.6. | \n' + '\n' + '
2004-03-19 | \n' + '\n' + 'NB | \n' + '\n' + 'Add Bugzilla 2.17.7; improve documentation of the groups system; ' + 'improve automated schema change descriptions. | \n' + '\n' + '
2004-03-26 | \n' + '\n' + 'NB | \n' + '\n' + 'Add documentation of the flags system, the time series system, and ' + 'the time tracking system. | \n' + '\n' + '
2004-04-30 | \n' + '\n' + 'NB | \n' + '\n' + 'Correct some documentation of the time series system based on ' + 'feedback from the author. | \n' + '\n' + '
2004-07-14 | \n' + '\n' + 'NB | \n' + '\n' + 'Add 2.16.6 and 2.18rc1. | \n' + '\n' + '
2004-07-28 | \n' + '\n' + 'NB | \n' + '\n' + 'Add 2.18rc2. | \n' + '\n' + '
2004-11-11 | \n' + '\n' + 'NB | \n' + '\n' + 'Add 2.16.7, 2.18rc3, 2.19.1. Change document-generation code\n' + ' to improve colouring, link consistency, control, and\n' + ' robustness. | \n' + '\n' + '
2004-11-12 | \n' + '\n' + 'NB | \n' + '\n' + 'Turn into CGI, using schemas stored in Python pickles. | \n' + '\n' + '
2004-11-13 | \n' + '\n' + 'NB | \n' + '\n' + 'Add 2.0, 2.2, 2.4, 2.6. 2.8, for completeness. | \n' + '\n' + '
2004-12-03 | \n' + '\n' + 'NB | \n' + '\n' + 'Add notes on quips and a few missing foreign key links. | \n' + '\n' + '
2005-01-18 | \n' + '\n' + 'NB | \n' + '\n' + 'Add 2.16.8, 2.18, and 2.19.2. | \n' + '\n' + '
2005-05-19 | \n' + '\n' + 'NB | \n' + '\n' + 'Add 2.16.9, 2.16.10, 2.18.1, and (preliminarily) 2.19.3. | \n' + '\n' + '
2005-09-15 | \n' + '\n' + 'NB | \n' + '\n' + 'Add 2.18.2, 2.18.3, 2.20rc1, 2.20rc2, and complete remarks for ' + '2.19.3. | \n' + '\n' + '
2005-10-03 | \n' + '\n' + 'NB | \n' + '\n' + 'Add 2.18.4, 2.20, 2.21.1 | \n' + '\n' + '
2006-05-18 | \n' + '\n' + 'NB | \n' + '\n' + 'Add 2.16.11, 2.18.5, 2.20.1, 2.22rc1, 2.20.2, 2.22, 2.23.1. | \n' + '\n' + '
2006-10-31 | \n' + '\n' + 'NB | \n' + '\n' + 'Add recent releases, to 2.18.6, 2.20.3, 2.22.1, 2.23.3. | \n' + '\n' + '
2007-05-11 | \n' + '\n' + 'NB | \n' + '\n' + 'Add recent releases 2.20.4, 2.22.2, 2.23.4, 3.0rc1, 3.0. | \n' + '\n' + '
2008-02-29 | \n' + '\n' + 'NB | \n' + '\n' + 'Add recent releases 3.0.1, 3.0.2, 3.0.3, 3.1.1, 3.1.2, 3.1.3. | \n' + '\n' + '
2009-07-31 | \n' + '\n' + 'NB | \n' + '\n' + 'Add recent releases 2.20.7, 2.22.5, 2.22.6, 2.22.7, 3.0.5, 3.0.6, ' + '3.0.7, 3.0.8, 3.2rc1, 3.2rc2, 3.2, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.3.1, 3.3.2, ' + '3.3.3, 3.3.4, 3.4rc1, and 3.4. | \n' + '\n' + '
2024-04-26 | \n' + '\n' + 'justdave | \n' + '\n' + 'Add ancient releases 3.0.10, 3.0.11, 3.2.6, 3.2.7, 3.2.8, 3.2.9, ' + '3.2.10, 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.4.8, 3.4.9, 3.4.10, 3.4.11, ' + '3.4.12, 3.4.13, 3.4.14, 3.5.1, and 3.5.2. | \n' + '\n' + '
2024-04-27 | \n' + '\n' + 'justdave | \n' + '\n' + 'Add ancient releases 3.5.3, 3.6rc1, 3.6, 3.6.1, 3.6.2, 3.6.3, 3.6.4, ' + '3.6.5, 3.6.6, 3.6.7, 3.6.8, 3.6.9, 3.6.10, 3.6.11, 3.6.12, 3.6.13, 3.7.1, ' + '3.7.2, 3.7.3, 4.0rc1, 4.0rc2, 4.0, 4.0.1, 4.0.2, 4.0.3, 4.0.4, 4.0.5, 4.0.6, ' + '4.0.7, 4.0.8, 4.0.9, 4.0.10, 4.0.11, 4.0.12, 4.0.13, 4.0.14, 4.0.15, 4.0.16, ' + '4.0.17, 4.0.18, 4.1.1, 4.1.2, 4.1.3, and 4.2rc1. | \n' + '\n' + '
2024-04-28 | \n' + '\n' + 'justdave | \n' + '\n' + 'Add ancient releases 4.2rc1, 4.2rc2, 4.2, 4.2.1, 4.2.2, 4.2.3, ' + '4.2.4, 4.2.5, 4.2.6, 4.2.7, 4.2.8, 4.2.9, 4.2.10, 4.2.11, 4.2.12, 4.2.13, ' + '4.2.14, 4.2.15, and 4.2.16. | \n' + '\n' + '
2024-05-01 | \n' + '\n' + 'justdave | \n' + '\n' + 'Add releases 4.3.1, 4.3.2, 4.3.3, 4.4rc1, 4.4rc2, 4.4, 4.4.1, 4.4.2, ' + '4.4.3, 4.4.4, 4.4.5, 4.4.6, 4.4.7, 4.4.8, 4.4.9, 4.4.10, 4.4.11, 4.4.12, ' + '4.4.13, 4.4.14, 4.5.1, 4.5.2, 4.5.3, 4.5.4, 4.5.5, 4.5.6, 5.0rc1, 5.0rc2, ' + '5.0rc3, 5.0, 5.0.1, 5.0.2, 5.0.3, 5.0.4, 5.0.4.1, 5.0.5, 5.0.6, 5.2, 5.1.1, ' + '5.1.2, and 5.3.3 | \n' + '\n' + '
Generated at %(TIME)s
\n'
+ 'by %(SCRIPT_ID)s
\n'
+ 'from %(REMARKS_ID)s
2000-11-14 | \n' - '\n' - 'NB | \n' - '\n' - 'Created. | \n' - '\n' - '
2001-03-02 | \n' - '\n' - 'RB | \n' - '\n' - 'Transferred copyright to Perforce under their license. | \n' - '\n' - '
2001-04-06 | \n' - '\n' - 'NB | \n' - '\n' - 'Added sample queries. | \n' - '\n' - '
2001-09-12 | \n' - '\n' - 'NB | \n' - '\n' - 'Updated to reflect schema updates in Bugzilla 2.12 and 2.14 | \n' - '\n' - '
2002-01-31 | \n' - '\n' - 'NB | \n' - '\n' - 'Added notes on Bugzilla 2.14.1. | \n' - '\n' - '
2002-05-31 | \n' - '\n' - 'NB | \n' - '\n' - 'Updated for Bugzilla 2.16 (based on 2.16rc1). | \n' - '\n' - '
2002-09-26 | \n' - '\n' - 'NB | \n' - '\n' - 'Updated for Bugzilla 2.16/2.14.2/2.14.3. | \n' - '\n' - '
2002-10-04 | \n' - '\n' - 'NB | \n' - '\n' - 'Added notes on Bugzilla 2.14.4 and 2.16.1, and on identical ' - 'schemas. | \n' - '\n' - '
2003-05-14 | \n' - '\n' - 'NB | \n' - '\n' - 'Added extensive notes on schema changes, in section 2. | \n' - '\n' - '
2003-06-06 | \n' - '\n' - 'NB | \n' - '\n' - 'Added table of Bugzilla releases showing release date and support ' - 'status. | \n' - '\n' - '
2003-06-06 | \n' - '\n' - 'NB | \n' - '\n' - 'Added notes on schema changes in 2.17.x. | \n' - '\n' - '
2003-06-13 | \n' - '\n' - 'NB | \n' - '\n' - 'Added first cut at description of new Bugzilla tables. | \n' - '\n' - '
2003-06-27 | \n' - '\n' - 'NB | \n' - '\n' - 'Added more on recent schema changes. Colour-coded all schema\n' - ' changes. | \n' - '\n' - '
2003-07-09 | \n' - '\n' - 'NB | \n' - '\n' - 'Completely changed the way this document is produced. The\n' - ' schema tables themselves are now created and coloured\n' - ' automatically by querying MySQL. | \n' - '\n' - '
2003-11-04 | \n' - '\n' - 'NB | \n' - '\n' - 'Add Bugzilla 2.16.4 and 2.17.5. | \n' - '\n' - '
2003-11-10 | \n' - '\n' - 'NB | \n' - '\n' - 'Add Bugzilla 2.17.6. | \n' - '\n' - '
2004-03-19 | \n' - '\n' - 'NB | \n' - '\n' - 'Add Bugzilla 2.17.7; improve documentation of the groups system; ' - 'improve automated schema change descriptions. | \n' - '\n' - '
2004-03-26 | \n' - '\n' - 'NB | \n' - '\n' - 'Add documentation of the flags system, the time series system, and ' - 'the time tracking system. | \n' - '\n' - '
2004-04-30 | \n' - '\n' - 'NB | \n' - '\n' - 'Correct some documentation of the time series system based on ' - 'feedback from the author. | \n' - '\n' - '
2004-07-14 | \n' - '\n' - 'NB | \n' - '\n' - 'Add 2.16.6 and 2.18rc1. | \n' - '\n' - '
2004-07-28 | \n' - '\n' - 'NB | \n' - '\n' - 'Add 2.18rc2. | \n' - '\n' - '
2004-11-11 | \n' - '\n' - 'NB | \n' - '\n' - 'Add 2.16.7, 2.18rc3, 2.19.1. Change document-generation code\n' - ' to improve colouring, link consistency, control, and\n' - ' robustness. | \n' - '\n' - '
2004-11-12 | \n' - '\n' - 'NB | \n' - '\n' - 'Turn into CGI, using schemas stored in Python pickles. | \n' - '\n' - '
2004-11-13 | \n' - '\n' - 'NB | \n' - '\n' - 'Add 2.0, 2.2, 2.4, 2.6. 2.8, for completeness. | \n' - '\n' - '
2004-12-03 | \n' - '\n' - 'NB | \n' - '\n' - 'Add notes on quips and a few missing foreign key links. | \n' - '\n' - '
2005-01-18 | \n' - '\n' - 'NB | \n' - '\n' - 'Add 2.16.8, 2.18, and 2.19.2. | \n' - '\n' - '
2005-05-19 | \n' - '\n' - 'NB | \n' - '\n' - 'Add 2.16.9, 2.16.10, 2.18.1, and (preliminarily) 2.19.3. | \n' - '\n' - '
2005-09-15 | \n' - '\n' - 'NB | \n' - '\n' - 'Add 2.18.2, 2.18.3, 2.20rc1, 2.20rc2, and complete remarks for ' - '2.19.3. | \n' - '\n' - '
2005-10-03 | \n' - '\n' - 'NB | \n' - '\n' - 'Add 2.18.4, 2.20, 2.21.1 | \n' - '\n' - '
2006-05-18 | \n' - '\n' - 'NB | \n' - '\n' - 'Add 2.16.11, 2.18.5, 2.20.1, 2.22rc1, 2.20.2, 2.22, 2.23.1. | \n' - '\n' - '
2006-10-31 | \n' - '\n' - 'NB | \n' - '\n' - 'Add recent releases, to 2.18.6, 2.20.3, 2.22.1, 2.23.3. | \n' - '\n' - '
2007-05-11 | \n' - '\n' - 'NB | \n' - '\n' - 'Add recent releases 2.20.4, 2.22.2, 2.23.4, 3.0rc1, 3.0. | \n' - '\n' - '
2008-02-29 | \n' - '\n' - 'NB | \n' - '\n' - 'Add recent releases 3.0.1, 3.0.2, 3.0.3, 3.1.1, 3.1.2, 3.1.3. | \n' - '\n' - '
2009-07-31 | \n' - '\n' - 'NB | \n' - '\n' - 'Add recent releases 2.20.7, 2.22.5, 2.22.6, 2.22.7, 3.0.5, 3.0.6, ' - '3.0.7, 3.0.8, 3.2rc1, 3.2rc2, 3.2, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.3.1, 3.3.2, ' - '3.3.3, 3.3.4, 3.4rc1, and 3.4. | \n' - '\n' - '
2024-04-26 | \n' - '\n' - 'justdave | \n' - '\n' - 'Add ancient releases 3.0.10, 3.0.11, 3.2.6, 3.2.7, 3.2.8, 3.2.9, ' - '3.2.10, 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.4.8, 3.4.9, 3.4.10, 3.4.11, ' - '3.4.12, 3.4.13, 3.4.14, 3.5.1, and 3.5.2. | \n' - '\n' - '
2024-04-27 | \n' - '\n' - 'justdave | \n' - '\n' - 'Add ancient releases 3.5.3, 3.6rc1, 3.6, 3.6.1, 3.6.2, 3.6.3, 3.6.4, ' - '3.6.5, 3.6.6, 3.6.7, 3.6.8, 3.6.9, 3.6.10, 3.6.11, 3.6.12, 3.6.13, 3.7.1, ' - '3.7.2, 3.7.3, 4.0rc1, 4.0rc2, 4.0, 4.0.1, 4.0.2, 4.0.3, 4.0.4, 4.0.5, 4.0.6, ' - '4.0.7, 4.0.8, 4.0.9, 4.0.10, 4.0.11, 4.0.12, 4.0.13, 4.0.14, 4.0.15, 4.0.16, ' - '4.0.17, 4.0.18, 4.1.1, 4.1.2, 4.1.3, and 4.2rc1. | \n' - '\n' - '
2024-04-28 | \n' - '\n' - 'justdave | \n' - '\n' - 'Add ancient releases 4.2rc1, 4.2rc2, 4.2, 4.2.1, 4.2.2, 4.2.3, ' - '4.2.4, 4.2.5, 4.2.6, 4.2.7, 4.2.8, 4.2.9, 4.2.10, 4.2.11, 4.2.12, 4.2.13, ' - '4.2.14, 4.2.15, and 4.2.16. | \n' - '\n' - '
2024-05-01 | \n' - '\n' - 'justdave | \n' - '\n' - 'Add releases 4.3.1, 4.3.2, 4.3.3, 4.4rc1, 4.4rc2, 4.4, 4.4.1, 4.4.2, ' - '4.4.3, 4.4.4, 4.4.5, 4.4.6, 4.4.7, 4.4.8, 4.4.9, 4.4.10, 4.4.11, 4.4.12, ' - '4.4.13, 4.4.14, 4.5.1, 4.5.2, 4.5.3, 4.5.4, 4.5.5, 4.5.6, 5.0rc1, 5.0rc2, ' - '5.0rc3, 5.0, 5.0.1, 5.0.2, 5.0.3, 5.0.4, 5.0.4.1, 5.0.5, 5.0.6, 5.2, 5.1.1, ' - '5.1.2, and 5.3.3 | \n' - '\n' - '
Generated at %(TIME)s
\n'
- 'by %(SCRIPT_ID)s
\n'
- 'from %(REMARKS_ID)s