1This is cvs.info, produced by makeinfo version 4.8 from cvs.texinfo.
2
3INFO-DIR-SECTION GNU Packages
4START-INFO-DIR-ENTRY
5* CVS: (cvs).                   Concurrent Versions System
6END-INFO-DIR-ENTRY
7INFO-DIR-SECTION Individual utilities
8START-INFO-DIR-ENTRY
9* cvs: (cvs)CVS commands.       Concurrent Versions System
10END-INFO-DIR-ENTRY
11
12
13File: cvs.info,  Node: commit options,  Next: commit examples,  Up: commit
14
15A.10.1 commit options
16---------------------
17
18These standard options are supported by `commit' (*note Common
19options::, for a complete description of them):
20
21`-l'
22     Local; run only in current working directory.
23
24`-R'
25     Commit directories recursively.  This is on by default.
26
27`-r REVISION'
28     Commit to REVISION.  REVISION must be either a branch, or a
29     revision on the main trunk that is higher than any existing
30     revision number (*note Assigning revisions::).  You cannot commit
31     to a specific revision on a branch.
32
33   `commit' also supports these options:
34
35`-c'
36     Refuse to commit files unless the user has registered a valid edit
37     on the file via `cvs edit'.  This is most useful when `commit -c'
38     and `edit -c' have been placed in all `.cvsrc' files.  A commit
39     can be forced anyways by either regestering an edit retroactively
40     via `cvs edit' (no changes to the file will be lost) or using the
41     `-f' option to commit.  Support for `commit -c' requires both
42     client and a server versions 1.12.10 or greater.
43
44`-F FILE'
45     Read the log message from FILE, instead of invoking an editor.
46
47`-f'
48     Note that this is not the standard behavior of the `-f' option as
49     defined in *Note Common options::.
50
51     Force CVS to commit a new revision even if you haven't made any
52     changes to the file.  As of CVS version 1.12.10, it also causes
53     the `-c' option to be ignored.  If the current revision of FILE is
54     1.7, then the following two commands are equivalent:
55
56          $ cvs commit -f FILE
57          $ cvs commit -r 1.8 FILE
58
59     The `-f' option disables recursion (i.e., it implies `-l').  To
60     force CVS to commit a new revision for all files in all
61     subdirectories, you must use `-f -R'.
62
63`-m MESSAGE'
64     Use MESSAGE as the log message, instead of invoking an editor.
65
66
67File: cvs.info,  Node: commit examples,  Prev: commit options,  Up: commit
68
69A.10.2 commit examples
70----------------------
71
72A.10.2.1 Committing to a branch
73...............................
74
75You can commit to a branch revision (one that has an even number of
76dots) with the `-r' option.  To create a branch revision, use the `-b'
77option of the `rtag' or `tag' commands (*note Branching and merging::).
78Then, either `checkout' or `update' can be used to base your sources
79on the newly created branch.  From that point on, all `commit' changes
80made within these working sources will be automatically added to a
81branch revision, thereby not disturbing main-line development in any
82way.  For example, if you had to create a patch to the 1.2 version of
83the product, even though the 2.0 version is already under development,
84you might do:
85
86     $ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
87     $ cvs checkout -r FCS1_2_Patch product_module
88     $ cd product_module
89     [[ hack away ]]
90     $ cvs commit
91
92This works automatically since the `-r' option is sticky.
93
94A.10.2.2 Creating the branch after editing
95..........................................
96
97Say you have been working on some extremely experimental software,
98based on whatever revision you happened to checkout last week.  If
99others in your group would like to work on this software with you, but
100without disturbing main-line development, you could commit your change
101to a new branch.  Others can then checkout your experimental stuff and
102utilize the full benefit of CVS conflict resolution.  The scenario might
103look like:
104
105     [[ hacked sources are present ]]
106     $ cvs tag -b EXPR1
107     $ cvs update -r EXPR1
108     $ cvs commit
109
110   The `update' command will make the `-r EXPR1' option sticky on all
111files.  Note that your changes to the files will never be removed by the
112`update' command.  The `commit' will automatically commit to the
113correct branch, because the `-r' is sticky.  You could also do like
114this:
115
116     [[ hacked sources are present ]]
117     $ cvs tag -b EXPR1
118     $ cvs commit -r EXPR1
119
120but then, only those files that were changed by you will have the `-r
121EXPR1' sticky flag.  If you hack away, and commit without specifying
122the `-r EXPR1' flag, some files may accidentally end up on the main
123trunk.
124
125   To work with you on the experimental change, others would simply do
126
127     $ cvs checkout -r EXPR1 whatever_module
128
129
130File: cvs.info,  Node: diff,  Next: export,  Prev: commit,  Up: CVS commands
131
132A.11 diff--Show differences between revisions
133=============================================
134
135   * Synopsis: diff [-lR] [-k kflag] [format_options] [(-r rev1[:date1]
136     | -D date1) [-r rev2[:date2] | -D date2]] [files...]
137
138   * Requires: working directory, repository.
139
140   * Changes: nothing.
141
142   The `diff' command is used to compare different revisions of files.
143The default action is to compare your working files with the revisions
144they were based on, and report any differences that are found.
145
146   If any file names are given, only those files are compared.  If any
147directories are given, all files under them will be compared.
148
149   The exit status for diff is different than for other CVS commands;
150for details *Note Exit status::.
151
152* Menu:
153
154* diff options::                diff options
155* diff examples::               diff examples
156
157
158File: cvs.info,  Node: diff options,  Next: diff examples,  Up: diff
159
160A.11.1 diff options
161-------------------
162
163These standard options are supported by `diff' (*note Common options::,
164for a complete description of them):
165
166`-D DATE'
167     Use the most recent revision no later than DATE.  See `-r' for how
168     this affects the comparison.
169
170`-k KFLAG'
171     Process keywords according to KFLAG.  See *Note Keyword
172     substitution::.
173
174`-l'
175     Local; run only in current working directory.
176
177`-R'
178     Examine directories recursively.  This option is on by default.
179
180`-r TAG[:DATE]'
181     Compare with revision specified by TAG or, when DATE is specified
182     and TAG is a branch tag, the version from the branch TAG as it
183     existed on DATE.  Zero, one or two `-r' options can be present.
184     With no `-r' option, the working file will be compared with the
185     revision it was based on.  With one `-r', that revision will be
186     compared to your current working file.  With two `-r' options
187     those two revisions will be compared (and your working file will
188     not affect the outcome in any way).
189
190     One or both `-r' options can be replaced by a `-D DATE' option,
191     described above.
192
193   The following options specify the format of the output.  They have
194the same meaning as in GNU diff.  Most options have two equivalent
195names, one of which is a single letter preceded by `-', and the other
196of which is a long name preceded by `--'.
197
198`-LINES'
199     Show LINES (an integer) lines of context.  This option does not
200     specify an output format by itself; it has no effect unless it is
201     combined with `-c' or `-u'.  This option is obsolete.  For proper
202     operation, `patch' typically needs at least two lines of context.
203
204`-a'
205     Treat all files as text and compare them line-by-line, even if they
206     do not seem to be text.
207
208`-b'
209     Ignore trailing white space and consider all other sequences of
210     one or more white space characters to be equivalent.
211
212`-B'
213     Ignore changes that just insert or delete blank lines.
214
215`--binary'
216     Read and write data in binary mode.
217
218`--brief'
219     Report only whether the files differ, not the details of the
220     differences.
221
222`-c'
223     Use the context output format.
224
225`-C LINES'
226`--context[=LINES]'
227     Use the context output format, showing LINES (an integer) lines of
228     context, or three if LINES is not given.  For proper operation,
229     `patch' typically needs at least two lines of context.
230
231`--changed-group-format=FORMAT'
232     Use FORMAT to output a line group containing differing lines from
233     both files in if-then-else format.  *Note Line group formats::.
234
235`-d'
236     Change the algorithm to perhaps find a smaller set of changes.
237     This makes `diff' slower (sometimes much slower).
238
239`-e'
240`--ed'
241     Make output that is a valid `ed' script.
242
243`--expand-tabs'
244     Expand tabs to spaces in the output, to preserve the alignment of
245     tabs in the input files.
246
247`-f'
248     Make output that looks vaguely like an `ed' script but has changes
249     in the order they appear in the file.
250
251`-F REGEXP'
252     In context and unified format, for each hunk of differences, show
253     some of the last preceding line that matches REGEXP.
254
255`--forward-ed'
256     Make output that looks vaguely like an `ed' script but has changes
257     in the order they appear in the file.
258
259`-H'
260     Use heuristics to speed handling of large files that have numerous
261     scattered small changes.
262
263`--horizon-lines=LINES'
264     Do not discard the last LINES lines of the common prefix and the
265     first LINES lines of the common suffix.
266
267`-i'
268     Ignore changes in case; consider upper- and lower-case letters
269     equivalent.
270
271`-I REGEXP'
272     Ignore changes that just insert or delete lines that match REGEXP.
273
274`--ifdef=NAME'
275     Make merged if-then-else output using NAME.
276
277`--ignore-all-space'
278     Ignore white space when comparing lines.
279
280`--ignore-blank-lines'
281     Ignore changes that just insert or delete blank lines.
282
283`--ignore-case'
284     Ignore changes in case; consider upper- and lower-case to be the
285     same.
286
287`--ignore-matching-lines=REGEXP'
288     Ignore changes that just insert or delete lines that match REGEXP.
289
290`--ignore-space-change'
291     Ignore trailing white space and consider all other sequences of
292     one or more white space characters to be equivalent.
293
294`--initial-tab'
295     Output a tab rather than a space before the text of a line in
296     normal or context format.  This causes the alignment of tabs in
297     the line to look normal.
298
299`-L LABEL'
300     Use LABEL instead of the file name in the context format and
301     unified format headers.
302
303`--label=LABEL'
304     Use LABEL instead of the file name in the context format and
305     unified format headers.
306
307`--left-column'
308     Print only the left column of two common lines in side by side
309     format.
310
311`--line-format=FORMAT'
312     Use FORMAT to output all input lines in if-then-else format.
313     *Note Line formats::.
314
315`--minimal'
316     Change the algorithm to perhaps find a smaller set of changes.
317     This makes `diff' slower (sometimes much slower).
318
319`-n'
320     Output RCS-format diffs; like `-f' except that each command
321     specifies the number of lines affected.
322
323`-N'
324`--new-file'
325     In directory comparison, if a file is found in only one directory,
326     treat it as present but empty in the other directory.
327
328`--new-group-format=FORMAT'
329     Use FORMAT to output a group of lines taken from just the second
330     file in if-then-else format.  *Note Line group formats::.
331
332`--new-line-format=FORMAT'
333     Use FORMAT to output a line taken from just the second file in
334     if-then-else format.  *Note Line formats::.
335
336`--old-group-format=FORMAT'
337     Use FORMAT to output a group of lines taken from just the first
338     file in if-then-else format.  *Note Line group formats::.
339
340`--old-line-format=FORMAT'
341     Use FORMAT to output a line taken from just the first file in
342     if-then-else format.  *Note Line formats::.
343
344`-p'
345     Show which C function each change is in.
346
347`--rcs'
348     Output RCS-format diffs; like `-f' except that each command
349     specifies the number of lines affected.
350
351`--report-identical-files'
352`-s'
353     Report when two files are the same.
354
355`--show-c-function'
356     Show which C function each change is in.
357
358`--show-function-line=REGEXP'
359     In context and unified format, for each hunk of differences, show
360     some of the last preceding line that matches REGEXP.
361
362`--side-by-side'
363     Use the side by side output format.
364
365`--speed-large-files'
366     Use heuristics to speed handling of large files that have numerous
367     scattered small changes.
368
369`--suppress-common-lines'
370     Do not print common lines in side by side format.
371
372`-t'
373     Expand tabs to spaces in the output, to preserve the alignment of
374     tabs in the input files.
375
376`-T'
377     Output a tab rather than a space before the text of a line in
378     normal or context format.  This causes the alignment of tabs in
379     the line to look normal.
380
381`--text'
382     Treat all files as text and compare them line-by-line, even if they
383     do not appear to be text.
384
385`-u'
386     Use the unified output format.
387
388`--unchanged-group-format=FORMAT'
389     Use FORMAT to output a group of common lines taken from both files
390     in if-then-else format.  *Note Line group formats::.
391
392`--unchanged-line-format=FORMAT'
393     Use FORMAT to output a line common to both files in if-then-else
394     format.  *Note Line formats::.
395
396`-U LINES'
397`--unified[=LINES]'
398     Use the unified output format, showing LINES (an integer) lines of
399     context, or three if LINES is not given.  For proper operation,
400     `patch' typically needs at least two lines of context.
401
402`-w'
403     Ignore white space when comparing lines.
404
405`-W COLUMNS'
406`--width=COLUMNS'
407     Use an output width of COLUMNS in side by side format.
408
409`-y'
410     Use the side by side output format.
411
412* Menu:
413
414* Line group formats::          Line group formats
415* Line formats::                Line formats
416
417
418File: cvs.info,  Node: Line group formats,  Next: Line formats,  Up: diff options
419
420A.11.1.1 Line group formats
421...........................
422
423Line group formats let you specify formats suitable for many
424applications that allow if-then-else input, including programming
425languages and text formatting languages.  A line group format specifies
426the output format for a contiguous group of similar lines.
427
428   For example, the following command compares the TeX file `myfile'
429with the original version from the repository, and outputs a merged
430file in which old regions are surrounded by `\begin{em}'-`\end{em}'
431lines, and new regions are surrounded by `\begin{bf}'-`\end{bf}' lines.
432
433     cvs diff \
434        --old-group-format='\begin{em}
435     %<\end{em}
436     ' \
437        --new-group-format='\begin{bf}
438     %>\end{bf}
439     ' \
440        myfile
441
442   The following command is equivalent to the above example, but it is a
443little more verbose, because it spells out the default line group
444formats.
445
446     cvs diff \
447        --old-group-format='\begin{em}
448     %<\end{em}
449     ' \
450        --new-group-format='\begin{bf}
451     %>\end{bf}
452     ' \
453        --unchanged-group-format='%=' \
454        --changed-group-format='\begin{em}
455     %<\end{em}
456     \begin{bf}
457     %>\end{bf}
458     ' \
459        myfile
460
461   Here is a more advanced example, which outputs a diff listing with
462headers containing line numbers in a "plain English" style.
463
464     cvs diff \
465        --unchanged-group-format='' \
466        --old-group-format='-------- %dn line%(n=1?:s) deleted at %df:
467     %<' \
468        --new-group-format='-------- %dN line%(N=1?:s) added after %de:
469     %>' \
470        --changed-group-format='-------- %dn line%(n=1?:s) changed at %df:
471     %<-------- to:
472     %>' \
473        myfile
474
475   To specify a line group format, use one of the options listed below.
476You can specify up to four line group formats, one for each kind of
477line group.  You should quote FORMAT, because it typically contains
478shell metacharacters.
479
480`--old-group-format=FORMAT'
481     These line groups are hunks containing only lines from the first
482     file.  The default old group format is the same as the changed
483     group format if it is specified; otherwise it is a format that
484     outputs the line group as-is.
485
486`--new-group-format=FORMAT'
487     These line groups are hunks containing only lines from the second
488     file.  The default new group format is same as the changed group
489     format if it is specified; otherwise it is a format that outputs
490     the line group as-is.
491
492`--changed-group-format=FORMAT'
493     These line groups are hunks containing lines from both files.  The
494     default changed group format is the concatenation of the old and
495     new group formats.
496
497`--unchanged-group-format=FORMAT'
498     These line groups contain lines common to both files.  The default
499     unchanged group format is a format that outputs the line group
500     as-is.
501
502   In a line group format, ordinary characters represent themselves;
503conversion specifications start with `%' and have one of the following
504forms.
505
506`%<'
507     stands for the lines from the first file, including the trailing
508     newline.  Each line is formatted according to the old line format
509     (*note Line formats::).
510
511`%>'
512     stands for the lines from the second file, including the trailing
513     newline.  Each line is formatted according to the new line format.
514
515`%='
516     stands for the lines common to both files, including the trailing
517     newline.  Each line is formatted according to the unchanged line
518     format.
519
520`%%'
521     stands for `%'.
522
523`%c'C''
524     where C is a single character, stands for C.  C may not be a
525     backslash or an apostrophe.  For example, `%c':'' stands for a
526     colon, even inside the then-part of an if-then-else format, which
527     a colon would normally terminate.
528
529`%c'\O''
530     where O is a string of 1, 2, or 3 octal digits, stands for the
531     character with octal code O.  For example, `%c'\0'' stands for a
532     null character.
533
534`FN'
535     where F is a `printf' conversion specification and N is one of the
536     following letters, stands for N's value formatted with F.
537
538    `e'
539          The line number of the line just before the group in the old
540          file.
541
542    `f'
543          The line number of the first line in the group in the old
544          file; equals E + 1.
545
546    `l'
547          The line number of the last line in the group in the old file.
548
549    `m'
550          The line number of the line just after the group in the old
551          file; equals L + 1.
552
553    `n'
554          The number of lines in the group in the old file; equals L -
555          F + 1.
556
557    `E, F, L, M, N'
558          Likewise, for lines in the new file.
559
560
561     The `printf' conversion specification can be `%d', `%o', `%x', or
562     `%X', specifying decimal, octal, lower case hexadecimal, or upper
563     case hexadecimal output respectively.  After the `%' the following
564     options can appear in sequence: a `-' specifying
565     left-justification; an integer specifying the minimum field width;
566     and a period followed by an optional integer specifying the
567     minimum number of digits.  For example, `%5dN' prints the number
568     of new lines in the group in a field of width 5 characters, using
569     the `printf' format `"%5d"'.
570
571`(A=B?T:E)'
572     If A equals B then T else E.  A and B are each either a decimal
573     constant or a single letter interpreted as above.  This format
574     spec is equivalent to T if A's value equals B's; otherwise it is
575     equivalent to E.
576
577     For example, `%(N=0?no:%dN) line%(N=1?:s)' is equivalent to `no
578     lines' if N (the number of lines in the group in the new file) is
579     0, to `1 line' if N is 1, and to `%dN lines' otherwise.
580
581
582File: cvs.info,  Node: Line formats,  Prev: Line group formats,  Up: diff options
583
584A.11.1.2 Line formats
585.....................
586
587Line formats control how each line taken from an input file is output
588as part of a line group in if-then-else format.
589
590   For example, the following command outputs text with a one-column
591change indicator to the left of the text.  The first column of output
592is `-' for deleted lines, `|' for added lines, and a space for
593unchanged lines.  The formats contain newline characters where newlines
594are desired on output.
595
596     cvs diff \
597        --old-line-format='-%l
598     ' \
599        --new-line-format='|%l
600     ' \
601        --unchanged-line-format=' %l
602     ' \
603        myfile
604
605   To specify a line format, use one of the following options.  You
606should quote FORMAT, since it often contains shell metacharacters.
607
608`--old-line-format=FORMAT'
609     formats lines just from the first file.
610
611`--new-line-format=FORMAT'
612     formats lines just from the second file.
613
614`--unchanged-line-format=FORMAT'
615     formats lines common to both files.
616
617`--line-format=FORMAT'
618     formats all lines; in effect, it sets all three above options
619     simultaneously.
620
621   In a line format, ordinary characters represent themselves;
622conversion specifications start with `%' and have one of the following
623forms.
624
625`%l'
626     stands for the contents of the line, not counting its trailing
627     newline (if any).  This format ignores whether the line is
628     incomplete.
629
630`%L'
631     stands for the contents of the line, including its trailing newline
632     (if any).  If a line is incomplete, this format preserves its
633     incompleteness.
634
635`%%'
636     stands for `%'.
637
638`%c'C''
639     where C is a single character, stands for C.  C may not be a
640     backslash or an apostrophe.  For example, `%c':'' stands for a
641     colon.
642
643`%c'\O''
644     where O is a string of 1, 2, or 3 octal digits, stands for the
645     character with octal code O.  For example, `%c'\0'' stands for a
646     null character.
647
648`Fn'
649     where F is a `printf' conversion specification, stands for the
650     line number formatted with F.  For example, `%.5dn' prints the
651     line number using the `printf' format `"%.5d"'.  *Note Line group
652     formats::, for more about printf conversion specifications.
653
654
655   The default line format is `%l' followed by a newline character.
656
657   If the input contains tab characters and it is important that they
658line up on output, you should ensure that `%l' or `%L' in a line format
659is just after a tab stop (e.g. by preceding `%l' or `%L' with a tab
660character), or you should use the `-t' or `--expand-tabs' option.
661
662   Taken together, the line and line group formats let you specify many
663different formats.  For example, the following command uses a format
664similar to `diff''s normal format.  You can tailor this command to get
665fine control over `diff''s output.
666
667     cvs diff \
668        --old-line-format='< %l
669     ' \
670        --new-line-format='> %l
671     ' \
672        --old-group-format='%df%(f=l?:,%dl)d%dE
673     %<' \
674        --new-group-format='%dea%dF%(F=L?:,%dL)
675     %>' \
676        --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
677     %<---
678     %>' \
679        --unchanged-group-format='' \
680        myfile
681
682
683File: cvs.info,  Node: diff examples,  Prev: diff options,  Up: diff
684
685A.11.2 diff examples
686--------------------
687
688The following line produces a Unidiff (`-u' flag) between revision 1.14
689and 1.19 of `backend.c'.  Due to the `-kk' flag no keywords are
690substituted, so differences that only depend on keyword substitution
691are ignored.
692
693     $ cvs diff -kk -u -r 1.14 -r 1.19 backend.c
694
695   Suppose the experimental branch EXPR1 was based on a set of files
696tagged RELEASE_1_0.  To see what has happened on that branch, the
697following can be used:
698
699     $ cvs diff -r RELEASE_1_0 -r EXPR1
700
701   A command like this can be used to produce a context diff between
702two releases:
703
704     $ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
705
706   If you are maintaining ChangeLogs, a command like the following just
707before you commit your changes may help you write the ChangeLog entry.
708All local modifications that have not yet been committed will be
709printed.
710
711     $ cvs diff -u | less
712
713
714File: cvs.info,  Node: export,  Next: history,  Prev: diff,  Up: CVS commands
715
716A.12 export--Export sources from CVS, similar to checkout
717=========================================================
718
719   * Synopsis: export [-flNnR] (-r rev[:date] | -D date) [-k subst] [-d
720     dir] module...
721
722   * Requires: repository.
723
724   * Changes: current directory.
725
726   This command is a variant of `checkout'; use it when you want a copy
727of the source for module without the CVS administrative directories.
728For example, you might use `export' to prepare source for shipment
729off-site.  This command requires that you specify a date or tag (with
730`-D' or `-r'), so that you can count on reproducing the source you ship
731to others (and thus it always prunes empty directories).
732
733   One often would like to use `-kv' with `cvs export'.  This causes
734any keywords to be expanded such that an import done at some other site
735will not lose the keyword revision information.  But be aware that
736doesn't handle an export containing binary files correctly.  Also be
737aware that after having used `-kv', one can no longer use the `ident'
738command (which is part of the RCS suite--see ident(1)) which looks for
739keyword strings.  If you want to be able to use `ident' you must not
740use `-kv'.
741
742* Menu:
743
744* export options::              export options
745
746
747File: cvs.info,  Node: export options,  Up: export
748
749A.12.1 export options
750---------------------
751
752These standard options are supported by `export' (*note Common
753options::, for a complete description of them):
754
755`-D DATE'
756     Use the most recent revision no later than DATE.
757
758`-f'
759     If no matching revision is found, retrieve the most recent
760     revision (instead of ignoring the file).
761
762`-l'
763     Local; run only in current working directory.
764
765`-n'
766     Do not run any checkout program.
767
768`-R'
769     Export directories recursively.  This is on by default.
770
771`-r TAG[:DATE]'
772     Export the revision specified by TAG or, when DATE is specified
773     and TAG is a branch tag, the version from the branch TAG as it
774     existed on DATE.  See *Note Common options::.
775
776   In addition, these options (that are common to `checkout' and
777`export') are also supported:
778
779`-d DIR'
780     Create a directory called DIR for the working files, instead of
781     using the module name.  *Note checkout options::, for complete
782     details on how CVS handles this flag.
783
784`-k SUBST'
785     Set keyword expansion mode (*note Substitution modes::).
786
787`-N'
788     Only useful together with `-d DIR'.  *Note checkout options::, for
789     complete details on how CVS handles this flag.
790
791
792File: cvs.info,  Node: history,  Next: import,  Prev: export,  Up: CVS commands
793
794A.13 history--Show status of files and users
795============================================
796
797   * Synopsis:     history [-report] [-flags] [-options args] [files...]
798
799   * Requires: the file `$CVSROOT/CVSROOT/history'
800
801   * Changes: nothing.
802
803   CVS can keep a history log that tracks each use of most CVS
804commands.  You can use `history' to display this information in various
805formats.
806
807   To enable logging, the `LogHistory' config option must be set to
808some value other than the empty string and the history file specified by
809the `HistoryLogPath' option must be writable by all users who may run
810the CVS executable (*note config::).
811
812   To enable the `history' command, logging must be enabled as above and
813the `HistorySearchPath' config option (*note config::) must be set to
814specify some number of the history logs created thereby and these files
815must be readable by each user who might run the `history' command.
816
817   Creating a repository via the `cvs init' command will enable logging
818of all possible events to a single history log file
819(`$CVSROOT/CVSROOT/history') with read and write permissions for all
820users (*note Creating a repository::).
821
822   *Note_ `history' uses `-f', `-l', `-n', and `-p' in ways that
823conflict with the normal use inside CVS (*note Common options::).*
824
825* Menu:
826
827* history options::             history options
828
829
830File: cvs.info,  Node: history options,  Up: history
831
832A.13.1 history options
833----------------------
834
835Several options (shown above as `-report')  control  what kind of
836report is generated:
837
838`-c'
839     Report on each time commit was used (i.e., each time the
840     repository was modified).
841
842`-e'
843     Everything (all record types).  Equivalent to specifying `-x' with
844     all record types.  Of course, `-e' will also include record types
845     which are added in a future version of CVS; if you are writing a
846     script which can only handle certain record types, you'll want to
847     specify `-x'.
848
849`-m MODULE'
850     Report on a particular module.  (You can meaningfully use `-m'
851     more than once on the command line.)
852
853`-o'
854     Report on checked-out modules.  This is the default report type.
855
856`-T'
857     Report on all tags.
858
859`-x TYPE'
860     Extract a particular set of record types TYPE from the CVS
861     history.  The types are indicated by single letters, which you may
862     specify in combination.
863
864     Certain commands have a single record type:
865
866    `F'
867          release
868
869    `O'
870          checkout
871
872    `E'
873          export
874
875    `T'
876          rtag
877
878     One of five record types may result from an update:
879
880    `C'
881          A merge was necessary but collisions were detected (requiring
882          manual merging).
883
884    `G'
885          A merge was necessary and it succeeded.
886
887    `U'
888          A working file was copied from the repository.
889
890    `P'
891          A working file was patched to match the repository.
892
893    `W'
894          The working copy of a file was deleted during update (because
895          it was gone from the repository).
896
897     One of three record types results from commit:
898
899    `A'
900          A file was added for the first time.
901
902    `M'
903          A file was modified.
904
905    `R'
906          A file was removed.
907
908   The options shown as `-flags' constrain or expand the report without
909requiring option arguments:
910
911`-a'
912     Show data for all users (the default is to show data only for the
913     user executing `history').
914
915`-l'
916     Show last modification only.
917
918`-w'
919     Show only the records for modifications done from the same working
920     directory where `history' is executing.
921
922   The options shown as `-options ARGS' constrain the report based on
923an argument:
924
925`-b STR'
926     Show data back to a record containing  the  string STR  in  either
927     the module name, the file name, or the repository path.
928
929`-D DATE'
930     Show data since DATE.  This is slightly different from the normal
931     use of `-D DATE', which selects the newest revision older than
932     DATE.
933
934`-f FILE'
935     Show data for a particular file (you can specify several `-f'
936     options on the same command line).  This is equivalent to
937     specifying the file on the command line.
938
939`-n MODULE'
940     Show data for a particular module (you can specify several `-n'
941     options on the same command line).
942
943`-p REPOSITORY'
944     Show data for a particular source repository  (you can specify
945     several `-p' options on the same command line).
946
947`-r REV'
948     Show records referring to revisions since the revision or tag
949     named REV appears in individual RCS files.  Each RCS file is
950     searched for the revision or tag.
951
952`-t TAG'
953     Show records since tag TAG was last added to the history file.
954     This differs from the `-r' flag above in that it reads only the
955     history file, not the RCS files, and is much faster.
956
957`-u NAME'
958     Show records for user NAME.
959
960`-z TIMEZONE'
961     Show times in the selected records using the specified time zone
962     instead of UTC.
963
964
965File: cvs.info,  Node: import,  Next: log,  Prev: history,  Up: CVS commands
966
967A.14 import--Import sources into CVS, using vendor branches
968===========================================================
969
970   * Synopsis: import [-options] repository vendortag releasetag...
971
972   * Requires: Repository, source distribution directory.
973
974   * Changes: repository.
975
976   Use `import' to incorporate an entire source distribution from an
977outside source (e.g., a source vendor) into your source repository
978directory.  You can use this command both for initial creation of a
979repository, and for wholesale updates to the module from the outside
980source.  *Note Tracking sources::, for a discussion on this subject.
981
982   The REPOSITORY argument gives a directory name (or a path to a
983directory) under the CVS root directory for repositories; if the
984directory did not exist, import creates it.
985
986   When you use import for updates to source that has been modified in
987your source repository (since a prior import), it will notify you of
988any files that conflict in the two branches of development; use
989`checkout -j' to reconcile the differences, as import instructs you to
990do.
991
992   If CVS decides a file should be ignored (*note cvsignore::), it does
993not import it and prints `I ' followed by the filename (*note import
994output::, for a complete description of the output).
995
996   If the file `$CVSROOT/CVSROOT/cvswrappers' exists, any file whose
997names match the specifications in that file will be treated as packages
998and the appropriate filtering will be performed on the file/directory
999before being imported.  *Note Wrappers::.
1000
1001   The outside source is saved in a first-level branch, by default
10021.1.1.  Updates are leaves of this branch; for example, files from the
1003first imported collection of source will be revision 1.1.1.1, then
1004files from the first imported update will be revision 1.1.1.2, and so
1005on.
1006
1007   At least three arguments are required.  REPOSITORY is needed to
1008identify the collection of source.  VENDORTAG is a tag for the entire
1009branch (e.g., for 1.1.1).  You must also specify at least one
1010RELEASETAG to uniquely identify the files at the leaves created each
1011time you execute `import'.  The RELEASETAG should be new, not
1012previously existing in the repository file, and uniquely identify the
1013imported release,
1014
1015   Note that `import' does _not_ change the directory in which you
1016invoke it.  In particular, it does not set up that directory as a CVS
1017working directory; if you want to work with the sources import them
1018first and then check them out into a different directory (*note Getting
1019the source::).
1020
1021* Menu:
1022
1023* import options::              import options
1024* import output::               import output
1025* import examples::             import examples
1026
1027
1028File: cvs.info,  Node: import options,  Next: import output,  Up: import
1029
1030A.14.1 import options
1031---------------------
1032
1033This standard option is supported by `import' (*note Common options::,
1034for a complete description):
1035
1036`-m MESSAGE'
1037     Use MESSAGE as log information, instead of invoking an editor.
1038
1039   There are the following additional special options.
1040
1041`-b BRANCH'
1042     See *Note Multiple vendor branches::.
1043
1044`-k SUBST'
1045     Indicate the keyword expansion mode desired.  This setting will
1046     apply to all files created during the import, but not to any files
1047     that previously existed in the repository.  See *Note Substitution
1048     modes::, for a list of valid `-k' settings.
1049
1050`-I NAME'
1051     Specify file names that should be ignored during import.  You can
1052     use this option repeatedly.  To avoid ignoring any files at all
1053     (even those ignored by default), specify `-I !'.
1054
1055     NAME can be a file name pattern of the same type that you can
1056     specify in the `.cvsignore' file.  *Note cvsignore::.
1057
1058`-W SPEC'
1059     Specify file names that should be filtered during import.  You can
1060     use this option repeatedly.
1061
1062     SPEC can be a file name pattern of the same type that you can
1063     specify in the `.cvswrappers' file. *Note Wrappers::.
1064
1065`-X'
1066     Modify the algorithm used by CVS when importing new files so that
1067     new files do not immediately appear on the main trunk.
1068
1069     Specifically, this flag causes CVS to mark new files as if they
1070     were deleted on the main trunk, by taking the following steps for
1071     each file in addition to those normally taken on import: creating
1072     a new revision on the main trunk indicating that the new file is
1073     `dead', resetting the new file's default branch, and placing the
1074     file in the Attic (*note Attic::) directory.
1075
1076     Use of this option can be forced on a repository-wide basis by
1077     setting the `ImportNewFilesToVendorBranchOnly' option in
1078     CVSROOT/config (*note config::).
1079
1080
1081File: cvs.info,  Node: import output,  Next: import examples,  Prev: import options,  Up: import
1082
1083A.14.2 import output
1084--------------------
1085
1086`import' keeps you informed of its progress by printing a line for each
1087file, preceded by one character indicating the status of the file:
1088
1089`U FILE'
1090     The file already exists in the repository and has not been locally
1091     modified; a new revision has been created (if necessary).
1092
1093`N FILE'
1094     The file is a new file which has been added to the repository.
1095
1096`C FILE'
1097     The file already exists in the repository but has been locally
1098     modified; you will have to merge the changes.
1099
1100`I FILE'
1101     The file is being ignored (*note cvsignore::).
1102
1103`L FILE'
1104     The file is a symbolic link; `cvs import' ignores symbolic links.
1105     People periodically suggest that this behavior should be changed,
1106     but if there is a consensus on what it should be changed to, it is
1107     not apparent.  (Various options in the `modules' file can be used
1108     to recreate symbolic links on checkout, update, etc.; *note
1109     modules::.)
1110
1111
1112File: cvs.info,  Node: import examples,  Prev: import output,  Up: import
1113
1114A.14.3 import examples
1115----------------------
1116
1117See *Note Tracking sources::, and *Note From files::.
1118
1119
1120File: cvs.info,  Node: log,  Next: ls & rls,  Prev: import,  Up: CVS commands
1121
1122A.15 log--Print out log information for files
1123=============================================
1124
1125   * Synopsis: log [options] [files...]
1126
1127   * Requires: repository, working directory.
1128
1129   * Changes: nothing.
1130
1131   Display log information for files.  `log' used to call the RCS
1132utility `rlog'.  Although this is no longer true in the current
1133sources, this history determines the format of the output and the
1134options, which are not quite in the style of the other CVS commands.
1135
1136   The output includes the location of the RCS file, the "head"
1137revision (the latest revision on the trunk), all symbolic names (tags)
1138and some other things.  For each revision, the revision number, the
1139date, the author, the number of lines added/deleted, the commitid and
1140the log message are printed.  All dates are displayed in local time at
1141the client. This is typically specified in the `$TZ' environment
1142variable, which can be set to govern how `log' displays dates.
1143
1144   *Note_ `log' uses `-R' in a way that conflicts with the normal use
1145inside CVS (*note Common options::).*
1146
1147* Menu:
1148
1149* log options::                 log options
1150* log examples::                log examples
1151
1152
1153File: cvs.info,  Node: log options,  Next: log examples,  Up: log
1154
1155A.15.1 log options
1156------------------
1157
1158By default, `log' prints all information that is available.  All other
1159options restrict the output.  Note that the revision selection options
1160(`-d', `-r', `-s', and `-w') have no effect, other than possibly
1161causing a search for files in Attic directories, when used in
1162conjunction with the options that restrict the output to only `log'
1163header fields (`-b', `-h', `-R', and `-t') unless the `-S' option is
1164also specified.
1165
1166`-b'
1167     Print information about the revisions on the default branch,
1168     normally the highest branch on the trunk.
1169
1170`-d DATES'
1171     Print information about revisions with a checkin date/time in the
1172     range given by the semicolon-separated list of dates.  The date
1173     formats accepted are those accepted by the `-D' option to many
1174     other CVS commands (*note Common options::).  Dates can be
1175     combined into ranges as follows:
1176
1177    `D1<D2'
1178    `D2>D1'
1179          Select the revisions that were deposited between D1 and D2.
1180
1181    `<D'
1182    `D>'
1183          Select all revisions dated D or earlier.
1184
1185    `D<'
1186    `>D'
1187          Select all revisions dated D or later.
1188
1189    `D'
1190          Select the single, latest revision dated D or earlier.
1191
1192     The `>' or `<' characters may be followed by `=' to indicate an
1193     inclusive range rather than an exclusive one.
1194
1195     Note that the separator is a semicolon (;).
1196
1197`-h'
1198     Print only the name of the RCS file, name of the file in the
1199     working directory, head, default branch, access list, locks,
1200     symbolic names, and suffix.
1201
1202`-l'
1203     Local; run only in current working directory.  (Default is to run
1204     recursively).
1205
1206`-N'
1207     Do not print the list of tags for this file.  This option can be
1208     very useful when your site uses a lot of tags, so rather than
1209     "more"'ing over 3 pages of tag information, the log information is
1210     presented without tags at all.
1211
1212`-R'
1213     Print only the name of the RCS file.
1214
1215`-rREVISIONS'
1216     Print information about revisions given in the comma-separated
1217     list REVISIONS of revisions and ranges.  The following table
1218     explains the available range formats:
1219
1220    `REV1:REV2'
1221          Revisions REV1 to REV2 (which must be on the same branch).
1222
1223    `REV1::REV2'
1224          The same, but excluding REV1.
1225
1226    `:REV'
1227    `::REV'
1228          Revisions from the beginning of the branch up to and
1229          including REV.
1230
1231    `REV:'
1232          Revisions starting with REV to the end of the branch
1233          containing REV.
1234
1235    `REV::'
1236          Revisions starting just after REV to the end of the branch
1237          containing REV.
1238
1239    `BRANCH'
1240          An argument that is a branch means all revisions on that
1241          branch.
1242
1243    `BRANCH1:BRANCH2'
1244    `BRANCH1::BRANCH2'
1245          A range of branches means all revisions on the branches in
1246          that range.
1247
1248    `BRANCH.'
1249          The latest revision in BRANCH.
1250
1251     A bare `-r' with no revisions means the latest revision on the
1252     default branch, normally the trunk.  There can be no space between
1253     the `-r' option and its argument.
1254
1255`-S'
1256     Suppress the header if no revisions are selected.
1257
1258`-s STATES'
1259     Print information about revisions whose state attributes match one
1260     of the states given in the comma-separated list STATES.
1261     Individual states may be any text string, though CVS commonly only
1262     uses two states, `Exp' and `dead'.  See *Note admin options:: for
1263     more information.
1264
1265`-t'
1266     Print the same as `-h', plus the descriptive text.
1267
1268`-wLOGINS'
1269     Print information about revisions checked in by users with login
1270     names appearing in the comma-separated list LOGINS.  If LOGINS is
1271     omitted, the user's login is assumed.  There can be no space
1272     between the `-w' option and its argument.
1273
1274   `log' prints the intersection of the revisions selected with the
1275options `-d', `-s', and `-w', intersected with the union of the
1276revisions selected by `-b' and `-r'.
1277
1278
1279File: cvs.info,  Node: log examples,  Prev: log options,  Up: log
1280
1281A.15.2 log examples
1282-------------------
1283
1284Since `log' shows dates in local time, you might want to see them in
1285Coordinated Universal Time (UTC) or some other timezone.  To do this
1286you can set your `$TZ' environment variable before invoking CVS:
1287
1288     $ TZ=UTC cvs log foo.c
1289     $ TZ=EST cvs log bar.c
1290
1291   (If you are using a `csh'-style shell, like `tcsh', you would need
1292to prefix the examples above with `env'.)
1293
1294
1295File: cvs.info,  Node: ls & rls,  Next: rdiff,  Prev: log,  Up: CVS commands
1296
1297A.16 ls & rls
1298=============
1299
1300   * ls [-e | -l] [-RP] [-r tag[:date]] [-D date] [path...]
1301
1302   * Requires: repository for `rls', repository & working directory for
1303     `ls'.
1304
1305   * Changes: nothing.
1306
1307   * Synonym: `dir' & `list' are synonyms for `ls' and `rdir' & `rlist'
1308     are synonyms for `rls'.
1309
1310   The `ls' and `rls' commands are used to list files and directories
1311in the repository.
1312
1313   By default `ls' lists the files and directories that belong in your
1314working directory, what would be there after an `update'.
1315
1316   By default `rls' lists the files and directories on the tip of the
1317trunk in the topmost directory of the repository.
1318
1319   Both commands accept an optional list of file and directory names,
1320relative to the working directory for `ls' and the topmost directory of
1321the repository for `rls'.  Neither is recursive by default.
1322
1323* Menu:
1324
1325* ls & rls options::         ls & rls options
1326* rls examples:              rls examples
1327
1328
1329File: cvs.info,  Node: ls & rls options,  Next: rls examples,  Up: ls & rls
1330
1331A.16.1 ls & rls options
1332-----------------------
1333
1334These standard options are supported by `ls' & `rls':
1335
1336`-d'
1337     Show dead revisions (with tag when specified).
1338
1339`-e'
1340     Display in CVS/Entries format.  This format is meant to remain
1341     easily parsable by automation.
1342
1343`-l'
1344     Display all details.
1345
1346`-P'
1347     Don't list contents of empty directories when recursing.
1348
1349`-R'
1350     List recursively.
1351
1352`-r TAG[:DATE]'
1353     Show files specified by TAG or, when DATE is specified and TAG is
1354     a branch tag, the version from the branch TAG as it existed on
1355     DATE.  See *Note Common options::.
1356
1357`-D DATE'
1358     Show files from date.
1359
1360
1361File: cvs.info,  Node: rls examples,  Prev: ls & rls options,  Up: ls & rls
1362
1363A.16.2 rls examples
1364-------------------
1365
1366     $ cvs rls
1367     cvs rls: Listing module: `.'
1368     CVSROOT
1369     first-dir
1370
1371     $ cvs rls CVSROOT
1372     cvs rls: Listing module: `CVSROOT'
1373     checkoutlist
1374     commitinfo
1375     config
1376     cvswrappers
1377     loginfo
1378     modules
1379     notify
1380     rcsinfo
1381     taginfo
1382     verifymsg
1383
1384
1385File: cvs.info,  Node: rdiff,  Next: release,  Prev: ls & rls,  Up: CVS commands
1386
1387A.17 rdiff--'patch' format diffs between releases
1388=================================================
1389
1390   * rdiff [-flags] [-V vn] (-r tag1[:date1] | -D date1) [-r
1391     tag2[:date2] | -D date2] modules...
1392
1393   * Requires: repository.
1394
1395   * Changes: nothing.
1396
1397   * Synonym: patch
1398
1399   Builds a Larry Wall format patch(1) file between two releases, that
1400can be fed directly into the `patch' program to bring an old release
1401up-to-date with the new release.  (This is one of the few CVS commands
1402that operates directly from the repository, and doesn't require a prior
1403checkout.) The diff output is sent to the standard output device.
1404
1405   You can specify (using the standard `-r' and `-D' options) any
1406combination of one or two revisions or dates.  If only one revision or
1407date is specified, the patch file reflects differences between that
1408revision or date and the current head revisions in the RCS file.
1409
1410   Note that if the software release affected is contained in more than
1411one directory, then it may be necessary to specify the `-p' option to
1412the `patch' command when patching the old sources, so that `patch' is
1413able to find the files that are located in other directories.
1414
1415* Menu:
1416
1417* rdiff options::               rdiff options
1418* rdiff examples::              rdiff examples
1419
1420
1421File: cvs.info,  Node: rdiff options,  Next: rdiff examples,  Up: rdiff
1422
1423A.17.1 rdiff options
1424--------------------
1425
1426These standard options are supported by `rdiff' (*note Common
1427options::, for a complete description of them):
1428
1429`-D DATE'
1430     Use the most recent revision no later than DATE.
1431
1432`-f'
1433     If no matching revision is found, retrieve the most recent
1434     revision (instead of ignoring the file).
1435
1436`-k KFLAG'
1437     Process keywords according to KFLAG.  See *Note Keyword
1438     substitution::.
1439
1440`-l'
1441     Local; don't descend subdirectories.
1442
1443`-R'
1444     Examine directories recursively.  This option is on by default.
1445
1446`-r TAG'
1447     Use the revision specified by TAG, or when DATE is specified and
1448     TAG is a branch tag, the version from the branch TAG as it existed
1449     on DATE.  See *Note Common options::.
1450
1451   In addition to the above, these options are available:
1452
1453`-c'
1454     Use the context diff format.  This is the default format.
1455
1456`-s'
1457     Create a summary change report instead of a patch.  The summary
1458     includes information about files that were changed or added
1459     between the releases.  It is sent to the standard output device.
1460     This is useful for finding out, for example, which files have
1461     changed between two dates or revisions.
1462
1463`-t'
1464     A diff of the top two revisions is sent to the standard output
1465     device.  This is most useful for seeing what the last change to a
1466     file was.
1467
1468`-u'
1469     Use the unidiff format for the context diffs.  Remember that old
1470     versions of the `patch' program can't handle the unidiff format,
1471     so if you plan to post this patch to the net you should probably
1472     not use `-u'.
1473
1474`-V VN'
1475     Expand keywords according to the rules current in RCS version VN
1476     (the expansion format changed with RCS version 5).  Note that this
1477     option is no longer accepted.  CVS will always expand keywords the
1478     way that RCS version 5 does.
1479
1480
1481File: cvs.info,  Node: rdiff examples,  Prev: rdiff options,  Up: rdiff
1482
1483A.17.2 rdiff examples
1484---------------------
1485
1486Suppose you receive mail from foo@example.net asking for an update from
1487release 1.2 to 1.4 of the tc compiler.  You have no such patches on
1488hand, but with CVS that can easily be fixed with a command such as this:
1489
1490     $ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \
1491     $$ Mail -s 'The patches you asked for' foo@example.net
1492
1493   Suppose you have made release 1.3, and forked a branch called
1494`R_1_3fix' for bug fixes.  `R_1_3_1' corresponds to release 1.3.1,
1495which was made some time ago.  Now, you want to see how much
1496development has been done on the branch.  This command can be used:
1497
1498     $ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
1499     cvs rdiff: Diffing module-name
1500     File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
1501     File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
1502     File bar.h,v changed from revision 1.29.2.1 to 1.2
1503
1504
1505File: cvs.info,  Node: release,  Next: server & pserver,  Prev: rdiff,  Up: CVS commands
1506
1507A.18 release--Indicate that a Module is no longer in use
1508========================================================
1509
1510   * release [-d] directories...
1511
1512   * Requires: Working directory.
1513
1514   * Changes: Working directory, history log.
1515
1516   This command is meant to safely cancel the effect of `cvs checkout'.
1517Since CVS doesn't lock files, it isn't strictly necessary to use this
1518command.  You can always simply delete your working directory, if you
1519like; but you risk losing changes you may have forgotten, and you leave
1520no trace in the CVS history file (*note history file::) that you've
1521abandoned your checkout.
1522
1523   Use `cvs release' to avoid these problems.  This command checks that
1524no uncommitted changes are present; that you are executing it from
1525immediately above a CVS working directory; and that the repository
1526recorded for your files is the same as the repository defined in the
1527module database.
1528
1529   If all these conditions are true, `cvs release' leaves a record of
1530its execution (attesting to your intentionally abandoning your
1531checkout) in the CVS history log.
1532
1533* Menu:
1534
1535* release options::             release options
1536* release output::              release output
1537* release examples::            release examples
1538
1539
1540File: cvs.info,  Node: release options,  Next: release output,  Up: release
1541
1542A.18.1 release options
1543----------------------
1544
1545The `release' command supports one command option:
1546
1547`-d'
1548     Delete your working copy of the file if the release succeeds.  If
1549     this flag is not given your files will remain in your working
1550     directory.
1551
1552     *WARNING:  The `release' command deletes all directories and files
1553     recursively.  This has the very serious side-effect that any
1554     directory that you have created inside your checked-out sources,
1555     and not added to the repository (using the `add' command; *note
1556     Adding files::) will be silently deleted--even if it is non-empty!*
1557
1558
1559File: cvs.info,  Node: release output,  Next: release examples,  Prev: release options,  Up: release
1560
1561A.18.2 release output
1562---------------------
1563
1564Before `release' releases your sources it will print a one-line message
1565for any file that is not up-to-date.
1566
1567`U FILE'
1568`P FILE'
1569     There exists a newer revision of this file in the repository, and
1570     you have not modified your local copy of the file (`U' and `P'
1571     mean the same thing).
1572
1573`A FILE'
1574     The file has been added to your private copy of the sources, but
1575     has not yet been committed to the repository.  If you delete your
1576     copy of the sources this file will be lost.
1577
1578`R FILE'
1579     The file has been removed from your private copy of the sources,
1580     but has not yet been removed from the repository, since you have
1581     not yet committed the removal.  *Note commit::.
1582
1583`M FILE'
1584     The file is modified in your working directory.  There might also
1585     be a newer revision inside the repository.
1586
1587`? FILE'
1588     FILE is in your working directory, but does not correspond to
1589     anything in the source repository, and is not in the list of files
1590     for CVS to ignore (see the description of the `-I' option, and
1591     *note cvsignore::).  If you remove your working sources, this file
1592     will be lost.
1593
1594
1595File: cvs.info,  Node: release examples,  Prev: release output,  Up: release
1596
1597A.18.3 release examples
1598-----------------------
1599
1600Release the `tc' directory, and delete your local working copy of the
1601files.
1602
1603     $ cd ..         # You must stand immediately above the
1604                     # sources when you issue `cvs release'.
1605     $ cvs release -d tc
1606     You have [0] altered files in this repository.
1607     Are you sure you want to release (and delete) directory `tc': y
1608     $
1609
1610
1611File: cvs.info,  Node: server & pserver,  Next: update,  Prev: release,  Up: CVS commands
1612
1613A.19 server & pserver--Act as a server for a client on stdin/stdout
1614===================================================================
1615
1616   * pserver [-c path]
1617
1618     server [-c path]
1619
1620   * Requires: repository, client conversation on stdin/stdout
1621
1622   * Changes: Repository or, indirectly, client working directory.
1623
1624   The CVS `server' and `pserver' commands are used to provide
1625repository access to remote clients and expect a client conversation on
1626stdin & stdout.  Typically these commands are launched from `inetd' or
1627via `ssh' (*note Remote repositories::).
1628
1629   `server' expects that the client has already been authenticated
1630somehow, typically via SSH, and `pserver' attempts to authenticate the
1631client itself.
1632
1633   Only one option is available with the `server' and `pserver'
1634commands:
1635
1636`-c path'
1637     Load configuration from PATH rather than the default location
1638     `$CVSROOT/CVSROOT/config' (*note config::).  PATH must be
1639     `/etc/cvs.conf' or prefixed by `/etc/cvs/'.  This option is
1640     supported beginning with CVS release 1.12.13.
1641
1642
1643File: cvs.info,  Node: update,  Prev: server & pserver,  Up: CVS commands
1644
1645A.20 update--Bring work tree in sync with repository
1646====================================================
1647
1648   * update [-ACdflPpR] [-I name] [-j rev [-j rev]] [-k kflag] [-r
1649     tag[:date] | -D date] [-W spec] files...
1650
1651   * Requires: repository, working directory.
1652
1653   * Changes: working directory.
1654
1655   After you've run checkout to create your private copy of source from
1656the common repository, other developers will continue changing the
1657central source.  From time to time, when it is convenient in your
1658development process, you can use the `update' command from within your
1659working directory to reconcile your work with any revisions applied to
1660the source repository since your last checkout or update.  Without the
1661`-C' option, `update' will also merge any differences between the local
1662copy of files and their base revisions into any destination revisions
1663specified with `-r', `-D', or `-A'.
1664
1665* Menu:
1666
1667* update options::              update options
1668* update output::               update output
1669
1670
1671File: cvs.info,  Node: update options,  Next: update output,  Up: update
1672
1673A.20.1 update options
1674---------------------
1675
1676These standard options are available with `update' (*note Common
1677options::, for a complete description of them):
1678
1679`-D date'
1680     Use the most recent revision no later than DATE.  This option is
1681     sticky, and implies `-P'.  See *Note Sticky tags::, for more
1682     information on sticky tags/dates.
1683
1684`-f'
1685     Only useful with the `-D' or `-r' flags.  If no matching revision
1686     is found, retrieve the most recent revision (instead of ignoring
1687     the file).
1688
1689`-k KFLAG'
1690     Process keywords according to KFLAG.  See *Note Keyword
1691     substitution::.  This option is sticky; future updates of this
1692     file in this working directory will use the same KFLAG.  The
1693     `status' command can be viewed to see the sticky options.  See
1694     *Note Invoking CVS::, for more information on the `status' command.
1695
1696`-l'
1697     Local; run only in current working directory.  *Note Recursive
1698     behavior::.
1699
1700`-P'
1701     Prune empty directories.  See *Note Moving directories::.
1702
1703`-p'
1704     Pipe files to the standard output.
1705
1706`-R'
1707     Update directories recursively (default).  *Note Recursive
1708     behavior::.
1709
1710`-r TAG[:DATE]'
1711     Retrieve the revisions specified by TAG or, when DATE is specified
1712     and TAG is a branch tag, the version from the branch TAG as it
1713     existed on DATE.  This option is sticky, and implies `-P'.  See
1714     *Note Sticky tags::, for more information on sticky tags/dates.
1715     Also see *Note Common options::.
1716
1717   These special options are also available with `update'.
1718
1719`-A'
1720     Reset any sticky tags, dates, or `-k' options.  See *Note Sticky
1721     tags::, for more information on sticky tags/dates.
1722
1723`-C'
1724     Overwrite locally modified files with clean copies from the
1725     repository (the modified file is saved in `.#FILE.REVISION',
1726     however).
1727
1728`-d'
1729     Create any directories that exist in the repository if they're
1730     missing from the working directory.  Normally, `update' acts only
1731     on directories and files that were already enrolled in your
1732     working directory.
1733
1734     This is useful for updating directories that were created in the
1735     repository since the initial checkout; but it has an unfortunate
1736     side effect.  If you deliberately avoided certain directories in
1737     the repository when you created your working directory (either
1738     through use of a module name or by listing explicitly the files
1739     and directories you wanted on the command line), then updating
1740     with `-d' will create those directories, which may not be what you
1741     want.
1742
1743`-I NAME'
1744     Ignore files whose names match NAME (in your working directory)
1745     during the update.  You can specify `-I' more than once on the
1746     command line to specify several files to ignore.  Use `-I !' to
1747     avoid ignoring any files at all.  *Note cvsignore::, for other
1748     ways to make CVS ignore some files.
1749
1750`-WSPEC'
1751     Specify file names that should be filtered during update.  You can
1752     use this option repeatedly.
1753
1754     SPEC can be a file name pattern of the same type that you can
1755     specify in the `.cvswrappers' file. *Note Wrappers::.
1756
1757`-jREVISION'
1758     With two `-j' options, merge changes from the revision specified
1759     with the first `-j' option to the revision specified with the
1760     second `j' option, into the working directory.
1761
1762     With one `-j' option, merge changes from the ancestor revision to
1763     the revision specified with the `-j' option, into the working
1764     directory.  The ancestor revision is the common ancestor of the
1765     revision which the working directory is based on, and the revision
1766     specified in the `-j' option.
1767
1768     Note that using a single `-j TAGNAME' option rather than `-j
1769     BRANCHNAME' to merge changes from a branch will often not remove
1770     files which were removed on the branch.  *Note Merging adds and
1771     removals::, for more.
1772
1773     In addition, each `-j' option can contain an optional date
1774     specification which, when used with branches, can limit the chosen
1775     revision to one within a specific date.  An optional date is
1776     specified by adding a colon (:) to the tag:
1777     `-jSYMBOLIC_TAG:DATE_SPECIFIER'.
1778
1779     *Note Branching and merging::.
1780
1781
1782
1783File: cvs.info,  Node: update output,  Prev: update options,  Up: update
1784
1785A.20.2 update output
1786--------------------
1787
1788`update' and `checkout' keep you informed of their progress by printing
1789a line for each file, preceded by one character indicating the status
1790of the file:
1791
1792`U FILE'
1793     The file was brought up to date with respect to the repository.
1794     This is done for any file that exists in the repository but not in
1795     your working directory, and for files that you haven't changed but
1796     are not the most recent versions available in the repository.
1797
1798`P FILE'
1799     Like `U', but the CVS server sends a patch instead of an entire
1800     file.  This accomplishes the same thing as `U' using less
1801     bandwidth.
1802
1803`A FILE'
1804     The file has been added to your private copy of the sources, and
1805     will be added to the source repository when you run `commit' on
1806     the file.  This is a reminder to you that the file needs to be
1807     committed.
1808
1809`R FILE'
1810     The file has been removed from your private copy of the sources,
1811     and will be removed from the source repository when you run
1812     `commit' on the file.  This is a reminder to you that the file
1813     needs to be committed.
1814
1815`M FILE'
1816     The file is modified in  your  working  directory.
1817
1818     `M' can indicate one of two states for a file you're working on:
1819     either there were no modifications to the same file in the
1820     repository, so that your file remains as you last saw it; or there
1821     were modifications in the repository as well as in your copy, but
1822     they were merged successfully, without conflict, in your working
1823     directory.
1824
1825     CVS will print some messages if it merges your work, and a backup
1826     copy of your working file (as it looked before you ran `update')
1827     will be made.  The exact name of that file is printed while
1828     `update' runs.
1829
1830`C FILE'
1831     A conflict was detected while trying to merge your changes to FILE
1832     with changes from the source repository.  FILE (the copy in your
1833     working directory) is now the result of attempting to merge the
1834     two revisions; an unmodified copy of your file is also in your
1835     working directory, with the name `.#FILE.REVISION' where REVISION
1836     is the revision that your modified file started from.  Resolve the
1837     conflict as described in *Note Conflicts example::.  (Note that
1838     some systems automatically purge files that begin with `.#' if
1839     they have not been accessed for a few days.  If you intend to keep
1840     a copy of your original file, it is a very good idea to rename
1841     it.)  Under VMS, the file name starts with `__' rather than `.#'.
1842
1843`? FILE'
1844     FILE is in your working directory, but does not correspond to
1845     anything in the source repository, and is not in the list of files
1846     for CVS to ignore (see the description of the `-I' option, and
1847     *note cvsignore::).
1848
1849
1850File: cvs.info,  Node: Invoking CVS,  Next: Administrative files,  Prev: CVS commands,  Up: Top
1851
1852Appendix B Quick reference to CVS commands
1853******************************************
1854
1855This appendix describes how to invoke CVS, with references to where
1856each command or feature is described in detail.  For other references
1857run the `cvs --help' command, or see *Note Index::.
1858
1859   A CVS command looks like:
1860
1861     cvs [ GLOBAL_OPTIONS ] COMMAND [ COMMAND_OPTIONS ] [ COMMAND_ARGS ]
1862
1863   Global options:
1864
1865`--allow-root=ROOTDIR'
1866     Specify legal CVSROOT directory (server only) (not in CVS 1.9 and
1867     older).  See *Note Password authentication server::.
1868
1869`-a'
1870     Authenticate all communication (client only) (not in CVS 1.9 and
1871     older).  See *Note Global options::.
1872
1873`-b'
1874     Specify RCS location (CVS 1.9 and older).  See *Note Global
1875     options::.
1876
1877`-d ROOT'
1878     Specify the CVSROOT.  See *Note Repository::.
1879
1880`-e EDITOR'
1881     Edit messages with EDITOR.  See *Note Committing your changes::.
1882
1883`-f'
1884     Do not read the `~/.cvsrc' file.  See *Note Global options::.
1885
1886`-H'
1887`--help'
1888     Print a help message.  See *Note Global options::.
1889
1890`-n'
1891     Do not change any files.  See *Note Global options::.
1892
1893`-Q'
1894     Be really quiet.  See *Note Global options::.
1895
1896`-q'
1897     Be somewhat quiet.  See *Note Global options::.
1898
1899`-r'
1900     Make new working files read-only.  See *Note Global options::.
1901
1902`-s VARIABLE=VALUE'
1903     Set a user variable.  See *Note Variables::.
1904
1905`-T TEMPDIR'
1906     Put temporary files in TEMPDIR.  See *Note Global options::.
1907
1908`-t'
1909     Trace CVS execution.  See *Note Global options::.
1910
1911`-v'
1912
1913`--version'
1914     Display version and copyright information for CVS.
1915
1916`-w'
1917     Make new working files read-write.  See *Note Global options::.
1918
1919`-x'
1920     Encrypt all communication (client only).  See *Note Global
1921     options::.
1922
1923`-z GZIP-LEVEL'
1924     Set the compression level (client only).  See *Note Global
1925     options::.
1926
1927   Keyword expansion modes (*note Substitution modes::):
1928
1929     -kkv  $Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp $
1930     -kkvl $Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
1931     -kk   $Id$
1932     -kv   file1,v 1.1 1993/12/09 03:21:13 joe Exp
1933     -ko   no expansion
1934     -kb   no expansion, file is binary
1935
1936   Keywords (*note Keyword list::):
1937
1938     $Author: joe $
1939     $Date: 1993/12/09 03:21:13 $
1940     $CVSHeader: files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
1941     $Header: /home/files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
1942     $Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
1943     $Locker: harry $
1944     $Name: snapshot_1_14 $
1945     $RCSfile: file1,v $
1946     $Revision: 1.1 $
1947     $Source: /home/files/file1,v $
1948     $State: Exp $
1949     $Log: file1,v $
1950     Revision 1.1  1993/12/09 03:30:17  joe
1951     Initial revision
1952
1953   Commands, command options, and command arguments:
1954
1955`add [OPTIONS] [FILES...]'
1956     Add a new file/directory.  See *Note Adding files::.
1957
1958    `-k KFLAG'
1959          Set keyword expansion.
1960
1961    `-m MSG'
1962          Set file description.
1963
1964`admin [OPTIONS] [FILES...]'
1965     Administration of history files in the repository.  See *Note
1966     admin::.
1967
1968    `-b[REV]'
1969          Set default branch.  See *Note Reverting local changes::.
1970
1971    `-cSTRING'
1972          Set comment leader.
1973
1974    `-kSUBST'
1975          Set keyword substitution.  See *Note Keyword substitution::.
1976
1977    `-l[REV]'
1978          Lock revision REV, or latest revision.
1979
1980    `-mREV:MSG'
1981          Replace the log message of revision REV with MSG.
1982
1983    `-oRANGE'
1984          Delete revisions from the repository.  See *Note admin
1985          options::.
1986
1987    `-q'
1988          Run quietly; do not print diagnostics.
1989
1990    `-sSTATE[:REV]'
1991          Set the state.  See *Note admin options:: for more
1992          information on possible states.
1993
1994    `-t'
1995          Set file description from standard input.
1996
1997    `-tFILE'
1998          Set file description from FILE.
1999
2000    `-t-STRING'
2001          Set file description to STRING.
2002
2003    `-u[REV]'
2004          Unlock revision REV, or latest revision.
2005
2006`annotate [OPTIONS] [FILES...]'
2007     Show last revision where each line was modified.  See *Note
2008     annotate::.
2009
2010    `-D DATE'
2011          Annotate the most recent revision no later than DATE.  See
2012          *Note Common options::.
2013
2014    `-F'
2015          Force annotation of binary files.  (Without this option,
2016          binary files are skipped with a message.)
2017
2018    `-f'
2019          Use head revision if tag/date not found.  See *Note Common
2020          options::.
2021
2022    `-l'
2023          Local; run only in current working directory.  *Note
2024          Recursive behavior::.
2025
2026    `-R'
2027          Operate recursively (default).  *Note Recursive behavior::.
2028
2029    `-r TAG[:DATE]'
2030          Annotate revisions specified by TAG or, when DATE is specified
2031          and TAG is a branch tag, the version from the branch TAG as it
2032          existed on DATE.  See *Note Common options::.
2033
2034`checkout [OPTIONS] MODULES...'
2035     Get a copy of the sources.  See *Note checkout::.
2036
2037    `-A'
2038          Reset any sticky tags/date/options.  See *Note Sticky tags::
2039          and *Note Keyword substitution::.
2040
2041    `-c'
2042          Output the module database.  See *Note checkout options::.
2043
2044    `-D DATE'
2045          Check out revisions as of DATE (is sticky).  See *Note Common
2046          options::.
2047
2048    `-d DIR'
2049          Check out into DIR.  See *Note checkout options::.
2050
2051    `-f'
2052          Use head revision if tag/date not found.  See *Note Common
2053          options::.
2054
2055    `-j TAG[:DATE]'
2056          Merge in the change specified by TAG, or when DATE is
2057          specified and TAG is a branch tag, the version from the
2058          branch TAG as it existed on DATE.  See *Note checkout
2059          options::.
2060
2061    `-k KFLAG'
2062          Use KFLAG keyword expansion.  See *Note Substitution modes::.
2063
2064    `-l'
2065          Local; run only in current working directory.  *Note
2066          Recursive behavior::.
2067
2068    `-N'
2069          Don't "shorten" module paths if -d specified.  See *Note
2070          checkout options::.
2071
2072    `-n'
2073          Do not run module program (if any).  See *Note checkout
2074          options::.
2075
2076    `-P'
2077          Prune empty directories.  See *Note Moving directories::.
2078
2079    `-p'
2080          Check out files to standard output (avoids stickiness).  See
2081          *Note checkout options::.
2082
2083    `-R'
2084          Operate recursively (default).  *Note Recursive behavior::.
2085
2086    `-r TAG[:DATE]'
2087          Checkout the revision already tagged with TAG or, when DATE is
2088          specified and TAG is a branch tag, the version from the
2089          branch TAG as it existed on DATE.  This .  See *Note Common
2090          options::.
2091
2092    `-s'
2093          Like -c, but include module status.  See *Note checkout
2094          options::.
2095
2096`commit [OPTIONS] [FILES...]'
2097     Check changes into the repository.  See *Note commit::.
2098
2099    `-c'
2100          Check for valid edits before committing.  Requires a CVS
2101          client and server both version 1.12.10 or greater.
2102
2103    `-F FILE'
2104          Read log message from FILE.  See *Note commit options::.
2105
2106    `-f'
2107          Force the file to be committed; disables recursion.  See
2108          *Note commit options::.
2109
2110    `-l'
2111          Local; run only in current working directory.  See *Note
2112          Recursive behavior::.
2113
2114    `-m MSG'
2115          Use MSG as log message.  See *Note commit options::.
2116
2117    `-n'
2118          Do not run module program (if any).  See *Note commit
2119          options::.
2120
2121    `-R'
2122          Operate recursively (default).  *Note Recursive behavior::.
2123
2124    `-r REV'
2125          Commit to REV.  See *Note commit options::.
2126
2127`diff [OPTIONS] [FILES...]'
2128     Show differences between revisions.  See *Note diff::.  In
2129     addition to the options shown below, accepts a wide variety of
2130     options to control output style, for example `-c' for context
2131     diffs.
2132
2133    `-D DATE1'
2134          Diff revision for date against working file.  See *Note diff
2135          options::.
2136
2137    `-D DATE2'
2138          Diff REV1/DATE1 against DATE2.  See *Note diff options::.
2139
2140    `-l'
2141          Local; run only in current working directory.  See *Note
2142          Recursive behavior::.
2143
2144    `-N'
2145          Include diffs for added and removed files.  See *Note diff
2146          options::.
2147
2148    `-R'
2149          Operate recursively (default).  *Note Recursive behavior::.
2150
2151    `-r TAG1[:DATE1]'
2152          Diff the revisions specified by TAG1 or, when DATE1 is
2153          specified and TAG1 is a branch tag, the version from the
2154          branch TAG1 as it existed on DATE1, against the working file.
2155          See *Note diff options:: and *Note Common options::.
2156
2157    `-r TAG2[:DATE2]'
2158          Diff the revisions specified by TAG2 or, when DATE2 is
2159          specified and TAG2 is a branch tag, the version from the
2160          branch TAG2 as it existed on DATE2, against REV1/DATE1.  See
2161          *Note diff options:: and *Note Common options::.
2162
2163`edit [OPTIONS] [FILES...]'
2164     Get ready to edit a watched file.  See *Note Editing files::.
2165
2166    `-a ACTIONS'
2167          Specify actions for temporary watch, where ACTIONS is `edit',
2168          `unedit', `commit', `all', or `none'.  See *Note Editing
2169          files::.
2170
2171    `-c'
2172          Check edits: Edit fails if someone else is already editting
2173          the file.  Requires a CVS client and server both of version
2174          1.12.10 or greater.
2175
2176    `-f'
2177          Force edit; ignore other edits.  Added in CVS 1.12.10.
2178
2179    `-l'
2180          Local; run only in current working directory.  See *Note
2181          Recursive behavior::.
2182
2183    `-R'
2184          Operate recursively (default).  *Note Recursive behavior::.
2185
2186`editors [OPTIONS] [FILES...]'
2187     See who is editing a watched file.  See *Note Watch information::.
2188
2189    `-l'
2190          Local; run only in current working directory.  See *Note
2191          Recursive behavior::.
2192
2193    `-R'
2194          Operate recursively (default).  *Note Recursive behavior::.
2195
2196`export [OPTIONS] MODULES...'
2197     Export files from CVS.  See *Note export::.
2198
2199    `-D DATE'
2200          Check out revisions as of DATE.  See *Note Common options::.
2201
2202    `-d DIR'
2203          Check out into DIR.  See *Note export options::.
2204
2205    `-f'
2206          Use head revision if tag/date not found.  See *Note Common
2207          options::.
2208
2209    `-k KFLAG'
2210          Use KFLAG keyword expansion.  See *Note Substitution modes::.
2211
2212    `-l'
2213          Local; run only in current working directory.  *Note
2214          Recursive behavior::.
2215
2216    `-N'
2217          Don't "shorten" module paths if -d specified.  See *Note
2218          export options::.
2219
2220    `-n'
2221          Do not run module program (if any).  See *Note export
2222          options::.
2223
2224    `-R'
2225          Operate recursively (default).  *Note Recursive behavior::.
2226
2227    `-r TAG[:DATE]'
2228          Export the revisions specified by TAG or, when DATE is
2229          specified and TAG is a branch tag, the version from the
2230          branch TAG as it existed on DATE.  See *Note Common options::.
2231
2232`history [OPTIONS] [FILES...]'
2233     Show repository access history.  See *Note history::.
2234
2235    `-a'
2236          All users (default is self).  See *Note history options::.
2237
2238    `-b STR'
2239          Back to record with STR in module/file/repos field.  See
2240          *Note history options::.
2241
2242    `-c'
2243          Report on committed (modified) files.  See *Note history
2244          options::.
2245
2246    `-D DATE'
2247          Since DATE.  See *Note history options::.
2248
2249    `-e'
2250          Report on all record types.  See *Note history options::.
2251
2252    `-l'
2253          Last modified (committed or modified report).  See *Note
2254          history options::.
2255
2256    `-m MODULE'
2257          Report on MODULE (repeatable).  See *Note history options::.
2258
2259    `-n MODULE'
2260          In MODULE.  See *Note history options::.
2261
2262    `-o'
2263          Report on checked out modules.  See *Note history options::.
2264
2265    `-p REPOSITORY'
2266          In REPOSITORY.  See *Note history options::.
2267
2268    `-r REV'
2269          Since revision REV.  See *Note history options::.
2270
2271    `-T'
2272          Produce report on all TAGs.  See *Note history options::.
2273
2274    `-t TAG'
2275          Since tag record placed in history file (by anyone).  See
2276          *Note history options::.
2277
2278    `-u USER'
2279          For user USER (repeatable).  See *Note history options::.
2280
2281    `-w'
2282          Working directory must match.  See *Note history options::.
2283
2284    `-x TYPES'
2285          Report on TYPES, one or more of `TOEFWUPCGMAR'.  See *Note
2286          history options::.
2287
2288    `-z ZONE'
2289          Output for time zone ZONE.  See *Note history options::.
2290
2291`import [OPTIONS] REPOSITORY VENDOR-TAG RELEASE-TAGS...'
2292     Import files into CVS, using vendor branches.  See *Note import::.
2293
2294    `-b BRA'
2295          Import to vendor branch BRA.  See *Note Multiple vendor
2296          branches::.
2297
2298    `-d'
2299          Use the file's modification time as the time of import.  See
2300          *Note import options::.
2301
2302    `-k KFLAG'
2303          Set default keyword substitution mode.  See *Note import
2304          options::.
2305
2306    `-m MSG'
2307          Use MSG for log message.  See *Note import options::.
2308
2309    `-I IGN'
2310          More files to ignore (! to reset).  See *Note import
2311          options::.
2312
2313    `-W SPEC'
2314          More wrappers.  See *Note import options::.
2315
2316`init'
2317     Create a CVS repository if it doesn't exist.  See *Note Creating a
2318     repository::.
2319
2320`kserver'
2321     Kerberos authenticated server.  See *Note Kerberos authenticated::.
2322
2323`log [OPTIONS] [FILES...]'
2324     Print out history information for files.  See *Note log::.
2325
2326    `-b'
2327          Only list revisions on the default branch.  See *Note log
2328          options::.
2329
2330    `-d DATES'
2331          Specify dates (D1<D2 for range, D for latest before).  See
2332          *Note log options::.
2333
2334    `-h'
2335          Only print header.  See *Note log options::.
2336
2337    `-l'
2338          Local; run only in current working directory.  See *Note
2339          Recursive behavior::.
2340
2341    `-N'
2342          Do not list tags.  See *Note log options::.
2343
2344    `-R'
2345          Only print name of RCS file.  See *Note log options::.
2346
2347    `-rREVS'
2348          Only list revisions REVS.  See *Note log options::.
2349
2350    `-s STATES'
2351          Only list revisions with specified states.  See *Note log
2352          options::.
2353
2354    `-t'
2355          Only print header and descriptive text.  See *Note log
2356          options::.
2357
2358    `-wLOGINS'
2359          Only list revisions checked in by specified logins.  See
2360          *Note log options::.
2361
2362`login'
2363     Prompt for password for authenticating server.  See *Note Password
2364     authentication client::.
2365
2366`logout'
2367     Remove stored password for authenticating server.  See *Note
2368     Password authentication client::.
2369
2370`pserver'
2371     Password authenticated server.  See *Note Password authentication
2372     server::.
2373
2374`rannotate [OPTIONS] [MODULES...]'
2375     Show last revision where each line was modified.  See *Note
2376     annotate::.
2377
2378    `-D DATE'
2379          Annotate the most recent revision no later than DATE.  See
2380          *Note Common options::.
2381
2382    `-F'
2383          Force annotation of binary files.  (Without this option,
2384          binary files are skipped with a message.)
2385
2386    `-f'
2387          Use head revision if tag/date not found.  See *Note Common
2388          options::.
2389
2390    `-l'
2391          Local; run only in current working directory.  *Note
2392          Recursive behavior::.
2393
2394    `-R'
2395          Operate recursively (default).  *Note Recursive behavior::.
2396
2397    `-r TAG[:DATE]'
2398          Annotate the revision specified by TAG or, when DATE is
2399          specified and TAG is a branch tag, the version from the
2400          branch TAG as it existed on DATE.  See *Note Common options::.
2401
2402`rdiff [OPTIONS] MODULES...'
2403     Show differences between releases.  See *Note rdiff::.
2404
2405    `-c'
2406          Context diff output format (default).  See *Note rdiff
2407          options::.
2408
2409    `-D DATE'
2410          Select revisions based on DATE.  See *Note Common options::.
2411
2412    `-f'
2413          Use head revision if tag/date not found.  See *Note Common
2414          options::.
2415
2416    `-l'
2417          Local; run only in current working directory.  See *Note
2418          Recursive behavior::.
2419
2420    `-R'
2421          Operate recursively (default).  *Note Recursive behavior::.
2422
2423    `-r TAG[:DATE]'
2424          Select the revisions specified by TAG or, when DATE is
2425          specified and TAG is a branch tag, the version from the
2426          branch TAG as it existed on DATE.  See *Note diff options::
2427          and *Note Common options::.
2428
2429    `-s'
2430          Short patch - one liner per file.  See *Note rdiff options::.
2431
2432    `-t'
2433          Top two diffs - last change made to the file.  See *Note diff
2434          options::.
2435
2436    `-u'
2437          Unidiff output format.  See *Note rdiff options::.
2438
2439    `-V VERS'
2440          Use RCS Version VERS for keyword expansion (obsolete).  See
2441          *Note rdiff options::.
2442
2443`release [OPTIONS] DIRECTORY'
2444     Indicate that a directory is no longer in use.  See *Note
2445     release::.
2446
2447    `-d'
2448          Delete the given directory.  See *Note release options::.
2449
2450`remove [OPTIONS] [FILES...]'
2451     Remove an entry from the repository.  See *Note Removing files::.
2452
2453    `-f'
2454          Delete the file before removing it.  See *Note Removing
2455          files::.
2456
2457    `-l'
2458          Local; run only in current working directory.  See *Note
2459          Recursive behavior::.
2460
2461    `-R'
2462          Operate recursively (default).  *Note Recursive behavior::.
2463
2464`rlog [OPTIONS] [FILES...]'
2465     Print out history information for modules.  See *Note log::.
2466
2467    `-b'
2468          Only list revisions on the default branch.  See *Note log
2469          options::.
2470
2471    `-d DATES'
2472          Specify dates (D1<D2 for range, D for latest before).  See
2473          *Note log options::.
2474
2475    `-h'
2476          Only print header.  See *Note log options::.
2477
2478    `-l'
2479          Local; run only in current working directory.  See *Note
2480          Recursive behavior::.
2481
2482    `-N'
2483          Do not list tags.  See *Note log options::.
2484
2485    `-R'
2486          Only print name of RCS file.  See *Note log options::.
2487
2488    `-rREVS'
2489          Only list revisions REVS.  See *Note log options::.
2490
2491    `-s STATES'
2492          Only list revisions with specified states.  See *Note log
2493          options::.
2494
2495    `-t'
2496          Only print header and descriptive text.  See *Note log
2497          options::.
2498
2499    `-wLOGINS'
2500          Only list revisions checked in by specified logins.  See
2501          *Note log options::.
2502
2503`rtag [OPTIONS] TAG MODULES...'
2504     Add a symbolic tag to a module.  See *Note Revisions:: and *Note
2505     Branching and merging::.
2506
2507    `-a'
2508          Clear tag from removed files that would not otherwise be
2509          tagged.  See *Note Tagging add/remove::.
2510
2511    `-b'
2512          Create a branch named TAG.  See *Note Branching and merging::.
2513
2514    `-B'
2515          Used in conjunction with -F or -d, enables movement and
2516          deletion of branch tags.  Use with extreme caution.
2517
2518    `-D DATE'
2519          Tag revisions as of DATE.  See *Note Tagging by date/tag::.
2520
2521    `-d'
2522          Delete TAG.  See *Note Modifying tags::.
2523
2524    `-F'
2525          Move TAG if it already exists.  See *Note Modifying tags::.
2526
2527    `-f'
2528          Force a head revision match if tag/date not found.  See *Note
2529          Tagging by date/tag::.
2530
2531    `-l'
2532          Local; run only in current working directory.  See *Note
2533          Recursive behavior::.
2534
2535    `-n'
2536          No execution of tag program.  See *Note Common options::.
2537
2538    `-R'
2539          Operate recursively (default).  *Note Recursive behavior::.
2540
2541    `-r TAG[:DATE]'
2542          Tag the revision already tagged with TAG or, when DATE is
2543          specified and TAG is a branch tag, the version from the
2544          branch TAG as it existed on DATE.  See *Note Tagging by
2545          date/tag:: and *Note Common options::.
2546
2547`server'
2548     Rsh server.  See *Note Connecting via rsh::.
2549
2550`status [OPTIONS] FILES...'
2551     Display status information in a working directory.  See *Note File
2552     status::.
2553
2554    `-l'
2555          Local; run only in current working directory.  See *Note
2556          Recursive behavior::.
2557
2558    `-R'
2559          Operate recursively (default).  *Note Recursive behavior::.
2560
2561    `-v'
2562          Include tag information for file.  See *Note Tags::.
2563
2564`tag [OPTIONS] TAG [FILES...]'
2565     Add a symbolic tag to checked out version of files.  See *Note
2566     Revisions:: and *Note Branching and merging::.
2567
2568    `-b'
2569          Create a branch named TAG.  See *Note Branching and merging::.
2570
2571    `-c'
2572          Check that working files are unmodified.  See *Note Tagging
2573          the working directory::.
2574
2575    `-D DATE'
2576          Tag revisions as of DATE.  See *Note Tagging by date/tag::.
2577
2578    `-d'
2579          Delete TAG.  See *Note Modifying tags::.
2580
2581    `-F'
2582          Move TAG if it already exists.  See *Note Modifying tags::.
2583
2584    `-f'
2585          Force a head revision match if tag/date not found.  See *Note
2586          Tagging by date/tag::.
2587
2588    `-l'
2589          Local; run only in current working directory.  See *Note
2590          Recursive behavior::.
2591
2592    `-R'
2593          Operate recursively (default).  *Note Recursive behavior::.
2594
2595    `-r TAG[:DATE]'
2596          Tag the revision already tagged with TAG, or when DATE is
2597          specified and TAG is a branch tag, the version from the
2598          branch TAG as it existed on DATE.  See *Note Tagging by
2599          date/tag:: and *Note Common options::.
2600
2601`unedit [OPTIONS] [FILES...]'
2602     Undo an edit command.  See *Note Editing files::.
2603
2604    `-l'
2605          Local; run only in current working directory.  See *Note
2606          Recursive behavior::.
2607
2608    `-R'
2609          Operate recursively (default).  *Note Recursive behavior::.
2610
2611`update [OPTIONS] [FILES...]'
2612     Bring work tree in sync with repository.  See *Note update::.
2613
2614    `-A'
2615          Reset any sticky tags/date/options.  See *Note Sticky tags::
2616          and *Note Keyword substitution::.
2617
2618    `-C'
2619          Overwrite locally modified files with clean copies from the
2620          repository (the modified file is saved in `.#FILE.REVISION',
2621          however).
2622
2623    `-D DATE'
2624          Check out revisions as of DATE (is sticky).  See *Note Common
2625          options::.
2626
2627    `-d'
2628          Create directories.  See *Note update options::.
2629
2630    `-f'
2631          Use head revision if tag/date not found.  See *Note Common
2632          options::.
2633
2634    `-I IGN'
2635          More files to ignore (! to reset).  See *Note import
2636          options::.
2637
2638    `-j TAG[:DATE]'
2639          Merge in changes from revisions specified by TAG or, when
2640          DATE is specified and TAG is a branch tag, the version from
2641          the branch TAG as it existed on DATE.  See *Note update
2642          options::.
2643
2644    `-k KFLAG'
2645          Use KFLAG keyword expansion.  See *Note Substitution modes::.
2646
2647    `-l'
2648          Local; run only in current working directory.  *Note
2649          Recursive behavior::.
2650
2651    `-P'
2652          Prune empty directories.  See *Note Moving directories::.
2653
2654    `-p'
2655          Check out files to standard output (avoids stickiness).  See
2656          *Note update options::.
2657
2658    `-R'
2659          Operate recursively (default).  *Note Recursive behavior::.
2660
2661    `-r TAG[:DATE]'
2662          Checkout the revisions specified by TAG or, when DATE is
2663          specified and TAG is a branch tag, the version from the
2664          branch TAG as it existed on DATE.  See *Note Common options::.
2665
2666    `-W SPEC'
2667          More wrappers.  See *Note import options::.
2668
2669`version'
2670     Display the version of CVS being used.  If the repository is
2671     remote, display both the client and server versions.
2672
2673`watch [on|off|add|remove] [OPTIONS] [FILES...]'
2674     on/off: turn on/off read-only checkouts of files.  See *Note
2675     Setting a watch::.
2676
2677     add/remove: add or remove notification on actions.  See *Note
2678     Getting Notified::.
2679
2680    `-a ACTIONS'
2681          Specify actions for temporary watch, where ACTIONS is `edit',
2682          `unedit', `commit', `all', or `none'.  See *Note Editing
2683          files::.
2684
2685    `-l'
2686          Local; run only in current working directory.  See *Note
2687          Recursive behavior::.
2688
2689    `-R'
2690          Operate recursively (default).  *Note Recursive behavior::.
2691
2692`watchers [OPTIONS] [FILES...]'
2693     See who is watching a file.  See *Note Watch information::.
2694
2695    `-l'
2696          Local; run only in current working directory.  See *Note
2697          Recursive behavior::.
2698
2699    `-R'
2700          Operate recursively (default).  *Note Recursive behavior::.
2701
2702
2703
2704File: cvs.info,  Node: Administrative files,  Next: Environment variables,  Prev: Invoking CVS,  Up: Top
2705
2706Appendix C Reference manual for Administrative files
2707****************************************************
2708
2709Inside the repository, in the directory `$CVSROOT/CVSROOT', there are a
2710number of supportive files for CVS.  You can use CVS in a limited
2711fashion without any of them, but if they are set up properly they can
2712help make life easier.  For a discussion of how to edit them, see *Note
2713Intro administrative files::.
2714
2715   The most important of these files is the `modules' file, which
2716defines the modules inside the repository.
2717
2718* Menu:
2719
2720* modules::                     Defining modules
2721* Wrappers::                    Specify binary-ness based on file name
2722* Trigger Scripts::		Launch scripts in response to server events
2723* rcsinfo::                     Templates for the log messages
2724* cvsignore::                   Ignoring files via cvsignore
2725* checkoutlist::                Adding your own administrative files
2726* history file::                History information
2727* Variables::                   Various variables are expanded
2728* config::                      Miscellaneous CVS configuration
2729
2730
2731File: cvs.info,  Node: modules,  Next: Wrappers,  Up: Administrative files
2732
2733C.1 The modules file
2734====================
2735
2736The `modules' file records your definitions of names for collections of
2737source code.  CVS will use these definitions if you use CVS to update
2738the modules file (use normal commands like `add', `commit', etc).
2739
2740   The `modules' file may contain blank lines and comments (lines
2741beginning with `#') as well as module definitions.  Long lines can be
2742continued on the next line by specifying a backslash (`\') as the last
2743character on the line.
2744
2745   There are three basic types of modules: alias modules, regular
2746modules, and ampersand modules.  The difference between them is the way
2747that they map files in the repository to files in the working
2748directory.  In all of the following examples, the top-level repository
2749contains a directory called `first-dir', which contains two files,
2750`file1' and `file2', and a directory `sdir'.  `first-dir/sdir' contains
2751a file `sfile'.
2752
2753* Menu:
2754
2755* Alias modules::             The simplest kind of module
2756* Regular modules::
2757* Ampersand modules::
2758* Excluding directories::     Excluding directories from a module
2759* Module options::            Regular and ampersand modules can take options
2760* Module program options::    How the modules ``program options'' programs
2761                              are run.
2762
2763
2764File: cvs.info,  Node: Alias modules,  Next: Regular modules,  Up: modules
2765
2766C.1.1 Alias modules
2767-------------------
2768
2769Alias modules are the simplest kind of module:
2770
2771`MNAME -a ALIASES...'
2772     This represents the simplest way of defining a module MNAME.  The
2773     `-a' flags the definition as a simple alias: CVS will treat any
2774     use of MNAME (as a command argument) as if the list of names
2775     ALIASES had been specified instead.  ALIASES may contain either
2776     other module names or paths.  When you use paths in aliases,
2777     `checkout' creates all intermediate directories in the working
2778     directory, just as if the path had been specified explicitly in
2779     the CVS arguments.
2780
2781   For example, if the modules file contains:
2782
2783     amodule -a first-dir
2784
2785then the following two commands are equivalent:
2786
2787     $ cvs co amodule
2788     $ cvs co first-dir
2789
2790and they each would provide output such as:
2791
2792     cvs checkout: Updating first-dir
2793     U first-dir/file1
2794     U first-dir/file2
2795     cvs checkout: Updating first-dir/sdir
2796     U first-dir/sdir/sfile
2797
2798
2799File: cvs.info,  Node: Regular modules,  Next: Ampersand modules,  Prev: Alias modules,  Up: modules
2800
2801C.1.2 Regular modules
2802---------------------
2803
2804`MNAME [ options ] DIR [ FILES... ]'
2805     In the simplest case, this form of module definition reduces to
2806     `MNAME DIR'.  This defines all the files in directory DIR as
2807     module mname.  DIR is a relative path (from `$CVSROOT') to a
2808     directory of source in the source repository.  In this case, on
2809     checkout, a single directory called MNAME is created as a working
2810     directory; no intermediate directory levels are used by default,
2811     even if DIR was a path involving several directory levels.
2812
2813   For example, if a module is defined by:
2814
2815     regmodule first-dir
2816
2817then regmodule will contain the files from first-dir:
2818
2819     $ cvs co regmodule
2820     cvs checkout: Updating regmodule
2821     U regmodule/file1
2822     U regmodule/file2
2823     cvs checkout: Updating regmodule/sdir
2824     U regmodule/sdir/sfile
2825     $
2826
2827   By explicitly specifying files in the module definition after DIR,
2828you can select particular files from directory DIR.  Here is an example:
2829
2830     regfiles first-dir/sdir sfile
2831
2832With this definition, getting the regfiles module will create a single
2833working directory `regfiles' containing the file listed, which comes
2834from a directory deeper in the CVS source repository:
2835
2836     $ cvs co regfiles
2837     U regfiles/sfile
2838     $
2839
2840
2841File: cvs.info,  Node: Ampersand modules,  Next: Excluding directories,  Prev: Regular modules,  Up: modules
2842
2843C.1.3 Ampersand modules
2844-----------------------
2845
2846A module definition can refer to other modules by including `&MODULE'
2847in its definition.
2848     MNAME [ options ] &MODULE...
2849
2850   Then getting the module creates a subdirectory for each such module,
2851in the directory containing the module.  For example, if modules
2852contains
2853
2854     ampermod &first-dir
2855
2856then a checkout will create an `ampermod' directory which contains a
2857directory called `first-dir', which in turns contains all the
2858directories and files which live there.  For example, the command
2859
2860     $ cvs co ampermod
2861
2862will create the following files:
2863
2864     ampermod/first-dir/file1
2865     ampermod/first-dir/file2
2866     ampermod/first-dir/sdir/sfile
2867
2868   There is one quirk/bug: the messages that CVS prints omit the
2869`ampermod', and thus do not correctly display the location to which it
2870is checking out the files:
2871
2872     $ cvs co ampermod
2873     cvs checkout: Updating first-dir
2874     U first-dir/file1
2875     U first-dir/file2
2876     cvs checkout: Updating first-dir/sdir
2877     U first-dir/sdir/sfile
2878     $
2879
2880   Do not rely on this buggy behavior; it may get fixed in a future
2881release of CVS.
2882
2883
2884File: cvs.info,  Node: Excluding directories,  Next: Module options,  Prev: Ampersand modules,  Up: modules
2885
2886C.1.4 Excluding directories
2887---------------------------
2888
2889An alias module may exclude particular directories from other modules
2890by using an exclamation mark (`!') before the name of each directory to
2891be excluded.
2892
2893   For example, if the modules file contains:
2894
2895     exmodule -a !first-dir/sdir first-dir
2896
2897then checking out the module `exmodule' will check out everything in
2898`first-dir' except any files in the subdirectory `first-dir/sdir'.
2899
2900
2901File: cvs.info,  Node: Module options,  Next: Module program options,  Prev: Excluding directories,  Up: modules
2902
2903C.1.5 Module options
2904--------------------
2905
2906Either regular modules or ampersand modules can contain options, which
2907supply additional information concerning the module.
2908
2909`-d NAME'
2910     Name the working directory something other than the module name.
2911
2912`-e PROG'
2913     Specify a program PROG to run whenever files in a module are
2914     exported.  PROG runs with a single argument, the module name.
2915
2916`-o PROG'
2917     Specify a program PROG to run whenever files in a module are
2918     checked out.  PROG runs with a single argument, the module name.
2919     See *Note Module program options:: for information on how PROG is
2920     called.
2921
2922`-s STATUS'
2923     Assign a status to the module.  When the module file is printed
2924     with `cvs checkout -s' the modules are sorted according to
2925     primarily module status, and secondarily according to the module
2926     name.  This option has no other meaning.  You can use this option
2927     for several things besides status: for instance, list the person
2928     that is responsible for this module.
2929
2930`-t PROG'
2931     Specify a program PROG to run whenever files in a module are
2932     tagged with `rtag'.  PROG runs with two arguments: the module name
2933     and the symbolic tag specified to `rtag'.  It is not run when
2934     `tag' is executed.  Generally you will find that the `taginfo'
2935     file is a better solution (*note taginfo::).
2936
2937   You should also see *note Module program options:: about how the
2938"program options" programs are run.
2939
2940
2941File: cvs.info,  Node: Module program options,  Prev: Module options,  Up: modules
2942
2943C.1.6 How the modules file "program options" programs are run
2944-------------------------------------------------------------
2945
2946For checkout, rtag, and export, the program is server-based, and as
2947such the following applies:-
2948
2949   If using remote access methods (pserver, ext, etc.), CVS will
2950execute this program on the server from a temporary directory. The path
2951is searched for this program.
2952
2953   If using "local access" (on a local or remote NFS file system, i.e.
2954repository set just to a path), the program will be executed from the
2955newly checked-out tree, if found there, or alternatively searched for
2956in the path if not.
2957
2958   The programs are all run after the operation has effectively
2959completed.
2960
2961
2962File: cvs.info,  Node: Wrappers,  Next: Trigger Scripts,  Prev: modules,  Up: Administrative files
2963
2964C.2 The cvswrappers file
2965========================
2966
2967Wrappers refers to a CVS feature which lets you control certain
2968settings based on the name of the file which is being operated on.  The
2969settings are `-k' for binary files, and `-m' for nonmergeable text
2970files.
2971
2972   The `-m' option specifies the merge methodology that should be used
2973when a non-binary file is updated.  `MERGE' means the usual CVS
2974behavior: try to merge the files.  `COPY' means that `cvs update' will
2975refuse to merge files, as it also does for files specified as binary
2976with `-kb' (but if the file is specified as binary, there is no need to
2977specify `-m 'COPY'').  CVS will provide the user with the two versions
2978of the files, and require the user using mechanisms outside CVS, to
2979insert any necessary changes.
2980
2981   *WARNING: do not use `COPY' with CVS 1.9 or earlier - such versions
2982of CVS will copy one version of your file over the other, wiping out
2983the previous contents.* The `-m' wrapper option only affects behavior
2984when merging is done on update; it does not affect how files are
2985stored.  See *Note Binary files::, for more on binary files.
2986
2987   The basic format of the file `cvswrappers' is:
2988
2989     wildcard     [option value][option value]...
2990
2991     where option is one of
2992     -m           update methodology      value: MERGE or COPY
2993     -k           keyword expansion       value: expansion mode
2994
2995     and value is a single-quote delimited value.
2996
2997   For example, the following command imports a directory, treating
2998files whose name ends in `.exe' as binary:
2999
3000     cvs import -I ! -W "*.exe -k 'b'" first-dir vendortag reltag
3001
3002
3003File: cvs.info,  Node: Trigger Scripts,  Next: rcsinfo,  Prev: Wrappers,  Up: Administrative files
3004
3005C.3 The Trigger Scripts
3006=======================
3007
3008Several of the administrative files support triggers, or the launching
3009external scripts or programs at specific times before or after
3010particular events, during the execution of CVS commands.  These hooks
3011can be used to prevent certain actions, log them, and/or maintain
3012anything else you deem practical.
3013
3014   All the trigger scripts are launched in a copy of the user sandbox
3015being committed, on the server, in client-server mode.  In local mode,
3016the scripts are actually launched directly from the user sandbox
3017directory being committed.  For most intents and purposes, the same
3018scripts can be run in both locations without alteration.
3019
3020* Menu:
3021
3022* syntax::                      The common syntax
3023* Trigger Script Security::	Trigger script security
3024
3025* commit files::                The commit support files (commitinfo,
3026                                verifymsg, loginfo)
3027*   commitinfo::                Pre-commit checking
3028*   verifymsg::                 How are log messages evaluated?
3029*   loginfo::                   Where should log messages be sent?
3030
3031* postadmin::			Logging admin commands
3032* taginfo::                     Verifying/Logging tags
3033* posttag::                     Logging tags
3034* postwatch::			Logging watch commands
3035
3036* preproxy::			Launch a script on a secondary server prior
3037				to becoming a write proxy
3038* postproxy::			Launch a script on a secondary server after
3039				completing proxy operations
3040
3041
3042File: cvs.info,  Node: syntax,  Next: Trigger Script Security,  Up: Trigger Scripts
3043
3044C.3.1 The common syntax
3045-----------------------
3046
3047The administrative files such as `commitinfo', `loginfo', `rcsinfo',
3048`verifymsg', etc., all have a common format.  The purpose of the files
3049are described later on.  The common syntax is described here.
3050
3051   Each line contains the following:
3052
3053   * A regular expression or the literal string `DEFAULT'.  Some script
3054     hooks also support the literal string `ALL'.  Other than the `ALL'
3055     and `DEFAULT' keywords, this is a basic regular expression in the
3056     syntax used by GNU emacs.  See the descriptions of the individual
3057     script hooks for information on whether the `ALL' keyword is
3058     supported (*note Trigger Scripts::).
3059
3060   * A whitespace separator--one or more spaces and/or tabs.
3061
3062   * A file name or command-line template.
3063
3064Blank lines are ignored.  Lines that start with the character `#' are
3065treated as comments.  Long lines unfortunately can _not_ be broken in
3066two parts in any way.
3067
3068   The first regular expression that matches the current directory name
3069in the repository or the first line containing `DEFAULT' in lieu of a
3070regular expression is used and all lines containing `ALL' is used for
3071the hooks which support the `ALL' keyword.  The rest of the line is
3072used as a file name or command-line template as appropriate.  See the
3073descriptions of the individual script hooks for information on whether
3074the `ALL' keyword is supported (*note Trigger Scripts::).
3075
3076_Note:  The following information on format strings is valid as long as
3077the line `UseNewInfoFmtStrings=yes' appears in your repository's config
3078file (*note config::).  Otherwise, default format strings may be
3079appended to the command line and the `loginfo' file, especially, can
3080exhibit slightly different behavior.  For more information, *Note
3081Updating Commit Files::._
3082
3083   In the cases where the second segment of the matched line is a
3084command line template (e.g. `commitinfo', `loginfo', & `verifymsg'),
3085the command line template may contain format strings which will be
3086replaced with specific values before the script is run.
3087
3088   Format strings can represent a single variable or one or more
3089attributes of a list variable.  An example of a list variable would be
3090the list available to scripts hung on the loginfo hooks - the list of
3091files which were just committed.  In the case of loginfo, three
3092attributes are available for each list item: file name, precommit
3093version, and postcommit version.
3094
3095   Format strings consist of a `%' character followed by an optional
3096`{' (required in the multiple list attribute case), a single format
3097character representing a variable or a single attribute of list
3098elements or multiple format characters representing attributes of list
3099elements, and a closing `}' when the open bracket was present.
3100
3101   _Flat format strings_, or single format characters which get replaced
3102with a single value, will generate a single argument to the called
3103script, regardless of whether the replacement variable contains white
3104space or other special characters.
3105
3106   _List attributes_ will generate an argument for each attribute
3107requested for each list item.  For example, `%{sVv}' in a `loginfo'
3108command template will generate three arguments (file name, precommit
3109version, postcommit version, ...) for each file committed.  As in the
3110flat format string case, each attribute will be passed in as a single
3111argument regardless of whether it contains white space or other special
3112characters.
3113
3114   `%%' will be replaced with a literal `%'.
3115
3116   The format strings available to all script hooks are:
3117
3118c
3119     The canonical name of the command being executed.  For instance,
3120     in the case of a hook run from `cvs up', CVS would replace `%c'
3121     with the string `update' and, in the case of a hook run from `cvs
3122     ci', CVS would replace `%c' with the string `commit'.
3123
3124n
3125     The null, or empty, string.
3126
3127p
3128     The name of the directory being operated on within the repository.
3129
3130r
3131     The name of the repository (the path portion of `$CVSROOT').
3132
3133R
3134     On a server, the name of the referrer, if any.  The referrer is
3135     the CVSROOT the client reports it used to contact a server which
3136     then referred it to this server.  Should usually be set on a
3137     primary server with a write proxy setup.
3138
3139   Other format strings are file specific.  See the docs on the
3140particular script hooks for more information (*note Trigger Scripts::).
3141
3142   As an example, the following line in a `loginfo' file would match
3143only the directory `module' and any subdirectories of `module':
3144
3145     ^module\(/\|$\) (echo; echo %p; echo %{sVv}; cat) >>$CVSROOT/CVSROOT/commitlog
3146
3147   Using this same line and assuming a commit of new revisions 1.5.4.4
3148and 1.27.4.1 based on old revisions 1.5.4.3 and 1.27, respectively, of
3149file1 and file2 in module, something like the following log message
3150should be appended to commitlog:
3151
3152
3153     module
3154     file1 1.5.4.3 1.5.4.4 file2 1.27 1.27.4.1
3155     Update of /cvsroot/module
3156     In directory localhost.localdomain:/home/jrandom/work/module
3157
3158     Modified Files:
3159     	file1 file2
3160     Log Message:
3161     A log message.
3162
3163
3164File: cvs.info,  Node: Trigger Script Security,  Next: commit files,  Prev: syntax,  Up: Trigger Scripts
3165
3166C.3.2 Security and the Trigger Scripts
3167--------------------------------------
3168
3169Security is a huge subject, and implementing a secure system is a
3170non-trivial task.  This section will barely touch on all the issues
3171involved, but it is well to note that, as with any script you will be
3172allowing an untrusted user to run on your server, there are measures
3173you can take to help prevent your trigger scripts from being abused.
3174
3175   For instance, since the CVS trigger scripts all run in a copy of the
3176user's sandbox on the server, a naively coded Perl trigger script which
3177attempts to use a Perl module that is not installed on the system can
3178be hijacked by any user with commit access who is checking in a file
3179with the correct name.  Other scripting languages may be vulnerable to
3180similar hacks.
3181
3182   One way to make a script more secure, at least with Perl, is to use
3183scripts which invoke the `-T', or "taint-check" switch on their `#!'
3184line.  In the most basic terms, this causes Perl to avoid running code
3185that may have come from an external source.  Please run the `perldoc
3186perlsec' command for more on Perl security.  Again, other languages may
3187implement other security verification hooks which look more or less
3188like Perl's "taint-check" mechanism.
3189
3190
3191File: cvs.info,  Node: commit files,  Next: commitinfo,  Prev: Trigger Script Security,  Up: Trigger Scripts
3192
3193C.3.3 The commit support files
3194------------------------------
3195
3196The `-i' flag in the `modules' file can be used to run a certain
3197program whenever files are committed (*note modules::).  The files
3198described in this section provide other, more flexible, ways to run
3199programs whenever something is committed.
3200
3201   There are three kinds of programs that can be run on commit.  They
3202are specified in files in the repository, as described below.  The
3203following table summarizes the file names and the purpose of the
3204corresponding programs.
3205
3206`commitinfo'
3207     The program is responsible for checking that the commit is
3208     allowed.  If it exits with a non-zero exit status the commit will
3209     be aborted.  *Note commitinfo::.
3210
3211`verifymsg'
3212     The specified program is used to evaluate the log message, and
3213     possibly verify that it contains all required fields.  This is
3214     most useful in combination with the `rcsinfo' file, which can hold
3215     a log message template (*note rcsinfo::).  *Note verifymsg::.
3216
3217`loginfo'
3218     The specified program is called when the commit is complete.  It
3219     receives the log message and some additional information and can
3220     store the log message in a file, or mail it to appropriate
3221     persons, or maybe post it to a local newsgroup, or...  Your
3222     imagination is the limit!  *Note loginfo::.
3223
3224* Menu:
3225
3226* Updating Commit Files::       Updating legacy repositories to stop using
3227                                deprecated command line template formats
3228
3229
3230File: cvs.info,  Node: Updating Commit Files,  Up: commit files
3231
3232C.3.3.1 Updating legacy repositories to stop using deprecated command line template formats
3233...........................................................................................
3234
3235New repositories are created set to use the new format strings by
3236default, so if you are creating a new repository, you shouldn't have to
3237worry about this section.
3238
3239   If you are attempting to maintain a legacy repository which was
3240making use of the `commitinfo', `editinfo', `verifymsg', `loginfo',
3241and/or `taginfo' script hooks, you should have no immediate problems
3242with using the current CVS executable, but your users will probably
3243start to see deprecation warnings.
3244
3245   The reason for this is that all of the script hooks have been
3246updated to use a new command line parser that extensibly supports
3247multiple `loginfo' & `notify' style format strings (*note syntax::) and
3248this support is not completely compatible with the old style format
3249strings.
3250
3251   The quick upgrade method is to stick a `1' after each format string
3252in your old `loginfo' file.  For example:
3253
3254     DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog
3255
3256   would become:
3257
3258     DEFAULT (echo ""; id; echo %1{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog
3259
3260   If you were counting on the fact that only the first `%' in the line
3261was replaced as a format string, you may also have to double up any
3262further percent signs on the line.
3263
3264   If you did this all at once and checked it in, everything should
3265still be running properly.
3266
3267   Now add the following line to your config file (*note config::):
3268     UseNewInfoFmtStrings=yes
3269
3270   Everything should still be running properly, but your users will
3271probably start seeing new deprecation warnings.
3272
3273   Dealing with the deprecation warnings now generated by `commitinfo',
3274`editinfo', `verifymsg', and `taginfo' should be easy.  Simply specify
3275what are currently implicit arguments explicitly.  This means appending
3276the following strings to each active command line template in each file:
3277`commitinfo'
3278     ` %r/%p %s'
3279
3280`editinfo'
3281     ` %l'
3282
3283`taginfo'
3284     ` %t %o %p %{sv}'
3285
3286`verifymsg'
3287     ` %l'
3288
3289   If you don't desire that any of the newly available information be
3290passed to the scripts hanging off of these hooks, no further
3291modifications to these files should be necessary to insure current and
3292future compatibility with CVS's format strings.
3293
3294   Fixing `loginfo' could be a little tougher.  The old style `loginfo'
3295format strings caused a single space and comma separated argument to be
3296passed in in place of the format string.  This is what will continue to
3297be generated due to the deprecated `1' you inserted into the format
3298strings.
3299
3300   Since the new format separates each individual item and passes it
3301into the script as a separate argument (for a good reason - arguments
3302containing commas and/or white space are now parsable), to remove the
3303deprecated `1' from your `loginfo' command line templates, you will
3304most likely have to rewrite any scripts called by the hook to handle
3305the new argument format.
3306
3307   Also note that the way `%' followed by unrecognized characters and by
3308`{}' was treated in past versions of CVS is not strictly adhered to as
3309there were bugs in the old versions.  Specifically, `%{}' would eat the
3310next character and unrecognized strings resolved only to the empty
3311string, which was counter to what was stated in the documentation.
3312This version will do what the documentation said it should have (if you
3313were using only some combination of `%{sVv}', e.g. `%{sVv}', `%{sV}', or
3314`%v', you should have no troubles).
3315
3316   On the bright side, you should have plenty of time to do this before
3317all support for the old format strings is removed from CVS, so you can
3318just put up with the deprecation warnings for awhile if you like.
3319
3320
3321File: cvs.info,  Node: commitinfo,  Next: verifymsg,  Prev: commit files,  Up: Trigger Scripts
3322
3323C.3.4 Commitinfo
3324----------------
3325
3326The `commitinfo' file defines programs to execute whenever `cvs commit'
3327is about to execute.  These programs are used for pre-commit checking
3328to verify that the modified, added and removed files are really ready
3329to be committed.  This could be used, for instance, to verify that the
3330changed files conform to to your site's standards for coding practice.
3331
3332   The `commitinfo' file has the standard form for script hooks (*note
3333Trigger Scripts::), where each line is a regular expression followed by
3334a command to execute.  It supports only the DEFAULT keywords.
3335
3336   In addition to the common format strings (*note syntax::),
3337`commitinfo' supports:
3338
3339{s}
3340     a list of the names of files to be committed
3341
3342   Currently, if no format strings are specified, a default string of `
3343%r/%p %{s}' will be appended to the command line template before
3344replacement is performed, but this feature is deprecated.  It is simply
3345in place so that legacy repositories will remain compatible with the
3346new CVS application.  For information on updating, *note Updating
3347Commit Files::.
3348
3349   The first line with a regular expression matching the directory
3350within the repository will be used.  If the command returns a non-zero
3351exit status the commit will be aborted.
3352
3353   The command will be run in the root of the workspace containing the
3354new versions of any files the user would like to modify (commit), _or
3355in a copy of the workspace on the server (*note Remote
3356repositories::)_.  If a file is being removed, there will be no copy of
3357the file under the current directory.  If a file is being added, there
3358will be no corresponding archive file in the repository unless the file
3359is being resurrected.
3360
3361   Note that both the repository directory and the corresponding Attic
3362(*note Attic::) directory may need to be checked to locate the archive
3363file corresponding to any given file being committed.  Much of the
3364information about the specific commit request being made, including the
3365destination branch, commit message, and command line options specified,
3366is not available to the command.
3367
3368
3369File: cvs.info,  Node: verifymsg,  Next: loginfo,  Prev: commitinfo,  Up: Trigger Scripts
3370
3371C.3.5 Verifying log messages
3372----------------------------
3373
3374Once you have entered a log message, you can evaluate that message to
3375check for specific content, such as a bug ID.  Use the `verifymsg' file
3376to specify a program that is used to verify the log message.  This
3377program could be a simple script that checks that the entered message
3378contains the required fields.
3379
3380   The `verifymsg' file is often most useful together with the
3381`rcsinfo' file, which can be used to specify a log message template
3382(*note rcsinfo::).
3383
3384   The `verifymsg' file has the standard form for script hooks (*note
3385Trigger Scripts::), where each line is a regular expression followed by
3386a command to execute.  It supports only the DEFAULT keywords.
3387
3388   In addition to the common format strings (*note syntax::),
3389`verifymsg' supports:
3390
3391l
3392     the full path to the file containing the log message to be verified
3393
3394{sV}
3395     File attributes, where:
3396    s
3397          file name
3398
3399    V
3400          old version number (pre-checkin)
3401
3402   Currently, if no format strings are specified, a default string of `
3403%l' will be appended to the command line template before replacement is
3404performed, but this feature is deprecated.  It is simply in place so
3405that legacy repositories will remain compatible with the new CVS
3406application.  For information on updating, *note Updating Commit
3407Files::.
3408
3409   One thing that should be noted is that the `ALL' keyword is not
3410supported.  If more than one matching line is found, the first one is
3411used.  This can be useful for specifying a default verification script
3412in a directory, and then overriding it in a subdirectory.
3413
3414   If the verification script exits with a non-zero exit status, the
3415commit is aborted.
3416
3417   In the default configuration, CVS allows the verification script to
3418change the log message. This is controlled via the RereadLogAfterVerify
3419CVSROOT/config option.
3420
3421   When `RereadLogAfterVerify=always' or `RereadLogAfterVerify=stat',
3422the log message will either always be reread after the verification
3423script is run or reread only if the log message file status has changed.
3424
3425   *Note config::, for more on CVSROOT/config options.
3426
3427   It is NOT a good idea for a `verifymsg' script to interact directly
3428with the user in the various client/server methods. For the `pserver'
3429method, there is no protocol support for communicating between
3430`verifymsg' and the client on the remote end. For the `ext' and
3431`server' methods, it is possible for CVS to become confused by the
3432characters going along the same channel as the CVS protocol messages.
3433See *Note Remote repositories::, for more information on client/server
3434setups.  In addition, at the time the `verifymsg' script runs, the CVS
3435server has locks in place in the repository.  If control is returned to
3436the user here then other users may be stuck waiting for access to the
3437repository.
3438
3439   This option can be useful if you find yourself using an rcstemplate
3440that needs to be modified to remove empty elements or to fill in
3441default values.  It can also be useful if the rcstemplate has changed
3442in the repository and the CVS/Template was not updated, but is able to
3443be adapted to the new format by the verification script that is run by
3444`verifymsg'.
3445
3446   An example of an update might be to change all occurrences of
3447'BugId:' to be 'DefectId:' (which can be useful if the rcstemplate has
3448recently been changed and there are still checked-out user trees with
3449cached copies in the CVS/Template file of the older version).
3450
3451   Another example of an update might be to delete a line that contains
3452'BugID: none' from the log message after validation of that value as
3453being allowed is made.
3454
3455* Menu:
3456
3457* verifymsg example::            Verifymsg example
3458
3459
3460File: cvs.info,  Node: verifymsg example,  Up: verifymsg
3461
3462C.3.5.1 Verifying log messages
3463..............................
3464
3465The following is a little silly example of a `verifymsg' file, together
3466with the corresponding `rcsinfo' file, the log message template and a
3467verification script.  We begin with the log message template.  We want
3468to always record a bug-id number on the first line of the log message.
3469The rest of log message is free text.  The following template is found
3470in the file `/usr/cvssupport/tc.template'.
3471
3472     BugId:
3473
3474   The script `/usr/cvssupport/bugid.verify' is used to evaluate the
3475log message.
3476
3477     #!/bin/sh
3478     #
3479     #       bugid.verify filename
3480     #
3481     #  Verify that the log message contains a valid bugid
3482     #  on the first line.
3483     #
3484     if sed 1q < $1 | grep '^BugId:[ ]*[0-9][0-9]*$' > /dev/null; then
3485         exit 0
3486     elif sed 1q < $1 | grep '^BugId:[ ]*none$' > /dev/null; then
3487         # It is okay to allow commits with 'BugId: none',
3488         # but do not put that text into the real log message.
3489         grep -v '^BugId:[ ]*none$' > $1.rewrite
3490         mv $1.rewrite $1
3491         exit 0
3492     else
3493         echo "No BugId found."
3494         exit 1
3495     fi
3496
3497   The `verifymsg' file contains this line:
3498
3499     ^tc     /usr/cvssupport/bugid.verify %l
3500
3501   The `rcsinfo' file contains this line:
3502
3503     ^tc     /usr/cvssupport/tc.template
3504
3505   The `config' file contains this line:
3506
3507     RereadLogAfterVerify=always
3508
3509
3510File: cvs.info,  Node: loginfo,  Next: postadmin,  Prev: verifymsg,  Up: Trigger Scripts
3511
3512C.3.6 Loginfo
3513-------------
3514
3515The `loginfo' file is used to control where log information is sent
3516after versioned changes are made to repository archive files and after
3517directories are added ot the repository.  *Note posttag:: for how to
3518log tagging information and *Note postadmin:: for how to log changes
3519due to the `admin' command.
3520
3521   The `loginfo' file has the standard form for script hooks (*note
3522Trigger Scripts::), where each line is a regular expression followed by
3523a command to execute.  It supports the ALL and DEFAULT keywords.
3524
3525   Any specified scripts are called:
3526
3527`commit'
3528     Once per directory, immediately after a successfully completing
3529     the commit of all files within that directory.
3530
3531`import'
3532     Once per import, immediately after completion of all write
3533     operations.
3534
3535`add'
3536     Immediately after the successful `add' of a directory.
3537
3538   Any script called via `loginfo' will be fed the log information on
3539its standard input.  Note that the filter program *must* read *all* of
3540the log information from its standard input or CVS may fail with a
3541broken pipe signal.
3542
3543   In addition to the common format strings (*note syntax::), `loginfo'
3544supports:
3545
3546{stVv}
3547     File attributes, where:
3548    s
3549          file name
3550
3551    T
3552          tag name of destination, or the empty string when there is no
3553          associated tag name (this usually means the trunk)
3554
3555    V
3556          old version number (pre-checkin)
3557
3558    v
3559          new version number (post-checkin)
3560
3561   For example, some valid format strings are `%%', `%s', `%{s}', and
3562`%{stVv}'.
3563
3564   Currently, if `UseNewInfoFmtStrings' is not set in the `config'
3565administration file (*note config::), the format strings will be
3566substituted as they were in past versions of CVS, but this feature is
3567deprecated.  It is simply in place so that legacy repositories will
3568remain compatible with the new CVS application.  For information on
3569updating, please see *Note Updating Commit Files::.
3570
3571   As an example, if `/u/src/master/yoyodyne/tc' is the repository, `%p'
3572and `%{sVv}' are the format strings, and three files (ChangeLog,
3573Makefile, foo.c) were modified, the output might be:
3574
3575     yoyodyne/tc ChangeLog 1.1 1.2 Makefile 1.3 1.4 foo.c 1.12 1.13
3576
3577   Note: when CVS is accessing a remote repository, `loginfo' will be
3578run on the _remote_ (i.e., server) side, not the client side (*note
3579Remote repositories::).
3580
3581* Menu:
3582
3583* loginfo example::                          Loginfo example
3584* Keeping a checked out copy::               Updating a tree on every checkin
3585
3586
3587File: cvs.info,  Node: loginfo example,  Next: Keeping a checked out copy,  Up: loginfo
3588
3589C.3.6.1 Loginfo example
3590.......................
3591
3592The following `loginfo' file, together with the tiny shell-script
3593below, appends all log messages to the file
3594`$CVSROOT/CVSROOT/commitlog', and any commits to the administrative
3595files (inside the `CVSROOT' directory) are also logged in
3596`/usr/adm/cvsroot-log'.  Commits to the `prog1' directory are mailed to
3597ceder.
3598
3599     ALL                     /usr/local/bin/cvs-log $CVSROOT/CVSROOT/commitlog $USER
3600     ^CVSROOT\(/\|$\)        /usr/local/bin/cvs-log /usr/adm/cvsroot-log $USER
3601     ^prog1\(/\|$\)          Mail -s "%p %s" ceder
3602
3603   The shell-script `/usr/local/bin/cvs-log' looks like this:
3604
3605     #!/bin/sh
3606     (echo "------------------------------------------------------";
3607      echo -n "$2  ";
3608      date;
3609      echo;
3610      cat) >> $1
3611
3612
3613File: cvs.info,  Node: Keeping a checked out copy,  Prev: loginfo example,  Up: loginfo
3614
3615C.3.6.2 Keeping a checked out copy
3616..................................
3617
3618It is often useful to maintain a directory tree which contains files
3619which correspond to the latest version in the repository.  For example,
3620other developers might want to refer to the latest sources without
3621having to check them out, or you might be maintaining a web site with
3622CVS and want every checkin to cause the files used by the web server to
3623be updated.
3624
3625   The way to do this is by having loginfo invoke `cvs update'.  Doing
3626so in the naive way will cause a problem with locks, so the `cvs update'
3627must be run in the background.  Here is an example for unix (this
3628should all be on one line):
3629
3630     ^cyclic-pages\(/\|$\)	(date; cat; (sleep 2; cd /u/www/local-docs;
3631      cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1
3632
3633   This will cause checkins to repository directory `cyclic-pages' and
3634its subdirectories to update the checked out tree in
3635`/u/www/local-docs'.
3636
3637
3638File: cvs.info,  Node: postadmin,  Next: taginfo,  Prev: loginfo,  Up: Trigger Scripts
3639
3640C.3.7 Logging admin commands
3641----------------------------
3642
3643The `postadmin' file defines programs to execute after an `admin'
3644command modifies files.  The `postadmin' file has the standard form for
3645script hooks (*note Trigger Scripts::), where each line is a regular
3646expression followed by a command to execute.  It supports the ALL and
3647DEFAULT keywords.
3648
3649   The `postadmin' file supports no format strings other than the common
3650ones (*note syntax::),
3651
3652
3653File: cvs.info,  Node: taginfo,  Next: posttag,  Prev: postadmin,  Up: Trigger Scripts
3654
3655C.3.8 Taginfo
3656-------------
3657
3658The `taginfo' file defines programs to execute when someone executes a
3659`tag' or `rtag' command.  The `taginfo' file has the standard form for
3660script hooks (*note Trigger Scripts::), where each line is a regular
3661expression followed by a command to execute.  It supports the ALL and
3662DEFAULT keywords.
3663
3664   In addition to the common format strings (*note syntax::), `taginfo'
3665supports:
3666
3667b
3668     tag type (`T' for branch, `N' for not-branch, or `?' for unknown,
3669     as during delete operations)
3670
3671o
3672     operation (`add' for `tag', `mov' for `tag -F', or `del' for `tag
3673     -d')
3674
3675t
3676     new tag name
3677
3678{sTVv}
3679     file attributes, where:
3680    s
3681          file name
3682
3683    T
3684          tag name of destination, or the empty string when there is no
3685          associated tag name (this usually means the trunk)
3686
3687    V
3688          old version number (for a move or delete operation)
3689
3690    v
3691          new version number (for an add or move operation)
3692
3693   For example, some valid format strings are `%%', `%p', `%t', `%s',
3694`%{s}', and `%{sVv}'.
3695
3696   Currently, if no format strings are specified, a default string of `
3697%t %o %p %{sv}' will be appended to the command line template before
3698replacement is performed, but this feature is deprecated.  It is simply
3699in place so that legacy repositories will remain compatible with the
3700new CVS application.  For information on updating, *note Updating
3701Commit Files::.
3702
3703   A non-zero exit of the filter program will cause the tag to be
3704aborted.
3705
3706   Here is an example of using `taginfo' to log `tag' and `rtag'
3707commands.  In the `taginfo' file put:
3708
3709     ALL /usr/local/cvsroot/CVSROOT/loggit %t %b %o %p %{sVv}
3710
3711Where `/usr/local/cvsroot/CVSROOT/loggit' contains the following script:
3712
3713     #!/bin/sh
3714     echo "$@" >>/home/kingdon/cvsroot/CVSROOT/taglog
3715
3716
3717File: cvs.info,  Node: posttag,  Next: postwatch,  Prev: taginfo,  Up: Trigger Scripts
3718
3719C.3.9 Logging tags
3720------------------
3721
3722The `posttag' file defines programs to execute after a `tag' or `rtag'
3723command modifies files.  The `posttag' file has the standard form for
3724script hooks (*note Trigger Scripts::), where each line is a regular
3725expression followed by a command to execute.  It supports the ALL and
3726DEFAULT keywords.
3727
3728   The `posttag' admin file supports the same format strings as the
3729`taginfo' file (*note taginfo::),
3730
3731
3732File: cvs.info,  Node: postwatch,  Next: preproxy,  Prev: posttag,  Up: Trigger Scripts
3733
3734C.3.10 Logging watch commands
3735-----------------------------
3736
3737The `postwatch' file defines programs to execute after any command (for
3738instance, `watch', `edit', `unedit', or `commit') modifies any
3739`CVS/fileattr' file in the repository (*note Watches::).  The
3740`postwatch' file has the standard form for script hooks (*note Trigger
3741Scripts::), where each line is a regular expression followed by a
3742command to execute.  It supports the ALL and DEFAULT keywords.
3743
3744   The `postwatch' file supports no format strings other than the common
3745ones (*note syntax::), but it is worth noting that the `%c' format
3746string may not be replaced as you might expect.  Client runs of `edit'
3747and `unedit' can sometimes skip contacting the CVS server and cache the
3748notification of the file attribute change to be sent the next time the
3749client contacts the server for whatever other reason,
3750
3751
3752File: cvs.info,  Node: preproxy,  Next: postproxy,  Prev: postwatch,  Up: Trigger Scripts
3753
3754C.3.11 Launch a Script before Proxying
3755--------------------------------------
3756
3757The `preproxy' file defines programs to execute after a secondary
3758server receives a write request from a client, just before it starts up
3759the primary server and becomes a write proxy.  This hook could be used
3760to dial a modem, launch an SSH tunnel, establish a VPN, or anything
3761else that might be necessary to do before contacting the primary server.
3762
3763   `preproxy' scripts are called once, at the time of the write
3764request, with the repository argument (if requested) set from the
3765topmost directory sent by the client.
3766
3767   The `preproxy' file has the standard form for script hooks (*note
3768Trigger Scripts::), where each line is a regular expression followed by
3769a command to execute.  It supports the ALL and DEFAULT keywords.
3770
3771   In addition to the common format strings, the `preproxy' file
3772supports the following format string:
3773
3774P
3775     the CVSROOT string which specifies the primary server
3776
3777
3778File: cvs.info,  Node: postproxy,  Prev: preproxy,  Up: Trigger Scripts
3779
3780C.3.12 Launch a Script after Proxying
3781-------------------------------------
3782
3783The `postproxy' file defines programs to execute after a secondary
3784server notes that the connection to the primary server has shut down
3785and before it releases the client by shutting down the connection to
3786the client.  This could hook could be used to disconnect a modem, an
3787SSH tunnel, a VPN, or anything else that might be necessary to do after
3788contacting the primary server.  This hook should also be used to pull
3789updates from the primary server before allowing the client which did
3790the write to disconnect since otherwise the client's next read request
3791may generate error messages and fail upon encountering an out of date
3792repository on the secondary server.
3793
3794   `postproxy' scripts are called once per directory.
3795
3796   The `postproxy' file has the standard form for script hooks (*note
3797Trigger Scripts::), where each line is a regular expression followed by
3798a command to execute.  It supports the ALL and DEFAULT keywords.
3799
3800   In addition to the common format strings, the `postproxy' file
3801supports the following format string:
3802
3803P
3804     the CVSROOT string which specifies the primary server
3805
3806
3807File: cvs.info,  Node: rcsinfo,  Next: cvsignore,  Prev: Trigger Scripts,  Up: Administrative files
3808
3809C.4 Rcsinfo
3810===========
3811
3812The `rcsinfo' file can be used to specify a form to edit when filling
3813out the commit log.  The `rcsinfo' file has a syntax similar to the
3814`verifymsg', `commitinfo' and `loginfo' files.  *Note syntax::.  Unlike
3815the other files the second part is _not_ a command-line template.
3816Instead, the part after the regular expression should be a full
3817pathname to a file containing the log message template.
3818
3819   If the repository name does not match any of the regular expressions
3820in this file, the `DEFAULT' line is used, if it is specified.
3821
3822   All occurrences of the name `ALL' appearing as a regular expression
3823are used in addition to the first matching regular expression or
3824`DEFAULT'.
3825
3826   The log message template will be used as a default log message.  If
3827you specify a log message with `cvs commit -m MESSAGE' or `cvs commit -f
3828FILE' that log message will override the template.
3829
3830   *Note verifymsg::, for an example `rcsinfo' file.
3831
3832   When CVS is accessing a remote repository, the contents of `rcsinfo'
3833at the time a directory is first checked out will specify a template.
3834This template will be updated on all `cvs update' commands. It will
3835also be added to new directories added with a `cvs add new-directory'
3836command.  In versions of CVS prior to version 1.12, the `CVS/Template'
3837file was not updated. If the CVS server is at version 1.12 or higher an
3838older client may be used and the `CVS/Template' will be updated from
3839the server.
3840
3841
3842File: cvs.info,  Node: cvsignore,  Next: checkoutlist,  Prev: rcsinfo,  Up: Administrative files
3843
3844C.5 Ignoring files via cvsignore
3845================================
3846
3847There are certain file names that frequently occur inside your working
3848copy, but that you don't want to put under CVS control.  Examples are
3849all the object files that you get while you compile your sources.
3850Normally, when you run `cvs update', it prints a line for each file it
3851encounters that it doesn't know about (*note update output::).
3852
3853   CVS has a list of files (or sh(1) file name patterns) that it should
3854ignore while running `update', `import' and `release'.  This list is
3855constructed in the following way.
3856
3857   * The list is initialized to include certain file name patterns:
3858     names associated with CVS administration, or with other common
3859     source control systems; common names for patch files, object files,
3860     archive files, and editor backup files; and other names that are
3861     usually artifacts of assorted utilities.  Currently, the default
3862     list of ignored file name patterns is:
3863
3864              RCS     SCCS    CVS     CVS.adm
3865              RCSLOG  cvslog.*
3866              tags    TAGS
3867              .make.state     .nse_depinfo
3868              *~      #*      .#*     ,*      _$*     *$
3869              *.old   *.bak   *.BAK   *.orig  *.rej   .del-*
3870              *.a     *.olb   *.o     *.obj   *.so    *.exe
3871              *.Z     *.elc   *.ln
3872              core
3873
3874   * The per-repository list in `$CVSROOT/CVSROOT/cvsignore' is
3875     appended to the list, if that file exists.
3876
3877   * The per-user list in `.cvsignore' in your home directory is
3878     appended to the list, if it exists.
3879
3880   * Any entries in the environment variable `$CVSIGNORE' is appended
3881     to the list.
3882
3883   * Any `-I' options given to CVS is appended.
3884
3885   * As CVS traverses through your directories, the contents of any
3886     `.cvsignore' will be appended to the list.  The patterns found in
3887     `.cvsignore' are only valid for the directory that contains them,
3888     not for any sub-directories.
3889
3890   In any of the 5 places listed above, a single exclamation mark (`!')
3891clears the ignore list.  This can be used if you want to store any file
3892which normally is ignored by CVS.
3893
3894   Specifying `-I !' to `cvs import' will import everything, which is
3895generally what you want to do if you are importing files from a
3896pristine distribution or any other source which is known to not contain
3897any extraneous files.  However, looking at the rules above you will see
3898there is a fly in the ointment; if the distribution contains any
3899`.cvsignore' files, then the patterns from those files will be
3900processed even if `-I !' is specified.  The only workaround is to
3901remove the `.cvsignore' files in order to do the import.  Because this
3902is awkward, in the future `-I !' might be modified to override
3903`.cvsignore' files in each directory.
3904
3905   Note that the syntax of the ignore files consists of a series of
3906lines, each of which contains a space separated list of filenames.
3907This offers no clean way to specify filenames which contain spaces, but
3908you can use a workaround like `foo?bar' to match a file named `foo bar'
3909(it also matches `fooxbar' and the like).  Also note that there is
3910currently no way to specify comments.
3911
3912
3913File: cvs.info,  Node: checkoutlist,  Next: history file,  Prev: cvsignore,  Up: Administrative files
3914
3915C.6 The checkoutlist file
3916=========================
3917
3918It may be helpful to use CVS to maintain your own files in the
3919`CVSROOT' directory.  For example, suppose that you have a script
3920`logcommit.pl' which you run by including the following line in the
3921`commitinfo' administrative file:
3922
3923     ALL   $CVSROOT/CVSROOT/logcommit.pl %r/%p %s
3924
3925   To maintain `logcommit.pl' with CVS you would add the following line
3926to the `checkoutlist' administrative file:
3927
3928     logcommit.pl
3929
3930   The format of `checkoutlist' is one line for each file that you want
3931to maintain using CVS, giving the name of the file, followed optionally
3932by more whitespace and any error message that should print if the file
3933cannot be checked out into CVSROOT after a commit:
3934
3935     logcommit.pl	Could not update CVSROOT/logcommit.pl.
3936
3937   After setting up `checkoutlist' in this fashion, the files listed
3938there will function just like CVS's built-in administrative files.  For
3939example, when checking in one of the files you should get a message
3940such as:
3941
3942     cvs commit: Rebuilding administrative file database
3943
3944and the checked out copy in the `CVSROOT' directory should be updated.
3945
3946   Note that listing `passwd' (*note Password authentication server::)
3947in `checkoutlist' is not recommended for security reasons.
3948
3949   For information about keeping a checkout out copy in a more general
3950context than the one provided by `checkoutlist', see *Note Keeping a
3951checked out copy::.
3952
3953
3954File: cvs.info,  Node: history file,  Next: Variables,  Prev: checkoutlist,  Up: Administrative files
3955
3956C.7 The history file
3957====================
3958
3959By default, the file `$CVSROOT/CVSROOT/history' is used to log
3960information for the `history' command (*note history::).  This file
3961name may be changed with the `HistoryLogPath' and `HistorySearchPath'
3962config options (*note config::).
3963
3964   The file format of the `history' file is documented only in comments
3965in the CVS source code, but generally programs should use the `cvs
3966history' command to access it anyway, in case the format changes with
3967future releases of CVS.
3968
3969
3970File: cvs.info,  Node: Variables,  Next: config,  Prev: history file,  Up: Administrative files
3971
3972C.8 Expansions in administrative files
3973======================================
3974
3975Sometimes in writing an administrative file, you might want the file to
3976be able to know various things based on environment CVS is running in.
3977There are several mechanisms to do that.
3978
3979   To find the home directory of the user running CVS (from the `HOME'
3980environment variable), use `~' followed by `/' or the end of the line.
3981Likewise for the home directory of USER, use `~USER'.  These variables
3982are expanded on the server machine, and don't get any reasonable
3983expansion if pserver (*note Password authenticated::) is in use;
3984therefore user variables (see below) may be a better choice to
3985customize behavior based on the user running CVS.
3986
3987   One may want to know about various pieces of information internal to
3988CVS.  A CVS internal variable has the syntax `${VARIABLE}', where
3989VARIABLE starts with a letter and consists of alphanumeric characters
3990and `_'.  If the character following VARIABLE is a non-alphanumeric
3991character other than `_', the `{' and `}' can be omitted.  The CVS
3992internal variables are:
3993
3994`CVSROOT'
3995     This is the absolute path to the current CVS root directory.
3996     *Note Repository::, for a description of the various ways to
3997     specify this, but note that the internal variable contains just
3998     the directory and not any of the access method information.
3999
4000`RCSBIN'
4001     In CVS 1.9.18 and older, this specified the directory where CVS
4002     was looking for RCS programs.  Because CVS no longer runs RCS
4003     programs, specifying this internal variable is now an error.
4004
4005`CVSEDITOR'
4006`EDITOR'
4007`VISUAL'
4008     These all expand to the same value, which is the editor that CVS
4009     is using.  *Note Global options::, for how to specify this.
4010
4011`USER'
4012     Username of the user running CVS (on the CVS server machine).
4013     When using pserver, this is the user specified in the repository
4014     specification which need not be the same as the username the
4015     server is running as (*note Password authentication server::).  Do
4016     not confuse this with the environment variable of the same name.
4017
4018`SESSIONID'
4019     Unique Session ID of the CVS process. This is a random string of
4020     printable characters of at least 16 characters length. Users
4021     should assume that it may someday grow to at most 256 characters
4022     in length.
4023
4024`COMMITID'
4025     Unique Session ID of the CVS process. This is a random string of
4026     printable characters of at least 16 characters length. Users
4027     should assume that it may someday grow to at most 256 characters
4028     in length.
4029
4030   If you want to pass a value to the administrative files which the
4031user who is running CVS can specify, use a user variable.  To expand a
4032user variable, the administrative file contains `${=VARIABLE}'.  To set
4033a user variable, specify the global option `-s' to CVS, with argument
4034`VARIABLE=VALUE'.  It may be particularly useful to specify this option
4035via `.cvsrc' (*note ~/.cvsrc::).
4036
4037   For example, if you want the administrative file to refer to a test
4038directory you might create a user variable `TESTDIR'.  Then if CVS is
4039invoked as
4040
4041     cvs -s TESTDIR=/work/local/tests
4042
4043and the administrative file contains `sh ${=TESTDIR}/runtests', then
4044that string is expanded to `sh /work/local/tests/runtests'.
4045
4046   All other strings containing `$' are reserved; there is no way to
4047quote a `$' character so that `$' represents itself.
4048
4049   Environment variables passed to administrative files are:
4050
4051`CVS_USER'
4052     The CVS-specific username provided by the user, if it can be
4053     provided (currently just for the pserver access method), and to
4054     the empty string otherwise.  (`CVS_USER' and `USER' may differ
4055     when `$CVSROOT/CVSROOT/passwd' is used to map CVS usernames to
4056     system usernames.)
4057
4058`LOGNAME'
4059     The username of the system user.
4060
4061`USER'
4062     Same as `LOGNAME'.  Do not confuse this with the internal variable
4063     of the same name.
4064
4065
4066File: cvs.info,  Node: config,  Prev: Variables,  Up: Administrative files
4067
4068C.9 The CVSROOT/config configuration file
4069=========================================
4070
4071Usually, the `config' file is found at `$CVSROOT/CVSROOT/config', but
4072this may be overridden on the `pserver' and `server' command lines
4073(*note server & pserver::).
4074
4075   The administrative file `config' contains various miscellaneous
4076settings which affect the behavior of CVS.  The syntax is slightly
4077different from the other administrative files.
4078
4079   Leading white space on any line is ignored, though the syntax is
4080very strict and will reject spaces and tabs almost anywhere else.
4081
4082   Empty lines, lines containing nothing but white space, and lines
4083which start with `#' (discounting any leading white space) are ignored.
4084
4085   Other lines consist of the optional leading white space, a keyword,
4086`=', and a value.  Please note again that this syntax is very strict.
4087Extraneous spaces or tabs, other than the leading white space, are not
4088permitted on these lines.
4089
4090   As of CVS 1.12.13, lines of the form `[CVSROOT]' mark the subsequent
4091section of the config file as applying only to certain repositories.
4092Multiple `[CVSROOT]' lines without intervening `KEYWORD=VALUE' pairs
4093cause processing to fall through, processing subsequent keywords for
4094any root in the list.  Finally, keywords and values which appear before
4095any `[CVSROOT]' lines are defaults, and may to apply to any repository.
4096For example, consider the following file:
4097
4098     # Defaults
4099     LogHistory=TMAR
4100
4101     [/cvsroots/team1]
4102       LockDir=/locks/team1
4103
4104     [/cvsroots/team2]
4105       LockDir=/locks/team2
4106
4107     [/cvsroots/team3]
4108       LockDir=/locks/team3
4109
4110     [/cvsroots/team4]
4111       LockDir=/locks/team4
4112
4113     [/cvsroots/team3]
4114     [/cvsroots/team4]
4115       # Override logged commands for teams 3 & 4.
4116       LogHistory=all
4117
4118   This example file sets up separate lock directories for each
4119project, as well as a default set of logged commands overridden for the
4120example's team 3 & team 4. This syntax could be useful, for instance,
4121if you wished to share a single config file, for instance
4122`/etc/cvs.conf', among several repositories.
4123
4124   Currently defined keywords are:
4125
4126`HistorySearchPath=PATTERN'
4127     Request that CVS look for its history information in files matching
4128     PATTERN, which is a standard UNIX file glob.  If PATTERN matches
4129     multiple files, all will be searched in lexicographically sorted
4130     order.  *Note history::, and *Note history file::, for more.
4131
4132     If no value is supplied for this option, it defaults to
4133     `$CVSROOT/CVSROOT/history'.
4134
4135`HistoryLogPath=PATH'
4136     Control where CVS logs its history.  If the file does not exist,
4137     CVS will attempt to create it.  Format strings, as available to
4138     the GNU C `strftime' function and often the UNIX date command, and
4139     the string $CVSROOT will be substituted in this path.  For
4140     example, consider the line:
4141
4142          HistoryLogPath=$CVSROOT/CVSROOT/history/%Y-%m-%d
4143
4144     This line would cause CVS to attempt to create its history file in
4145     a subdirectory (`history') of the configuration directory
4146     (`CVSROOT') with a name equal to the current date representation
4147     in the ISO8601 format (for example, on May 11, 2005, CVS would
4148     attempt to log its history under the repository root directory in
4149     a file named `CVSROOT/history/2005-05-11').  *Note history::, and
4150     *Note history file::, for more.
4151
4152     If no value is supplied for this option, it defaults to
4153     `$CVSROOT/CVSROOT/history'.
4154
4155`ImportNewFilesToVendorBranchOnly=VALUE'
4156     Specify whether `cvs import' should always behave as if the `-X'
4157     flag was specified on the command line.  VALUE may be either `yes'
4158     or `no'.  If set to `yes', all uses of `cvs import' on the
4159     repository will behave as if the `-X' flag was set.  The default
4160     value is `no'.
4161
4162`KeywordExpand=VALUE'
4163     Specify `i' followed by a list of keywords to be expanded (for
4164     example, `KeywordExpand=iMYCVS,Name,Date'), or `e' followed by a
4165     list of keywords not to be expanded (for example,
4166     `KeywordExpand=eCVSHeader').  For more on keyword expansion, see
4167     *Note Configuring keyword expansion::.
4168
4169`LocalKeyword=VALUE'
4170     Specify a local alias for a standard keyword.  For example,
4171     `LocalKeyword=MYCVS=CVSHeader'.  For more on local keywords, see
4172     *Note Keyword substitution::.
4173
4174`LockDir=DIRECTORY'
4175     Put CVS lock files in DIRECTORY rather than directly in the
4176     repository.  This is useful if you want to let users read from the
4177     repository while giving them write access only to DIRECTORY, not
4178     to the repository.  It can also be used to put the locks on a very
4179     fast in-memory file system to speed up locking and unlocking the
4180     repository.  You need to create DIRECTORY, but CVS will create
4181     subdirectories of DIRECTORY as it needs them.  For information on
4182     CVS locks, see *Note Concurrency::.
4183
4184     Before enabling the LockDir option, make sure that you have
4185     tracked down and removed any copies of CVS 1.9 or older.  Such
4186     versions neither support LockDir, nor will give an error
4187     indicating that they don't support it.  The result, if this is
4188     allowed to happen, is that some CVS users will put the locks one
4189     place, and others will put them another place, and therefore the
4190     repository could become corrupted.  CVS 1.10 does not support
4191     LockDir but it will print a warning if run on a repository with
4192     LockDir enabled.
4193
4194`LogHistory=VALUE'
4195     Control what is logged to the `CVSROOT/history' file (*note
4196     history::).  Default of `TOEFWUPCGMAR' (or simply `all') will log
4197     all transactions.  Any subset of the default is legal.  (For
4198     example, to only log transactions that modify the `*,v' files, use
4199     `LogHistory=TMAR'.)  To disable history logging completely, use
4200     `LogHistory='.
4201
4202`MaxCommentLeaderLength=LENGTH'
4203     Set to some length, in bytes, where a trailing `k', `M', `G', or
4204     `T' causes the preceding nubmer to be interpreted as kilobytes,
4205     megabytes, gigabytes, or terrabytes, respectively, will cause
4206     `$Log$' keywords (*note Keyword substitution::), with more than
4207     LENGTH bytes preceding it on a line to be ignored (or to fall back
4208     on the comment leader set in the RCS archive file - see
4209     `UseArchiveCommentLeader' below).  Defaults to 20 bytes to allow
4210     checkouts to proceed normally when they include binary files
4211     containing `$Log$' keywords and which users have neglected to mark
4212     as binary.
4213
4214`MinCompressionLevel=VALUE'
4215`MaxCompressionLevel=VALUE'
4216     Restricts the level of compression used by the CVS server to a
4217     VALUE between 0 and 9.  VALUEs 1 through 9 are the same ZLIB
4218     compression levels accepted by the `-z' option (*note Global
4219     options::), and 0 means no compression.  When one or both of these
4220     keys are set and a client requests a level outside the specified
4221     range, the server will simply use the closest permissable level.
4222     Clients will continue compressing at the level requested by the
4223     user.
4224
4225     The exception is when level 0 (no compression) is not available
4226     and the client fails to request any compression.  The CVS server
4227     will then exit with an error message when it becomes apparent that
4228     the client is not going to request compression.  This will not
4229     happen with clients version 1.12.13 and later since these client
4230     versions allow the server to notify them that they must request
4231     some level of compression.
4232
4233`PrimaryServer=CVSROOT'
4234     When specified, and the repository specified by CVSROOT is not the
4235     one currently being accessed, then the server will turn itself
4236     into a transparent proxy to CVSROOT for write requests.  The
4237     HOSTNAME configured as part of CVSROOT must resolve to the same
4238     string returned by the `uname' command on the primary server for
4239     this to work.  Host name resolution is performed via some
4240     combination of `named', a broken out line from `/etc/hosts', and
4241     the Network Information Service (NIS or YP), depending on the
4242     configuration of the particular system.
4243
4244     Only the `:ext:' method is currently supported for primaries
4245     (actually, `:fork:' is supported as well, but only for testing -
4246     if you find another use for accessing a primary via the `:fork:'
4247     method, please send a note to <bug-cvs@nongnu.org> about it).  See
4248     *Note Write proxies:: for more on configuring and using write
4249     proxies.
4250
4251`RCSBIN=BINDIR'
4252     For CVS 1.9.12 through 1.9.18, this setting told CVS to look for
4253     RCS programs in the BINDIR directory.  Current versions of CVS do
4254     not run RCS programs; for compatibility this setting is accepted,
4255     but it does nothing.
4256
4257`RereadLogAfterVerify=VALUE'
4258     Modify the `commit' command such that CVS will reread the log
4259     message after running the program specified by `verifymsg'.  VALUE
4260     may be one of `yes' or `always', indicating that the log message
4261     should always be reread; `no' or `never', indicating that it
4262     should never be reread; or VALUE may be `stat', indicating that
4263     the file should be checked with the file system `stat()' function
4264     to see if it has changed (see warning below) before rereading.
4265     The default value is `always'.
4266
4267     *Note_ the `stat' mode can cause CVS to pause for up to one extra
4268     second per directory committed.  This can be less IO and CPU
4269     intensive but is not recommended for use with large repositories*
4270
4271     *Note verifymsg::, for more information on how verifymsg may be
4272     used.
4273
4274`SystemAuth=VALUE'
4275     If VALUE is `yes', then pserver should check for users in the
4276     system's user database if not found in `CVSROOT/passwd'.  If it is
4277     `no', then all pserver users must exist in `CVSROOT/passwd'.  The
4278     default is `yes'.  For more on pserver, see *Note Password
4279     authenticated::.
4280
4281`TmpDir=PATH'
4282     Specify PATH as the directory to create temporary files in.  *Note
4283     Global options::, for more on setting the path to the temporary
4284     directory.  This option first appeared with CVS release 1.12.13.
4285
4286`TopLevelAdmin=VALUE'
4287     Modify the `checkout' command to create a `CVS' directory at the
4288     top level of the new working directory, in addition to `CVS'
4289     directories created within checked-out directories.  The default
4290     value is `no'.
4291
4292     This option is useful if you find yourself performing many
4293     commands at the top level of your working directory, rather than
4294     in one of the checked out subdirectories.  The `CVS' directory
4295     created there will mean you don't have to specify `CVSROOT' for
4296     each command.  It also provides a place for the `CVS/Template'
4297     file (*note Working directory storage::).
4298
4299`UseArchiveCommentLeader=VALUE'
4300     Set to `true', if the text preceding a `$Log$' keyword is found to
4301     exceed `MaxCommentLeaderLength' (above) bytes, then the comment
4302     leader set in the RCS archive file (*note admin::), if any, will
4303     be used instead.  If there is no comment leader set in the archive
4304     file or VALUE is set to `false', then the keyword will not be
4305     expanded (*note Keyword list::).  To force the comment leader in
4306     the RCS archive file to be used exclusively (and `$Log$' expansion
4307     skipped in files where the comment leader has not been set in the
4308     archive file), set VALUE and set `MaxCommentLeaderLength' to `0'.
4309
4310`UseNewInfoFmtStrings=VALUE'
4311     Specify whether CVS should support the new or old command line
4312     template model for the commit support files (*note commit files::).
4313     This configuration variable began life in deprecation and is only
4314     here in order to give people time to update legacy repositories to
4315     use the new format string syntax before support for the old syntax
4316     is removed.  For information on updating your repository to
4317     support the new model, please see *Note Updating Commit Files::.
4318
4319     _Note that new repositories (created with the `cvs init' command)
4320     will have this value set to `yes', but the default value is `no'._
4321
4322`UserAdminOptions=VALUE'
4323     Control what options will be allowed with the `cvs admin' command
4324     (*note admin::) for users not in the `cvsadmin' group.  The VALUE
4325     string is a list of single character options which should be
4326     allowed.  If a user who is not a member of the `cvsadmin' group
4327     tries to execute any `cvs admin' option which is not listed they
4328     will will receive an error message reporting that the option is
4329     restricted.
4330
4331     If no `cvsadmin' group exists on the server, CVS will ignore the
4332     `UserAdminOptions' keyword (*note admin::).
4333
4334     When not specified, `UserAdminOptions' defaults to `k'.  In other
4335     words, it defaults to allowing users outside of the `cvsadmin'
4336     group to use the `cvs admin' command only to change the default
4337     keyword expansion mode for files.
4338
4339     As an example, to restrict users not in the `cvsadmin' group to
4340     using `cvs admin' to change the default keyword substitution mode,
4341     lock revisions, unlock revisions, and replace the log message, use
4342     `UserAdminOptions=klum'.
4343
4344
4345File: cvs.info,  Node: Environment variables,  Next: Compatibility,  Prev: Administrative files,  Up: Top
4346
4347Appendix D All environment variables which affect CVS
4348*****************************************************
4349
4350This is a complete list of all environment variables that affect CVS
4351(Windows users, please bear with this list; $VAR is equivalent to %VAR%
4352at the Windows command prompt).
4353
4354`$CVSIGNORE'
4355     A whitespace-separated list of file name patterns that CVS should
4356     ignore. *Note cvsignore::.
4357
4358`$CVSWRAPPERS'
4359     A whitespace-separated list of file name patterns that CVS should
4360     treat as wrappers. *Note Wrappers::.
4361
4362`$CVSREAD'
4363     If this is set, `checkout' and `update' will try hard to make the
4364     files in your working directory read-only.  When this is not set,
4365     the default behavior is to permit modification of your working
4366     files.
4367
4368`$CVSREADONLYFS'
4369     Turns on read-only repository mode. This allows one to check out
4370     from a read-only repository, such as within an anoncvs server, or
4371     from a CD-ROM repository.
4372
4373     It has the same effect as if the `-R' command-line option is used.
4374     This can also allow the use of read-only NFS repositories.
4375
4376`$CVSUMASK'
4377     Controls permissions of files in the repository.  See *Note File
4378     permissions::.
4379
4380`$CVSROOT'
4381     Should contain the full pathname to the root of the CVS source
4382     repository (where the RCS files are kept).  This information must
4383     be available to CVS for most commands to execute; if `$CVSROOT' is
4384     not set, or if you wish to override it for one invocation, you can
4385     supply it on the command line: `cvs -d cvsroot cvs_command...'
4386     Once you have checked out a working directory, CVS stores the
4387     appropriate root (in the file `CVS/Root'), so normally you only
4388     need to worry about this when initially checking out a working
4389     directory.
4390
4391`$CVSEDITOR'
4392`$EDITOR'
4393`$VISUAL'
4394     Specifies the program to use for recording log messages during
4395     commit.  `$CVSEDITOR' overrides `$EDITOR', which overrides
4396     `$VISUAL'.  See *Note Committing your changes:: for more or *Note
4397     Global options:: for alternative ways of specifying a log editor.
4398
4399`$PATH'
4400     If `$RCSBIN' is not set, and no path is compiled into CVS, it will
4401     use `$PATH' to try to find all programs it uses.
4402
4403`$HOME'
4404
4405`$HOMEPATH'
4406
4407`$HOMEDRIVE'
4408     Used to locate the directory where the `.cvsrc' file, and other
4409     such files, are searched.  On Unix, CVS just checks for `HOME'.
4410     On Windows NT, the system will set `HOMEDRIVE', for example to
4411     `d:' and `HOMEPATH', for example to `\joe'.  On Windows 95, you'll
4412     probably need to set `HOMEDRIVE' and `HOMEPATH' yourself.
4413
4414`$CVS_RSH'
4415     Specifies the external program which CVS connects with, when
4416     `:ext:' access method is specified.  *note Connecting via rsh::.
4417
4418`$CVS_SERVER'
4419     Used in client-server mode when accessing a remote repository
4420     using RSH.  It specifies the name of the program to start on the
4421     server side (and any necessary arguments) when accessing a remote
4422     repository using the `:ext:', `:fork:', or `:server:' access
4423     methods.  The default value for `:ext:' and `:server:' is `cvs';
4424     the default value for `:fork:' is the name used to run the client.
4425     *note Connecting via rsh::
4426
4427`$CVS_PASSFILE'
4428     Used in client-server mode when accessing the `cvs login server'.
4429     Default value is `$HOME/.cvspass'.  *note Password authentication
4430     client::
4431
4432`$CVS_CLIENT_PORT'
4433     Used in client-server mode to set the port to use when accessing
4434     the server via Kerberos, GSSAPI, or CVS's password authentication
4435     protocol if the port is not specified in the CVSROOT.  *note
4436     Remote repositories::
4437
4438`$CVS_PROXY_PORT'
4439     Used in client-server mode to set the port to use when accessing a
4440     server via a web proxy, if the port is not specified in the
4441     CVSROOT.  Works with GSSAPI, and the password authentication
4442     protocol.  *note Remote repositories::
4443
4444`$CVS_RCMD_PORT'
4445     Used in client-server mode.  If set, specifies the port number to
4446     be used when accessing the RCMD demon on the server side.
4447     (Currently not used for Unix clients).
4448
4449`$CVS_CLIENT_LOG'
4450     Used for debugging only in client-server mode.  If set, everything
4451     sent to the server is logged into ``$CVS_CLIENT_LOG'.in' and
4452     everything sent from the server is logged into
4453     ``$CVS_CLIENT_LOG'.out'.
4454
4455`$CVS_SERVER_SLEEP'
4456     Used only for debugging the server side in client-server mode.  If
4457     set, delays the start of the server child process the specified
4458     amount of seconds so that you can attach to it with a debugger.
4459
4460`$CVS_IGNORE_REMOTE_ROOT'
4461     For CVS 1.10 and older, setting this variable prevents CVS from
4462     overwriting the `CVS/Root' file when the `-d' global option is
4463     specified.  Later versions of CVS do not rewrite `CVS/Root', so
4464     `CVS_IGNORE_REMOTE_ROOT' has no effect.
4465
4466`$CVS_LOCAL_BRANCH_NUM'
4467     Setting this variable allows some control over the branch number
4468     that is assigned. This is specifically to support the local commit
4469     feature of CVSup. If one sets `CVS_LOCAL_BRANCH_NUM' to (say) 1000
4470     then branches the local repository, the revision numbers will look
4471     like 1.66.1000.xx. There is almost a dead-set certainty that there
4472     will be no conflicts with version numbers.
4473
4474`$COMSPEC'
4475     Used under OS/2 only.  It specifies the name of the command
4476     interpreter and defaults to CMD.EXE.
4477
4478`$TMPDIR'
4479     Directory in which temporary files are located.  *Note Global
4480     options::, for more on setting the temporary directory.
4481
4482`$CVS_PID'
4483     This is the process identification (aka pid) number of the CVS
4484     process. It is often useful in the programs and/or scripts
4485     specified by the `commitinfo', `verifymsg', `loginfo' files.
4486
4487
4488File: cvs.info,  Node: Compatibility,  Next: Troubleshooting,  Prev: Environment variables,  Up: Top
4489
4490Appendix E Compatibility between CVS Versions
4491*********************************************
4492
4493The repository format is compatible going back to CVS 1.3.  But see
4494*Note Watches Compatibility::, if you have copies of CVS 1.6 or older
4495and you want to use the optional developer communication features.
4496
4497   The working directory format is compatible going back to CVS 1.5.
4498It did change between CVS 1.3 and CVS 1.5.  If you run CVS 1.5 or newer
4499on a working directory checked out with CVS 1.3, CVS will convert it,
4500but to go back to CVS 1.3 you need to check out a new working directory
4501with CVS 1.3.
4502
4503   The remote protocol is interoperable going back to CVS 1.5, but no
4504further (1.5 was the first official release with the remote protocol,
4505but some older versions might still be floating around).  In many cases
4506you need to upgrade both the client and the server to take advantage of
4507new features and bug fixes, however.
4508
4509
4510File: cvs.info,  Node: Troubleshooting,  Next: Credits,  Prev: Compatibility,  Up: Top
4511
4512Appendix F Troubleshooting
4513**************************
4514
4515If you are having trouble with CVS, this appendix may help.  If there
4516is a particular error message which you are seeing, then you can look
4517up the message alphabetically.  If not, you can look through the
4518section on other problems to see if your problem is mentioned there.
4519
4520* Menu:
4521
4522* Error messages::              Partial list of CVS errors
4523* Connection::                  Trouble making a connection to a CVS server
4524* Other problems::              Problems not readily listed by error message
4525
4526
4527File: cvs.info,  Node: Error messages,  Next: Connection,  Up: Troubleshooting
4528
4529F.1 Partial list of error messages
4530==================================
4531
4532Here is a partial list of error messages that you may see from CVS.  It
4533is not a complete list--CVS is capable of printing many, many error
4534messages, often with parts of them supplied by the operating system,
4535but the intention is to list the common and/or potentially confusing
4536error messages.
4537
4538   The messages are alphabetical, but introductory text such as `cvs
4539update: ' is not considered in ordering them.
4540
4541   In some cases the list includes messages printed by old versions of
4542CVS (partly because users may not be sure which version of CVS they are
4543using at any particular moment).
4544
4545`FILE:LINE: Assertion 'TEXT' failed'
4546     The exact format of this message may vary depending on your
4547     system.  It indicates a bug in CVS, which can be handled as
4548     described in *Note BUGS::.
4549
4550`cvs COMMAND: authorization failed: server HOST rejected access'
4551     This is a generic response when trying to connect to a pserver
4552     server which chooses not to provide a specific reason for denying
4553     authorization.  Check that the username and password specified are
4554     correct and that the `CVSROOT' specified is allowed by
4555     `--allow-root' in `inetd.conf'.  See *Note Password
4556     authenticated::.
4557
4558`cvs COMMAND: conflict: removed FILE was modified by second party'
4559     This message indicates that you removed a file, and someone else
4560     modified it.  To resolve the conflict, first run `cvs add FILE'.
4561     If desired, look at the other party's modification to decide
4562     whether you still want to remove it.  If you don't want to remove
4563     it, stop here.  If you do want to remove it, proceed with `cvs
4564     remove FILE' and commit your removal.
4565
4566`cannot change permissions on temporary directory'
4567          Operation not permitted
4568     This message has been happening in a non-reproducible, occasional
4569     way when we run the client/server testsuite, both on Red Hat Linux
4570     3.0.3 and 4.1.  We haven't been able to figure out what causes it,
4571     nor is it known whether it is specific to Linux (or even to this
4572     particular machine!).  If the problem does occur on other unices,
4573     `Operation not permitted' would be likely to read `Not owner' or
4574     whatever the system in question uses for the unix `EPERM' error.
4575     If you have any information to add, please let us know as
4576     described in *Note BUGS::.  If you experience this error while
4577     using CVS, retrying the operation which produced it should work
4578     fine.
4579
4580`cvs [server aborted]: Cannot check out files into the repository itself'
4581     The obvious cause for this message (especially for
4582     non-client/server CVS) is that the CVS root is, for example,
4583     `/usr/local/cvsroot' and you try to check out files when you are
4584     in a subdirectory, such as `/usr/local/cvsroot/test'.  However,
4585     there is a more subtle cause, which is that the temporary
4586     directory on the server is set to a subdirectory of the root
4587     (which is also not allowed).  If this is the problem, set the
4588     temporary directory to somewhere else, for example `/var/tmp'; see
4589     `TMPDIR' in *Note Environment variables::, for how to set the
4590     temporary directory.
4591
4592`cannot commit files as 'root''
4593     See `'root' is not allowed to commit files'.
4594
4595`cannot open CVS/Entries for reading: No such file or directory'
4596     This generally indicates a CVS internal error, and can be handled
4597     as with other CVS bugs (*note BUGS::).  Usually there is a
4598     workaround--the exact nature of which would depend on the
4599     situation but which hopefully could be figured out.
4600
4601`cvs [init aborted]: cannot open CVS/Root: No such file or directory'
4602     This message is harmless.  Provided it is not accompanied by other
4603     errors, the operation has completed successfully.  This message
4604     should not occur with current versions of CVS, but it is documented
4605     here for the benefit of CVS 1.9 and older.
4606
4607`cvs server: cannot open /root/.cvsignore: Permission denied'
4608`cvs [server aborted]: can't chdir(/root): Permission denied'
4609     See *Note Connection::.
4610
4611`cvs [checkout aborted]: cannot rename file FILE to CVS/,,FILE: Invalid argument'
4612     This message has been reported as intermittently happening with
4613     CVS 1.9 on Solaris 2.5.  The cause is unknown; if you know more
4614     about what causes it, let us know as described in *Note BUGS::.
4615
4616`cvs [COMMAND aborted]: cannot start server via rcmd'
4617     This, unfortunately, is a rather nonspecific error message which
4618     CVS 1.9 will print if you are running the CVS client and it is
4619     having trouble connecting to the server.  Current versions of CVS
4620     should print a much more specific error message.  If you get this
4621     message when you didn't mean to run the client at all, you
4622     probably forgot to specify `:local:', as described in *Note
4623     Repository::.
4624
4625`ci: FILE,v: bad diff output line: Binary files - and /tmp/T2a22651 differ'
4626     CVS 1.9 and older will print this message when trying to check in
4627     a binary file if RCS is not correctly installed.  Re-read the
4628     instructions that came with your RCS distribution and the INSTALL
4629     file in the CVS distribution.  Alternately, upgrade to a current
4630     version of CVS, which checks in files itself rather than via RCS.
4631
4632`cvs checkout: could not check out FILE'
4633     With CVS 1.9, this can mean that the `co' program (part of RCS)
4634     returned a failure.  It should be preceded by another error
4635     message, however it has been observed without another error
4636     message and the cause is not well-understood.  With the current
4637     version of CVS, which does not run `co', if this message occurs
4638     without another error message, it is definitely a CVS bug (*note
4639     BUGS::).
4640
4641`cvs [login aborted]: could not find out home directory'
4642     This means that you need to set the environment variables that CVS
4643     uses to locate your home directory.  See the discussion of `HOME',
4644     `HOMEDRIVE', and `HOMEPATH' in *Note Environment variables::.
4645
4646`cvs update: could not merge revision REV of FILE: No such file or directory'
4647     CVS 1.9 and older will print this message if there was a problem
4648     finding the `rcsmerge' program.  Make sure that it is in your
4649     `PATH', or upgrade to a current version of CVS, which does not
4650     require an external `rcsmerge' program.
4651
4652`cvs [update aborted]: could not patch FILE: No such file or directory'
4653     This means that there was a problem finding the `patch' program.
4654     Make sure that it is in your `PATH'.  Note that despite
4655     appearances the message is _not_ referring to whether it can find
4656     FILE.  If both the client and the server are running a current
4657     version of CVS, then there is no need for an external patch
4658     program and you should not see this message.  But if either client
4659     or server is running CVS 1.9, then you need `patch'.
4660
4661`cvs update: could not patch FILE; will refetch'
4662     This means that for whatever reason the client was unable to apply
4663     a patch that the server sent.  The message is nothing to be
4664     concerned about, because inability to apply the patch only slows
4665     things down and has no effect on what CVS does.
4666
4667`dying gasps from SERVER unexpected'
4668     There is a known bug in the server for CVS 1.9.18 and older which
4669     can cause this.  For me, this was reproducible if I used the `-t'
4670     global option.  It was fixed by Andy Piper's 14 Nov 1997 change to
4671     src/filesubr.c, if anyone is curious.  If you see the message, you
4672     probably can just retry the operation which failed, or if you have
4673     discovered information concerning its cause, please let us know as
4674     described in *Note BUGS::.
4675
4676`end of file from server (consult above messages if any)'
4677     The most common cause for this message is if you are using an
4678     external `rsh' program and it exited with an error.  In this case
4679     the `rsh' program should have printed a message, which will appear
4680     before the above message.  For more information on setting up a
4681     CVS client and server, see *Note Remote repositories::.
4682
4683`cvs [update aborted]: EOF in key in RCS file FILE,v'
4684`cvs [checkout aborted]: EOF while looking for end of string in RCS file FILE,v'
4685     This means that there is a syntax error in the given RCS file.
4686     Note that this might be true even if RCS can read the file OK; CVS
4687     does more error checking of errors in the RCS file.  That is why
4688     you may see this message when upgrading from CVS 1.9 to CVS 1.10.
4689     The likely cause for the original corruption is hardware, the
4690     operating system, or the like.  Of course, if you find a case in
4691     which CVS seems to corrupting the file, by all means report it,
4692     (*note BUGS::).  There are quite a few variations of this error
4693     message, depending on exactly where in the RCS file CVS finds the
4694     syntax error.
4695
4696`cvs commit: Executing 'mkmodules''
4697     This means that your repository is set up for a version of CVS
4698     prior to CVS 1.8.  When using CVS 1.8 or later, the above message
4699     will be preceded by
4700
4701          cvs commit: Rebuilding administrative file database
4702
4703     If you see both messages, the database is being rebuilt twice,
4704     which is unnecessary but harmless.  If you wish to avoid the
4705     duplication, and you have no versions of CVS 1.7 or earlier in
4706     use, remove `-i mkmodules' every place it appears in your `modules'
4707     file.  For more information on the `modules' file, see *Note
4708     modules::.
4709
4710`missing author'
4711     Typically this can happen if you created an RCS file with your
4712     username set to empty.  CVS will, bogusly, create an illegal RCS
4713     file with no value for the author field.  The solution is to make
4714     sure your username is set to a non-empty value and re-create the
4715     RCS file.
4716
4717`cvs [checkout aborted]: no such tag TAG'
4718     This message means that CVS isn't familiar with the tag TAG.
4719     Usually the root cause is that you have mistyped a tag name.
4720     Ocassionally this can also occur because the users creating tags
4721     do not have permissions to write to the `CVSROOT/val-tags' file
4722     (*note File permissions::, for more).
4723
4724     Prior to CVS version 1.12.10, there were a few relatively obscure
4725     cases where a given tag could be created in an archive file in the
4726     repository but CVS would require the user to try a few other CVS
4727     commands involving that tag until one was found whch caused CVS to
4728     update the `val-tags' file, at which point the originally failing
4729     command would begin to work.  This same method can be used to
4730     repair a `val-tags' file that becomes out of date due to the
4731     permissions problem mentioned above.  This updating is only
4732     required once per tag - once a tag is listed in `val-tags', it
4733     stays there.
4734
4735     Note that using `tag -f' to not require tag matches did not and
4736     does not override this check (*note Common options::).
4737
4738`*PANIC* administration files missing'
4739     This typically means that there is a directory named CVS but it
4740     does not contain the administrative files which CVS puts in a CVS
4741     directory.  If the problem is that you created a CVS directory via
4742     some mechanism other than CVS, then the answer is simple, use a
4743     name other than CVS.  If not, it indicates a CVS bug (*note
4744     BUGS::).
4745
4746`rcs error: Unknown option: -x,v/'
4747     This message will be followed by a usage message for RCS.  It
4748     means that you have an old version of RCS (probably supplied with
4749     your operating system), as well as an old version of CVS.  CVS
4750     1.9.18 and earlier only work with RCS version 5 and later; current
4751     versions of CVS do not run RCS programs.
4752
4753`cvs [server aborted]: received broken pipe signal'
4754     This message can be caused by a loginfo program that fails to read
4755     all of the log information from its standard input.  If you find
4756     it happening in any other circumstances, please let us know as
4757     described in *Note BUGS::.
4758
4759`'root' is not allowed to commit files'
4760     When committing a permanent change, CVS makes a log entry of who
4761     committed the change.  If you are committing the change logged in
4762     as "root" (not under "su" or other root-priv giving program), CVS
4763     cannot determine who is actually making the change.  As such, by
4764     default, CVS disallows changes to be committed by users logged in
4765     as "root".  (You can disable this option by passing the
4766     `--enable-rootcommit' option to `configure' and recompiling CVS.
4767     On some systems this means editing the appropriate `config.h' file
4768     before building CVS.)
4769
4770`cvs [server aborted]: Secondary out of sync with primary!'
4771     This usually means that the version of CVS running on a secondary
4772     server is incompatible with the version running on the primary
4773     server (*note Write proxies::).  This will not occur if the client
4774     supports redirection.
4775
4776     It is not the version number that is significant here, but the
4777     list of supported requests that the servers provide to the client.
4778     For example, even if both servers were the same version, if the
4779     secondary was compiled with GSSAPI support and the primary was not,
4780     the list of supported requests provided by the two servers would
4781     be different and the secondary would not work as a transparent
4782     proxy to the primary.  Conversely, even if the two servers were
4783     radically different versions but both provided the same list of
4784     valid requests to the client, the transparent proxy would succeed.
4785
4786`Terminated with fatal signal 11'
4787     This message usually indicates that CVS (the server, if you're
4788     using client/server mode) has run out of (virtual) memory.
4789     Although CVS tries to catch the error and issue a more meaningful
4790     message, there are many circumstances where that is not possible.
4791     If you appear to have lots of memory available to the system, the
4792     problem is most likely that you're running into a system-wide
4793     limit on the amount of memory a single process can use or a
4794     similar process-specific limit.  The mechanisms for displaying and
4795     setting such limits vary from system to system, so you'll have to
4796     consult an expert for your particular system if you don't know how
4797     to do that.
4798
4799`Too many arguments!'
4800     This message is typically printed by the `log.pl' script which is
4801     in the `contrib' directory in the CVS source distribution.  In
4802     some versions of CVS, `log.pl' has been part of the default CVS
4803     installation.  The `log.pl' script gets called from the `loginfo'
4804     administrative file.  Check that the arguments passed in `loginfo'
4805     match what your version of `log.pl' expects.  In particular, the
4806     `log.pl' from CVS 1.3 and older expects the log file as an
4807     argument whereas the `log.pl' from CVS 1.5 and newer expects the
4808     log file to be specified with a `-f' option.  Of course, if you
4809     don't need `log.pl' you can just comment it out of `loginfo'.
4810
4811`cvs [update aborted]: unexpected EOF reading FILE,v'
4812     See `EOF in key in RCS file'.
4813
4814`cvs [login aborted]: unrecognized auth response from SERVER'
4815     This message typically means that the server is not set up
4816     properly.  For example, if `inetd.conf' points to a nonexistent
4817     cvs executable.  To debug it further, find the log file which
4818     inetd writes (`/var/log/messages' or whatever inetd uses on your
4819     system).  For details, see *Note Connection::, and *Note Password
4820     authentication server::.
4821
4822`cvs commit: Up-to-date check failed for `FILE''
4823     This means that someone else has committed a change to that file
4824     since the last time that you did a `cvs update'.  So before
4825     proceeding with your `cvs commit' you need to `cvs update'.  CVS
4826     will merge the changes that you made and the changes that the
4827     other person made.  If it does not detect any conflicts it will
4828     report `M FILE' and you are ready to `cvs commit'.  If it detects
4829     conflicts it will print a message saying so, will report `C FILE',
4830     and you need to manually resolve the conflict.  For more details
4831     on this process see *Note Conflicts example::.
4832
4833`Usage:	diff3 [-exEX3 [-i | -m] [-L label1 -L label3]] file1 file2 file3'
4834          Only one of [exEX3] allowed
4835     This indicates a problem with the installation of `diff3' and
4836     `rcsmerge'.  Specifically `rcsmerge' was compiled to look for GNU
4837     diff3, but it is finding unix diff3 instead.  The exact text of
4838     the message will vary depending on the system.  The simplest
4839     solution is to upgrade to a current version of CVS, which does not
4840     rely on external `rcsmerge' or `diff3' programs.
4841
4842`warning: unrecognized response `TEXT' from cvs server'
4843     If TEXT contains a valid response (such as `ok') followed by an
4844     extra carriage return character (on many systems this will cause
4845     the second part of the message to overwrite the first part), then
4846     it probably means that you are using the `:ext:' access method
4847     with a version of rsh, such as most non-unix rsh versions, which
4848     does not by default provide a transparent data stream.  In such
4849     cases you probably want to try `:server:' instead of `:ext:'.  If
4850     TEXT is something else, this may signify a problem with your CVS
4851     server.  Double-check your installation against the instructions
4852     for setting up the CVS server.
4853
4854`cvs commit: [TIME] waiting for USER's lock in DIRECTORY'
4855     This is a normal message, not an error.  See *Note Concurrency::,
4856     for more details.
4857
4858`cvs commit: warning: editor session failed'
4859     This means that the editor which CVS is using exits with a nonzero
4860     exit status.  Some versions of vi will do this even when there was
4861     not a problem editing the file.  If so, point the `CVSEDITOR'
4862     environment variable to a small script such as:
4863
4864          #!/bin/sh
4865          vi $*
4866          exit 0
4867
4868`cvs update: warning: FILE was lost'
4869     This means that the working copy of FILE has been deleted but it
4870     has not been removed from CVS.  This is nothing to be concerned
4871     about, the update will just recreate the local file from the
4872     repository.  (This is a convenient way to discard local changes to
4873     a file: just delete it and then run `cvs update'.)
4874
4875`cvs update: warning: FILE is not (any longer) pertinent'
4876     This means that the working copy of FILE has been deleted, it has
4877     not been removed from CVS in the current working directory, but it
4878     has been removed from CVS in some other working directory.  This
4879     is nothing to be concerned about, the update would have removed
4880     the local file anyway.
4881
4882
4883
4884File: cvs.info,  Node: Connection,  Next: Other problems,  Prev: Error messages,  Up: Troubleshooting
4885
4886F.2 Trouble making a connection to a CVS server
4887===============================================
4888
4889This section concerns what to do if you are having trouble making a
4890connection to a CVS server.  If you are running the CVS command line
4891client running on Windows, first upgrade the client to CVS 1.9.12 or
4892later.  The error reporting in earlier versions provided much less
4893information about what the problem was.  If the client is non-Windows,
4894CVS 1.9 should be fine.
4895
4896   If the error messages are not sufficient to track down the problem,
4897the next steps depend largely on which access method you are using.
4898
4899`:ext:'
4900     Try running the rsh program from the command line.  For example:
4901     "rsh servername cvs -v" should print CVS version information.  If
4902     this doesn't work, you need to fix it before you can worry about
4903     CVS problems.
4904
4905`:server:'
4906     You don't need a command line rsh program to use this access
4907     method, but if you have an rsh program around, it may be useful as
4908     a debugging tool.  Follow the directions given for :ext:.
4909
4910`:pserver:'
4911     Errors along the lines of "connection refused" typically indicate
4912     that inetd isn't even listening for connections on port 2401
4913     whereas errors like "connection reset by peer", "received broken
4914     pipe signal", "recv() from server: EOF", or "end of file from
4915     server" typically indicate that inetd is listening for connections
4916     but is unable to start CVS (this is frequently caused by having an
4917     incorrect path in `inetd.conf' or by firewall software rejecting
4918     the connection).  "unrecognized auth response" errors are caused
4919     by a bad command line in `inetd.conf', typically an invalid option
4920     or forgetting to put the `pserver' command at the end of the line.
4921     Another less common problem is invisible control characters that
4922     your editor "helpfully" added without you noticing.
4923
4924     One good debugging tool is to "telnet servername 2401".  After
4925     connecting, send any text (for example "foo" followed by return).
4926     If CVS is working correctly, it will respond with
4927
4928          cvs [pserver aborted]: bad auth protocol start: foo
4929
4930     If instead you get:
4931
4932          Usage: cvs [cvs-options] command [command-options-and-arguments]
4933          ...
4934
4935     then you're missing the `pserver' command at the end of the line
4936     in `inetd.conf'; check to make sure that the entire command is on
4937     one line and that it's complete.
4938
4939     Likewise, if you get something like:
4940
4941          Unknown command: `pserved'
4942
4943          CVS commands are:
4944                  add          Add a new file/directory to the repository
4945          ...
4946
4947     then you've misspelled `pserver' in some way.  If it isn't
4948     obvious, check for invisible control characters (particularly
4949     carriage returns) in `inetd.conf'.
4950
4951     If it fails to work at all, then make sure inetd is working right.
4952     Change the invocation in `inetd.conf' to run the echo program
4953     instead of cvs.  For example:
4954
4955          2401  stream  tcp  nowait  root /bin/echo echo hello
4956
4957     After making that change and instructing inetd to re-read its
4958     configuration file, "telnet servername 2401" should show you the
4959     text hello and then the server should close the connection.  If
4960     this doesn't work, you need to fix it before you can worry about
4961     CVS problems.
4962
4963     On AIX systems, the system will often have its own program trying
4964     to use port 2401.  This is AIX's problem in the sense that port
4965     2401 is registered for use with CVS.  I hear that there is an AIX
4966     patch available to address this problem.
4967
4968     Another good debugging tool is the `-d' (debugging) option to
4969     inetd.  Consult your system documentation for more information.
4970
4971     If you seem to be connecting but get errors like:
4972
4973          cvs server: cannot open /root/.cvsignore: Permission denied
4974          cvs [server aborted]: can't chdir(/root): Permission denied
4975
4976     then you probably haven't specified `-f' in `inetd.conf'.  (In
4977     releases prior to CVS 1.11.1, this problem can be caused by your
4978     system setting the `$HOME' environment variable for programs being
4979     run by inetd.  In this case, you can either have inetd run a shell
4980     script that unsets `$HOME' and then runs CVS, or you can use `env'
4981     to run CVS with a pristine environment.)
4982
4983     If you can connect successfully for a while but then can't, you've
4984     probably hit inetd's rate limit.  (If inetd receives too many
4985     requests for the same service in a short period of time, it
4986     assumes that something is wrong and temporarily disables the
4987     service.)  Check your inetd documentation to find out how to
4988     adjust the rate limit (some versions of inetd have a single rate
4989     limit, others allow you to set the limit for each service
4990     separately.)
4991
4992
4993File: cvs.info,  Node: Other problems,  Prev: Connection,  Up: Troubleshooting
4994
4995F.3 Other common problems
4996=========================
4997
4998Here is a list of problems which do not fit into the above categories.
4999They are in no particular order.
5000
5001   * On Windows, if there is a 30 second or so delay when you run a CVS
5002     command, it may mean that you have your home directory set to
5003     `C:/', for example (see `HOMEDRIVE' and `HOMEPATH' in *Note
5004     Environment variables::).  CVS expects the home directory to not
5005     end in a slash, for example `C:' or `C:\cvs'.
5006
5007   * If you are running CVS 1.9.18 or older, and `cvs update' finds a
5008     conflict and tries to merge, as described in *Note Conflicts
5009     example::, but doesn't tell you there were conflicts, then you may
5010     have an old version of RCS.  The easiest solution probably is to
5011     upgrade to a current version of CVS, which does not rely on
5012     external RCS programs.
5013
5014
5015File: cvs.info,  Node: Credits,  Next: BUGS,  Prev: Troubleshooting,  Up: Top
5016
5017Appendix G Credits
5018******************
5019
5020Roland Pesch, then of Cygnus Support <roland@wrs.com> wrote the manual
5021pages which were distributed with CVS 1.3.  Much of their text was
5022copied into this manual.  He also read an early draft of this manual
5023and contributed many ideas and corrections.
5024
5025   The mailing-list `info-cvs' is sometimes informative. I have
5026included information from postings made by the following persons: David
5027G. Grubbs <dgg@think.com>.
5028
5029   Some text has been extracted from the man pages for RCS.
5030
5031   The CVS FAQ by David G. Grubbs has provided useful material.  The
5032FAQ is no longer maintained, however, and this manual is about the
5033closest thing there is to a successor (with respect to documenting how
5034to use CVS, at least).
5035
5036   In addition, the following persons have helped by telling me about
5037mistakes I've made:
5038
5039     Roxanne Brunskill <rbrunski@datap.ca>,
5040     Kathy Dyer <dyer@phoenix.ocf.llnl.gov>,
5041     Karl Pingle <pingle@acuson.com>,
5042     Thomas A Peterson <tap@src.honeywell.com>,
5043     Inge Wallin <ingwa@signum.se>,
5044     Dirk Koschuetzki <koschuet@fmi.uni-passau.de>
5045     and Michael Brown <brown@wi.extrel.com>.
5046
5047   The list of contributors here is not comprehensive; for a more
5048complete list of who has contributed to this manual see the file
5049`doc/ChangeLog' in the CVS source distribution.
5050
5051
5052File: cvs.info,  Node: BUGS,  Next: Index,  Prev: Credits,  Up: Top
5053
5054Appendix H Dealing with bugs in CVS or this manual
5055**************************************************
5056
5057Neither CVS nor this manual is perfect, and they probably never will
5058be.  If you are having trouble using CVS, or think you have found a
5059bug, there are a number of things you can do about it.  Note that if
5060the manual is unclear, that can be considered a bug in the manual, so
5061these problems are often worth doing something about as well as
5062problems with CVS itself.
5063
5064   * If you want someone to help you and fix bugs that you report,
5065     there are companies which will do that for a fee.  One such
5066     company is:
5067
5068          Ximbiot
5069          319 S. River St.
5070          Harrisburg, PA  17104-1657
5071          USA
5072          Email: info@ximbiot.com
5073          Phone: (717) 579-6168
5074          Fax:   (717) 234-3125
5075          `http://ximbiot.com/'
5076
5077   * If you got CVS through a distributor, such as an operating system
5078     vendor or a vendor of freeware CD-ROMs, you may wish to see
5079     whether the distributor provides support.  Often, they will provide
5080     no support or minimal support, but this may vary from distributor
5081     to distributor.
5082
5083   * If you have the skills and time to do so, you may wish to fix the
5084     bug yourself.  If you wish to submit your fix for inclusion in
5085     future releases of CVS, see the file HACKING in the CVS source
5086     distribution.  It contains much more information on the process of
5087     submitting fixes.
5088
5089   * There may be resources on the net which can help.  A good place to
5090     start is:
5091
5092          `http://cvs.nongnu.org/'
5093
5094     If you are so inspired, increasing the information available on
5095     the net is likely to be appreciated.  For example, before the
5096     standard CVS distribution worked on Windows 95, there was a web
5097     page with some explanation and patches for running CVS on Windows
5098     95, and various people helped out by mentioning this page on
5099     mailing lists or newsgroups when the subject came up.
5100
5101   * It is also possible to report bugs to <bug-cvs@nongnu.org>.  Note
5102     that someone may or may not want to do anything with your bug
5103     report--if you need a solution consider one of the options
5104     mentioned above.  People probably do want to hear about bugs which
5105     are particularly severe in consequences and/or easy to fix,
5106     however.  You can also increase your odds by being as clear as
5107     possible about the exact nature of the bug and any other relevant
5108     information.  The way to report bugs is to send email to
5109     <bug-cvs@nongnu.org>.  Note that submissions to
5110     <bug-cvs@nongnu.org> may be distributed under the terms of the GNU
5111     Public License, so if you don't like this, don't submit them.
5112     There is usually no justification for sending mail directly to one
5113     of the CVS maintainers rather than to <bug-cvs@nongnu.org>; those
5114     maintainers who want to hear about such bug reports read
5115     <bug-cvs@nongnu.org>.  Also note that sending a bug report to
5116     other mailing lists or newsgroups is _not_ a substitute for
5117     sending it to <bug-cvs@nongnu.org>.  It is fine to discuss CVS
5118     bugs on whatever forum you prefer, but there are not necessarily
5119     any maintainers reading bug reports sent anywhere except
5120     <bug-cvs@nongnu.org>.
5121
5122   People often ask if there is a list of known bugs or whether a
5123particular bug is a known one.  The file BUGS in the CVS source
5124distribution is one list of known bugs, but it doesn't necessarily try
5125to be comprehensive.  Perhaps there will never be a comprehensive,
5126detailed list of known bugs.
5127
5128
5129File: cvs.info,  Node: Index,  Prev: BUGS,  Up: Top
5130
5131Index
5132*****
5133
5134�[index�]
5135* Menu:
5136
5137* !, in modules file:                    Excluding directories.
5138                                                              (line   6)
5139* #cvs.lock, removing:                   Concurrency.         (line  11)
5140* #cvs.lock, technical details:          Locks.               (line   6)
5141* #cvs.pfl, technical details:           Locks.               (line   6)
5142* #cvs.rfl, and backups:                 Backing up.          (line  10)
5143* #cvs.rfl, removing:                    Concurrency.         (line  11)
5144* #cvs.rfl, technical details:           Locks.               (line   6)
5145* #cvs.tfl:                              Locks.               (line  14)
5146* #cvs.wfl, removing:                    Concurrency.         (line  11)
5147* #cvs.wfl, technical details:           Locks.               (line   6)
5148* &, in modules file:                    Ampersand modules.   (line   6)
5149* -a, in modules file:                   Alias modules.       (line   6)
5150* -d, in modules file:                   Module options.      (line   9)
5151* -e, in modules file <1>:               Module program options.
5152                                                              (line   6)
5153* -e, in modules file:                   Module options.      (line  12)
5154* -j (merging branches):                 Merging a branch.    (line   6)
5155* -j (merging branches), and keyword substitution: Merging and keywords.
5156                                                              (line   6)
5157* -k (keyword substitution):             Substitution modes.  (line   6)
5158* -kk, to avoid conflicts during a merge: Merging and keywords.
5159                                                              (line   6)
5160* -o, in modules file <1>:               Module program options.
5161                                                              (line   6)
5162* -o, in modules file:                   Module options.      (line  16)
5163* -s, in modules file:                   Module options.      (line  22)
5164* -t, in modules file <1>:               Module program options.
5165                                                              (line   6)
5166* -t, in modules file:                   Module options.      (line  30)
5167* .# files:                              update output.       (line  49)
5168* .bashrc, setting CVSROOT in:           Specifying a repository.
5169                                                              (line  12)
5170* .cshrc, setting CVSROOT in:            Specifying a repository.
5171                                                              (line  12)
5172* .cvsrc file:                           ~/.cvsrc.            (line   6)
5173* .profile, setting CVSROOT in:          Specifying a repository.
5174                                                              (line  12)
5175* .tcshrc, setting CVSROOT in:           Specifying a repository.
5176                                                              (line  12)
5177* /usr/local/cvsroot, as example repository: Repository.      (line   6)
5178* :ext:, setting up:                     Connecting via rsh.  (line  35)
5179* :ext:, troubleshooting:                Connection.          (line  16)
5180* :fork:, setting up:                    Connecting via fork. (line   6)
5181* :gserver:, setting up:                 GSSAPI authenticated.
5182                                                              (line   6)
5183* :kserver:, setting up:                 Kerberos authenticated.
5184                                                              (line   6)
5185* :local:, setting up:                   Repository.          (line  19)
5186* :pserver:, setting up:                 Password authentication client.
5187                                                              (line   6)
5188* :pserver:, troubleshooting:            Connection.          (line  27)
5189* :server:, setting up:                  Connecting via rsh.  (line  35)
5190* :server:, troubleshooting:             Connection.          (line  22)
5191* <<<<<<<:                               Conflicts example.   (line  96)
5192* =======:                               Conflicts example.   (line  96)
5193* >>>>>>>:                               Conflicts example.   (line  96)
5194* __ files (VMS):                        update output.       (line  49)
5195* Abandoning work:                       Editing files.       (line  42)
5196* abbreviations for months:              Calendar date items. (line  38)
5197* Access a branch:                       Accessing branches.  (line   6)
5198* add (subcommand):                      Adding files.        (line  34)
5199* Adding a tag:                          Tags.                (line  45)
5200* Adding files:                          Adding files.        (line   6)
5201* Admin (subcommand):                    admin.               (line   6)
5202* Admin commands, logging:               postadmin.           (line   6)
5203* Administrative files (intro):          Intro administrative files.
5204                                                              (line   6)
5205* Administrative files (reference):      Administrative files.
5206                                                              (line   6)
5207* Administrative files, editing them:    Intro administrative files.
5208                                                              (line  33)
5209* Alias modules:                         Alias modules.       (line   6)
5210* ALL keyword, in lieu of regular expressions in script hooks: syntax.
5211                                                              (line  12)
5212* Ampersand modules:                     Ampersand modules.   (line   6)
5213* annotate (subcommand):                 annotate.            (line   6)
5214* Atomic transactions, lack of:          Concurrency.         (line  27)
5215* Attic:                                 Attic.               (line   6)
5216* Authenticated client, using:           Password authentication client.
5217                                                              (line   6)
5218* Authenticating server, setting up:     Password authentication server.
5219                                                              (line  10)
5220* Authentication, stream:                Global options.      (line  16)
5221* Author keyword:                        Keyword list.        (line   8)
5222* authors of get_date:                   Authors of get_date. (line   6)
5223* Automatically ignored files:           cvsignore.           (line  23)
5224* Avoiding editor invocation:            Common options.      (line  86)
5225* Backing up, repository:                Backing up.          (line   6)
5226* Base directory, in CVS directory:      Working directory storage.
5227                                                              (line 178)
5228* BASE, as reserved tag name:            Tags.                (line  25)
5229* BASE, special tag:                     Common options.      (line 122)
5230* Baserev file, in CVS directory:        Working directory storage.
5231                                                              (line 184)
5232* Baserev.tmp file, in CVS directory:    Working directory storage.
5233                                                              (line 192)
5234* beginning of time, for POSIX:          Seconds since the Epoch.
5235                                                              (line  13)
5236* Bellovin, Steven M.:                   Authors of get_date. (line   6)
5237* Berets, Jim:                           Authors of get_date. (line   6)
5238* Berry, K.:                             Authors of get_date. (line  14)
5239* Bill of materials:                     Builds.              (line  25)
5240* Binary files:                          Binary files.        (line   6)
5241* Branch merge example:                  Merging a branch.    (line  15)
5242* Branch number <1>:                     Branches and revisions.
5243                                                              (line   6)
5244* Branch number:                         Revision numbers.    (line   6)
5245* Branch tags, deleting:                 Modifying tags.      (line  19)
5246* Branch tags, moving:                   Modifying tags.      (line  37)
5247* Branch, accessing:                     Accessing branches.  (line   6)
5248* Branch, check out:                     Accessing branches.  (line   6)
5249* Branch, creating a:                    Creating a branch.   (line   6)
5250* Branch, identifying:                   Accessing branches.  (line   6)
5251* Branch, retrieving:                    Accessing branches.  (line   6)
5252* Branch, vendor-:                       Tracking sources.    (line  10)
5253* Branches motivation:                   Branches motivation. (line   6)
5254* Branches, copying changes between:     Branching and merging.
5255                                                              (line   6)
5256* Branches, sticky:                      Accessing branches.  (line  37)
5257* Branching:                             Branching and merging.
5258                                                              (line   6)
5259* Bringing a file up to date:            Updating a file.     (line   6)
5260* Bugs in this manual or CVS:            BUGS.                (line   6)
5261* Bugs, reporting:                       BUGS.                (line  13)
5262* Builds:                                Builds.              (line   6)
5263* calendar date item:                    Calendar date items. (line   6)
5264* case, ignored in dates:                General date syntax. (line  64)
5265* Changes, copying between branches:     Branching and merging.
5266                                                              (line   6)
5267* Changing a log message:                admin options.       (line  73)
5268* Check out a branch:                    Accessing branches.  (line   6)
5269* Checked out copy, keeping:             Keeping a checked out copy.
5270                                                              (line   6)
5271* Checking out source:                   Getting the source.  (line   6)
5272* checkout (subcommand):                 checkout.            (line   6)
5273* Checkout program:                      Module options.      (line  16)
5274* Checkout, as term for getting ready to edit: Editing files. (line   6)
5275* Checkout, example:                     Getting the source.  (line   6)
5276* checkoutlist:                          checkoutlist.        (line   6)
5277* Choosing, reserved or unreserved checkouts: Choosing a model.
5278                                                              (line   6)
5279* Cleaning up:                           Cleaning up.         (line   6)
5280* Client/Server Operation:               Remote repositories. (line   6)
5281* Client/Server Operation, port specification <1>: Password authentication server.
5282                                                              (line  10)
5283* Client/Server Operation, port specification: Remote repositories.
5284                                                              (line   6)
5285* co (subcommand):                       checkout.            (line   6)
5286* Command reference:                     Invoking CVS.        (line   6)
5287* Command structure:                     Structure.           (line   6)
5288* Comment leader:                        admin options.       (line  27)
5289* comments, in dates:                    General date syntax. (line  64)
5290* commit (subcommand):                   commit.              (line   6)
5291* commit files, see Info files:          commit files.        (line   6)
5292* COMMITID, internal variable:           Variables.           (line  50)
5293* commitinfo:                            commitinfo.          (line   6)
5294* commitinfo (admin file):               commitinfo.          (line   6)
5295* commitinfo (admin file), exit status:  commitinfo.          (line  29)
5296* commitinfo (admin file), updating legacy repositories: commitinfo.
5297                                                              (line  22)
5298* commitinfo, command environment:       commitinfo.          (line  33)
5299* commitinfo, working directory:         commitinfo.          (line  33)
5300* Commits, administrative support files: commit files.        (line   6)
5301* Commits, precommit verification of:    commitinfo.          (line   6)
5302* Committing changes to files:           Committing your changes.
5303                                                              (line   6)
5304* Committing, when to:                   When to commit.      (line   6)
5305* Common options:                        Common options.      (line   6)
5306* Common syntax of info files, format strings: syntax.        (line  35)
5307* Common syntax of info files, updating legacy repositories: Updating Commit Files.
5308                                                              (line   6)
5309* compatibility notes, commitinfo admin file: commitinfo.     (line  22)
5310* compatibility notes, config admin file: config.             (line 245)
5311* compatibility notes, loginfo admin file: loginfo.           (line  55)
5312* compatibility notes, taginfo admin file: taginfo.           (line  44)
5313* compatibility notes, verifymsg admin file: verifymsg.       (line  34)
5314* Compatibility, between CVS versions:   Compatibility.       (line   6)
5315* Compression <1>:                       Invoking CVS.        (line  75)
5316* Compression:                           Global options.      (line 140)
5317* Compression levels, restricting on server: config.          (line 149)
5318* COMSPEC, environment variable:         Environment variables.
5319                                                              (line 130)
5320* config (admin file), import:           config.              (line  90)
5321* config (admin file), updating legacy repositories: config.  (line 245)
5322* config, in CVSROOT:                    config.              (line   6)
5323* configuration file <1>:                config.              (line   6)
5324* configuration file:                    server & pserver.    (line  26)
5325* Configuring keyword expansion:         Configuring keyword expansion.
5326                                                              (line   6)
5327* Conflict markers:                      Conflicts example.   (line  96)
5328* Conflict resolution:                   Conflicts example.   (line 101)
5329* Conflicts (merge example):             Conflicts example.   (line  68)
5330* connection method options:             The connection method.
5331                                                              (line  16)
5332* Contributors (CVS program):            What is CVS?.        (line  28)
5333* Contributors (manual):                 Credits.             (line   6)
5334* Copying a repository:                  Moving a repository. (line   6)
5335* Copying changes:                       Branching and merging.
5336                                                              (line   6)
5337* Correcting a log message:              admin options.       (line  73)
5338* Creating a branch:                     Creating a branch.   (line   6)
5339* Creating a project:                    Starting a new project.
5340                                                              (line   6)
5341* Creating a repository:                 Creating a repository.
5342                                                              (line   6)
5343* Credits (CVS program):                 What is CVS?.        (line  28)
5344* Credits (manual):                      Credits.             (line   6)
5345* CVS 1.6, and watches:                  Watches Compatibility.
5346                                                              (line   6)
5347* CVS command structure:                 Structure.           (line   6)
5348* CVS directory, in repository:          CVS in repository.   (line   6)
5349* CVS directory, in working directory:   Working directory storage.
5350                                                              (line   6)
5351* CVS passwd file:                       Password authentication server.
5352                                                              (line  67)
5353* CVS, history of:                       What is CVS?.        (line  28)
5354* CVS, introduction to:                  What is CVS?.        (line   6)
5355* CVS, versions of:                      Compatibility.       (line   6)
5356* CVS/Base directory:                    Working directory storage.
5357                                                              (line 178)
5358* CVS/Baserev file:                      Working directory storage.
5359                                                              (line 184)
5360* CVS/Baserev.tmp file:                  Working directory storage.
5361                                                              (line 192)
5362* CVS/Entries file:                      Working directory storage.
5363                                                              (line  60)
5364* CVS/Entries.Backup file:               Working directory storage.
5365                                                              (line 143)
5366* CVS/Entries.Log file:                  Working directory storage.
5367                                                              (line 120)
5368* CVS/Entries.Static file:               Working directory storage.
5369                                                              (line 148)
5370* CVS/Notify file:                       Working directory storage.
5371                                                              (line 167)
5372* CVS/Notify.tmp file:                   Working directory storage.
5373                                                              (line 172)
5374* CVS/Repository file:                   Working directory storage.
5375                                                              (line  32)
5376* CVS/Root file:                         Specifying a repository.
5377                                                              (line  25)
5378* CVS/Tag file:                          Working directory storage.
5379                                                              (line 156)
5380* CVS/Template file:                     Working directory storage.
5381                                                              (line 198)
5382* CVS_CLIENT_LOG, environment variable:  Environment variables.
5383                                                              (line 105)
5384* CVS_CLIENT_PORT:                       Environment variables.
5385                                                              (line  88)
5386* CVS_IGNORE_REMOTE_ROOT, environment variable: Environment variables.
5387                                                              (line 116)
5388* CVS_LOCAL_BRANCH_NUM, environment variable: Environment variables.
5389                                                              (line 122)
5390* CVS_PASSFILE, environment variable:    Password authentication client.
5391                                                              (line  46)
5392* CVS_PID, environment variable:         Environment variables.
5393                                                              (line 138)
5394* CVS_PROXY_PORT <1>:                    Environment variables.
5395                                                              (line  94)
5396* CVS_PROXY_PORT:                        The connection method.
5397                                                              (line  26)
5398* CVS_RCMD_PORT, environment variable:   Environment variables.
5399                                                              (line 100)
5400* CVS_RSH method option:                 The connection method.
5401                                                              (line  51)
5402* CVS_RSH, environment variable:         Environment variables.
5403                                                              (line  70)
5404* CVS_SERVER method option:              The connection method.
5405                                                              (line  65)
5406* CVS_SERVER, and :fork::                Connecting via fork. (line  24)
5407* CVS_SERVER, environment variable:      Connecting via rsh.  (line  22)
5408* CVS_SERVER_SLEEP, environment variable: Environment variables.
5409                                                              (line 111)
5410* CVS_USER, environment variable:        Variables.           (line  83)
5411* cvsadmin:                              admin.               (line  18)
5412* CVSEDITOR, environment variable <1>:   Environment variables.
5413                                                              (line  48)
5414* CVSEDITOR, environment variable:       Committing your changes.
5415                                                              (line  17)
5416* CVSEDITOR, internal variable:          Variables.           (line  37)
5417* CVSHeader keyword:                     Keyword list.        (line  11)
5418* cvsignore (admin file), global:        cvsignore.           (line   6)
5419* CVSIGNORE, environment variable:       Environment variables.
5420                                                              (line  10)
5421* CVSREAD, environment variable:         Environment variables.
5422                                                              (line  18)
5423* CVSREAD, overriding:                   Global options.      (line 124)
5424* CVSREADONLYFS, environment variable:   Environment variables.
5425                                                              (line  24)
5426* cvsroot:                               Repository.          (line   6)
5427* CVSROOT (file):                        Administrative files.
5428                                                              (line   6)
5429* CVSROOT, environment variable:         Specifying a repository.
5430                                                              (line  12)
5431* CVSROOT, internal variable:            Variables.           (line  26)
5432* CVSROOT, module name:                  Intro administrative files.
5433                                                              (line   6)
5434* CVSROOT, multiple repositories:        Multiple repositories.
5435                                                              (line   6)
5436* CVSROOT, overriding:                   Global options.      (line  53)
5437* CVSROOT, storage of files:             CVSROOT storage.     (line   6)
5438* CVSROOT/config:                        config.              (line   6)
5439* CVSROOT/Emptydir directory:            Working directory storage.
5440                                                              (line  58)
5441* CVSROOT/val-tags file, and read-only access to projects: File permissions.
5442                                                              (line  26)
5443* CVSROOT/val-tags file, forcing tags into: Error messages.   (line 202)
5444* CVSUMASK, environment variable:        File permissions.    (line  35)
5445* cvswrappers (admin file):              Wrappers.            (line   6)
5446* CVSWRAPPERS, environment variable <1>: Environment variables.
5447                                                              (line  14)
5448* CVSWRAPPERS, environment variable:     Wrappers.            (line   6)
5449* date format, ISO 8601:                 Calendar date items. (line  30)
5450* date input formats:                    Date input formats.  (line   6)
5451* Date keyword:                          Keyword list.        (line  25)
5452* Dates:                                 Common options.      (line  18)
5453* day of week item:                      Day of week items.   (line   6)
5454* Dead state:                            Attic.               (line  17)
5455* Decimal revision number:               Revision numbers.    (line   6)
5456* DEFAULT keyword, in lieu of regular expressions in script hooks: syntax.
5457                                                              (line  12)
5458* Defining a module:                     Defining the module. (line   6)
5459* Defining modules (intro):              Intro administrative files.
5460                                                              (line   6)
5461* Defining modules (reference manual):   modules.             (line   6)
5462* Deleting branch tags:                  Modifying tags.      (line  19)
5463* Deleting files:                        Removing files.      (line   6)
5464* Deleting revisions:                    admin options.       (line  95)
5465* Deleting sticky tags:                  Sticky tags.         (line  30)
5466* Deleting tags:                         Modifying tags.      (line  19)
5467* Descending directories:                Recursive behavior.  (line   6)
5468* Device nodes:                          Special Files.       (line   6)
5469* Diff:                                  Viewing differences. (line   6)
5470* diff (subcommand):                     diff.                (line   6)
5471* Differences, merging:                  Merging two revisions.
5472                                                              (line   6)
5473* Directories, moving:                   Moving directories.  (line   6)
5474* Directories, removing:                 Removing directories.
5475                                                              (line   6)
5476* Directory, descending:                 Recursive behavior.  (line   6)
5477* Disjoint repositories:                 Multiple repositories.
5478                                                              (line   6)
5479* displacement of dates:                 Relative items in date strings.
5480                                                              (line   6)
5481* Distributing log messages:             loginfo.             (line   6)
5482* driver.c (merge example):              Conflicts example.   (line   6)
5483* edit (subcommand):                     Editing files.       (line  13)
5484* Editing administrative files:          Intro administrative files.
5485                                                              (line  33)
5486* Editing the modules file:              Defining the module. (line   6)
5487* Editor, avoiding invocation of:        Common options.      (line  86)
5488* EDITOR, environment variable <1>:      Environment variables.
5489                                                              (line  49)
5490* EDITOR, environment variable:          Committing your changes.
5491                                                              (line  17)
5492* EDITOR, internal variable:             Variables.           (line  38)
5493* EDITOR, overriding:                    Global options.      (line  58)
5494* editors (subcommand):                  Watch information.   (line  15)
5495* Eggert, Paul:                          Authors of get_date. (line   6)
5496* emerge:                                Conflicts example.   (line 140)
5497* Emptydir, in CVSROOT directory:        Working directory storage.
5498                                                              (line  58)
5499* Encryption:                            Global options.      (line 130)
5500* Entries file, in CVS directory:        Working directory storage.
5501                                                              (line  60)
5502* Entries.Backup file, in CVS directory: Working directory storage.
5503                                                              (line 143)
5504* Entries.Log file, in CVS directory:    Working directory storage.
5505                                                              (line 120)
5506* Entries.Static file, in CVS directory: Working directory storage.
5507                                                              (line 148)
5508* Environment variables:                 Environment variables.
5509                                                              (line   6)
5510* environment variables, passed to administrative files: Variables.
5511                                                              (line  82)
5512* epoch, for POSIX:                      Seconds since the Epoch.
5513                                                              (line  13)
5514* Errors, reporting:                     BUGS.                (line  13)
5515* Example of a work-session:             A sample session.    (line   6)
5516* Example of merge:                      Conflicts example.   (line   6)
5517* Example, branch merge:                 Merging a branch.    (line  15)
5518* Excluding directories, in modules file: Excluding directories.
5519                                                              (line   6)
5520* Exit status, of commitinfo:            commitinfo.          (line  29)
5521* Exit status, of CVS:                   Exit status.         (line   6)
5522* Exit status, of editor:                Error messages.      (line 333)
5523* Exit status, of taginfo admin file:    taginfo.             (line  51)
5524* Exit status, of verifymsg:             verifymsg.           (line  46)
5525* export (subcommand):                   export.              (line   6)
5526* Export program:                        Module options.      (line  12)
5527* Fetching source:                       Getting the source.  (line   6)
5528* File had conflicts on merge:           File status.         (line  46)
5529* File locking:                          Multiple developers. (line   6)
5530* File permissions, general:             File permissions.    (line   6)
5531* File permissions, Windows-specific:    Windows permissions. (line   6)
5532* File status:                           File status.         (line   6)
5533* Files, moving:                         Moving files.        (line   6)
5534* Files, reference manual:               Administrative files.
5535                                                              (line   6)
5536* Fixing a log message:                  admin options.       (line  73)
5537* Forcing a tag match:                   Common options.      (line  43)
5538* fork, access method:                   Connecting via fork. (line   6)
5539* Form for log message:                  rcsinfo.             (line   6)
5540* Format of CVS commands:                Structure.           (line   6)
5541* format strings:                        syntax.              (line  35)
5542* format strings, commitinfo admin file: commitinfo.          (line  16)
5543* format strings, common syntax:         syntax.              (line  35)
5544* format strings, config admin file:     config.              (line 245)
5545* format strings, loginfo admin file:    loginfo.             (line  34)
5546* format strings, postadmin admin file:  postadmin.           (line  12)
5547* format strings, postproxy admin file:  postproxy.           (line  23)
5548* format strings, posttag admin file:    posttag.             (line  12)
5549* format strings, postwatch admin file:  postwatch.           (line  13)
5550* format strings, preproxy admin file:   preproxy.            (line  20)
5551* format strings, taginfo admin file:    taginfo.             (line  12)
5552* format strings, verifymsg admin file:  verifymsg.           (line  20)
5553* general date syntax:                   General date syntax. (line   6)
5554* Getting started:                       A sample session.    (line   6)
5555* Getting the source:                    Getting the source.  (line   6)
5556* Global cvsignore:                      cvsignore.           (line   6)
5557* Global options:                        Global options.      (line   6)
5558* Group, UNIX file permissions, in repository: File permissions.
5559                                                              (line   6)
5560* gserver (client/server connection method), port specification <1>: Password authentication server.
5561                                                              (line  10)
5562* gserver (client/server connection method), port specification: Remote repositories.
5563                                                              (line   6)
5564* GSSAPI:                                GSSAPI authenticated.
5565                                                              (line   6)
5566* Gzip <1>:                              Invoking CVS.        (line  75)
5567* Gzip:                                  Global options.      (line 140)
5568* Hard links:                            Special Files.       (line   6)
5569* HEAD, as reserved tag name:            Tags.                (line  25)
5570* HEAD, special tag:                     Common options.      (line 122)
5571* Header keyword:                        Keyword list.        (line  28)
5572* history (subcommand):                  history.             (line   6)
5573* History browsing:                      History browsing.    (line   6)
5574* History file:                          history file.        (line   6)
5575* History files:                         Repository files.    (line  68)
5576* History of CVS:                        What is CVS?.        (line  28)
5577* HistoryLogPath, in CVSROOT/config:     config.              (line  61)
5578* HistorySearchPath, in CVSROOT/config:  config.              (line  70)
5579* HOME, environment variable:            Environment variables.
5580                                                              (line  59)
5581* HOMEDRIVE, environment variable:       Environment variables.
5582                                                              (line  62)
5583* HOMEPATH, environment variable:        Environment variables.
5584                                                              (line  60)
5585* HTTP proxies, connecting via:          The connection method.
5586                                                              (line  26)
5587* Id keyword:                            Keyword list.        (line  34)
5588* Ident (shell command):                 Using keywords.      (line  19)
5589* Identifying a branch:                  Accessing branches.  (line   6)
5590* Identifying files:                     Keyword substitution.
5591                                                              (line   6)
5592* Ignored files:                         cvsignore.           (line  23)
5593* Ignoring files:                        cvsignore.           (line   6)
5594* import (subcommand):                   import.              (line   6)
5595* import, config admin file:             config.              (line  90)
5596* Importing files:                       From files.          (line   6)
5597* Importing files, from other version control systems: From other version control systems.
5598                                                              (line   6)
5599* Importing modules:                     First import.        (line   6)
5600* ImportNewFilesToVendorBranchOnly, in CVSROOT/config: config.
5601                                                              (line  90)
5602* Index:                                 Index.               (line   6)
5603* inetd, configuring for pserver:        Password authentication server.
5604                                                              (line  10)
5605* info files:                            Trigger Scripts.     (line   6)
5606* info files, commitinfo:                commitinfo.          (line   6)
5607* info files, common syntax:             syntax.              (line   6)
5608* info files, common syntax, format strings: syntax.          (line  35)
5609* info files, common syntax, updating legacy repositories: Updating Commit Files.
5610                                                              (line   6)
5611* info files, precommit verification of commits: commitinfo.  (line   6)
5612* info files, security:                  Trigger Script Security.
5613                                                              (line   6)
5614* Informing others:                      Informing others.    (line   6)
5615* init (subcommand):                     Creating a repository.
5616                                                              (line  35)
5617* Installed images (VMS):                File permissions.    (line  59)
5618* Internal variables:                    Variables.           (line   6)
5619* Introduction to CVS:                   What is CVS?.        (line   6)
5620* Invoking CVS:                          Invoking CVS.        (line   6)
5621* ISO 8601 date format:                  Calendar date items. (line  30)
5622* Isolation:                             History browsing.    (line   6)
5623* items in date strings:                 General date syntax. (line   6)
5624* Join:                                  Merging a branch.    (line  13)
5625* Keeping a checked out copy:            Keeping a checked out copy.
5626                                                              (line   6)
5627* Kerberos, using :gserver::             GSSAPI authenticated.
5628                                                              (line   6)
5629* Kerberos, using :kserver::             Kerberos authenticated.
5630                                                              (line   6)
5631* Kerberos, using kerberized rsh:        Connecting via rsh.  (line  35)
5632* Keyword expansion:                     Keyword substitution.
5633                                                              (line   6)
5634* Keyword List:                          Keyword list.        (line   6)
5635* Keyword substitution:                  Keyword substitution.
5636                                                              (line   6)
5637* Keyword substitution, and merging:     Merging and keywords.
5638                                                              (line   6)
5639* Keyword substitution, changing modes:  Substitution modes.  (line   6)
5640* KeywordExpand, in CVSROOT/config:      config.              (line  97)
5641* Kflag:                                 Substitution modes.  (line   6)
5642* kinit:                                 Kerberos authenticated.
5643                                                              (line  27)
5644* Known bugs in this manual or CVS:      BUGS.                (line  71)
5645* kserver (client/server connection method), port specification <1>: Password authentication server.
5646                                                              (line  10)
5647* kserver (client/server connection method), port specification: Remote repositories.
5648                                                              (line   6)
5649* language, in dates:                    General date syntax. (line  40)
5650* Layout of repository:                  Repository.          (line   6)
5651* Left-hand options:                     Global options.      (line   6)
5652* Linear development:                    Revision numbers.    (line   6)
5653* Link, symbolic, importing:             import output.       (line  23)
5654* List, mailing list:                    What is CVS?.        (line  44)
5655* Local keyword:                         Keyword list.        (line  97)
5656* LocalKeyword, in CVSROOT/config:       config.              (line 104)
5657* Locally Added:                         File status.         (line  19)
5658* Locally Modified:                      File status.         (line  16)
5659* Locally Removed:                       File status.         (line  23)
5660* LockDir, in CVSROOT/config:            config.              (line 109)
5661* Locker keyword:                        Keyword list.        (line  43)
5662* Locking files:                         Multiple developers. (line   6)
5663* Locks, cvs, and backups:               Backing up.          (line  10)
5664* Locks, cvs, introduction:              Concurrency.         (line   6)
5665* Locks, cvs, technical details:         Locks.               (line   6)
5666* log (subcommand):                      log.                 (line   6)
5667* Log information, saving:               history file.        (line   6)
5668* Log keyword:                           Keyword list.        (line  47)
5669* Log keyword, configuring substitution behavior <1>: config. (line 137)
5670* Log keyword, configuring substitution behavior: Keyword list.
5671                                                              (line  47)
5672* Log message entry:                     Committing your changes.
5673                                                              (line   6)
5674* Log message template:                  rcsinfo.             (line   6)
5675* Log message, correcting:               admin options.       (line  73)
5676* Log message, verifying:                verifymsg.           (line   6)
5677* Log messages:                          loginfo.             (line   6)
5678* logging, commits <1>:                  rcsinfo.             (line   6)
5679* logging, commits <2>:                  loginfo.             (line   6)
5680* logging, commits:                      verifymsg.           (line   6)
5681* LogHistory, in CVSROOT/config:         config.              (line 129)
5682* Login (subcommand):                    Password authentication client.
5683                                                              (line   6)
5684* loginfo (admin file):                  loginfo.             (line   6)
5685* loginfo (admin file), updating legacy repositories: loginfo.
5686                                                              (line  55)
5687* LOGNAME, environment variable:         Variables.           (line  90)
5688* Logout (subcommand):                   Password authentication client.
5689                                                              (line  70)
5690* ls (subcommand):                       ls & rls.            (line   6)
5691* MacKenzie, David:                      Authors of get_date. (line   6)
5692* Mail, automatic mail on commit:        Informing others.    (line   6)
5693* Mailing list:                          What is CVS?.        (line  44)
5694* Mailing log messages:                  loginfo.             (line   6)
5695* Main trunk and branches:               Branching and merging.
5696                                                              (line   6)
5697* make:                                  Builds.              (line   6)
5698* Many repositories:                     Multiple repositories.
5699                                                              (line   6)
5700* Markers, conflict:                     Conflicts example.   (line  96)
5701* MaxCommentLeaderLength:                Keyword list.        (line  47)
5702* MaxCommentLeaderLength, in CVSROOT/config: config.          (line 137)
5703* MaxCompressionLevel, in CVSROOT/config: config.             (line 149)
5704* Merge, an example:                     Conflicts example.   (line   6)
5705* Merge, branch example:                 Merging a branch.    (line  15)
5706* Merging:                               Branching and merging.
5707                                                              (line   6)
5708* Merging a branch:                      Merging a branch.    (line   6)
5709* Merging a file:                        Updating a file.     (line   6)
5710* Merging two revisions:                 Merging two revisions.
5711                                                              (line   6)
5712* Merging, and keyword substitution:     Merging and keywords.
5713                                                              (line   6)
5714* Meyering, Jim:                         Authors of get_date. (line   6)
5715* MinCompressionLevel, in CVSROOT/config: config.             (line 149)
5716* minutes, time zone correction by:      Time of day items.   (line  29)
5717* mkmodules:                             Error messages.      (line 170)
5718* Modifications, copying between branches: Branching and merging.
5719                                                              (line   6)
5720* Module status:                         Module options.      (line  22)
5721* Module, defining:                      Defining the module. (line   6)
5722* Modules (admin file):                  modules.             (line   6)
5723* Modules file:                          Intro administrative files.
5724                                                              (line   6)
5725* Modules file program options:          Module program options.
5726                                                              (line   6)
5727* Modules file, changing:                Defining the module. (line   6)
5728* modules.db:                            CVSROOT storage.     (line  25)
5729* modules.dir:                           CVSROOT storage.     (line  25)
5730* modules.pag:                           CVSROOT storage.     (line  25)
5731* month names in date strings:           Calendar date items. (line  38)
5732* months, written-out:                   General date syntax. (line  36)
5733* Motivation for branches:               Branches motivation. (line   6)
5734* Moving a repository:                   Moving a repository. (line   6)
5735* Moving branch tags:                    Modifying tags.      (line  37)
5736* Moving directories:                    Moving directories.  (line   6)
5737* Moving files:                          Moving files.        (line   6)
5738* Moving tags:                           Modifying tags.      (line  37)
5739* Multiple developers:                   Multiple developers. (line   6)
5740* Multiple repositories:                 Multiple repositories.
5741                                                              (line   6)
5742* Name keyword:                          Keyword list.        (line  37)
5743* Name, symbolic (tag):                  Tags.                (line  25)
5744* Needs Checkout:                        File status.         (line  27)
5745* Needs Merge:                           File status.         (line  37)
5746* Needs Patch:                           File status.         (line  32)
5747* Newsgroups:                            What is CVS?.        (line  44)
5748* notify (admin file):                   Getting Notified.    (line  60)
5749* Notify file, in CVS directory:         Working directory storage.
5750                                                              (line 167)
5751* Notify.tmp file, in CVS directory:     Working directory storage.
5752                                                              (line 172)
5753* Number, branch <1>:                    Branches and revisions.
5754                                                              (line   6)
5755* Number, branch:                        Revision numbers.    (line   6)
5756* Number, revision-:                     Revision numbers.    (line   6)
5757* numbers, written-out:                  General date syntax. (line  26)
5758* Option defaults:                       ~/.cvsrc.            (line   6)
5759* options, connection method:            The connection method.
5760                                                              (line  16)
5761* Options, global:                       Global options.      (line   6)
5762* Options, in modules file:              Module options.      (line   6)
5763* ordinal numbers:                       General date syntax. (line  26)
5764* Outdating revisions:                   admin options.       (line  95)
5765* Overlap:                               Updating a file.     (line  24)
5766* Overriding CVSREAD:                    Global options.      (line 124)
5767* Overriding CVSROOT:                    Global options.      (line  53)
5768* Overriding EDITOR:                     Global options.      (line  58)
5769* Overriding RCSBIN:                     Global options.      (line  24)
5770* Overview:                              Overview.            (line   6)
5771* Ownership, saving in CVS:              Special Files.       (line   6)
5772* Parallel repositories:                 Multiple repositories.
5773                                                              (line   6)
5774* passwd (admin file):                   Password authentication server.
5775                                                              (line  67)
5776* Password client, using:                Password authentication client.
5777                                                              (line   6)
5778* Password server, setting up:           Password authentication server.
5779                                                              (line  10)
5780* PATH, environment variable:            Environment variables.
5781                                                              (line  55)
5782* Per-directory sticky tags/dates:       Working directory storage.
5783                                                              (line 156)
5784* Permissions, general:                  File permissions.    (line   6)
5785* Permissions, saving in CVS:            Special Files.       (line   6)
5786* Permissions, Windows-specific:         Windows permissions. (line   6)
5787* Pinard, F.:                            Authors of get_date. (line  14)
5788* Policy:                                When to commit.      (line   6)
5789* port, specifying for remote repositories <1>: Password authentication server.
5790                                                              (line  10)
5791* port, specifying for remote repositories: Remote repositories.
5792                                                              (line   6)
5793* postadmin (admin file):                postadmin.           (line   6)
5794* postproxy (admin file):                postproxy.           (line   6)
5795* posttag (admin file):                  posttag.             (line   6)
5796* postwatch (admin file):                postwatch.           (line   6)
5797* preproxy (admin file):                 preproxy.            (line   6)
5798* Primary server <1>:                    config.              (line 168)
5799* Primary server:                        Write proxies.       (line   6)
5800* PrimaryServer, in CVSROOT/config <1>:  config.              (line 168)
5801* PrimaryServer, in CVSROOT/config:      Write proxies.       (line   6)
5802* proxies, HTTP, connecting via:         The connection method.
5803                                                              (line  26)
5804* proxies, web, connecting via:          The connection method.
5805                                                              (line  26)
5806* proxy, method option:                  The connection method.
5807                                                              (line  26)
5808* proxy, write <1>:                      config.              (line 168)
5809* proxy, write:                          Write proxies.       (line   6)
5810* proxyport, method option:              The connection method.
5811                                                              (line  26)
5812* pserver (client/server connection method), port specification <1>: Password authentication server.
5813                                                              (line  10)
5814* pserver (client/server connection method), port specification: Remote repositories.
5815                                                              (line   6)
5816* pserver (subcommand) <1>:              server & pserver.    (line   6)
5817* pserver (subcommand):                  Password authentication server.
5818                                                              (line  10)
5819* pure numbers in date strings:          Pure numbers in date strings.
5820                                                              (line   6)
5821* PVCS, importing files from:            From other version control systems.
5822                                                              (line  45)
5823* RCS history files:                     Repository files.    (line  68)
5824* RCS revision numbers:                  Tags.                (line  10)
5825* RCS, importing files from:             From other version control systems.
5826                                                              (line  10)
5827* RCS-style locking:                     Multiple developers. (line   6)
5828* RCSBIN, in CVSROOT/config:             config.              (line 186)
5829* RCSBIN, internal variable:             Variables.           (line  32)
5830* RCSBIN, overriding:                    Global options.      (line  24)
5831* RCSfile keyword:                       Keyword list.        (line  84)
5832* rcsinfo (admin file):                  rcsinfo.             (line   6)
5833* rdiff (subcommand):                    rdiff.               (line   6)
5834* Read-only files, and -r:               Global options.      (line 105)
5835* Read-only files, and CVSREAD:          Environment variables.
5836                                                              (line  18)
5837* Read-only files, and watches:          Setting a watch.     (line  10)
5838* Read-only files, in repository:        File permissions.    (line   6)
5839* Read-only mode:                        Global options.      (line  86)
5840* Read-only repository access:           Read-only access.    (line   6)
5841* Read-only repository mode:             Global options.      (line  78)
5842* readers (admin file):                  Read-only access.    (line   6)
5843* Recursive (directory descending):      Recursive behavior.  (line   6)
5844* Redirect, method option:               The connection method.
5845                                                              (line  86)
5846* Reference manual (files):              Administrative files.
5847                                                              (line   6)
5848* Reference manual for variables:        Environment variables.
5849                                                              (line   6)
5850* Reference, commands:                   Invoking CVS.        (line   6)
5851* Regular expression syntax:             syntax.              (line  10)
5852* Regular modules:                       Regular modules.     (line   6)
5853* relative items in date strings:        Relative items in date strings.
5854                                                              (line   6)
5855* release (subcommand):                  release.             (line   6)
5856* Releases, revisions and versions:      Versions revisions releases.
5857                                                              (line   6)
5858* Releasing your working copy:           Cleaning up.         (line   6)
5859* Remote repositories:                   Remote repositories. (line   6)
5860* Remote repositories, port specification <1>: Password authentication server.
5861                                                              (line  10)
5862* Remote repositories, port specification: Remote repositories.
5863                                                              (line   6)
5864* Remove (subcommand):                   Removing files.      (line  34)
5865* Removing a change:                     Merging two revisions.
5866                                                              (line   9)
5867* Removing branch tags:                  Modifying tags.      (line  19)
5868* Removing directories:                  Removing directories.
5869                                                              (line   6)
5870* Removing files:                        Removing files.      (line   6)
5871* Removing tags:                         Modifying tags.      (line  19)
5872* Removing your working copy:            Cleaning up.         (line   6)
5873* Renaming directories:                  Moving directories.  (line   6)
5874* Renaming files:                        Moving files.        (line   6)
5875* Renaming tags:                         Modifying tags.      (line  57)
5876* Replacing a log message:               admin options.       (line  73)
5877* Reporting bugs:                        BUGS.                (line  13)
5878* Repositories, multiple:                Multiple repositories.
5879                                                              (line   6)
5880* Repositories, remote:                  Remote repositories. (line   6)
5881* Repositories, remote, port specification <1>: Password authentication server.
5882                                                              (line  10)
5883* Repositories, remote, port specification: Remote repositories.
5884                                                              (line   6)
5885* Repository (intro):                    Repository.          (line   6)
5886* Repository file, in CVS directory:     Working directory storage.
5887                                                              (line  32)
5888* Repository, backing up:                Backing up.          (line   6)
5889* Repository, example:                   Repository.          (line   6)
5890* Repository, how data is stored:        Repository storage.  (line   6)
5891* Repository, moving:                    Moving a repository. (line   6)
5892* Repository, setting up:                Creating a repository.
5893                                                              (line   6)
5894* RereadLogAfterVerify, in CVSROOT/config: config.            (line 192)
5895* Reserved checkouts:                    Multiple developers. (line   6)
5896* Resetting sticky tags:                 Sticky tags.         (line  30)
5897* Resolving a conflict:                  Conflicts example.   (line 101)
5898* Restoring old version of removed file: Merging two revisions.
5899                                                              (line  19)
5900* Resurrecting old version of dead file: Merging two revisions.
5901                                                              (line  19)
5902* Retrieve a branch:                     Accessing branches.  (line   6)
5903* Retrieving an old revision using tags: Tags.                (line  84)
5904* Reverting to repository version:       Editing files.       (line  42)
5905* Revision keyword:                      Keyword list.        (line  87)
5906* Revision management:                   Revision management. (line   6)
5907* Revision numbers:                      Revision numbers.    (line   6)
5908* Revision numbers (branches):           Branches and revisions.
5909                                                              (line   6)
5910* Revision tree:                         Revision numbers.    (line   6)
5911* Revision tree, making branches:        Branching and merging.
5912                                                              (line   6)
5913* Revisions, merging differences between: Merging two revisions.
5914                                                              (line   6)
5915* Revisions, versions and releases:      Versions revisions releases.
5916                                                              (line   6)
5917* Right-hand options:                    Common options.      (line   6)
5918* rls (subcommand):                      ls & rls.            (line   6)
5919* Root file, in CVS directory:           Specifying a repository.
5920                                                              (line  25)
5921* rsh:                                   Connecting via rsh.  (line   6)
5922* rsh replacements (Kerberized, SSH, &c): Connecting via rsh. (line  35)
5923* rtag (subcommand):                     Tagging by date/tag. (line   6)
5924* rtag (subcommand), creating a branch using: Creating a branch.
5925                                                              (line   6)
5926* Salz, Rich:                            Authors of get_date. (line   6)
5927* Saving space:                          admin options.       (line  95)
5928* SCCS, importing files from:            From other version control systems.
5929                                                              (line  38)
5930* script hook, postadmin:                postadmin.           (line   6)
5931* script hook, postproxy:                postproxy.           (line   6)
5932* script hook, posttag:                  posttag.             (line   6)
5933* script hook, postwatch:                postwatch.           (line   6)
5934* script hook, preproxy:                 preproxy.            (line   6)
5935* script hook, taginfo:                  taginfo.             (line   6)
5936* script hooks:                          Trigger Scripts.     (line   6)
5937* script hooks, commitinfo:              commitinfo.          (line   6)
5938* script hooks, common syntax:           syntax.              (line   6)
5939* script hooks, precommit verification of commits: commitinfo.
5940                                                              (line   6)
5941* script hooks, security:                Trigger Script Security.
5942                                                              (line   6)
5943* Secondary server <1>:                  config.              (line 168)
5944* Secondary server:                      Write proxies.       (line   6)
5945* secondary server, pull updates:        postproxy.           (line   6)
5946* Security, file permissions in repository: File permissions. (line   6)
5947* Security, GSSAPI:                      GSSAPI authenticated.
5948                                                              (line   6)
5949* Security, Kerberos:                    Kerberos authenticated.
5950                                                              (line   6)
5951* Security, of pserver:                  Password authentication security.
5952                                                              (line   6)
5953* Security, setuid:                      File permissions.    (line  59)
5954* server (subcommand):                   server & pserver.    (line   6)
5955* Server, CVS:                           Remote repositories. (line   6)
5956* Server, temporary directories:         Server temporary directory.
5957                                                              (line   6)
5958* Setgid:                                File permissions.    (line  59)
5959* Setting up a repository:               Creating a repository.
5960                                                              (line   6)
5961* Setuid:                                File permissions.    (line  59)
5962* Source keyword:                        Keyword list.        (line  90)
5963* Source, getting CVS source:            What is CVS?.        (line  38)
5964* Source, getting from CVS:              Getting the source.  (line   6)
5965* Special files:                         Special Files.       (line   6)
5966* Specifying dates:                      Common options.      (line  18)
5967* Spreading information:                 Informing others.    (line   6)
5968* SSH (rsh replacement):                 Connecting via rsh.  (line  35)
5969* Starting a project with CVS:           Starting a new project.
5970                                                              (line   6)
5971* State keyword:                         Keyword list.        (line  93)
5972* Status of a file:                      File status.         (line   6)
5973* Status of a module:                    Module options.      (line  22)
5974* Sticky date:                           Sticky tags.         (line  36)
5975* Sticky tags:                           Sticky tags.         (line   6)
5976* Sticky tags, resetting:                Sticky tags.         (line  30)
5977* Sticky tags/dates, per-directory:      Working directory storage.
5978                                                              (line 156)
5979* Storing log messages:                  loginfo.             (line   6)
5980* Stream authentication:                 Global options.      (line  16)
5981* Structure:                             Structure.           (line   6)
5982* Subdirectories:                        Recursive behavior.  (line   6)
5983* Support, getting CVS support:          BUGS.                (line  17)
5984* Symbolic link, importing:              import output.       (line  23)
5985* Symbolic links:                        Special Files.       (line   6)
5986* Symbolic name (tag):                   Tags.                (line  25)
5987* Syntax of info files, updating legacy repositories: Updating Commit Files.
5988                                                              (line   6)
5989* syntax of trigger script hooks:        syntax.              (line   6)
5990* SystemAuth, in CVSROOT/config:         config.              (line 209)
5991* tag (subcommand):                      Tagging the working directory.
5992                                                              (line   6)
5993* tag (subcommand), creating a branch using: Creating a branch.
5994                                                              (line   6)
5995* tag (subcommand), introduction:        Tags.                (line  25)
5996* Tag file, in CVS directory:            Working directory storage.
5997                                                              (line 156)
5998* Tag program:                           Module options.      (line  30)
5999* taginfo (admin file):                  taginfo.             (line   6)
6000* taginfo (admin file), exit status:     taginfo.             (line  51)
6001* taginfo (admin file), updating legacy repositories: taginfo.
6002                                                              (line  44)
6003* Tags:                                  Tags.                (line   6)
6004* Tags, deleting:                        Modifying tags.      (line  19)
6005* Tags, example:                         Tags.                (line  45)
6006* Tags, logging <1>:                     posttag.             (line   6)
6007* Tags, logging:                         taginfo.             (line   6)
6008* Tags, moving:                          Modifying tags.      (line  37)
6009* Tags, renaming:                        Modifying tags.      (line  57)
6010* Tags, retrieving old revisions:        Tags.                (line  84)
6011* Tags, sticky:                          Sticky tags.         (line   6)
6012* Tags, symbolic name:                   Tags.                (line  25)
6013* Tags, verifying:                       taginfo.             (line   6)
6014* tc, Trivial Compiler (example):        A sample session.    (line   6)
6015* Team of developers:                    Multiple developers. (line   6)
6016* Template file, in CVS directory:       Working directory storage.
6017                                                              (line 198)
6018* Template for log message:              rcsinfo.             (line   6)
6019* Temporary directories, and server:     Server temporary directory.
6020                                                              (line   6)
6021* temporary directory, set in config:    config.              (line 216)
6022* temporary file directory, set via command line: Global options.
6023                                                              (line  30)
6024* temporary file directory, set via config: Global options.   (line  30)
6025* temporary file directory, set via environment variable <1>: Environment variables.
6026                                                              (line 134)
6027* temporary file directory, set via environment variable: Global options.
6028                                                              (line  30)
6029* temporary files, location of <1>:      Environment variables.
6030                                                              (line 134)
6031* temporary files, location of <2>:      config.              (line 216)
6032* temporary files, location of:          Global options.      (line  30)
6033* Third-party sources:                   Tracking sources.    (line   6)
6034* Time:                                  Common options.      (line  18)
6035* time of day item:                      Time of day items.   (line   6)
6036* time zone correction:                  Time of day items.   (line  29)
6037* time zone item <1>:                    Time zone items.     (line   6)
6038* time zone item:                        General date syntax. (line  44)
6039* Timezone, in output <1>:               log examples.        (line   6)
6040* Timezone, in output:                   log.                 (line  17)
6041* TMPDIR, environment variable <1>:      Environment variables.
6042                                                              (line 134)
6043* TMPDIR, environment variable:          Global options.      (line  30)
6044* TmpDir, in config:                     config.              (line 216)
6045* TopLevelAdmin, in CVSROOT/config:      config.              (line 221)
6046* Trace:                                 Global options.      (line 114)
6047* Traceability:                          History browsing.    (line   6)
6048* Tracking sources:                      Tracking sources.    (line   6)
6049* Transactions, atomic, lack of:         Concurrency.         (line  27)
6050* trigger script hooks, common syntax:   syntax.              (line   6)
6051* trigger scripts:                       Trigger Scripts.     (line   6)
6052* trigger scripts, commitinfo:           commitinfo.          (line   6)
6053* trigger scripts, precommit verification of commits: commitinfo.
6054                                                              (line   6)
6055* trigger scripts, security:             Trigger Script Security.
6056                                                              (line   6)
6057* Trivial Compiler (example):            A sample session.    (line   6)
6058* Typical repository:                    Repository.          (line   6)
6059* Umask, for repository files:           File permissions.    (line  35)
6060* Undoing a change:                      Merging two revisions.
6061                                                              (line   9)
6062* unedit (subcommand):                   Editing files.       (line  42)
6063* Unknown:                               File status.         (line  52)
6064* Unreserved checkouts:                  Multiple developers. (line   6)
6065* Unresolved Conflict:                   File status.         (line  41)
6066* Up-to-date:                            File status.         (line  11)
6067* update (subcommand):                   update.              (line   6)
6068* Update, introduction:                  Updating a file.     (line   6)
6069* update, to display file status:        File status.         (line  75)
6070* Updating a file:                       Updating a file.     (line   6)
6071* UseArchiveCommentLeader:               Keyword list.        (line  47)
6072* UseArchiveCommentLeader, in CVSROOT/config: config.         (line 234)
6073* UseNewInfoFmtStrings, in CVSROOT/config: config.            (line 245)
6074* User aliases:                          Password authentication server.
6075                                                              (line  96)
6076* User variables:                        Variables.           (line  62)
6077* USER, environment variable:            Variables.           (line  93)
6078* USER, internal variable:               Variables.           (line  43)
6079* UserAdminOptions, in CVSROOT/config <1>: config.            (line 257)
6080* UserAdminOptions, in CVSROOT/config:   admin.               (line  18)
6081* users (admin file):                    Getting Notified.    (line  75)
6082* val-tags file, and read-only access to projects: File permissions.
6083                                                              (line  26)
6084* val-tags file, forcing tags into:      Error messages.      (line 202)
6085* Variables:                             Variables.           (line   6)
6086* Vendor:                                Tracking sources.    (line  10)
6087* Vendor branch:                         Tracking sources.    (line  10)
6088* verifymsg (admin file):                verifymsg.           (line   6)
6089* verifymsg (admin/commit file), updating legacy repositories: verifymsg.
6090                                                              (line  34)
6091* verifymsg, changing the log message <1>: config.            (line 192)
6092* verifymsg, changing the log message:   verifymsg.           (line  49)
6093* verifymsg, example:                    verifymsg example.   (line   6)
6094* version (subcommand):                  Invoking CVS.        (line 821)
6095* Versions, of CVS:                      Compatibility.       (line   6)
6096* Versions, revisions and releases:      Versions revisions releases.
6097                                                              (line   6)
6098* Viewing differences:                   Viewing differences. (line   6)
6099* VISUAL, environment variable <1>:      Environment variables.
6100                                                              (line  50)
6101* VISUAL, environment variable:          Committing your changes.
6102                                                              (line  23)
6103* VISUAL, internal variable:             Variables.           (line  39)
6104* watch add (subcommand):                Getting Notified.    (line  11)
6105* Watch family of commands, logging:     postwatch.           (line   6)
6106* watch off (subcommand):                Setting a watch.     (line  26)
6107* watch on (subcommand):                 Setting a watch.     (line   9)
6108* watch remove (subcommand):             Getting Notified.    (line  54)
6109* watchers (subcommand):                 Watch information.   (line   6)
6110* Watches:                               Watches.             (line   6)
6111* wdiff (import example):                First import.        (line  19)
6112* Web pages, maintaining with CVS:       Keeping a checked out copy.
6113                                                              (line   6)
6114* web proxies, connecting via:           The connection method.
6115                                                              (line  26)
6116* What (shell command):                  Using keywords.      (line  32)
6117* What branches are good for:            Branches motivation. (line   6)
6118* What is CVS not?:                      What is CVS not?.    (line   6)
6119* What is CVS?:                          What is CVS?.        (line   6)
6120* When to commit:                        When to commit.      (line   6)
6121* Windows, and permissions:              Windows permissions. (line   6)
6122* Work-session, example of:              A sample session.    (line   6)
6123* Working copy:                          Multiple developers. (line   6)
6124* Working copy, removing:                Cleaning up.         (line   6)
6125* Wrappers:                              Wrappers.            (line   6)
6126* write proxy <1>:                       config.              (line 168)
6127* write proxy:                           Write proxies.       (line   6)
6128* Write proxy, logging <1>:              postproxy.           (line   6)
6129* Write proxy, logging:                  preproxy.            (line   6)
6130* Write proxy, pull updates:             postproxy.           (line   6)
6131* Write proxy, verifying:                preproxy.            (line   6)
6132* writers (admin file):                  Read-only access.    (line   6)
6133* Ximbiot:                               BUGS.                (line  17)
6134* xinetd, configuring for pserver:       Password authentication server.
6135                                                              (line  10)
6136* Zone, time, in output <1>:             log examples.        (line   6)
6137* Zone, time, in output:                 log.                 (line  17)
6138
6139
6140