1cvsgraph.conf(5) CVS/RCS Utilities cvsgraph.conf(5)
2
3
4
6 cvsgraph.conf - CVS/RCS repository grapher configuration
7
9 The configuration file is a context free grammar where empty lines and
10 whitespace are ignored. Comments start with '#' and everything until
11 end of line is ignored.
12 A configuration parameter is written as:
13 <keyword> = <argument> ;
14
15 Keywords are defined in PARAMETERS. The argument can be either numeri‐
16 cal or string typed.
17
18
19 Numbers may be entered as octal, decimal or hex as in 0117, 79 and 0x4f
20 respectively. Floating point numbers contain a single '.', but must
21 start with a digit. Integer numbers are automagically converted to
22 floats if required.
23
24
25 Strings are C-style strings, enclosed in double quotes in which charac‐
26 ters may be escaped with '\' and written in octal and hex escapes. Note
27 that '\' must be escaped if it is to be entered as a character. Escapes
28 recognized are '\[abfnrtv]', '\[xX][0-9a-fA-F]{2}' and
29 '\[012][0-7]{0,2}'.
30 Some strings are expanded with printf like conversions which start with
31 '%'. Not all are applicable at all times, in which case they will
32 expand to nothing.
33 Note that expansions of paths are available with and without trailing
34 '/'. The distinction is required for path construction to ensure that
35 empty expansions will not redirect the path to root and no double '/'
36 in a path is generated.
37
38 %c CVS root including a trailing '/' if non-empty
39
40 %C CVS root without trailing '/', regardless of how it was entered
41 on the command line
42
43 %m CVS module including trailing '/' if non-empty
44
45 %M CVS module without trailing '/', regardless of how it was
46 entered on the command line
47
48 %f filename without path (basename <name> functionality)
49
50 %F filename without path and with ",v" stripped (basename <name> ,v
51 functionality)
52
53 %p path part of filename. This includes a trailing '/' if the path
54 is non-empty
55
56 %r number of revisions
57
58 %b number of branches
59
60 %% literal '%'
61
62 %R the revision number (e.g. '1.2.4.4')
63
64 %P previous revision number
65
66 %B the branch number (e.g. '1.2.4')
67
68 %d date of revision
69
70 %a author of revision
71
72 %s state of revision
73
74 %l The log entry of the revision. You need to enable parse_logs for
75 this to work. You may append an optional truncate length by
76 writing '[num]' (with num the maximum length) directly after %l.
77 If no truncation is specified, then all will be expanded. Speci‐
78 fying a negative truncation length means that newlines should be
79 replaced by spaces. If truncation occurs, then "..." will be
80 appended. The expansion is scanned for possible HTML entities
81 and are replaced by &#...; equivalents.
82 For example: "%l[25]" will expand up to 25 characters of the
83 log.
84 Note: This expansion is obsolete. Please use "%(%L%)"; see com‐
85 ment below.
86
87 %L Same as %l, but no HTML entity translations are performed.
88
89 %t current tag of branch or revision
90
91 %0..%9 command-line argument -0 .. -9
92
93 %(...%)
94 HTMLize the string withing the parenthesis. This is useful to
95 prevent a possible cross site scripting bug when expanding tags
96 into the map generation. For an exploit, you need to have an
97 attack on your CVS server, or you need to be a complete idiot to
98 enter a tag with '<', '>' or '"' characters.
99 Example: a string "%(%t%)", with tag ><script xxx="...">< will
100 expand to ><script xxx="...">< and not into
101 the execution of a script.
102 Note: This method is preferred to the %l expansion, because it
103 is more generic solution (i.e. use "%(%L%)" for log expansions).
104
105
106 Fonts are numbered 0..4 (as defined in libgd) where 0 = tiny, 1 =
107 small, 2 = medium (bold), 3 = large and 4 = giant.
108
109
110 Colors are strings, similar to HTML type colors in the form "#rrggbb"
111 with parts written in hex, where rr = red (00-ff), gg = green (00-ff)
112 and bb = blue (00-ff).
113
114
115 Colors and some strings can also be defined as conditional expressions
116 so that revision/branch conditions can be repesented visually:
117 color/string = [ "key" op "content" truecase falsecase ];
118 Operator 'op' can be one of:
119
120 =~ contained in regex
121
122 =* contained in regex, case insensitive
123
124 !~ not contained in regex
125
126 !* not contained in regex, case insensitive
127
128 < less than string, timestamp or rev/branch number
129
130 <= less or equal than string, timestamp or rev/branch number
131
132 > greater than string, timestamp or rev/branch number
133
134 >= greater or equal than string, timestamp or rev/branch number
135
136 == equal than string, timestamp or rev/branch number
137
138 != not equal than string, timestamp or rev/branch number
139
140 The 'content' is one of:
141 * POSIX 1003.2 extended regular expression
142 * timestamp in UTC format: YYYY[.MM[.DD[.hh[.mm[.ss]]]]]
143 * revision or branch number
144
145 The 'key' can be one of:
146
147 state State of the revision
148
149 author The auther of a revision
150
151 tag both revision- and branch-tags
152
153 date date of the revision
154
155 rev numeric revision- or branch-number
156
157 Both 'truecase' and 'falsecase' can be either a (color-)string, as
158 described above, or a new conditional expression. Examples:
159 rev_bgcolor = [ "state" =~ "dead" "#e08080" "#f0f0f0" ];
160 branch_color= [ "rev" < "2.1.2" "#000000" [ "tag" =~ "XyZ.*"
161 "#123456" "#654321" ] ];
162 rev_idtext = [ "state" == "dead" "Dead %R" "%R" ]
163 Note that not all colors can be changed on the fly. For example,
164 branch_color cannot be be changed based on revision identification
165 (i.e. author, date or state). The color_bg is always unique and fixed
166 (all expressions will evaluate to the false case). Also, only string
167 rev_text and rev_idtext can be conditional expressions as other do not
168 make much sense to be dynamic.
169
170
171 Booleans have three possible arguments: true, false and not. `Not'
172 means inverse of what it was (logical negation) and is represented by
173 the value -1. For the configuration file that means that the default
174 value is negated. However, the not possibility is a very handy tool
175 for command line overrides generated from (CGI) scripts.
176
177
178 There are several reserved words besides of the keywords. These addi‐
179 tional reserved words expand to numerical values:
180 Booleans:
181 false = 0
182 true = 1
183 not = -1
184 Alignment specifiers:
185 left = 0
186 center = 1
187 right = 2
188 Image specifiers:
189 gif = 0
190 png = 1
191 jpeg = 2
192 Font specifiers:
193 tiny = 0
194 small = 1
195 medium = 2
196 large = 3
197 giant = 4
198 HTML level specifiers:
199 HTML3 = 1
200 HTML4 = 2
201 XHTML = 3
202
203
205 cvsroot string
206 The absolute base directory where the CVS/RCS repository can be
207 found. A '/' will be appended to the string if it is not empty
208 and does not contain a trailing '/'.
209 Default is an empty string.
210
211
212 cvsmodule string
213 The module name in the CVS/RCS repository. This is converted
214 into a subdirectory name with a trailing '/'.
215 Default is an empty string.
216
217
218 color_bg color
219 The background color of the image.
220 Default is white ("#ffffff").
221
222
223 transparent_bg boolean
224 The background color of the image is to be the transparent
225 color. This is only useful for PNG images. Be sure to set
226 color_bg to something reasonable to make sure that the image is
227 viewable with programs that do not support transparency.
228 Default is false.
229
230
231 date_format string
232 The strftime(3) format string for date and time representation
233 in the '%d' expansion.
234 Default is "%d-%b-%Y %H:%M:%S".
235
236
237 box_shadow boolean
238 A boolean whether or not to draw a shadow for the boxes of revi‐
239 sions and branches.
240 Default is false.
241
242
243 upside_down boolean
244 Draw the entire tree upside down if set. I.e. highest revisions
245 are at the top of the image. See also cvsgraph(1) option '-u'.
246 Default is false.
247
248
249 left_right boolean
250 Draw the entire tree from left to right instead of top down if
251 set. I.e. highest revisions are at the right of the image. You
252 can also draw the tree right to left when upside_down is set
253 too.
254 Default is false.
255
256
257 strip_untagged boolean
258 Omit all revisions that do not have tags and are not a branch
259 point. This reduces the image-size, but can be confusing when
260 looking for a specific revision. See also cvsgraph(1) option
261 '-s'.
262 Default is false.
263
264
265 strip_first_rev boolean
266 Also omit the first revision in a branch if it does not have
267 tags and is not a branch point. This has only effect if
268 strip_untagged is set. See also cvsgraph(1) option '-S'.
269 Default is false.
270
271
272 auto_stretch boolean
273 Try to stretch the inter-revision spacing to move the trunks
274 more to the left, effectively reducing the image's size. See
275 also cvsgraph(1) option '-k'.
276 Default is false.
277
278
279 use_ttf boolean
280 Enable TrueType rendering of strings using the FreeType inter‐
281 face of libgd. Note that ttf rendering is significantly slower
282 than libgd's bitmap fonts.
283 Default is false.
284
285
286 anti_alias boolean
287 Enable antialias rendering of TrueType fonts. This has only
288 effect if use_ttf is set. Enabling anti_alias gives very nice
289 results. However, that is at the expense of 8-bit vs. 4-bit
290 colormap images, which can be a major drawback because the size
291 of 8-bit images is 3..4 times that of 4-bit images (with com‐
292 pressed PNG as output).
293 Default is true.
294
295
296 thick_lines number
297 Set the thickness of connector lines between boxes. Normally,
298 lines are drawn one pixel wide, but can look somewhat thin. Set‐
299 ting the thickness to anything over 5 would be plain ugly (but
300 hey, who is to debate taste :-). Values less than 1 and over 11
301 are clipped.
302 Default is 1.
303
304
305 parse_logs boolean
306 Enable the parsing of the entire ,v file to read the log-entries
307 between revisions. This is necessary for the %l expansion to
308 work, but slows down parsing by a very large factor. You've been
309 warned.
310 Default is false.
311
312
313 html_level number
314 Set the compliance to different types of HTML. The generated
315 image map is slightly different for version 3.x, 4.x and XHTML.
316 You can use the predefined identifiers (HTML3, HTML4 and XHTML)
317 to set this value. Command line option '-x' overrides the set‐
318 ting.
319 Default is HTML3 (3.x compatibility).
320
321
322 branch_ttfont string
323
324 branch_tag_ttfont string
325
326 rev_ttfont string
327
328 rev_text_ttfont string
329
330 tag_ttfont string
331
332 title_ttfont string
333
334 msg_ttfont string
335 Set the TrueType font face or filename for the individual ele‐
336 ments. Gd's bitmap fonts are used as a fallback if the font can‐
337 not be found or contains errors.
338 Default none.
339
340
341 branch_ttsize float
342
343 branch_tag_ttsize float
344
345 rev_ttsize float
346
347 rev_text_ttsize float
348
349 tag_ttsize float
350
351 title_ttsize float
352
353 msg_ttsize float
354 Set the TrueType font size for the individual elements. See also
355 *_ttfont.
356 Default 0.0.
357
358
359 tag_font number
360 The font used to draw tags in the revision boxes.
361 Default is tiny.
362
363
364 tag_color color
365 The color used to draw tags in the revision boxes.
366 Default is black ("#000000").
367
368
369 tag_ignore string
370 An extended regular expression as described in regex(7) to match
371 all tags that should not be displayed in the graph. Note that a
372 tag will always be displayed if it matches the
373 merge_from/merge_to expressions regardless to it being set to
374 ignore here.
375 Example: tag_ignore = "(test|alpha)_release.*";
376 Default is empty (no matching occurs).
377
378
379 tag_nocase boolean
380 Ignore the case in regex matching in tag_ignore.
381 Default is false.
382
383
384 tag_negate boolean
385 Negate the matching criteria of the tag_ignore setting. If set,
386 tags that match the tag_ignore will be shown, instead of matches
387 being ignored. In any case, tags that match merge_from/merge_to
388 expressions will never be suppressed.
389 Default is false.
390
391
392 tag_ignore_merge boolean
393 If set, then tags matched with tag_ignore will no longer be con‐
394 sidered for matching by merge_from and merge_to.
395 Default is false.
396
397
398 rev_font number
399 Default is tiny.
400
401
402 rev_color color
403 The color of revision boxes, including the revision number.
404 Default is black ("#000000").
405
406
407 rev_bgcolor color
408 Revision box background color. This is the interior fill of the
409 box.
410 Default is white ("#ffffff").
411
412
413 rev_separator number
414 Space between tags in revision boxes.
415 Default is 0.
416
417
418 rev_minline number
419 The minimum vertical distance between revision boxes.
420 Default is 0.
421
422
423 rev_maxline number
424 The maximum vertical distance between revision boxes. This has
425 only effect if auto_stretch is set to true (or option '-k' is
426 specified).
427 Default is 5 times rev_minline.
428
429
430 rev_lspace number
431
432 rev_rspace number
433
434 rev_tspace number
435
436 rev_bspace number
437 Interior spacing in revision boxes of left, right, top and bot‐
438 tom respectively. Note that the left right spacing is not used
439 separately because text is center aligned.
440 Default is 0.
441
442
443 rev_idtext conditional string
444 The revision ID or revision number in a revision box.
445 Default is "%R".
446
447
448 rev_text conditional string
449 The additional text in a revision box under the revision number.
450 Default is "%d".
451
452
453 rev_text_font number
454 The font of the additional text in a revision box under the
455 revision number.
456 Default is tiny.
457
458
459 rev_text_color color
460 The font color of the additional text in a revision box under
461 the revision number.
462 Default is black ("#000000").
463
464
465 rev_maxtags number
466 Limit the number of tags in a revision box. Old trees tend to
467 have some revisions with extremely many tags attached, which
468 would generate a huge revision box when drawn. Limiting the num‐
469 ber is a fair solution. Note that tag sorting is not specified
470 in the rcsfile(7), but cvs(1) will normally have the newest tags
471 located before older ones. Therefore, limiting the number of
472 tags would most likely only affect older tags to be stripped.
473 However, no guarantees are given that a specific tag is present
474 when the limit is imposed. An ellipsis (...) is shown in the
475 revision box when the number of tags got truncated.
476 Default is 0, meaning all tags shown.
477
478
479 rev_hidenumber boolean
480 If set, then no revision number is displayed in the revision‐
481 boxes. This reduces size for those graphs where the actual revi‐
482 sion-number is irrelevant.
483 Default is false.
484
485
486 msg_font number
487 The font used to draw error and warning messages at the bottom
488 of the graph.
489 Default is tiny.
490
491
492 msg_color color
493 The color used to draw error and warning messages.
494 Default is black ("#000000").
495
496
497 merge_color color
498 The color of the lines to show merges.
499 Default is black ("#000000").
500
501
502 merge_front boolean
503 The merge lines are drawn on top of the image if true. Other‐
504 wise, merge lines are drawn underneath.
505 Default is false.
506
507
508 merge_nocase boolean
509 Ignore the case in regex matching in merge_from and merge_to.
510 Default is false.
511
512
513 merge_from string
514 The merge_from is an extended regular expression as described in
515 regex(7) and POSIX 1003.2 (see also Single Unix Specification at
516 http://www.opengroup.com ). The matching tags describe source
517 revisions of merges. Each match is subsequently used in a search
518 for the destination tag as described by the merge_to parameter.
519 Note: normal string rules apply. Therefore, all backslashes '\'
520 must be escaped, e.g. "\." must be written as "\\.".
521 Example: merge_from = "^from_(.*)";
522 Default is empty (no matching occurs).
523
524
525 merge_to string
526 The merge_to is an extended regular expression with a twist. All
527 subexpressions from the merge_from are expanded into merge_to
528 using %[1-9] (in contrast to \[1-9] for backreferences). Care is
529 taken to escape the constructed expression. A '$' at the end of
530 the merge_to expression can be important to prevent 'near match'
531 references. Normally, you want the destination to be a good rep‐
532 resentation of the source. However, this depends on how well you
533 defined the tags in the first place.
534 Example: merge_to = "^merge_%1$";
535 Above example, combined with the merge_from example would match
536 a tag "from_BugFix_2002" to the merge-destination with tag
537 "merge_BugFix_2002".
538 Default is empty (no matching occurs).
539
540
541 merge_findall boolean
542 Normally, merge_from/merge_to will only find the first matching
543 tag-combination and draw a line between them, If merge_findall
544 is set, then all matching merge_tos will result in lines from
545 the from-tag to the to-tag.
546 Default is false.
547
548
549 merge_arrows boolean
550 Enable the use of arrows pointing to the merge destination.
551 Default is true.
552
553
554 merge_cvsnt boolean
555 Enable drawing of mergepoints as used by CVSNT.
556 Default is true.
557
558
559 merge_cvsnt_color color
560 The color of the lines to show merges from mergepoints.
561 Default is black ("#000000").
562
563
564 arrow_width number
565
566 arrow_length number
567 Specifies the size of the arrow pointing to the merge destina‐
568 tion.
569 Default is arrow_width=3, arrow_length=12.
570
571
572 branch_font number
573 The font of the number in a branch box.
574 Default is tiny.
575
576
577 branch_tag_font number
578 The font of the tags in a branch box.
579 Default is tiny.
580
581
582 branch_color color
583 All branch element's color excluding tags.
584 Default is black ("#000000").
585
586
587 branch_bgcolor color
588 Branch box background color. This is the interior fill of the
589 box.
590 Default is white ("#ffffff").
591
592
593 branch_tag_color color
594 All branch tags' color.
595 Default is black ("#000000").
596
597
598 branch_lspace number
599
600 branch_rspace number
601
602 branch_tspace number
603
604 branch_bspace number
605 Interior spacing of branch boxes.
606 Default is 0.
607
608
609 branch_margin number
610 Exterior spacing of branches. Each branch will be spaced with a
611 minimum of this value.
612 Default is 0.
613
614
615 branch_connect number
616 Length of the vertical connector from a revision to the branch
617 box.
618 Default is 0.
619
620
621 branch_dupbox boolean
622 Add an extra branch box at the end of the trunk. Useful for
623 upside down drawn trees. If there are no commits on a branch,
624 then no extra box is added, regardless of the setting of this
625 option.
626 Default is false.
627
628
629 branch_fold boolean
630 Fold branches that have no commits into one branch-box. This
631 helps to reduce the size of the overall image by a huge factor
632 (5..10 in most cases). Many applications of CVS use many
633 branches, but not all files in the repository change for each
634 branch. Especially stable files line .cvsignore or older code
635 tend to accumulate many empty branches at one and the same revi‐
636 sion. Folding these branches into one box reduces the width of
637 these images considerably.
638 Default is true.
639
640
641 branch_foldall boolean
642 Fold all empty branches that sprout from the save revision in
643 one box. If this option is not set, then multiple boxes will be
644 created if the empty branches are interspaced with ones that
645 have revisions attached. When this option is set, then all empty
646 branches will be collected and put into the box of the first
647 occurring empty branch on the revision's branch point. Setting
648 this option will reduce image size with interspaced commits to
649 the a maximum.
650 Default is false.
651
652
653 branch_resort boolean
654 Resort the branches according to the number of revisions they
655 have, where less revisions will stick closer to the sprouting
656 trunk. This will reduce image size under circumstances where
657 many branches have significant different number of revisions.
658 Default is false.
659
660
661 branch_subtree string
662 Reduce the tree only to include the subtree from the branch-num‐
663 ber given in the argument. If the argument is a revision which
664 is the root of branches, then all those branches will be shown.
665 The argument can also be a symbolic tag (either a branch- or
666 revision-tag). You normally would set this option from the com‐
667 mand line with the -O option for interactive flexibility.
668 Example: branch_subtree = "1.2.4";
669 Default is empty (all branches shown).
670
671
672 title string
673 The title of the image.
674 Default is empty string.
675
676
677 title_x number
678
679 title_y number
680 Position of title.
681 Default is 0.
682
683
684 title_font number
685 The font of the title.
686 Default is tiny.
687
688
689 title_align number
690 Horizontal alignment of the title.
691 Default is left.
692
693
694 title_color color
695 The color of the title.
696 Default is black ("#000000").
697
698
699 margin_top number
700
701 margin_bottom number
702
703 margin_left number
704
705 margin_right number
706 Margins of the image. Note: the title position is not affected
707 by the margin.
708 Default is 0.
709
710
711 image_type number
712 Image types are available if they can be found in the gd
713 library. Some versions of gd do not have gif, although newer
714 version have it implemented again. CvsGraph will automatically
715 generate png images if gif is not available.
716 Default is dependent on availability and is prioritized in the
717 order png, gif and jpeg.
718
719
720 image_quality number
721 The quality of a jpeg image (1..100)
722 Default is 100.
723
724
725 image_compress number
726 Set the compression level of png images (-1..9). Zero means no
727 compression. A higher number means higher compression. Minus one
728 selects the default library setting.
729 Default is -1.
730
731
732 image_interlace boolean
733 Write png and jpeg images in interlaced format. This enables
734 progressive loading in your browser (if supported).
735 Default is false.
736
737
738 map_name string
739 The name= attribute in <map name="mapname">...</map> in the gen‐
740 erated HTML map.
741 Default is "CvsGraphImageMap".
742
743
744 map_branch_href string
745
746 map_rev_href string
747
748 map_diff_href string
749
750 map_merge_href string
751 These are the href= attributes in the <area> tags of HTML.
752 Default are:
753 branch: "href=\"unset: conf.map_branch_href\""
754 revision: "href=\"unset: conf.map_rev_href\""
755 diff: "href=\"unset: conf.map_diff_href\""
756 merge: "href=\"unset: conf.map_merge_href\""
757
758
759 map_branch_alt string
760
761 map_rev_alt string
762
763 map_diff_alt string
764
765 map_merge_alt string
766 These are the alt= attributes in the <area> tags of HTML.
767 Default are "alt=\"%B\"", "alt=\"%R\"", "alt=\"%P <->
768 %R\"" and "alt=\"%P <-> %R\"" respectively.
769
770
772 CvsGraph is written and maintained by B. Stultiens.
773 Send comments and bug reports to cvsgraph@akhphd.au.dk (read the mail‐
774 note in the README file first) and visit the homepage at:
775 http://www.akhphd.au.dk/~bertho/cvsgraph/.
776
778 cvsgraph(1)
779
780
781
782B. Stultiens 1.6.1 cvsgraph.conf(5)