Mercurial > hg > xemacs-beta
view man/gnats/gnats.texi @ 221:6c0ae1f9357f r20-4b9
Import from CVS: tag r20-4b9
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:10:02 +0200 |
parents | 48d667d6f17f |
children |
line wrap: on
line source
\input texinfo @c -*-texinfo-*- @setfilename gnats.info @include version.texi @ifinfo @format START-INFO-DIR-ENTRY * Keeping Track: (gnats). GNU Problem Report Management System END-INFO-DIR-ENTRY @end format @end ifinfo @ifinfo Copyright @copyright{} 1993, 1995 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. @ignore Permission is granted to process this file through TeX and print the results, provided the printed document carries a copying permission notice identical to this one except for the removal of this paragraph (this paragraph not being relevant to the printed manual). @end ignore Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions. @end ifinfo @c NOTE TO ANYONE FORMATTING THIS DOCUMENT FOR PRINTING... @c Comment the following line out if you don't have access to a @c PostScript printer or viewer @set POSTSCRIPT @settitle Keeping Track @setchapternewpage odd @finalout @titlepage @title Keeping Track @subtitle Managing Messages With GNATS @subtitle The @sc{gnu} Problem Report Management System @subtitle Version @value{VERSION} @subtitle January 1996 @author Jeffrey M. Osier @author Brendan Kehoe @author Cygnus Support @page @vskip 0pt plus 1filll Copyright @copyright{} 1993, 1995 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions. @end titlepage @node Top @top Overview @cindex overview to GNATS @cindex foreword This manual documents @sc{gnats}, the @sc{gnu} Problem Report Management System, version @value{VERSION}. @sc{gnats} is a bug-tracking tool designed for use at a central @dfn{Support Site}. Users who experience problems use electronic mail to communicate these problems to @dfn{maintainers} at that Support Site. @sc{gnats} partially automates the tracking of these @dfn{Problem Reports} (@dfn{PR}s) by: @itemize @bullet @item organizing problem reports into a database and notifying responsible parties of suspected bugs; @item allowing support personnel and their managers to edit and query accumulated bugs; and @item providing a reliable archive of problems (and their subsequent solutions) with a given program. @end itemize @sc{gnats} offers many of the same features offered by more generalized databases, including editing, querying, and basic reporting. The @sc{gnats} database itself is an ordered repository for problem reports; each PR receives a unique, incremental @dfn{PR number} which identifies it throughout its lifetime. For a discussion on the working system adopted by @sc{gnats}, see @ref{Paradigm,,The database paradigm}. You can access the submitting, editing, and querying functions of @sc{gnats} from within @sc{gnu} Emacs. @xref{Invoking the tools,,Invoking the @sc{gnats} tools}. @menu * Introduction:: Introducing GNATS * Invoking the tools:: Invoking the GNATS tools * Management:: GNATS Administration * Installation:: Installing GNATS * Locations:: Where @sc{gnats} lives * Regexps:: Querying using regular expressions * Index:: @end menu @c =============================================================== @node Introduction @chapter Introducing @sc{gnats} @cindex introduction to GNATS @cindex rationale @cindex database rationale Any support organization realizes that a large amount of data flows back and forth between the maintainers and the users of their products. This data often takes the form of problem reports and communication via electronic mail. @sc{gnats} addresses the problem of organizing this communication by defining a database made up of archived and indexed electronic mail messages. @sc{gnats} was designed as a tool for software maintainers. It consists of several utilities which, when used in concert, formulate and administer a database of Problem Reports grouped by site-defined @dfn{problem categories}. It allows a support organization to keep track of problems (hence the term @dfn{Problem Report}) in an organized fashion. Essentially, @sc{gnats} acts as an active archive for field-separated textual data submitted through electronic mail. @menu * Paradigm:: The database paradigm * Flowchart:: Flowchart of GNATS activities * States:: States of Problem Reports * Fields:: Problem Report format @end menu @node Paradigm @section The database paradigm @cindex paradigm @cindex database paradigm @cindex why GNATS @cindex support site @cindex maintenance @cindex so what does it do It is in your best interest as the maintainer of a body of work to organize the feedback you receive on that work, and to make it easy for users of your work to report problems and suggestions. @sc{gnats} makes this easy by automatically filing incoming problem reports into appropriate places, by notifying responsible parties of the existence of the problem and (optionally) sending an acknowledgement to the submitter that the report was received, and by making these Problem Reports accessible to queries and easily editable. @sc{gnats} is a database specialized for a specific task. @sc{gnats} was designed for use at a Support Site that handles a high level of problem-related traffic though electronic mail. It maintains Problem Reports in the form of text files with defined @dfn{fields} (@pxref{Fields,,@sc{gnats} data fields}). The location of the database, as well as the categories it accepts as valid, the maintainers for whom it provides service, and the submitters from whom it accepts Problem Reports, are all definable by the @dfn{Support Site}. @xref{Management,,@sc{gnats} administration}. @cindex what is a PR Each PR is a separate file within a main repository (@pxref{Locations,,Where @sc{gnats} lives}). Editing access to the database is regulated to maintain consistency, but anyone with electronic mail access may submit Problem Reports. To make queries on the database faster, an index is kept automatically (@pxref{index file,,The @code{index} file}). We provide several software tools so that users may submit new Problem Reports, edit existing Problem Reports, and query the database. @itemize @bullet @item @w{@code{send-pr}} is used by both product maintainers and the end users of the products they support to submit PRs to the database. @item @w{@code{edit-pr}} is used by maintainers to use when editing problem reports in the database. @item Maintainers, managers and administrators can use @w{@code{query-pr}} to make inquiries about indidvidual PRs or groups of PRs. @end itemize @code{send-pr} can also be packaged by itself and distributed to anyone you wish to receive Problem Reports from; see @ref{mkdist,,Configuring @code{send-pr} for the outside world}. @cindex GNATS administrator At the Support Site, a @sc{gnats} @dfn{administrator} is charged with the duty of maintaining @sc{gnats}. These duties are discussed in detail in @ref{Management,,@sc{gnats} Administration}, and generally include configuring @sc{gnats} for the Support Site, editing PRs that @sc{gnats} cannot process, pruning log files, setting up new problem categories, backing up the database, and distributing @code{send-pr} so that others may submit Problem Reports. Responsibility for a given Problem Report depends on the category of the problem. Optionally, an automated reminder can be sent to the responsible person if a problem report is neglected for a requisite time period. @xref{Local configuration,,Changing your local configuration}. @cindex @code{pending} directory @cindex unparseable incoming PRs @cindex incoming PRs that @sc{gnats} cannot parse @sc{gnats} does not have the ability to decipher random text, so any problem reports which arrive in a format @sc{gnats} does not recognize are placed in a separate directory pending investigation by the @sc{gnats} administrator (@pxref{Management,,@sc{gnats} Administration}). Once a problem is recorded in the database, work can begin toward a solution. A problem's initial @dfn{state} is @samp{open} (@pxref{States,,States of Problem Reports}). An acknowledgement is sent to the originator of the bug report (if that feature of @sc{gnats} is activated). @sc{gnats} forwards copies of the report to the party responsible for that problem category and to the person responsible for problems arriving from that @dfn{Submitter Site}. @c (@pxref{Glossary,,Glossary}). When a problem has been identified, the maintainer can change its state to @samp{analyzed}, and then to @samp{feedback} when a solution is found. Each time the state of a PR changes, the submitter of the problem report is notified of the reason for the change. If the party responsible for the PR changes, the previous responsible party and the new responsible party receive notice of the change. The change and reason are also recorded in the @samp{>Audit-Trail:} field of the Problem Report. (@xref{edit-pr,,Editing existing Problem Reports}. For information on the @samp{>Audit-Trail:} field, see @ref{Fields,,Problem Report format}.) When the originator of the Problem Report confirms that the solution works, the maintainer can change the state to @dfn{closed}. If the PR cannot be closed, the maintainer can change its state to @dfn{suspended} as a last resort. (For a more detailed description of these states, see @ref{States,,States of Problem Reports}.) @node Flowchart @section Flowchart of @sc{gnats} activities @cindex flowchart of GNATS activities @cindex visual map of data flow This informal flowchart shows the relationships of the @sc{gnats} tools to each other and to the files with which they interoperate. @sp 2 @ifset POSTSCRIPT @tex \input epsf \epsffile{flowchart.eps} @end tex @end ifset @ifinfo @clear POSTSCRIPT @end ifinfo @ifclear POSTSCRIPT @cartouche @smallexample @include flowchart.txt @end smallexample @end cartouche @end ifclear @sp 2 @c --------------------------------------------------------------- @include states.texi @c --------------------------------------------------------------- @include fields.texi @c =============================================================== @include p-usage.texi @c =============================================================== @include p-admin.texi @c =============================================================== @node Installation @appendix Installing @sc{gnats} @include p-inst.texi @c =============================================================== @node Locations @appendix Where @sc{gnats} lives @cindex locations @cindex where GNATS lives @cindex default installation locations We use a few conventions when referring to the installation structure @sc{gnats} uses. These values are adjustable when you build and install @sc{gnats} (@pxref{Installation,,Installing @sc{gnats}}). @menu * prefix:: * exec-prefix:: * GNATS_ROOT:: * defaults:: Default installation locations @end menu @node prefix @section @var{prefix} @cindex @var{prefix} @var{prefix} corresponds to the variable @samp{prefix} for @code{configure}, which passes it on to the @file{Makefile} it creates. @var{prefix} sets the root installation directory for @dfn{host-independent} files as follows: @c FIXME - check these @table @asis @item libraries @file{@var{prefix}/lib}@* @item @code{man} pages @file{@var{prefix}/man} @item @code{info} documents @file{@var{prefix}/info} @item @code{include} files @file{@var{prefix}/include} @item @emph{etc@dots{}} @end table The default value for @var{prefix} is @w{@file{/usr/local}}, which can be changed on the command line to @code{configure} using @smallexample configure --prefix=@var{prefix} @dots{} @end smallexample @noindent @xref{Configure and make,,Configuring and compiling the software}. @node exec-prefix @section @var{exec-prefix} @cindex @var{exec-prefix} @var{exec-prefix} corresponds to the variable @samp{exec_prefix} for @code{configure}, which passes it on to the @file{Makefile} it creates. @w{@var{exec-prefix}} sets the root installation for @dfn{host-dependent} files as follows: @c FIXME - check these @table @asis @item binary tools @file{@var{exec-prefix}/bin} @item binary support utilities @file{@var{exec-prefix}/lib/gnats} @item compiled libraries @file{@var{exec-prefix}/lib}@* @item @emph{etc@dots{}} @end table Since most installations are not intended to be distributed around a network, the default value for @w{@var{exec-prefix}} is the value of @samp{prefix}, i.e., @w{@file{/usr/local}}. However, using @var{exec-prefix} saves space when you are installing a package on several different platforms for which many files are identical; rather than duplicate them for each host, these files can be shared in a common repository, and you can use symbolic links on each host to find the host-dependent files. @emph{It is not necessary to use this paradigm when building the @sc{gnats} tools}. @xref{Configure and make,,Configuring and compiling the software}. Use @var{exec-prefix} in conjunction with @var{prefix} to share host-independent files, like libraries and @code{info} documents. For example: @smallexample @emph{for each host:} configure --prefix=/usr/gnu --exec-prefix=/usr/gnu/H-@var{host} make all install @dots{} @end smallexample @noindent Using this paradigm, all host-dependent binary files are installed into @w{@file{/usr/gnu/H-@var{host}/bin}}, while files which do not depend on the host type for which they were configured are installed into @w{@file{/usr/gnu}}. You can then use a different symbolic link for @w{@file{/usr/gnu}} on each host (@file{/usr} is usually specific to a particular machine; it is always specific to a particular architecture). @smallexample @emph{on host-1:} ln -s /usr/gnu/H-@var{host-1} /usr/gnu @emph{on host-2:} ln -s /usr/gnu/H-@var{host-2} /usr/gnu @end smallexample @noindent To the end user, then, placing @w{@file{/usr/gnu/bin}} in her or his @code{PATH} simply works transparently for each @var{host} type. You can change @w{@var{exec-prefix}} on the command line to @code{configure} using @smallexample configure --exec-prefix=@var{exec-prefix} @dots{} @end smallexample We recommend that you consult @ref{Using configure,,Using @code{configure},configure,Cygnus configure}, before attempting this. Again, @emph{it is not necessary to use this paradigm when building the @sc{gnats} tools}. @node GNATS_ROOT @section @var{GNATS_ROOT} @cindex @var{GNATS_ROOT} The location of the database and the administrative data files, by default @w{@file{@var{prefix}/lib/gnats/gnats-db}}. You can change this value on the command line to @code{configure} using @smallexample configure --with-gnats-root=@w{@var{GNATS_ROOT}} @end smallexample @noindent Administrative data files reside in @w{@file{@var{GNATS_ROOT}/gnats-adm}}. These include @file{categories}, @file{submitters}, @file{responsible}, and @file{config}, as well as two files generated and maintained by @sc{gnats}, @file{index} and @file{current}. @xref{Local configuration,, Changing your local configuration}, and @ref{Admin files,,Administrative data files}. @node defaults @section Default installation locations @cindex default installation locations @table @asis @item @var{prefix} defaults to @file{/usr/local}; change using @code{configure} (@pxref{Configure and make,,Configuring and compiling the software}). @item @var{exec-prefix} defaults to @var{prefix}; change using @code{configure} (@pxref{Configure and make,,Configuring and compiling the software}). @item @w{@var{GNATS_ROOT}} defaults to @w{@file{@var{prefix}/lib/gnats/gnats-db}}; change using @code{configure} (@pxref{Configure and make,,Configuring and compiling the software}). @end table @noindent @sc{gnats} installs tools, utilities, and files into the following locations. @table @code @item @var{exec-prefix}/bin @table @code @item send-pr @xref{send-pr,,Submitting Problem Reports}. @item edit-pr @xref{edit-pr,,Editing existing Problem Reports}. @item query-pr @xref{query-pr,,Querying the database}. @item nquery-pr @xref{query-pr,,Querying the database over the network}. @end table @item @var{exec-prefix}/lib/gnats @table @code @item mkcat @xref{mkcat,,Adding a problem category}. @item rmcat @xref{rmcat,,Removing a problem category}. @item mkdist @xref{mkdist,,Configuring @code{send-pr} for the outside world}. @item gen-index @xref{gen-index,,Regenerating the index}. @item queue-pr @xref{queue-pr,,Handling incoming traffic}. @item file-pr @xref{file-pr,,Processing incoming traffic}. @ignore @item gnatsd @xref{gnats,,Remote @sc{gnats} daemon}. @end ignore @item at-pr @xref{at-pr,,Timely reminders}. @item pr-edit @xref{pr-edit,,The @code{edit-pr} driver}. @ignore @item npr-edit @xref{npr-edit,,The remote @code{edit-pr} driver}. @end ignore @item pr-addr @xref{pr-addr,,Address retrieval}. @item libiberty.a The @sc{gnu} @code{libiberty} library. @end table @item @var{prefix}/lib/gnats/dist @table @asis @item A packageable distribution of @code{send-pr}. @xref{mkdist,,Configuring @code{send-pr} for the outside world}. @end table @item @var{prefix}/lib/gnats @table @var @item site The local list of valid categories, used by @code{send-pr}; @var{site} is the value of @samp{GNATS_SITE} (@pxref{config,,The @code{config} file}). @end table @item @var{prefix}/lib/emacs/lisp @table @code @item gnats.el @itemx gnats.elc The Emacs versions of the programs @code{query-pr}, @code{edit-pr}, and @code{view-pr}. @xref{Invoking the tools,,Invoking the @sc{gnats} tools}. To change this directory you must alter @file{Makefile.in}; see @ref{Configure and make,,Configuring and compiling the software}. @item send-pr.el The Emacs version of the program @code{send-pr}. @xref{send-pr,,Submitting Problem Reports}. @end table @item @var{prefix}/info @table @code @item gnats.info @itemx send-pr.info The @sc{gnats} manuals, in a form readable by @code{info} (the @sc{gnu} hypertext browser). @xref{Info,,Reading GNU Online Documentation,infoman,GNU Online Documentation}. @end table @item @var{prefix}/man/man1 @itemx @var{prefix}/man/man8 @table @asis @item @code{man} pages for all the @sc{gnats} tools and utilities. @xref{Invoking the tools,,Invoking the @sc{gnats} tools}. @end table @c FIXME - does this happen? @item @var{prefix}/src @table @asis @item Source code for @sc{gnats}. @end table @item @var{prefix}/sample @table @asis @item Example administrative files, including @file{categories}, @file{submitters}, @file{responsible}, and @file{config}. @xref{Local configuration,,Changing your local configuration}. @end table @item @w{@var{GNATS_ROOT}} @table @code @item gnats-adm Administration and configuration data files. The files @table @code @item config @item categories @item submitters @item responsible @item gnatsd.conf @item index (@emph{This file is created by @sc{gnats}.}) @item current (@emph{This file is created by @sc{gnats}.}) @end table @noindent exist here. @xref{Local configuration,,Changing your local configuration}, and @ref{Admin files,,Administrative data files}. @item gnats-queue Incoming Problem Reports are queued here until the next iteration of @w{@samp{queue-pr -r}} (@pxref{queue-pr,,Handling incoming traffic}). @item pending Problem Reports which arrive without a valid category value are reassigned to the category @samp{pending} and placed here pending intervention by the @sc{gnats} administrator. @xref{Management,,@sc{gnats} administration}. @item @var{category} Each valid category has a corresponding subdirectory in the database. All Problem Reports associated with that category are kept in that subdirectory, along with lock files for PRs which are being edited. @end table @end table @c =============================================================== @node Regexps @appendix Querying using regular expressions @cindex querying using regexps @cindex regular expressions @cindex syntax of regexps @c FIXME - all my examples just use . and * @sc{gnats} uses @sc{gnu} regular expression syntax with these settings: @smallexample RE_SYNTAX_POSIX_EXTENDED | RE_BK_PLUS_QM & RE_DOT_NEWLINE @end smallexample @noindent This means that parentheses (@samp{(} and @samp{)}) and pipe symbols (@samp{|}) do not need to be used with the escape symbol @samp{\}. The tokens @samp{+} and @samp{?} do need the escape symbol, however. Unfortunately, we do not have room in this manual for an adequate tutorial on regular expressions. The following is a basic summary of some regular expressions you might wish to use. @xref{Regular Expression Syntax,,Regular Expression Syntax,regex,Regex}, for details on regular expression syntax. Also see @ref{Regexps,,Syntax of Regular Expressions,emacs,GNU Emacs Manual}, but beware that the syntax for regular expressions in Emacs is slightly different. All search criteria options to @code{query-pr} rely on regular expression syntax to construct their search patterns. For example, @smallexample query-pr --state=open @end smallexample @noindent matches all PRs whose @samp{>State:} values match with the regular expression @samp{open}. We can substitute the expression @samp{o} for @samp{open}, according to @sc{gnu} regular expression syntax. This matches all values of @samp{>State:} which begin with the letter @samp{o}. @smallexample query-pr --state=o @end smallexample is equivalent to @smallexample query-pr --state=open @end smallexample @noindent in this case, since the only value for @samp{>State:} which matches the expression @samp{o} is @samp{open}. (Double quotes (@kbd{"}) are used to protect the asterix (@kbd{*}) from the shell.) @samp{--state=o} also matches @samp{o}, @samp{oswald}, and even @samp{oooooo}, but none of those values are valid states for a Problem Report. Regular expression syntax considers a regexp token surrounded with parentheses, as in @w{@samp{(@var{regexp})}}, to be a @dfn{group}. This means that @w{@samp{(ab)*}} matches any number of contiguous instances of @samp{ab}, including zero. Matches include @samp{}, @samp{ab}, and @samp{ababab}. Regular expression syntax considers a regexp token surrounded with square brackets, as in @w{@samp{[@var{regexp}]}}, to be a @dfn{list}. This means that @w{@samp{Char[(ley)(lene)(broiled)}} matches any of the words @samp{Charley}, @samp{Charlene}, or @samp{Charbroiled} (case is significant; @samp{charbroiled} is not matched). Using groups and lists, we see that @smallexample query-pr --category="gcc|gdb|gas" @end smallexample @noindent is equivalent to @smallexample query-pr --category="g(cc|db|as)" @end smallexample @noindent and is also very similar to @smallexample query-pr --category="g[cda]" @end smallexample @noindent with the exception that this last search matches any values which begin with @samp{gc}, @samp{gd}, or @samp{ga}. The @samp{.} character is known as a @dfn{wildcard}. @samp{.} matches on any single character. @samp{*} matches the previous character (except newlines), list, or group any number of times, including zero. Therefore, we can understand @samp{.*} to mean ``match zero or more instances of any character.'' For this reason, we never specify it at the end of a regular expression, as that would be redundant. The expression @samp{o} matches any instance of the letter @samp{o} (followed by anything) at the beginning of a line, while the expression @samp{o.*} matches any instance of the letter @samp{o} at the beginning of a line followed by any number (including zero) of any characters. We can also use the expression operator @samp{|} to signify a logical @code{OR}, such that @smallexample query-pr --state="o|a" @end smallexample @noindent matches all @samp{open} or @samp{analyzed} Problem Reports. (Double quotes (@kbd{"}) are used to protect the pipe symbol (@kbd{|}) from the shell.) By the same token,@footnote{No pun intended.} using @smallexample query-pr --state=".*a" @end smallexample @noindent matches all values for @samp{>State:} which contain an @samp{a}. (These include @samp{analyzed} and @samp{feedback}.) Another way to understand what wildcards do is to follow them on their search for matching text. By our syntax, @samp{.*} matches any character any number of times, including zero. Therefore, @samp{.*a} searches for any group of characters which end with @samp{a}, ignoring the rest of the field. @samp{.*a} matches @samp{analyzed} (stopping at the first @samp{a}) as well as @samp{feedback}. @emph{Note:} When using @samp{--text} or @samp{--multitext}, you do not have to specify the token @samp{.*} at the beginning of @var{text} to match the entire field. For the technically minded, this is because @samp{--text} and @samp{--multitext} use @samp{re_search} rather than @samp{re_match}. @samp{re_match} @dfn{anchors} the search at the beginning of the field, while @samp{re_search} does not anchor the search. For example, to search in the @code{>Description:} field for the text @smallexample The defrobulator component returns a nil value. @end smallexample @noindent we can use @smallexample query-pr --multitext="defrobulator.*nil" @end smallexample To also match newlines, we have to include the expression @samp{(.|^M)} instead of just a dot (@samp{.}). @samp{(.|^M)} matches ``any single character except a newline (@samp{.}) @emph{or} (@samp{|}) any newline (@samp{^M}).'' This means that to search for the text @smallexample The defrobulator component enters the bifrabulator routine and returns a nil value. @end smallexample @noindent we must use @smallexample query-pr --multitext="defrobulator(.|^M)*nil" @end smallexample To generate the newline character @samp{^M}, type the following depending on your shell: @table @code @item csh @samp{@emph{control}-V @emph{control}-M} @item tcsh @samp{@emph{control}-V @emph{control}-J} @item sh (@emph{or} bash) Use the @key{RETURN} key, as in @smallexample (.| ) @end smallexample @end table Again, see @ref{Regular Expression Syntax,,Regular Expression Syntax,regex,Regex}, for a much more complete discussion on regular expression syntax. @c =============================================================== @ignore @c complete this someday... @node Glossary @unnumbered Glossary @table @strong @item PR Short for ``Problem Report''. An electronic mail message which reports a problem. A @dfn{record} in the @sc{gnats} database. @item Support Site A central site that provides resources for maintainers of a body of work, such as a software package. We refer to the Support Site as the location where @sc{gnats} is installed and functional. @item Database An organized collection of information. @item @sc{gnats} The @sc{gnu} Problem Report Management System. @item Field A location for specific information. A group of fields make up a Problem Report. @item Mail header Defined by the Internet Internet standard RFC-822 @item Category @item Submitter @item Originator @item Query @item Report @item Site @item Edit @item Submit @item Bug @item State @item ID Number @item Synopsis @item Confidential @item Severity @item Priority @item Responsible @item Configuration @item Class @item Environment @item Description @item Audit-Trail @item Unformatted @item Fix @item Release @item Makefile @item gnats-admin @item pending @item send-pr @item edit-pr @item Maintainers @item timestamp @item utility @item tool @end table @end ignore @node Index @unnumbered Index @printindex cp @contents @bye