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