112
|
1 @node Management
|
|
2 @chapter @sc{gnats} Administration
|
|
3 @cindex administering @sc{gnats}
|
|
4 @cindex managing @sc{gnats}
|
|
5 @cindex GNATS management
|
|
6 @cindex duties for @code{gnats-admin}
|
|
7
|
|
8 In daily usage, @sc{gnats} is self-maintaining. However, there are
|
|
9 various administrative duties which need to be performed periodically:
|
|
10
|
|
11 @table @emph
|
|
12 @item emptying the @code{pending} directory
|
|
13 @cindex emptying the @code{pending} directory
|
|
14 If a Problem Report arrives with a @samp{>Category:} value that is
|
|
15 unrecognized by the @file{categories} file, or if that field is missing,
|
|
16 @sc{gnats} places the PR in the @w{@file{pending}} directory
|
|
17 (@pxref{Locations,,Where the tools and utilities reside}). @sc{gnats}
|
|
18 has no way of knowing which subdirectory the PR should be filed under.
|
|
19 @sc{gnats} sends a notice to the @code{gnats-admin} and to the party
|
|
20 responsible for that submitter (as listed in the @file{submitters} file)
|
|
21 when this occurs.
|
|
22
|
|
23 To file these PRs, simply use @code{edit-pr} to repair the problematic
|
|
24 fields in each file in the @file{pending} directory. Be sure to change
|
|
25 the @samp{>Category:} field of the PR from @samp{pending} to an
|
|
26 appropriate category. In many cases the culprit is simply a
|
|
27 typographical error, although it may be necessary sometimes to contact
|
|
28 the submitter of the PR to decipher her or his intentions.
|
|
29
|
|
30 Should you run out of disk space, there may be an empty PR in the
|
|
31 @file{pending} directory. In that case, look in the file
|
|
32 @w{@file{@var{GNATS_ROOT}/gnats-adm/bug.log}}, which should still contain
|
|
33 the full message that was submitted.
|
|
34
|
|
35 @item adding new categories
|
|
36 @cindex adding a problem category
|
|
37 @cindex @code{mkcat}
|
|
38 To add a new category, simply insert a new line in the
|
|
39 @w{@file{categories}} file and then run the program @code{mkcat}.
|
|
40
|
|
41 @emph{Note}: this causes all category lists for @code{send-pr} (except
|
|
42 the one on the local machine) to become outdated. Copy the new list on
|
|
43 to every machine on your network that has @code{send-pr} installed, and
|
|
44 make sure you advise remote submitters that the category list has
|
|
45 changed. @xref{mkcat,,Adding a problem category}. Also
|
|
46 @ref{categories,,The @code{categories} file}.
|
|
47
|
|
48 @item removing categories
|
|
49 @cindex removing a problem category
|
|
50 @cindex @code{rmcat}
|
|
51 To remove a category, you need to make sure the relevant subdirectory is
|
|
52 empty (in other words, make sure no PRs exist for the category you wish
|
|
53 to remove). You can then remove the category listing from the
|
|
54 @file{categories} file, and invoke
|
|
55
|
|
56 @smallexample
|
|
57 rmcat @var{category@dots{}}
|
|
58 @end smallexample
|
|
59
|
|
60 @noindent
|
|
61 to remove @var{category} (any number of categories may be specified on
|
|
62 the command line to @code{rmcat}, so long as they abide by the above
|
|
63 constraints).
|
|
64
|
|
65 @emph{Note}: this causes all category lists for @code{send-pr} (except
|
|
66 the one on the local machine) to become outdated. Copy the new list on
|
|
67 to every machine on your network that has @code{send-pr} installed, and
|
|
68 make sure you advise remote submitters that the category list has
|
|
69 changed. @xref{rmcat,,Removing a problem category}. Also
|
|
70 @ref{categories,,The @code{categories} file}.
|
|
71
|
|
72 @item adding and removing maintainers
|
|
73 @cindex adding and removing maintainers
|
|
74 Edit the @file{responsible} file to add a new maintainer or to remove an
|
|
75 existing maintainer. @xref{responsible,,The @code{responsible} file}.
|
|
76
|
|
77 @item building a distribution of @code{send-pr}
|
|
78 @cindex building a distribution of @code{send-pr}
|
|
79 @cindex @code{mkdist}
|
|
80 You can build a distribution of @code{send-pr} which contains valid
|
|
81 information for your site by invoking the command @code{mkdist}.
|
|
82 @xref{mkdist,,Configuring @code{send-pr} for the outside world}. You
|
|
83 can then distribute your customized @w{@code{send-pr}} to your
|
|
84 customers, friends, relatives, etc., so that they can submit Problem
|
|
85 Reports to your database.
|
|
86
|
|
87 @item building a new index
|
|
88 @cindex building a new index
|
|
89 @cindex @code{gen-index}
|
|
90 If your index becomes corrupted, or if you wish to generate a new one
|
|
91 for some reason, use the program @code{gen-index}
|
|
92 (@pxref{gen-index,,Regenerating the index}).
|
|
93
|
|
94 @item pruning log files
|
|
95 @cindex pruning log files
|
|
96 Log files often grow to unfathomable proportions. As with gardening, it
|
|
97 is best to prune these as they grow, lest they take over your disk and
|
|
98 leave you with no room to gather more Problem Reports. If you keep log
|
|
99 files, be sure to keep an eye on them. (@xref{Aliases,,Setting up mail
|
|
100 aliases}.)
|
|
101 @c "gather ye rosebugs while ye may..."
|
|
102
|
|
103 @item BACKING UP YOUR DATA
|
|
104 @cindex BACK UP YOUR DATA
|
|
105 Any database is only useful if its data remains uncorrupted and safe.
|
|
106 Performing periodic backups ensures that problems like disk crashes and
|
|
107 data corruption are reversible.
|
|
108
|
|
109 @end table
|
|
110
|
|
111 @xref{Locations,,Where @sc{gnats} lives}.
|
|
112
|
|
113 @menu
|
|
114 * Networked management:: Managing GNATS over a network
|
|
115 * Local configuration:: Changing your local configuration
|
|
116 * Admin files:: Administrative data files
|
|
117 * Admin utils:: Administrative utilities
|
|
118 * Internal utils:: Internal utilities
|
|
119 @end menu
|
|
120
|
|
121 @node Networked management
|
|
122 @section Managing @sc{gnats} over a network
|
|
123 @cindex networked management
|
|
124 @cindex managing @sc{gnats} over a network
|
|
125
|
|
126 If you have installed the @sc{gnats} user tools on machines around your
|
|
127 local network, there are a few things you need to remember.
|
|
128
|
|
129 @code{mkcat} and @code{rmcat} do not update the categories list for
|
|
130 other machines on your network which have @code{send-pr} installed,
|
|
131 unless those machines share @var{prefix} with the host machine). To
|
|
132 update these lists, copy the @code{send-pr} categories list to each of
|
|
133 the other hosts. This categories list is
|
|
134 @w{@file{@var{prefix}/lib/gnats/@var{site}}}, where @var{site} is the
|
|
135 name tag for your local site, as specified in the @file{config} file as
|
|
136 @samp{GNATS_SITE} (@pxref{config,,The @code{config} file}).
|
|
137
|
|
138 It is also important to note that only your local @code{send-pr} has
|
|
139 access to this new information; any copies of @code{send-pr} which you
|
|
140 have distributed to outside submitters now have outdated category lists.
|
|
141 You must either contact your submitters and instruct them to update
|
|
142 their copy of the categories list, which they installed in
|
|
143 @w{@file{@var{prefix}/lib/gnats/@var{support-site}}} from the
|
|
144 distribution you provided, or you must build another distribution of
|
|
145 @code{send-pr} with this new information and redistribute it.
|
|
146
|
|
147 If you need to use @sc{gnats} utilities, like @code{query-pr} and
|
|
148 @code{edit-pr}, on other systems besides the one where @sc{gnats} itself
|
|
149 resides, @pxref{Installing tools,,Installing the user tools}.
|
|
150
|
|
151 @c FIXME - anything else?
|
|
152
|
|
153 @node Local configuration
|
|
154 @section Changing your local configuration
|
|
155 @cindex local configuration
|
|
156 @cindex changing your local configuration
|
|
157
|
|
158 @xref{Locations,,Where @sc{gnats} lives}.
|
|
159
|
|
160 Your local configuration is determined by the data files in the
|
|
161 directory @w{@file{@var{GNATS_ROOT}/gnats-adm}}. These can be altered at
|
|
162 any time by editing the pertinent file.
|
|
163
|
|
164 @table @code
|
|
165 @cindex @code{config} file
|
|
166 @item config
|
|
167 Variables which control certain behavior. @xref{config,,The
|
|
168 @code{config} file}. Behaviors you can change here include
|
|
169
|
|
170 @itemize @bullet
|
|
171 @item
|
|
172 The address where your site receives Problem Reports.
|
|
173
|
|
174 @item
|
|
175 The address of the @sc{gnats} administrator.
|
|
176
|
|
177 @item
|
|
178 The nametag for your Support Site (your organization, company,
|
|
179 group, etc.).
|
|
180
|
|
181 @item
|
|
182 The nametag for your local Submitter Site.
|
|
183
|
|
184 @item
|
|
185 The default release for your site.
|
|
186
|
|
187 @item
|
|
188 The default value for the @samp{>Organization:} field (this value
|
|
189 appears as the default when you run @code{send-pr}).
|
|
190
|
|
191 @item
|
|
192 Whether or not to remind maintainers if a requisite time period has
|
|
193 passed before they change the state of a Problem Report to
|
|
194 @samp{analyzed}. (Also see @ref{submitters,,The @code{submitters}
|
|
195 file}, and @ref{at-pr,,Timely Reminders}.
|
|
196
|
|
197 @item
|
|
198 Whether or not to send an automatic acknowledgement to the originator of
|
|
199 a problem report when the @sc{gnats} first receives the PR.
|
|
200
|
|
201 @item
|
|
202 The value @sc{gnats} assigns to PRs which come in with missing or unknown
|
|
203 values for the @samp{>Submitter-Id:} field.
|
|
204
|
|
205 @item
|
|
206 Whether or not @sc{gnats} should retain @samp{Received:}
|
|
207 mail headers from incoming mail.
|
|
208
|
|
209 @item
|
|
210 Whether or not @sc{gnats} is in a mode for debugging.
|
|
211
|
|
212 @item
|
|
213 The values which define business hours.
|
|
214 @end itemize
|
|
215
|
|
216 @cindex @code{categories} file
|
|
217 @item categories
|
|
218 The list of categories that @sc{gnats} accepts as valid for the
|
|
219 @samp{>Category:} field, and the maintainers responsible for each
|
|
220 category. Update this file whenever you have a new category, or
|
|
221 whenever a category is no longer valid. You must also update this file
|
|
222 whenever responsiblility for a category changes, or if a maintainer is
|
|
223 no longer valid. @xref{categories,,The @code{categories} file}. Also
|
|
224 see @ref{mkcat,,Adding a new problem category}, and @ref{rmcat,,Removing
|
|
225 a problem category}.
|
|
226
|
|
227 @cindex @code{responsible} file
|
|
228 @item responsible
|
|
229 The list of maintainers. Update this file whenever you have a new
|
|
230 maintainer, or whenever a maintainer is no longer valid.
|
|
231 @xref{responsible,,The @code{responsible} file}.
|
|
232
|
|
233 @cindex @code{submitters} file
|
|
234 @item submitters
|
|
235 The list of Submitter Sites from whom @sc{gnats} accepts Problem Reports.
|
|
236 This file is mandatory, although the feature it provides is not; see
|
|
237 @ref{submitters,,The @code{submitters} file}.
|
|
238 @end table
|
|
239
|
|
240 @menu
|
|
241 * default behavior::
|
|
242 * config:: The `config' file
|
|
243 * categories:: The `categories' file
|
|
244 * responsible:: The `responsible' file
|
|
245 * submitters:: The `submitters' file
|
|
246 @end menu
|
|
247
|
|
248 @node default behavior
|
|
249 @subsection Default behavior
|
|
250
|
|
251 The default behavior for @sc{gnats} is as follows:
|
|
252
|
|
253 @cindex default behavior
|
|
254 @itemize @bullet
|
|
255 @item
|
|
256 The address where your site receives Problem Reports is @samp{bugs} (a
|
|
257 local address).
|
|
258
|
|
259 @item
|
|
260 The address of the @sc{gnats} administrator is @samp{gnats-admin} (a local
|
|
261 address).
|
|
262
|
|
263 @item
|
|
264 The nametag for your Support Site (your organization, company, group,
|
|
265 etc.) is the second-to-last field in your domain name.
|
|
266
|
|
267 @item
|
|
268 The nametag for your local Submitter Site is the nametag for your
|
|
269 Support Site.
|
|
270
|
|
271 @item
|
|
272 The default release for your site is @samp{unknown-1.0}.
|
|
273
|
|
274 @item
|
|
275 The default value for the @samp{>Organization:} field (this value appears as the
|
|
276 default when you run @code{send-pr}) is the nametag for your Support
|
|
277 Site.
|
|
278
|
|
279 @item
|
|
280 @sc{gnats} reminds maintainers if a requisite time period has passed
|
|
281 before they change the state of a Problem Report to @samp{analyzed}.
|
|
282
|
|
283 @item
|
|
284 An automatic acknowledgement is sent to the originator of a problem
|
|
285 report when the @sc{gnats} first receives the PR.
|
|
286
|
|
287 @item
|
|
288 The value @sc{gnats} assigns to the @samp{>Submitter-Id:} field in PRs
|
|
289 which arrive with missing or unknown values for that field is
|
|
290 @samp{unknown}.
|
|
291
|
|
292 @item
|
|
293 @samp{Received@dots{}} mail headers are retained.
|
|
294
|
|
295 @item
|
|
296 @sc{gnats} is not in a debugging mode.
|
|
297
|
|
298 @item
|
|
299 @dfn{business hours} are defined as 8:00am to 5:00pm, Monday through
|
|
300 Friday.
|
|
301 @end itemize
|
|
302
|
|
303
|
|
304 @node config
|
|
305 @subsection The @code{config} file
|
|
306 @cindex @code{config} file
|
|
307
|
|
308 Much of the behavior @sc{gnats} exhibits depends on the values of fields
|
|
309 in the file @w{@file{@var{GNATS_ROOT}/gnats-adm/config}}. The
|
|
310 @file{config} file contains a list of variables (using Bourne-shell
|
|
311 syntax) which control the following behavior. These values can be
|
|
312 changed at any time; the new values take effect for all subsequent
|
|
313 iterations of the tools.
|
|
314
|
|
315 @table @code
|
|
316 @cindex @code{GNATS_ADDR}
|
|
317 @item GNATS_ADDR="@var{address}"
|
|
318 The address where your site receives Problem Reports. This address is
|
|
319 aliased in the file @w{@file{/etc/aliases}} so that it directs incoming
|
|
320 mail into @code{queue-pr} (@pxref{Installing utils,,Installing the
|
|
321 utilities}).
|
|
322
|
|
323 The default is @samp{bugs} (a local address).
|
|
324
|
|
325 @cindex @code{GNATS_ADMIN}
|
|
326 @item GNATS_ADMIN="@var{address}"
|
|
327 The address of the @sc{gnats} administrator. Normally this is set to
|
|
328 @samp{gnats-admin}, which is an alias in @file{/etc/aliases} that points
|
|
329 toward the person responsible for administrating @sc{gnats}.
|
|
330 @xref{Installing utils,,Installing the utilities}.
|
|
331
|
|
332 The default is @samp{gnats-admin} (a local address).
|
|
333
|
|
334 @cindex @code{GNATS_SITE}
|
|
335 @item GNATS_SITE="@var{site}"
|
|
336 The nametag for your Support Site (your organization, company, group,
|
|
337 etc.). This nametag should also appear in the @file{submitters} file,
|
|
338 so that users at your site can submit Problem Reports locally.
|
|
339
|
|
340 @var{site} is also used as the name of the file containing a valid
|
|
341 category list for your site. This file is installed locally as
|
|
342 @w{@file{@var{prefix}/lib/gnats/@var{site}}}. @emph{Warning:} if you
|
|
343 change this variable after @sc{gnats} is installed, you must also change
|
|
344 the name of this file, as well as the name of the alias for your local
|
|
345 submitters (@pxref{Aliases,,Setting up mail aliases}).
|
|
346
|
|
347 The default is the second-to-last field in your domain name. For
|
|
348 example, if your domain name is @w{@samp{unleaded.truckstop.org}}, your
|
|
349 default @var{site} is @w{@samp{truckstop}}.
|
|
350
|
|
351 @cindex @code{SUBMITTER}
|
|
352 @item SUBMITTER="@var{submitter-id}"
|
|
353 The nametag for your local Submitter Site (this value appears as the
|
|
354 default value for @samp{>Submitter-Id} when you run @code{send-pr}).
|
|
355 Even though you are a Support Site, if you submit Problem Reports to
|
|
356 your own organization you become a Submitter Site. The value
|
|
357 @var{submitter-id} is the default value for the @samp{>Submitter-Id:}
|
|
358 field that your maintainers see when they submit Problem Reports
|
|
359 locally.
|
|
360
|
|
361 The default is the value of @samp{GNATS_SITE}.
|
|
362
|
|
363 @cindex @code{DEFAULT_RELEASE}
|
|
364 @item DEFAULT_RELEASE="@var{release}"
|
|
365 The default release for your site (this value appears as the default
|
|
366 value for @samp{>Release:} when you run @code{send-pr}).
|
|
367
|
|
368 The default is @samp{unknown-1.0}.
|
|
369
|
|
370 @cindex @code{DEFAULT_ORGANIZATION}
|
|
371 @item DEFAULT_ORGANIZATION="@var{text}"
|
|
372 The default value for the @samp{>Organization:} field (this value
|
|
373 appears as the default when you run @code{send-pr}).
|
|
374
|
|
375 The default is the value of @samp{GNATS_SITE}.
|
|
376
|
|
377 @c FIXME - where else to mention this stuff?
|
|
378 @cindex @code{NOTIFY}
|
|
379 @item NOTIFY=@var{boolean}
|
|
380 Determines whether or not to remind maintainers if a requisite time
|
|
381 period has passed before they change the state of a Problem Report to
|
|
382 @samp{analyzed}. This feature uses the program @code{at-pr}; see
|
|
383 @ref{at-pr,,Timely Reminders}.
|
|
384
|
|
385 This requisite time is determined for each submitter individually; see
|
|
386 @ref{submitters,,The @code{submitters} file}. The time is measured in
|
|
387 @dfn{business hours}, which by default are 8:00am to 5:00pm, Monday
|
|
388 through Friday. Business hours can be redefined by changing the
|
|
389 variables @code{BDAY_START}, @code{BDAY_END}, @code{BWEEK_START}, and
|
|
390 @code{BWEEK_END} in the @file{config} file (see below).
|
|
391
|
|
392 If @var{boolean} is @samp{1}, this feature is active. If @var{boolean}
|
|
393 is @samp{0}, the feature is turned off. The default value for
|
|
394 @samp{NOTIFY} is @samp{1}.
|
|
395
|
|
396 @cindex @code{ACKNOWLEDGE}
|
|
397 @item ACKNOWLEDGE=@var{boolean}
|
|
398 Determines whether or not to send an automatic acknowledgement to the
|
|
399 originator of a problem report when the @sc{gnats} first receives the PR.
|
|
400
|
|
401 If @var{boolean} is @samp{1}, this feature is active. If @var{boolean}
|
|
402 is @samp{0}, the feature is turned off. The default for
|
|
403 @samp{ACKNOWLEDGE} is @samp{1}.
|
|
404
|
|
405 The acknowledgment is of the form:
|
|
406
|
|
407 @smallexample
|
|
408 @group
|
|
409 To: @var{your-address}
|
|
410 From: gnats
|
|
411 Subject: Re: @var{category}/@var{gnats-id}:@var{Synopsis}
|
|
412 In-Reply-To: Your message of @var{date}
|
|
413
|
|
414 Thank you very much for your problem report.
|
|
415 It has the internal identification: @var{category}/@var{gnats-id}
|
|
416 The individual assigned to look at your bug is:
|
|
417 @var{responsible}
|
|
418
|
|
419 Category: @var{category of the PR}
|
|
420 Responsible: @var{responsible}
|
|
421 Synopsis: @var{Synopsis from submitted PR}
|
|
422 Arrival-Date: @var{arrival date}
|
|
423 @end group
|
|
424 @end smallexample
|
|
425
|
|
426 @cindex @code{DEFAULT_SUBMITTER}
|
|
427 @item DEFAULT_SUBMITTER="submitter-id"
|
|
428 The value @sc{gnats} assigns to PRs which come in with missing or unknown
|
|
429 values for the @samp{>Submitter-Id:} field. This value must also appear
|
|
430 in the @file{submitters} file; see @ref{submitters,,The
|
|
431 @code{submitters} file}.
|
|
432
|
|
433 @cindex disabling @var{submitter-id}
|
|
434 To disable the feature of @sc{gnats} which tracks the
|
|
435 @samp{>Submitter-Id:}, simply alter the @file{submitters} file to only
|
|
436 contain the @var{submitter-id} value which appears in
|
|
437 @w{@code{DEFAULT_SUBMITTER}}, and and instruct your submitters to ignore
|
|
438 the field.
|
|
439
|
|
440 The default value for @samp{DEFAULT_SUBMITTER} is @samp{unknown}.
|
|
441
|
|
442 @cindex @code{KEEP_RECEIVED_HEADERS}
|
|
443 @item KEEP_RECEIVED_HEADERS=@var{boolean}
|
|
444 Determines whether or not @sc{gnats} should retain the
|
|
445 @w{@samp{Received:}} mail headers from incoming mail. These headers
|
|
446 often take up a lot of space, and they are seldom used.
|
|
447
|
|
448 If @var{boolean} is @samp{1}, this feature is active. If @var{boolean}
|
|
449 is @samp{0}, the feature is turned off. The default value for
|
|
450 @samp{KEEP_RECEIVED_HEADERS} is @samp{1}.
|
|
451
|
|
452 @item DEBUG_MODE=@var{boolean}
|
|
453 Determines whether or not @sc{gnats} is operating in a mode for
|
|
454 debugging. When @var{boolean} is @samp{1}, @sc{gnats} fowards all mail
|
|
455 to the @sc{gnats} administrator, @w{@code{gnats-admin}}.
|
|
456
|
|
457 @cindex business hours
|
|
458 @item BDAY_START=@var{integer}
|
|
459 @itemx BDAY_END=@var{integer}
|
|
460 @itemx BWEEK_START=@var{integer}
|
|
461 @itemx BWEEK_END=@var{integer}
|
|
462 The definition of @dfn{business hours}. These values are only used if
|
|
463 @code{NOTIFY} is set to @samp{1} in the @file{config} file (see above).
|
|
464
|
|
465 By default, business hours are 8:00am to 5:00pm Monday through Friday,
|
|
466 local time.
|
|
467
|
|
468 @table @code
|
|
469 @item BDAY_START=@var{integer}
|
|
470 Defines the hour of the day when business hours begin. @var{integer}
|
|
471 values must fall between @samp{0} (midnight) and @samp{23} (11:00pm).
|
|
472 The default is @samp{8} (8:00am).
|
|
473
|
|
474 @item BDAY_END=@var{integer}
|
|
475 Defines the hour of the day when business hours end. @var{integer}
|
|
476 values must fall between @samp{0} (midnight) and @samp{23} (11:00pm).
|
|
477 The default is @samp{17} (5:00pm).
|
|
478
|
|
479 @item BWEEK_START=@var{integer}
|
|
480 Defines the beginning day of the business week. @var{integer} values
|
|
481 must fall between @samp{0} (Sunday) and @samp{6} (Saturday). The
|
|
482 default is @samp{1} (Monday).
|
|
483
|
|
484 @item BWEEK_END=@var{integer}
|
|
485 Defines the ending day of the business week. @var{integer} values must
|
|
486 fall between @samp{0} (Sunday) and @samp{6} (Saturday). The default is
|
|
487 @samp{5} (Friday).
|
|
488 @end table
|
|
489
|
|
490 @end table
|
|
491
|
|
492 @node categories
|
|
493 @subsection The @code{categories} file
|
|
494 @cindex @code{categories} file
|
|
495
|
|
496 The @file{categories} file contains a list of problem categories,
|
|
497 specific to your site, which @sc{gnats} tracks. This file also matches
|
|
498 responsible people with these categories. You must edit this file
|
|
499 initially, creating valid categories and then running @code{mkcat} to
|
|
500 create the corresponding subdirectories of @w{@code{@var{GNATS_ROOT}}}
|
|
501 and update the valid categories list for @w{@code{send-pr}}. For
|
|
502 instructions on running @code{mkcat}, see @ref{mkcat,,Adding a problem
|
|
503 category}.
|
|
504
|
|
505 To create a new category, log in as @sc{gnats}, add a line to this file,
|
|
506 and run @code{mkcat}. Lines beginning with @samp{#} are ignored.
|
|
507
|
|
508 A line in the @file{categories} file consists of four fields delimited
|
|
509 by colons, as follows:
|
|
510
|
|
511 @smallexample
|
|
512 @var{category}:@var{description}:@var{responsible}:@var{notify}
|
|
513 @end smallexample
|
|
514
|
|
515 @noindent
|
|
516 @table @var
|
|
517 @item category
|
|
518 A unique category name, made up of text characters. This name cannot
|
|
519 contain spaces or any of the following characters:
|
|
520
|
|
521 @smallexample
|
|
522 ! $ & * ( ) @{ @} [ ] ` ' " ; : < > ~
|
|
523 @end smallexample
|
|
524
|
|
525 @noindent
|
|
526 Ideally, category names should not contain commas or begin with periods.
|
|
527 Each line has a corresponding subdirectory in the main @sc{gnats}
|
|
528 directory (@var{GNATS_ROOT}).
|
|
529
|
|
530 @ignore
|
|
531 It is possible that if you set up the database with categories
|
|
532 which contain characters that describe subdirectories, such as a slash
|
|
533 (@key{/}) in @sc{Unix}, you could effectively build subdirectories
|
|
534 within each category, and @sc{gnats} would read and write to these
|
|
535 files as it would any other. This is not recommended. It doesn't
|
|
536 break any of the existing tools, and is a fine way to keep category
|
|
537 directories from growing too large. It is, however, quite untested.
|
|
538 @end ignore
|
|
539
|
|
540 @item description
|
|
541 A terse textual description of the category.
|
|
542
|
|
543 @item responsible
|
|
544 The name tag of the party responsible for this category of problems, as
|
|
545 listed in the @file{responsible} file (@pxref{responsible,,The
|
|
546 @code{responsible} file}).
|
|
547
|
|
548 @item notify
|
|
549 One or more other parties which should be notified when a Problem Report
|
|
550 with this category arrives, such as a project manager, other members of
|
|
551 the same project, other interested parties, or even log files. These
|
|
552 should be separated with commas.
|
|
553 @end table
|
|
554
|
|
555 A good strategy for configuring this file is to have a different
|
|
556 category for each product your organization supports or wishes to track
|
|
557 information for, or perhaps with sub-categories within each category.
|
|
558 For instance, if you wish to track documentation problems in a variety of
|
|
559 areas, you could have entries such as
|
|
560
|
|
561 @smallexample
|
|
562 doc:General Doc Questions:myboss:me,barney
|
|
563 doc-rock:Doc for ROCK program:me:myboss
|
|
564 doc-stone:Docs for STONE utils:barney:fred
|
|
565 doc-local:in-house documentation:me:doc-local-log
|
|
566 @end smallexample
|
|
567
|
|
568 In the above example, the nametags @samp{myboss}, @samp{me},
|
|
569 @samp{fred}, and @samp{barney} must be defined in the @file{responsible}
|
|
570 file (@pxref{responsible,,The @code{responsible} file}).
|
|
571
|
|
572 Problem Reports with a category of @samp{doc} are sent to the local mail
|
|
573 address (or alias) @samp{myboss}, and also sent to the addresses
|
|
574 @samp{me} and @samp{barney}. PRs with a category of @samp{doc-rock} are
|
|
575 sent to the local addresses @samp{me} and @samp{myboss} only, while PRs
|
|
576 with the category @samp{doc-stone} are sent to @samp{fred} as well as to
|
|
577 @samp{barney}. PRs with a category of @samp{doc-local} are sent only to
|
|
578 @samp{me}, and are also filed in @code{doc-local-log} (in this case, an
|
|
579 alias should be set up in @file{/etc/aliases} to reflect a location for
|
|
580 the log file, such as @w{@samp{doc-local-log: /users/me/local-log}}).
|
|
581
|
|
582 Whenever you add a new category, be sure to run @code{mkcat} to create a
|
|
583 subdirectory for it and update the local categories list.
|
|
584
|
|
585 Only one category must be present for @sc{gnats} to function:
|
|
586
|
|
587 @smallexample
|
|
588 pending:Category for faulty PRs: gnats-admin:
|
|
589 @end smallexample
|
|
590
|
|
591 @cindex @code{pending} file
|
|
592 The @file{pending} directory is created automatically when you run
|
|
593 @w{@samp{make install}} (@pxref{Configure and make,,Configuring and
|
|
594 compiling the software}).
|
|
595
|
|
596 @node responsible
|
|
597 @subsection The @code{responsible} file
|
|
598 @cindex @code{responsible} file
|
|
599
|
|
600 This file contains a list of the responsible parties. Lines beginning
|
|
601 with @samp{#} are ignored. Each entry contains three fields, separated
|
|
602 by colons:
|
|
603
|
|
604 @smallexample
|
|
605 @var{responsible}:@var{full-name}:@var{mail-address}
|
|
606 @end smallexample
|
|
607
|
|
608 @noindent
|
|
609 @table @var
|
|
610 @item responsible
|
|
611 A name-tag description of the party in question, such as her or his user
|
|
612 name, or the name of the group. This name is listed in the PR in
|
|
613 the @samp{>Responsible:} field.
|
|
614
|
|
615 @item full-name
|
|
616 The full name of the party (``Charlotte Bronte''; ``Compiler Group'').
|
|
617
|
|
618 @item mail-address
|
|
619 The full, valid mail address of the party. This field is only necessary
|
|
620 if the responsible party has no local mail address or alias.
|
|
621 @end table
|
|
622
|
|
623 @noindent
|
|
624 A sample @file{responsible} listing might be:
|
|
625
|
|
626 @smallexample
|
|
627 ren:Ren Hoek:
|
|
628 stimpy:Stimpson J. Cat:stimpy@@lederhosen.org
|
|
629 @end smallexample
|
|
630
|
|
631 Here, @code{ren} is a local user. @code{stimpy} is remote, so his full
|
|
632 address must be specified.
|
|
633
|
|
634 The following entry must be present for @sc{gnats} to function:
|
|
635
|
|
636 @smallexample
|
|
637 gnats-admin: GNATS administrator:
|
|
638 @end smallexample
|
|
639
|
|
640 @noindent
|
|
641 (@code{gnats-admin} is a mail alias, so for this purpose
|
|
642 @code{gnats-admin} is a local address.)
|
|
643
|
|
644 @node submitters
|
|
645 @subsection The @code{submitters} file
|
|
646 @cindex @code{submitters} file
|
|
647
|
|
648 This is a database of sites which submit bugs to your support site. It
|
|
649 contains six fields delineated by colons. Lines beginning with @samp{#}
|
|
650 will be ignored.
|
|
651
|
|
652 Entries are of the format:
|
|
653
|
|
654 @smallexample
|
|
655 @var{submitter-id}:@var{name}:@var{type}:@var{resp-time}:@var{contact}:@var{notify}
|
|
656 @end smallexample
|
|
657
|
|
658 @noindent
|
|
659 @table @var
|
|
660 @item submitter-id
|
|
661 A unique identifier for a specific site or other entity who submits
|
|
662 Problem Reports.
|
|
663
|
|
664 @item name
|
|
665 A textual description of this entity.
|
|
666
|
|
667 @item type
|
|
668 Optional description for the type of relationship this submitter to your
|
|
669 support site. This could indicate a contract type, a level of
|
|
670 expertise, etc., or it can remain blank.
|
|
671
|
|
672 @item resp-time
|
|
673 Optional quoted response time, in @dfn{business hours}. @sc{gnats} is
|
|
674 capable of reminding responsible parties when Problem Reports marked
|
|
675 with a @samp{>Severity} value of @samp{critical}, or those with a
|
|
676 @samp{>Severity} of @samp{serious} and a @samp{>Priority} value of
|
|
677 @samp{high}, are neglected for a certain period. This argument defines
|
|
678 that response period for each @var{submitter-id}. Business hours are
|
|
679 defined by default as 8:00am to 5:00pm, Monday through Friday. For
|
|
680 example, three business days would be equal to 24 business hours.
|
|
681
|
|
682 This function is active if the @code{NOTIFY} field is defined as
|
|
683 @samp{1} in the @file{config} file (@pxref{Local configuration,,Changing
|
|
684 your local configuration}). If @code{NOTIFY} is @samp{0}, this field is
|
|
685 ignored. For information on @code{at-pr}, the program which sends out
|
|
686 this reminder, see @ref{at-pr,,Timely Reminders}.
|
|
687
|
|
688 @item contact
|
|
689 The name tag of the main @dfn{contact} at the Support Site for this
|
|
690 submitter. This contact should be in the @file{responsible} file
|
|
691 (@pxref{responsible,,The @code{responsible} file}). Incoming bugs from
|
|
692 @var{submitter} are sent to this contact. Optionally, this field can be
|
|
693 left blank.
|
|
694
|
|
695 @item notify
|
|
696 Any other parties who should receive copies of Problem Reports sent in
|
|
697 by @var{submitter}.
|
|
698 @end table
|
|
699
|
|
700 A few example entries in the @file{submitters} file:
|
|
701
|
|
702 @smallexample
|
|
703 univ-hell: University of Hades:eternal:3:beelzebub:lucifer
|
|
704 tta: Telephones and Telegraphs of America:support:720:dave:
|
|
705 @end smallexample
|
|
706
|
|
707 @noindent
|
|
708 In this example, when a PR comes in from the University of Hades (who
|
|
709 has an eternal contract), it should have @samp{univ-hell} in its
|
|
710 @samp{Submitter-Id} field. This Problem Report goes to @code{beelzebub}
|
|
711 (who should be in the @file{responsible} file), and if it is not
|
|
712 analyzed within three business hours a reminder message is sent.
|
|
713 @code{lucifer} also receives a copy of the bug, and a copy of the
|
|
714 reminder message as well (if it is sent). When Telephones and
|
|
715 Telegraphs of America utilizes their support contract and submits a bug,
|
|
716 a copy is sent only to @code{dave}, who has 720 business hours to return
|
|
717 an analysis before a reminder is sent.
|
|
718
|
|
719 @cindex disabling @var{submitter-id}
|
|
720 To disable the feature of @sc{gnats} which tracks the
|
|
721 @samp{>Submitter-Id:}, simply alter the @file{submitters} file to only
|
|
722 contain the @var{submitter-id} value which appears as the
|
|
723 @samp{DEFAULT_SUBMITTER} value in the @file{config} file
|
|
724 (@pxref{config,,The @code{config} file}), and instruct your submitters
|
|
725 to ignore the field.
|
|
726
|
|
727 @node Admin files
|
|
728 @section Administrative data files
|
|
729 @cindex admin files
|
|
730 @cindex files used for @sc{gnats} administration
|
|
731
|
|
732 The following files are located in @file{@var{GNATS_ROOT}/gnats-adm},
|
|
733 where @var{GNATS_ROOT} is the resident directory of @sc{gnats}. These
|
|
734 files are maintained by @sc{gnats}; you should never touch them.
|
|
735
|
|
736 @menu
|
|
737 * index file:: The `index' file
|
|
738 * current file:: The `current' file
|
|
739 @end menu
|
|
740
|
|
741 @node index file
|
|
742 @subsection The @code{index} file
|
|
743 @cindex @code{index} file
|
|
744
|
|
745 The index is used to accelerate searches on the database by
|
|
746 @code{query-pr} and @code{edit-pr}. This file is not created until the
|
|
747 first PR comes in. It is then kept up to date by @sc{gnats}; you should
|
|
748 never touch this file.
|
|
749
|
|
750 Any searches on subjects contained in the index are much faster than
|
|
751 searches which depend on data not in the index. The index contains
|
|
752 single-line entries for the following fields, in order, separated by
|
|
753 colons (@samp{:}) except for @samp{>Category:} and @samp{>Number:},
|
|
754 which are separated by a slash (@samp{/}) (the @samp{>} and @samp{:}
|
|
755 Problem Report fieldname delimiters have been removed for the sake of
|
|
756 brevity and readability)::
|
|
757
|
|
758 @smallexample
|
|
759 Category Number Submitter-Id
|
|
760 Responsible State Confidential
|
|
761 Severity Priority
|
|
762 @end smallexample
|
|
763
|
|
764 To see an example index, run @code{gen-index} without any options
|
|
765 (@pxref{gen-index,,Regenerating the index}).
|
|
766
|
|
767 @node current file
|
|
768 @subsection The @code{current} file
|
|
769 @cindex @code{current} file
|
|
770
|
|
771 This file contains the last serial number assigned to an incoming PR.
|
|
772 It is used internally by @sc{gnats}; you need never touch this file.
|
|
773
|
|
774 @node Admin utils
|
|
775 @section Administrative utilities
|
|
776 @cindex administrative utilities
|
|
777
|
|
778 These tools are used by the @sc{gnats} administrator as part of the
|
|
779 periodic maintenance and configuration of @sc{gnats}.
|
|
780 @xref{Management,,@sc{gnats} Administration}.
|
|
781
|
|
782 @menu
|
|
783 * mkcat:: Adding a problem category
|
|
784 * rmcat:: Removing a problem category
|
|
785 * gen-index:: Regenerating the index
|
|
786 * mkdist:: Configuring send-pr for the outside world
|
|
787 @end menu
|
|
788
|
|
789 @node mkcat
|
|
790 @subsection Adding a problem category
|
|
791 @cindex @code{mkcat}
|
|
792 @cindex adding a problem category
|
|
793 @cindex new problem categories
|
|
794 @cindex @code{categories} file
|
|
795
|
|
796 To add new categories to the database:
|
|
797
|
|
798 @enumerate 1
|
|
799 @item
|
|
800 Add a line to the @file{categories} file under
|
|
801 @w{@file{@var{GNATS_ROOT}/gnats-adm}} for each new category.
|
|
802 @xref{categories,,The @code{categories} file}.
|
|
803
|
|
804 @item
|
|
805 Run @code{mkcat}. @code{mkcat} creates a directory under
|
|
806 @w{@var{GNATS_ROOT}} for any new categories which appear in the
|
|
807 @file{categories} file. @code{mkcat} also recreates the list of valid
|
|
808 categories for both your locally installed @code{send-pr} and for the
|
|
809 @code{send-pr} distribution template in
|
|
810 @w{@file{@var{prefix}/lib/gnats/dist}} (@pxref{Locations,,Where @sc{gnats}
|
|
811 lives}.
|
|
812 @end enumerate
|
|
813
|
|
814 @emph{Note:} @code{mkcat} does not update the categories list for other
|
|
815 machines on your network which have @code{send-pr} installed (unless
|
|
816 the two machines share the directory @var{prefix}).
|
|
817 @xref{Networked management,,Managing @sc{gnats} over a network}.
|
|
818
|
|
819 It is also important to note that only your local @code{send-pr} has
|
|
820 access to this new information; any copies of @code{send-pr} which you
|
|
821 have distributed to outside submitters now have outdated category lists.
|
|
822 You must either contact your submitters and instruct them to update
|
|
823 their copy of the categories list, which they installed in
|
|
824 @w{@file{@var{prefix}/lib/gnats/@var{support-site}}} (@emph{Note:} the
|
|
825 value for @var{prefix} may be different from yours) from the
|
|
826 distribution you provided, or you must build another distribution of
|
|
827 @code{send-pr} with this new information and redistribute it
|
|
828 (@pxref{mkdist,,Configuring @code{send-pr} for the outside world}).
|
|
829
|
|
830 @node rmcat
|
|
831 @subsection Removing a problem category
|
|
832 @cindex @code{rmcat}
|
|
833 @cindex removing a problem category
|
|
834 @cindex @code{categories} file
|
|
835
|
|
836 To remove a category from the database:
|
|
837
|
|
838 @enumerate 1
|
|
839 @item
|
|
840 Remove the Problem Reports from the subdirectories corresponding to the
|
|
841 categories you wish to remove, or assign the PRs to new categories. All
|
|
842 PRs for a given category reside in
|
|
843 @w{@file{@var{GNATS_ROOT}/@var{category}}}. Make sure you do this for
|
|
844 each category you wish to remove.
|
|
845
|
|
846 @item
|
|
847 Run @code{rmcat} using
|
|
848
|
|
849 @smallexample
|
|
850 rmcat @var{category} [ @var{category@dots{}} ]
|
|
851 @end smallexample
|
|
852
|
|
853 @noindent
|
|
854 where @var{category} is the category you wish to remove. You can
|
|
855 specify as many categories as you wish as long as each category has no
|
|
856 PRs associated with it. @code{rmcat} removes the directory under
|
|
857 @w{@var{GNATS_ROOT}} where the Problem Reports for that category had been
|
|
858 stored. @code{rmcat} also deletes the category from the list of valid
|
|
859 categories for both your locally installed @code{send-pr} and for the
|
|
860 @code{send-pr} distribution template in
|
|
861 @w{@file{@var{prefix}/lib/gnats/dist}} (@pxref{Locations,,Where @sc{gnats}
|
|
862 lives}).
|
|
863 @end enumerate
|
|
864
|
|
865 @emph{Note:} @code{rmcat} does not update the categories list for other
|
|
866 machines on your network which have @code{send-pr} installed.
|
|
867 @xref{Networked management,,Managing @sc{gnats} over a network}.
|
|
868
|
|
869 It is also important to note that only your local @code{send-pr} has
|
|
870 access to this new information; any copies of @code{send-pr} which you
|
|
871 have distributed to outside submitters now have outdated category lists.
|
|
872 You must either contact your submitters and instruct them to update
|
|
873 their copy of the categories list, which they installed in
|
|
874 @w{@file{@var{prefix}/lib/gnats/@var{support-site}}} (@emph{Note:} the
|
|
875 value for @var{prefix} may be different from yours) from the
|
|
876 distribution you provided, or you must build another distribution of
|
|
877 @code{send-pr} with this new information and redistribute it
|
|
878 (@pxref{mkdist,,Configuring @code{send-pr} for the outside world}).
|
|
879
|
|
880 @c FIXME! Should we suggest this?
|
|
881 @ignore
|
|
882 To reassign a group of categories....
|
|
883
|
|
884 (The idea is to call "query-pr --full", run the output through sed, and
|
|
885 then throw it at pr-edit. This approach is untested, and may be unhealthy.)
|
|
886
|
|
887 @end ignore
|
|
888
|
|
889 @node gen-index
|
|
890 @subsection Regenerating the index
|
|
891 @cindex @code{gen-index}
|
|
892 @cindex @code{index} file
|
|
893
|
|
894 If your @file{index} file becomes corrupted, or if you need a copy of
|
|
895 the current index for some reason, use
|
|
896
|
|
897 @smallexample
|
|
898 gen-index [ -n | --numeric ]
|
|
899 [ -d @var{directory} | --directory=@var{directory} ]
|
|
900 [ -c @var{filename} | --catfile=@var{filename} ]
|
|
901 [ -o @var{filename} | --outfile=@var{filename} ]
|
|
902 [ -h | --help] [ -V | --version ]
|
|
903 @end smallexample
|
|
904
|
|
905 @noindent
|
|
906 With no options, @code{gen-index} generates an index that is ordered the
|
|
907 same as the order of the categories as they appear in the
|
|
908 @file{categories} file, and prints it to standard output. The options
|
|
909 are:
|
|
910
|
|
911 @table @code
|
|
912 @item -n
|
|
913 @itemx --numeric
|
|
914 Sorts index entries numerically.
|
|
915
|
|
916 @item -d @var{directory}
|
|
917 @itemx --directory=@var{directory}
|
|
918 Uses @var{directory} as the directory containing the database, by
|
|
919 default @w{@var{GNATS_ROOT}} (@pxref{Locations,,Where @sc{gnats} lives}).
|
|
920
|
|
921 @item -o @var{filename}
|
|
922 @itemx --outfile=@var{filename}
|
|
923 Places output in @var{filename} rather than sending it to standard
|
|
924 output.
|
|
925
|
|
926 @item -c @var{filename}
|
|
927 @itemx --catfile=@var{filename}
|
|
928 Point to @var{filename}, the file listing the valid categories.
|
|
929
|
|
930 @item -h
|
|
931 @itemx --help
|
|
932 Prints the usage for @code{gen-index}.
|
|
933
|
|
934 @item -V
|
|
935 @itemx --version
|
|
936 Prints the version number for @code{gen-index}.
|
|
937 @end table
|
|
938
|
|
939 @node mkdist
|
|
940 @subsection Configuring @code{send-pr} for the outside world
|
|
941 @cindex configuring @code{send-pr} for the outside world
|
|
942 @cindex invoking @code{mkdist}
|
|
943 @cindex using @code{mkdist}
|
|
944
|
|
945 Now that @sc{gnats} is up and running on your system, you probably want
|
|
946 to distribute @code{send-pr} to all your friends, relatives, enemies,
|
|
947 etc. so they can more easily submit bugs to your organization. To do
|
|
948 this, create a new directory @var{dist-directory} to hold the
|
|
949 distribution. Then run the program
|
|
950
|
|
951 @smallexample
|
|
952 mkdist --release=@var{release} @var{dist-directory}
|
|
953 @end smallexample
|
|
954
|
|
955 @noindent
|
|
956 This populates @var{dist-directory} with a full distribution of the
|
|
957 program @code{send-pr}, including a @file{Makefile} and all the
|
|
958 @code{send-pr} documentation. You can then simply package up this
|
|
959 directory and send it to your bug report submitters. For example,
|
|
960 when logged in as @code{gnats} you can do the following:
|
|
961
|
|
962 @smallexample
|
|
963 mkdir new-dist
|
|
964 mkdist --release=tools-1.2 new-dist
|
|
965 tar cvf send-pr.tar new-dist
|
|
966 @end smallexample
|
|
967
|
|
968 This creates a file called @file{send-pr.tar} which contains a full
|
|
969 distribution of @code{send-pr} customized for your site, with a default
|
|
970 release number of @samp{tools-1.2}. You can then place this onto a disk
|
|
971 or tape and send it to your submitters, or instruct your submitters to
|
|
972 download it using @code{ftp}.
|
|
973
|
|
974 If you only have one submitter, you can set the Submitter ID in the
|
|
975 send-pr script by specifying the --submitter option to mkdist. If you
|
|
976 do this, the submitter will not have to run install-sid.
|
|
977
|
|
978 @node Internal utils
|
|
979 @section Internal utilities
|
|
980 @cindex internal utilities
|
|
981
|
|
982 These tools are used internally by @sc{gnats}. You should never need to
|
|
983 run these by hand; however, a complete understanding may help you locate
|
|
984 problems with the @sc{gnats} tools or with your local implementation.
|
|
985
|
|
986 @menu
|
|
987 * queue-pr:: Handling incoming traffic
|
|
988 * file-pr:: Processing incoming traffic
|
|
989 * at-pr:: Timely reminders
|
|
990 * pr-edit:: The edit-pr driver
|
|
991 * pr-addr:: Address retrieval
|
|
992 @end menu
|
|
993
|
|
994 @node queue-pr
|
|
995 @subsection Handling incoming traffic
|
|
996 @cindex @code{queue-pr}
|
|
997 @cindex handling incoming traffic
|
|
998
|
|
999 The program @code{queue-pr} handles traffic coming into @sc{gnats}.
|
|
1000 @code{queue-pr} queues incoming Problem Reports in the directory
|
|
1001 @w{@file{@var{GNATS_ROOT}/gnats-queue}}, and then periodically (via
|
|
1002 @code{cron}) passes them on to @code{file-pr} to be filed in the
|
|
1003 @sc{gnats} database. @xref{Installation,,Installing @sc{gnats}}.
|
|
1004
|
|
1005 The usage for @code{queue-pr} is as follows:
|
|
1006
|
|
1007 @smallexample
|
|
1008 queue-pr [ -q | --queue ] [ -r | --run ]
|
|
1009 [ -f @var{filename} | --file=@var{filename} ]
|
|
1010 [ -d @var{directory} | --directory=@var{directory} ]
|
|
1011 @end smallexample
|
|
1012
|
|
1013 One of @samp{-q} or @samp{-r} (or their longer-named counterparts) must
|
|
1014 be present upon each call to @code{queue-pr}. These options provide
|
|
1015 different functions, as described below.
|
|
1016
|
|
1017 @table @code
|
|
1018 @item -q
|
|
1019 @itemx --queue
|
|
1020 Accepts standard input as an incoming mail message, placing this message
|
|
1021 in an incrementally numbered file in the @w{@file{gnats-queue}} directory
|
|
1022 under @w{@code{@var{GNATS_ROOT}}} (@pxref{Locations,,Where @sc{gnats}
|
|
1023 lives}).
|
|
1024
|
|
1025 @item -r
|
|
1026 @itemx --run
|
|
1027 Redirects files in the @file{gnats-queue} directory into the program
|
|
1028 @code{file-pr} one by one.
|
|
1029
|
|
1030 @item -f @var{filename}
|
|
1031 @itemx --file=@var{filename}
|
|
1032 Used with @samp{-q} (or @samp{--queue}), accepts the file denoted by
|
|
1033 @var{filename} as input rather than reading from standard input.
|
|
1034
|
|
1035 @item -d @var{directory}
|
|
1036 @itemx --directory=@var{directory}
|
|
1037 Resets the default @var{directory} value, which is by default
|
|
1038 @w{@file{@var{GNATS_ROOT}/gnats-queue}}. When @w{@samp{-d
|
|
1039 @var{directory}}} is used in conjunction with the @samp{-q} (or
|
|
1040 @samp{--queue}) option, @w{@code{queue-pr}} files incoming messages into
|
|
1041 @var{directory} rather than the @file{gnats-queue} directory. When
|
|
1042 @w{@samp{-d @var{directory}}} is used in conjunction with the @samp{-r}
|
|
1043 (or @samp{--run}) option, @code{queue-pr} redirects into
|
|
1044 @w{@code{file-pr}} files from @var{directory} rather than from the
|
|
1045 @w{@file{gnats-queue}} directory.
|
|
1046 @end table
|
|
1047
|
|
1048 @node file-pr
|
|
1049 @subsection Processing incoming traffic
|
|
1050 @cindex @code{file-pr}
|
|
1051 @cindex processing incoming traffic
|
|
1052
|
|
1053 @code{queue-pr} hands off queued Problem Reports to @code{file-pr} one
|
|
1054 at a time. @code{file-pr} checks each Problem Report for correct
|
|
1055 information in its fields (particularly a correct @samp{>Category:}),
|
|
1056 assigns it an identification number, and files it in the database under
|
|
1057 the appropriate category.
|
|
1058
|
|
1059 If the @samp{>Category:} field does not contain a valid category value
|
|
1060 (i.e., matching a line in the @code{categories} file;
|
|
1061 @pxref{categories,,The @code{categories} file}), the PR is given a
|
|
1062 @samp{>Category:} value of @samp{pending} and is placed in the
|
|
1063 @file{pending} directory. The @sc{gnats} administrator is notified of
|
|
1064 the unplaceable PR.
|
|
1065
|
|
1066 @code{file-pr} assigns the Problem Report an identification number,
|
|
1067 files it in the @sc{gnats} database (under @w{@samp{pending}}, if the
|
|
1068 @samp{>Category:} field contains an invalid category), and sends
|
|
1069 acknowledgements to appropriate parties. The person responsible for
|
|
1070 that category of problem (@pxref{categories,,The @code{categories}
|
|
1071 file}) and the person responsible for the submitter site where the PR
|
|
1072 originated (@pxref{submitters,,The @code{submitters} file}) receive a
|
|
1073 copy of the PR in its entirety. Optionally, the originator of the PR
|
|
1074 receives an acknowledgement that the PR arrived and was filed
|
|
1075 (@pxref{Local configuration,,Changing your local configuration}).
|
|
1076
|
|
1077 The usage for @code{file-pr} is as follows:
|
|
1078
|
|
1079 @smallexample
|
|
1080 file-pr [ -f @var{filename} | --file=@var{filename} ]
|
|
1081 [ -d @var{directory} | --directory=@var{directory}b ]
|
|
1082 [ -D | --debug ] [ -h | --help ] [ -V | --version ]
|
|
1083 @end smallexample
|
|
1084
|
|
1085 @code{file-pr} requires no options in order to operate, and takes input
|
|
1086 from standard input (normally, the output of @w{@samp{queue-pr -r}})
|
|
1087 unless otherwise specified. The options include:
|
|
1088
|
|
1089 @table @code
|
|
1090 @item -f @var{filename}
|
|
1091 @itemx --filename=@var{filename}
|
|
1092 Uses @var{filename} as input rather than standard input.
|
|
1093
|
|
1094 @item -d @var{directory}
|
|
1095 @itemx --directory=@var{directory}
|
|
1096 Performs refiling operations in @var{directory} rather than in
|
|
1097 @w{@code{@var{GNATS_ROOT}}}.
|
|
1098
|
|
1099 @item -D
|
|
1100 @itemx --debug
|
|
1101 Give debugging output while @code{file-pr} is running.
|
|
1102
|
|
1103 @item -h
|
|
1104 @itemx --help
|
|
1105 Prints the usage for @code{file-pr}.
|
|
1106
|
|
1107 @item -V
|
|
1108 @itemx --version
|
|
1109 Prints the version number for @code{file-pr}.
|
|
1110 @end table
|
|
1111
|
|
1112 @node at-pr
|
|
1113 @subsection Timely reminders
|
|
1114 @cindex @code{at-pr}
|
|
1115 @cindex timely reminders
|
|
1116 @cindex automatic notification
|
|
1117 @cindex notification of overdue PRs
|
|
1118
|
|
1119 @code{at-pr} creates a queued job using @code{at} which, after an
|
|
1120 allotted @dfn{response time} is past, checks the PR to see if its state
|
|
1121 has changed from @samp{open}.
|
|
1122
|
|
1123 The @file{submitters} file contains the response time for each
|
|
1124 @w{@code{>Submitter-Id:}} (@pxref{submitters,,The @code{submitters} file}).
|
|
1125 The time is determined in @dfn{business hours}, which are defined by
|
|
1126 default as 8:00am to 5:00pm Monday through Friday, local time. These
|
|
1127 hours are defined in the @file{config} file (@pxref{config,,The
|
|
1128 @code{config} file}).
|
|
1129
|
|
1130 If the PR is still open after the requisite time period has passed,
|
|
1131 @code{at-pr} sends a reminder to the @sc{gnats} administrator, to the
|
|
1132 maintainer responsible for that submitter, and to the maintainer
|
|
1133 responsible for the PR with the following message:
|
|
1134
|
|
1135 @cindex reminder message
|
|
1136 @cindex @code{at-pr}
|
|
1137 @smallexample
|
|
1138 To: @var{submitter-contact} @var{responsible} @var{gnats-admin}
|
|
1139 Subject: PR @var{gnats-id} not analyzed in @var{#hours} hours
|
|
1140
|
|
1141 PR @var{gnats-id} was not analyzed within the acknowledgment period
|
|
1142 of @var{#hours} business hours. The pertinent information is:
|
|
1143
|
|
1144 Submitter-Id: @var{submitter}
|
|
1145 Originator: @var{full name of the submitter}
|
|
1146 Synopsis: @var{synopsis}
|
|
1147 Person responsible for the PR: @var{responsible}
|
|
1148
|
|
1149 --
|
|
1150 The GNU Problem Report Management System (GNATS)
|
|
1151 @end smallexample
|
|
1152
|
|
1153 @node pr-edit
|
|
1154 @subsection The @code{edit-pr} driver
|
|
1155 @cindex @code{pr-edit}
|
|
1156 @cindex @code{edit-pr} driver
|
|
1157 @cindex driver for @code{edit-pr}
|
|
1158
|
|
1159 @code{pr-edit} does the background work for @code{edit-pr}, including
|
|
1160 error-checking and refiling newly edited Problem Reports and handling
|
|
1161 file locks. It can be called interactively, though it has no useable
|
|
1162 editing interface.
|
|
1163
|
|
1164 The usage for @code{pr-edit} is:
|
|
1165
|
|
1166 @smallexample
|
|
1167 pr-edit [ -l @var{maintainer} --lock=@var{maintainer} ]
|
|
1168 [ -u | --unlock ] [ -c | --check ] [ -F ]
|
|
1169 [ -L | --lockdb ] [ -U | --unlockdb ]
|
|
1170 [ -f @var{filename} | --filename=@var{filename} ]
|
|
1171 [ -d @var{directory} | --directory=@var{directory} ]
|
|
1172 [ -h | --help ] [ -V | --version ]
|
|
1173 [ @var{gnats-id} ]
|
|
1174 @end smallexample
|
|
1175
|
|
1176 @cindex PR locks
|
|
1177 @cindex locks
|
|
1178 A @dfn{lock} is placed on a Problem Report while the PR is being edited.
|
|
1179 The lock is simply a file in the same directory as the PR, with the name
|
|
1180 @w{@file{@var{gnats-id}.lock}}, which contains the name of the maintainer
|
|
1181 who created the lock. @var{maintainer} then ``owns'' the lock, and must
|
|
1182 remove it before the PR can be locked again, even by the same
|
|
1183 @var{maintainer}@footnote{This approach may seem heavy-handed, but it
|
|
1184 ensures that changes are not overwritten.}. If a PR is already locked
|
|
1185 when you attempt to edit it, @code{pr-edit} prints an error message
|
|
1186 giving the name of the maintainer who is currently editing the PR.
|
|
1187
|
|
1188 If you do not specify @w{@var{gnats-id}}, @code{pr-edit} reads from
|
|
1189 standard input. You must specify @w{@var{gnats-id}} for the functions
|
|
1190 which affect PR locks, @samp{--lock=@var{maintainer}} and
|
|
1191 @samp{--unlock}.
|
|
1192
|
|
1193 @table @code
|
|
1194 @item -l @var{maintainer}
|
|
1195 @itemx --lock=@var{maintainer}
|
|
1196 Locks Problem Report @w{@var{gnats-id}}, failing (and returning an error
|
|
1197 message) if @w{@var{gnats-id}} is already locked, or if @w{@var{gnats-id}}
|
|
1198 does not exist. @code{pr-edit} requires that you specify
|
|
1199 @w{@var{gnats-id}} when using this option.
|
|
1200
|
|
1201 @item -u
|
|
1202 @itemx --unlock
|
|
1203 Unlocks Problem Report @w{@var{gnats-id}}. @code{pr-edit} requires that
|
|
1204 you specify @w{@var{gnats-id}} when using this option. You must own a
|
|
1205 file lock to remove it.
|
|
1206
|
|
1207 @item -L
|
|
1208 @itemx --lockdb
|
|
1209 Locks the GNATS database as a whole. This will prevent any modification
|
|
1210 to any part of the system while it's locked.
|
|
1211
|
|
1212 @item -U
|
|
1213 @itemx --unlockdb
|
|
1214 Unlocks the GNATS database as a whole, allowing modification of its
|
|
1215 files.
|
|
1216
|
|
1217 @item -c
|
|
1218 @itemx --check
|
|
1219 Checks the Problem Report in @w{@var{gnats-id}} (or standard input, if
|
|
1220 @w{@var{gnats-id}} is not present) for correct information in its
|
|
1221 @w{@sc{Enumerated}} fields. @code{pr-edit} complains about any bogus
|
|
1222 information in the Problem Report.
|
|
1223
|
|
1224 @item -F
|
|
1225 Forces the PR to be submitted to the database, even if there is no
|
|
1226 current index entry for it (i.e., even if the PR did not exist in the
|
|
1227 database previously).
|
|
1228
|
|
1229 @emph{Warning: using this option may corrupt your index.} If you use
|
|
1230 it, be sure you know what you are doing.
|
|
1231
|
|
1232 @item -f @var{filename}
|
|
1233 @itemx --filename=@var{filename}
|
|
1234 Reads @var{filename} rather than standard input.
|
|
1235
|
|
1236 @item -d @var{directory}
|
|
1237 @itemx --directory=@var{directory}
|
|
1238 Resets the operating directory (@w{@code{@var{GNATS_ROOT}}}).
|
|
1239
|
|
1240 @item -h
|
|
1241 @itemx --help
|
|
1242 Prints the usage for @code{pr-edit}.
|
|
1243
|
|
1244 @item -V
|
|
1245 @itemx --version
|
|
1246 Prints the version number for @code{pr-edit}.
|
|
1247 @end table
|
|
1248 @node pr-addr
|
|
1249 @subsection Address retrieval
|
|
1250 @cindex address retrieval
|
|
1251 @cindex @code{pr-addr}
|
|
1252
|
|
1253 Returns an electronic mail address when given a valid @dfn{nametag}, as
|
|
1254 it appears in the @file{responsible} file (@pxref{responsible,,The
|
|
1255 @code{responsible} file}). If @var{nametag} is not valid, @code{pr-addr}
|
|
1256 will tell the user that it could not find the requested address.
|
|
1257
|
|
1258 Usage is simply:
|
|
1259
|
|
1260 @smallexample
|
|
1261 pr-addr @var{name}
|
|
1262 @end smallexample
|