source: project/release/3/logging/tags/1.1.0/logging-eggdoc.scm @ 9139

Last change on this file since 9139 was 9139, checked in by Kon Lovett, 12 years ago

Fix for e-mail uri query processing. Cosmetic chgs.

File size: 19.7 KB
Line 
1;;;; logging-eggdoc.scm
2
3(use eggdoc)
4
5(define license #<<EOF
6Copyright (c) 2006, Kon Lovett.  All rights reserved.
7
8Permission is hereby granted, free of charge, to any person obtaining a
9copy of this software and associated documentation files (the Software),
10to deal in the Software without restriction, including without limitation
11the rights to use, copy, modify, merge, publish, distribute, sublicense,
12and/or sell copies of the Software, and to permit persons to whom the
13Software is furnished to do so, subject to the following conditions:
14
15The above copyright notice and this permission notice shall be included
16in all copies or substantial portions of the Software.
17
18THE SOFTWARE IS PROVIDED ASIS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24OTHER DEALINGS IN THE SOFTWARE.
25EOF
26)
27
28(define examples '((pre #<<EOF
29EOF
30)))
31
32(define doc `(
33        (eggdoc:begin
34                (name "logging")
35                (description (p "Logging Facility"))
36                (author (url "mailto:klovett@pacbell.net" "Kon Lovett"))
37                (usage)
38                (download "logging.egg")
39                (requires
40                        "Chicken 2.432+"
41                        (url "smtp.html" "smtp")
42                        (url "uri.html" "uri")
43                        (url "mathh.html" "mathh")
44                        (url "mailbox.html" "mailbox")
45                        (url "s11n.html" "s11n")
46                        (url "z3.html" "z3")
47                        (url "synch.html" "synch")
48                        (url "lookup-table.html" "lookup-table")
49                        (url "miscmacros.html" "miscmacros")
50                        (url "misc-extn.html" "misc-extn > 2.2"))
51
52                (documentation
53
54                        (p "A logging API for Chicken.")
55
56                        (p "This is a work in progress.")
57
58                        (subsection "Objects"
59
60                                (subsubsection "Logbook"
61
62                                        (p "The definition of a stream of log text messages.")
63
64                                        (symbol-table "Slot Concepts"
65
66                                                (describe ID
67                                                        "Symbol key for this log.")
68
69                                                (describe PATHNAME
70                                                        "A local filesystem pathname, #f, or URI (only 'mailto' & 'file' recognized).")
71
72                                                (describe SOURCES
73                                                        "Who can write to this log.")
74
75                                                (describe ENTRY
76                                                        "Default entry for log.")
77
78                                                (describe LEVEL
79                                                        "Lowest priority level for this log.")
80
81                                                (describe ECHOS
82                                                        "Logs to copy all writes.")
83
84                                                (describe ALTERNATES
85                                                        "When a log operation fails for this log try these logs.")
86
87                                                (describe KEEP-OPEN?
88                                                        "Do not implicitly close this log.")
89
90                                                (describe IMMEDIATE-OPEN?
91                                                        "Open this log upon construction or load.")
92
93                                                (describe OPERATIONS
94                                                        "Access procedures for this log.")
95
96                                                (describe ASYNCHRONOUS?
97                                                        "Perform log operations for this log in a separate thread?")
98
99                                                (describe ASYNCHRONOUS-ERROR
100                                                        "Procedure to handle log operation errors for this log in asynchronous operation.") )
101                                )
102
103                                (subsubsection "Entry"
104
105                                        (p "A log message specification.")
106
107                                        (symbol-table "Slot Concepts"
108
109                                                (describe ID
110                                                        "Symbol key for this entry.")
111
112                                                (describe INDENT
113                                                        "Indentation level for this entry.")
114
115                                                (describe LEVEL
116                                                        "The priority level for this entry.")
117
118                                                (describe FIELDS
119                                                        "The message decoration specifier for this entry.") )
120                                )
121
122                                (subsubsection "Source"
123
124                                        (p "The identity of the agent generating a log message.")
125
126                                        (symbol-table "Slot Concepts"
127
128                                                (describe ID
129                                                        "Symbol key for this source.")
130
131                                                (describe NAME
132                                                        "Printable identity of this source.") )
133                                )
134
135                                (subsubsection "Level"
136
137                                        (p "The importance of the log message.")
138
139                                        (symbol-table "Slot Concepts"
140
141                                                (describe ID
142                                                        "Symbol key for this level.")
143
144                                                (describe PRIORITY
145                                                        "Priority for this level, in (most-negative-fixnum most-positive-fixnum).")
146
147                                                (describe NAME
148                                                        "Printable identity of this level.") )
149                                )
150
151                                (subsubsection "Field"
152
153                                        (p "Log message decorator.")
154
155                                        (symbol-table "Slot Concepts"
156
157                                                (describe ID
158                                                        "Symbol key for this level.")
159
160                                                (describe VALUE
161                                                        "The decoration specification.") )
162
163                                        (p "Any Scheme object can be a field value, "
164                                        "and the string representation is used. However, some "
165                                        "objects are interpreted.")
166
167                                        (procedure "THUNK"
168                                                (p "Invokes the procedure and uses the result as the field "
169                                                "value.") )
170
171                                        (record "FIELD"
172                                                (p "The value of the field object.") )
173
174                                        (macro "SYMBOL"
175                                                (p "If a field identifier in the catalog then the catalog "
176                                                "item is the value. Otherwise the string symbol representation.") )
177
178                                        (macro "(quote SYMBOL)"
179                                                (p "The symbol string representation. For use with symbols which "
180                                                "identify cataloged fields.") )
181
182                                        (macro "(? TEST-FIELD [FIELD ...])"
183                                                (p "Conditional. Should " (tt "TEST-FIELD") " yield the null "
184                                                "string then the entire conditional is considered null. "
185                                                "Otherwise yields " (tt "TEST-FIELD FIELD ...") ".") )
186
187                                )
188
189                                (subsubsection "Operations"
190
191                                        (p "The procedures to perform port open, close and write.")
192
193                                        (symbol-table "Slot Concepts"
194
195                                                (describe OPEN
196                                                        "(-> pathname errors port); doesn't actually need to be a port, just something understood by the CLOSE and WRITE procedures.")
197
198                                                (describe CLOSE
199                                                        "(-> port errors boolean)")
200
201                                                (describe WRITE
202                                                        "(-> port string errors boolean)") )
203                                )
204                        )
205
206                        (subsection "Built-in Objects"
207
208                                (p "")
209
210                                (symbol-table "Logbook Identifiers"
211
212                                        (describe console
213                                                "A log for the console, with entry 'message'.")
214
215                                        (describe system
216                                                "A log for syslog, with entry 'system-message'.")
217
218                                        (describe error
219                                                "A log for stderr with entry 'message'.")
220
221                                        (describe message
222                                                "A log with the pathname \"./message.log\" and entry 'message'.") )
223
224                                (p "")
225
226                                (symbol-table "Entry Identifiers"
227
228                                        (describe message
229                                                "An entry with fields \"(timestamp \" \" (? source \" \") (? level \" \"))\" .")
230
231                                        (describe system-message
232                                                "An entry with fields \"((? source \" \") (? level \" \"))\" .") )
233
234                                (p "")
235
236                                (symbol-table "Source Identifiers"
237
238                                        (describe all
239                                                "A source with a null name.") )
240
241                                (p "Ordered by priority:")
242
243                                (symbol-table "Level Identifiers"
244
245                                        (describe off
246                                                "A level with a null name and the highest possible priority.")
247
248                                        (describe fatal
249                                                "A level with a FATAL name.")
250
251                                        (describe emergency
252                                                "A level with a EMERGENCY name.")
253
254                                        (describe alert
255                                                "A level with a ALERT name.")
256
257                                        (describe critical
258                                                "A level with a CRITICAL name.")
259
260                                        (describe error
261                                                "A level with a ERROR name.")
262
263                                        (describe warning
264                                                "A level with a WARNING name.")
265
266                                        (describe notice
267                                                "A level with a NOTICE name.")
268
269                                        (describe information
270                                                "A level with a INFORMATION name.")
271
272                                        (describe debug
273                                                "A level with a DEBUG name.")
274
275                                        (describe trace
276                                                "A level with a TRACE name.")
277
278                                        (describe all
279                                                "A level with a null name and the lowest possible priority.") )
280
281                                (p "")
282
283                                (symbol-table "Field Identifiers"
284
285                                        (describe pid
286                                                "A field with the process id value.")
287
288                                        (describe hostname
289                                                "A field with the hostname value.")
290
291                                        (describe timestamp
292                                                "A field with a timestamp value.")
293
294                                        (describe source
295                                                "A field with the source value.")
296
297                                        (describe level
298                                                "A field with the level value.") )
299                        )
300
301                        (subsection "Log State Operations"
302
303                                (procedure "(open-logbook LOG)"
304                                        (p "Open the " (tt "LOG") ".") )
305
306                                (procedure "(close-logbook LOG)"
307                                        (p "Close the " (tt "LOG") ".") )
308
309                                (procedure "(logbook-level LOG)"
310                                        (p "Returns the " (tt "LOG") " level.") )
311
312                                (procedure "(set-logbook-level! LOG LEVEL)"
313                                        (p "Changes the " (tt "LOG") " level to " (tt "LEVEL") ".") )
314
315                                (procedure "(logbook-level-mask LOG)"
316                                        (p "Returns the " (tt "LOG") " level mask.") )
317
318                                (procedure "(set-logbook-level-mask! LOG [LEVEL ...])"
319                                        (p "Changes the " (tt "LOG") " level mask to " (tt "LEVEL ...") ".") )
320                        )
321
322                        (subsection "Log Write Operations"
323
324                                (p "Explicit arguments always take priority, then object slots, "
325                                "and finally defaults. For example, an explict INDENT has "
326                                "priority over an ENTRY indent.")
327
328                                (p "Log write attempts are verified by the SOURCE.")
329
330                                (p "The OPEN? argument specifies if a log should be temporarily opened for "
331                                "just the write.")
332
333                                (p "Log writes are performed when the LEVEL is at or above the LOG level. "
334                                "The LOG mask can be used to further restrict the valid levels.")
335
336                                (p "The LOG, ENTRY, LEVEL, and SOURCE arguments below can be symbols "
337                                "(catalog identifiers), or objects of the stated type.")
338
339                                (procedure "(log-string [LOG] STRING [#:source] [#:level] [#:echos] [#:alternates] [#:open? #t] [#:asynchronous? #f] [#:asynchronous-error])"
340                                        (p "Logs the undecorated " (tt "STRING") ".") )
341
342                                (procedure "(log-message [LOG] STRING [#:entry] [#:indent 0] [#:source] [#:level] [#:echos] [#:alternates] [#:open? #t] [#:asynchronous? #f] [#:asynchronous-error] [FIELD ...])"
343                                        (p "Logs the " (tt "STRING") " decorated by " (tt "FIELD ...") ".") )
344
345                                (procedure "(log-format [LOG] FORMAT-STRING [#:entry] [#:indent 0] [#:source] [#:level] [#:fields] [#:echos] [#:alternates] [#:open? #t] [#:asynchronous? #f] [#:asynchronous-error] [FORMAT-ARGUMENT ...])"
346                                        (p "Logs the " (tt "FORMAT-ARGUMENT ...") " formatted by the "
347                                        (code "(current-logbook-format-procedure)") " and " (tt "FORMAT-STRING") ", "
348                                        "decorated by " (tt "FIELDS") ".") )
349
350                                (procedure "(%log-string LOG STRING [ECHOS [ALTERNATES [OPEN? [ASYNCHRONOUS? [ASYNCHRONOUS-ERROR]]]]])"
351                                        (p " Performs no argument checking. Logs the " (tt "STRING") ".") )
352                        )
353
354                        (subsection "Log Message Construction"
355
356                                (procedure "(make-log-string [LOG] [#:entry] [#:indent] [#:source] [#:level] [#:fields] [STRING ...])"
357                                        (p "Returns the " (tt "STRING ...") " decorated by " (tt "FIELDS") ".") )
358
359                                (procedure "(%make-log-string LOG INDENT SOURCE LEVEL FIELD-LIST [STRING ...])"
360                                        (p " Performs no argument checking. Returns the decorated "
361                                        (tt "STRING ...") ".") )
362
363                                (procedure "(make-log-mail-string LOG STRING)"
364                                        (p "Returns three values - a list of to addresses, a from address, and "
365                                        "a string for the rest of the mail message.")
366
367                                        (p "The values are only meaningful for a mailto uri log.") )
368                        )
369
370                        (subsection "Parameters"
371
372                                (parameter "(current-logbook-format-procedure [FORMAT-PROCEDURE])"
373                                        (p "Sets or gets the " (code "format") " procedure to use for "
374                                        "formatting log messages.") )
375
376                                (parameter "(current-logbook-indent-amount [FIXNUM])"
377                                        (p "Gets or sets the number of spaces for an indent.") )
378
379                                (parameter "(default-asynchronous-error [(-> condition undefined)])"
380                                        (p "Gets or sets the procedure to call with an exception "
381                                        "condition raised during asynchronous logging.") )
382
383                                (parameter "(default-logbook [LOG-OBJECT-OR-ID])"
384                                        (p "Gets or sets the default log.") )
385
386                                (parameter "(default-logbook-directory [STRING])"
387                                        (p "Gets or sets the default directory for a log file.") )
388
389                                (parameter "(default-logbook-extension [STRING])"
390                                        (p "Gets or sets the default extension for a log file.") )
391
392                                (parameter "(default-logbook-entries [ATOMIC-OR-LIST-OF ENTRY-OBJECT-OR-ID])"
393                                        (p "Gets or sets the default entries for a log.") )
394
395                                (parameter "(default-logbook-sources [ATOMIC-OR-LIST-OF SOURCE-OBJECT-OR-ID])"
396                                        (p "Gets or sets the default sources for a log.") )
397
398                                (parameter "(default-logbook-entry [ENTRY-OBJECT-OR-ID])"
399                                        (p "Gets or sets the default entry for a log.") )
400
401                                (parameter "(default-logbook-source [SOURCE-OBJECT-OR-ID])"
402                                        (p "Gets or sets the default source for a log.") )
403
404                                (parameter "(default-logbook-level [LEVEL-OBJECT-OR-ID])"
405                                        (p "Gets or sets the default level for a log.") )
406
407                                (parameter "(default-logbook-fields [ATOMIC-OR-LIST-OF FIELD-OBJECT-OR-ID])"
408                                        (p "Gets or sets the default fields for a log.") )
409
410                                (parameter "(default-logbook-echos [ATOMIC-OR-LIST-OF LOG-OBJECT-OR-ID])"
411                                        (p "Gets or sets the default echo logs for a log.") )
412
413                                (parameter "(default-logbook-alternates [ATOMIC-OR-LIST-OF LOG-OBJECT-OR-ID])"
414                                        (p "Gets or sets the default alternate logs for a log.") )
415
416                                (parameter "(default-entry-level [ATOMIC-OR-LIST-OF LEVEL-OBJECT-OR-ID])"
417                                        (p "Gets or sets the default level for an entry.") )
418
419                                (parameter "(default-entry-fields [ATOMIC-OR-LIST-OF FIELD-OBJECT-OR-ID])"
420                                        (p "Gets or sets the default fields for an entry.") )
421
422                                (parameter "(default-logbook-catalog [PATHNAME])"
423                                        (p "Gets or sets the log catalog file pathname.") )
424
425                                (parameter "(default-mail-authority [(#f SMTP-HOST SMTP-PORT])"
426                                        (p "Gets or sets the mail uri scheme default smtp authority.") )
427
428                                (procedure "(logbook-uri-scheme-handler SCHEME [(-> LOG STRING ERRORS BOOLEAN)])"
429                                        (p "Gets or sets the uri " (tt "SCHEME") " handler.") )
430                        )
431
432                        (subsection "Object Construction"
433
434                                (p "The LOG, ENTRY, LEVEL, and SOURCE arguments below maybe symbols "
435                                "(catalog identifiers), or actual objects of the stated type.")
436
437                                (p "Any missing components of the PATHNAME argument below will be "
438                                "supplied from the defaults and the ID.")
439
440                                (procedure "(make-logbook-pathanme FILENAME [#:dir] [#:ext])"
441                                        (p "Returns a pathname, with parameter defaults for the "
442                                        (tt "DIR") " and " (tt "EXT") " arguments.") )
443
444                                (procedure "(make-logbook-source ID [NAME])"
445                                        (p "Returns a source object.") )
446
447                                (procedure "(make-logbook-level ID [PRIORITY] [NAME])"
448                                        (p "Returns a level object.") )
449
450                                (procedure "(make-logbook-field ID [VALUE])"
451                                        (p "Returns a field object.") )
452
453                                (procedure "(make-logbook-entry ID [#:indent 0] [#:level] [FIELD ...])"
454                                        (p "Returns an entry object.") )
455
456                                (procedure "(clone-logbook-entry ENTRY ID [#:indent 0] [#:level] [FIELD ...])"
457                                        (p "Returns an entry object, copied from " (tt "ENTRY") ", with slot overrides.") )
458
459                                (procedure "(make-logbook ID [#:pathname] [#:sources] [#:entry] [#:level] [#:echos] [#:alternates] [#:keep-open? #f] [#:immediate-open? #f] [#:operations] [#:asynchronous? #f] [#:asynchronous-error])"
460                                        (p "Returns a log object.") )
461
462                                (procedure "(clone-logbook LOG ID [#:pathname] [#:sources] [#:entry] [#:level] [#:echos] [#:alternates] [#:keep-open? #f] [#:immediate-open? #f] [#:operations] [#:asynchronous? #f] [#:asynchronous-error])"
463                                        (p "Returns an log object, copied from " (tt "LOG") ", with slot overrides.") )
464
465                                (procedure "(new-logbook-source ID [NAME])"
466                                        (p "Returns a source object added to the catalog.") )
467
468                                (procedure "(new-logbook-level ID [NAME])"
469                                        (p "Returns a level object added to the catalog.") )
470
471                                (procedure "(new-logbook-field ID [VALUE])"
472                                        (p "Returns a field object added to the catalog.") )
473
474                                (procedure "(new-logbook-entry ID [#:indent 0] [#:level] [FIELD ...])"
475                                        (p "Returns an entry object added to the catalog.") )
476
477                                (procedure "(clone-new-logbook-entry ENTRY ID [#:indent 0] [#:level] [FIELD ...])"
478                                        (p "Returns an entry object, copied from " (tt "ENTRY") ", with slot overrides, added to the catalog.") )
479
480                                (procedure "(new-logbook ID [#:pathname] [#:sources] [#:entry] [#:level] [#:echos] [#:alternates] [#:keep-open? #f] [#:immediate-open? #f] [#:operations] [#:asynchronous? #f] [#:asynchronous-error])"
481                                        (p "Returns a log object added to the catalog.") )
482
483                                (procedure "(clone-new-logbook LOG ID [#:pathname] [#:sources] [#:entry] [#:level] [#:echos] [#:alternates] [#:keep-open? #f] [#:immediate-open? #f] [#:operations] [#:asynchronous? #f] [#:asynchronous-error])"
484                                        (p "Returns an log object, copied from " (tt "LOG") ", with slot overrides, added to the catalog.") )
485
486                                (procedure "(make-logbook-operations OPEN CLOSE WRITE)"
487                                        (p "Returns an operations object.") )
488                        )
489
490                        (subsection "Catalog Operations"
491
492                                (usage "(require-extension logging-objects)")
493
494                                (subsubsection "Catalog Reference"
495
496                                        (p "The arguments below maybe symbols (catalog identifiers), "
497                                        "or actual objects of the stated type.")
498
499                                        (procedure "(logbook-source SOURCE)"
500                                                (p "Returns the corresponding object from the catalog or "
501                                                (code "#f") ".") )
502
503                                        (procedure "(logbook-field FIELD)"
504                                                (p "Returns the corresponding object from the catalog or "
505                                                (code "#f") ".") )
506
507                                        (procedure "(logbook-level LEVEL)"
508                                                (p "Returns the corresponding object from the catalog or "
509                                                (code "#f") ".") )
510
511                                        (procedure "(logbook-entry ENTRY)"
512                                                (p "Returns the corresponding object from the catalog or "
513                                                (code "#f") ".") )
514
515                                        (procedure "(logbook LOG)"
516                                                (p "Returns the corresponding object from the catalog or "
517                                                (code "#f") ".") )
518                                )
519
520                                (subsubsection "Catalog Insertion"
521
522                                        (p "The arguments below must be actual objects of the stated type.")
523
524                                        (procedure "(logbook-source-add! SOURCE)"
525                                                (p "Adds the object to the catalog. Error when identifier in use.") )
526
527                                        (procedure "(logbook-field-add! FIELD)"
528                                                (p "Adds the object to the catalog. Error when identifier in use.") )
529
530                                        (procedure "(logbook-level-add! LEVEL)"
531                                                (p "Adds the object to the catalog. Error when identifier in use.") )
532
533                                        (procedure "(logbook-entry-add! ENTRY)"
534                                                (p "Adds the object to the catalog. Error when identifier in use.") )
535
536                                        (procedure "(logbook-add! LOG)"
537                                                (p "Adds the object to the catalog. Error when identifier in use.") )
538                                )
539
540                                (subsubsection "Catalog Deletion"
541
542                                        (p "The arguments below maybe symbols (catalog identifiers), "
543                                        "or actual objects of the stated type.")
544
545                                        (procedure "(logbook-source-delete! SOURCE)"
546                                                (p "Removes the object from the catalog.") )
547
548                                        (procedure "(logbook-field-delete! FIELD)"
549                                                (p "Removes the object from the catalog.") )
550
551                                        (procedure "(logbook-level-delete! LEVEL)"
552                                                (p "Removes the object from the catalog.") )
553
554                                        (procedure "(logbook-entry-delete! ENTRY)"
555                                                (p "Removes the object from the catalog.") )
556
557                                        (procedure "(logbook-delete! LOG)"
558                                                (p "Removes the object from the catalog.") )
559                                        )
560                        )
561
562                        (subsection "File Operations"
563
564                                (usage "(require-extension logging-files)")
565
566                                (procedure "(logbook-file-archive LOG)"
567                                        (p "Compress the specified " (tt "LOG") " file.")
568
569                                        (p "Log archive files have the extension \"[0-9]+.gz\".") )
570
571                                (procedure "(logbook-file-delete LOG)"
572                                        (p "Delete the specified " (tt "LOG") " file.") )
573
574                                (procedure "(logbook-file-purge LOG)"
575                                        (p "Delete all file associate with the specified "
576                                        (tt "LOG") ".") )
577
578                                (procedure "(logbook-file-rotate LOG)"
579                                        (p "Compress the specified " (tt "LOG") " file and "
580                                        "delete the original.") )
581
582                                (procedure "(logbook-catalog-load [PATHNAME (default-logbook-catalog)])"
583                                        (p "Replace the existing catalog with the contents of the "
584                                        "saved catalog file.") )
585
586                                (procedure "(logbook-catalog-merge [PATHNAME (default-logbook-catalog)])"
587                                        (p "Merge the contents of the saved catalog file with the "
588                                        "existing catalog. Error when attempting to replace an "
589                                        "existing item.") )
590
591                                (procedure "(logbook-catalog-store [PATHNAME (default-logbook-catalog)])"
592                                        (p "Store the existing catalog as the contents of the "
593                                        "catalog file.") )
594                        )
595
596                        #;
597                        (examples ,examples)
598                )
599
600                (section "Issues"
601
602                        (p "Poor documentation.")
603
604                        (p "Many options with complicated argument processing.")
605
606                        (p "No Windows support for syslog.")
607
608                        (p "No override of file permissions.")
609
610                        (p "No abstractions for distributed logging.")
611
612                        (p "Incomplete testing.")
613                )
614
615                (history
616                        (version "1.1.0" "Fix for \"make-log-mail-string\" uri query processing.")
617                        (version "1.0.0" "Use of \"fixup-extended-lambda-list-rest\".")
618                        (version "0.301" "Dependency requirements update")
619                        (version "0.3" "Log level mask")
620                        (version "0.2" "Some URI support")
621                        (version "0.1" "Initial release"))
622
623                (section "License" (pre ,license))
624        )
625))
626
627(eggdoc->html doc)
Note: See TracBrowser for help on using the repository browser.