1This is cvs.info, produced by makeinfo version 4.0 from cvs.texinfo. 2 3START-INFO-DIR-ENTRY 4* CVS: (cvs). Concurrent Versions System 5END-INFO-DIR-ENTRY 6 7 Copyright (C) 1992, 1993 Signum Support AB Copyright (C) 1993, 1994 8Free Software Foundation, Inc. 9 10 Permission is granted to make and distribute verbatim copies of this 11manual provided the copyright notice and this permission notice are 12preserved on all copies. 13 14 Permission is granted to copy and distribute modified versions of 15this manual under the conditions for verbatim copying, provided also 16that the entire resulting derived work is distributed under the terms 17of a permission notice identical to this one. 18 19 Permission is granted to copy and distribute translations of this 20manual into another language, under the above conditions for modified 21versions, except that this permission notice may be stated in a 22translation approved by the Free Software Foundation. 23 24 25File: cvs.info, Node: commit options, Next: commit examples, Up: commit 26 27commit options 28-------------- 29 30 These standard options are supported by `commit' (*note Common 31options::, for a complete description of them): 32 33`-l' 34 Local; run only in current working directory. 35 36`-n' 37 Do not run any module program. 38 39`-R' 40 Commit directories recursively. This is on by default. 41 42`-r REVISION' 43 Commit to REVISION. REVISION must be either a branch, or a 44 revision on the main trunk that is higher than any existing 45 revision number (*note Assigning revisions::). You cannot commit 46 to a specific revision on a branch. 47 48 `commit' also supports these options: 49 50`-F FILE' 51 Read the log message from FILE, instead of invoking an editor. 52 53`-f' 54 Note that this is not the standard behavior of the `-f' option as 55 defined in *Note Common options::. 56 57 Force CVS to commit a new revision even if you haven't made any 58 changes to the file. If the current revision of FILE is 1.7, then 59 the following two commands are equivalent: 60 61 $ cvs commit -f FILE 62 $ cvs commit -r 1.8 FILE 63 64 The `-f' option disables recursion (i.e., it implies `-l'). To 65 force CVS to commit a new revision for all files in all 66 subdirectories, you must use `-f -R'. 67 68`-m MESSAGE' 69 Use MESSAGE as the log message, instead of invoking an editor. 70 71 72File: cvs.info, Node: commit examples, Prev: commit options, Up: commit 73 74commit examples 75--------------- 76 77Committing to a branch 78...................... 79 80 You can commit to a branch revision (one that has an even number of 81dots) with the `-r' option. To create a branch revision, use the `-b' 82option of the `rtag' or `tag' commands (*note Branching and merging::). 83Then, either `checkout' or `update' can be used to base your sources 84on the newly created branch. From that point on, all `commit' changes 85made within these working sources will be automatically added to a 86branch revision, thereby not disturbing main-line development in any 87way. For example, if you had to create a patch to the 1.2 version of 88the product, even though the 2.0 version is already under development, 89you might do: 90 91 $ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module 92 $ cvs checkout -r FCS1_2_Patch product_module 93 $ cd product_module 94 [[ hack away ]] 95 $ cvs commit 96 97This works automatically since the `-r' option is sticky. 98 99Creating the branch after editing 100................................. 101 102 Say you have been working on some extremely experimental software, 103based on whatever revision you happened to checkout last week. If 104others in your group would like to work on this software with you, but 105without disturbing main-line development, you could commit your change 106to a new branch. Others can then checkout your experimental stuff and 107utilize the full benefit of CVS conflict resolution. The scenario might 108look like: 109 110 [[ hacked sources are present ]] 111 $ cvs tag -b EXPR1 112 $ cvs update -r EXPR1 113 $ cvs commit 114 115 The `update' command will make the `-r EXPR1' option sticky on all 116files. Note that your changes to the files will never be removed by the 117`update' command. The `commit' will automatically commit to the 118correct branch, because the `-r' is sticky. You could also do like 119this: 120 121 [[ hacked sources are present ]] 122 $ cvs tag -b EXPR1 123 $ cvs commit -r EXPR1 124 125but then, only those files that were changed by you will have the `-r 126EXPR1' sticky flag. If you hack away, and commit without specifying 127the `-r EXPR1' flag, some files may accidentally end up on the main 128trunk. 129 130 To work with you on the experimental change, others would simply do 131 132 $ cvs checkout -r EXPR1 whatever_module 133 134 135File: cvs.info, Node: diff, Next: export, Prev: commit, Up: CVS commands 136 137diff--Show differences between revisions 138======================================== 139 140 * Synopsis: diff [-lR] [format_options] [[-r rev1 | -D date1] [-r 141 rev2 | -D date2]] [files...] 142 143 * Requires: working directory, repository. 144 145 * Changes: nothing. 146 147 The `diff' command is used to compare different revisions of files. 148The default action is to compare your working files with the revisions 149they were based on, and report any differences that are found. 150 151 If any file names are given, only those files are compared. If any 152directories are given, all files under them will be compared. 153 154 The exit status for diff is different than for other CVS commands; 155for details *Note Exit status::. 156 157* Menu: 158 159* diff options:: diff options 160* diff examples:: diff examples 161 162 163File: cvs.info, Node: diff options, Next: diff examples, Up: diff 164 165diff options 166------------ 167 168 These standard options are supported by `diff' (*note Common 169options::, for a complete description of them): 170 171`-D DATE' 172 Use the most recent revision no later than DATE. See `-r' for how 173 this affects the comparison. 174 175`-k KFLAG' 176 Process keywords according to KFLAG. See *Note Keyword 177 substitution::. 178 179`-l' 180 Local; run only in current working directory. 181 182`-R' 183 Examine directories recursively. This option is on by default. 184 185`-r TAG' 186 Compare with revision TAG. Zero, one or two `-r' options can be 187 present. With no `-r' option, the working file will be compared 188 with the revision it was based on. With one `-r', that revision 189 will be compared to your current working file. With two `-r' 190 options those two revisions will be compared (and your working 191 file will not affect the outcome in any way). 192 193 One or both `-r' options can be replaced by a `-D DATE' option, 194 described above. 195 196 The following options specify the format of the output. They have 197the same meaning as in GNU diff. 198 199 -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 200 --binary 201 --brief 202 --changed-group-format=ARG 203 -c 204 -C NLINES 205 --context[=LINES] 206 -e --ed 207 -t --expand-tabs 208 -f --forward-ed 209 --horizon-lines=ARG 210 --ifdef=ARG 211 -w --ignore-all-space 212 -B --ignore-blank-lines 213 -i --ignore-case 214 -I REGEXP 215 --ignore-matching-lines=REGEXP 216 -h 217 -b --ignore-space-change 218 -T --initial-tab 219 -L LABEL 220 --label=LABEL 221 --left-column 222 -d --minimal 223 -N --new-file 224 --new-line-format=ARG 225 --old-line-format=ARG 226 --paginate 227 -n --rcs 228 -s --report-identical-files 229 -p 230 --show-c-function 231 -y --side-by-side 232 -F REGEXP 233 --show-function-line=REGEXP 234 -H --speed-large-files 235 --suppress-common-lines 236 -a --text 237 --unchanged-group-format=ARG 238 -u 239 -U NLINES 240 --unified[=LINES] 241 -V ARG 242 -W COLUMNS 243 --width=COLUMNS 244 245 246File: cvs.info, Node: diff examples, Prev: diff options, Up: diff 247 248diff examples 249------------- 250 251 The following line produces a Unidiff (`-u' flag) between revision 2521.14 and 1.19 of `backend.c'. Due to the `-kk' flag no keywords are 253substituted, so differences that only depend on keyword substitution 254are ignored. 255 256 $ cvs diff -kk -u -r 1.14 -r 1.19 backend.c 257 258 Suppose the experimental branch EXPR1 was based on a set of files 259tagged RELEASE_1_0. To see what has happened on that branch, the 260following can be used: 261 262 $ cvs diff -r RELEASE_1_0 -r EXPR1 263 264 A command like this can be used to produce a context diff between 265two releases: 266 267 $ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs 268 269 If you are maintaining ChangeLogs, a command like the following just 270before you commit your changes may help you write the ChangeLog entry. 271All local modifications that have not yet been committed will be 272printed. 273 274 $ cvs diff -u | less 275 276 277File: cvs.info, Node: export, Next: history, Prev: diff, Up: CVS commands 278 279export--Export sources from CVS, similar to checkout 280==================================================== 281 282 * Synopsis: export [-flNnR] [-r rev|-D date] [-k subst] [-d dir] 283 module... 284 285 * Requires: repository. 286 287 * Changes: current directory. 288 289 This command is a variant of `checkout'; use it when you want a copy 290of the source for module without the CVS administrative directories. 291For example, you might use `export' to prepare source for shipment 292off-site. This command requires that you specify a date or tag (with 293`-D' or `-r'), so that you can count on reproducing the source you ship 294to others (and thus it always prunes empty directories). 295 296 One often would like to use `-kv' with `cvs export'. This causes 297any keywords to be expanded such that an import done at some other site 298will not lose the keyword revision information. But be aware that 299doesn't handle an export containing binary files correctly. Also be 300aware that after having used `-kv', one can no longer use the `ident' 301command (which is part of the RCS suite--see ident(1)) which looks for 302keyword strings. If you want to be able to use `ident' you must not 303use `-kv'. 304 305* Menu: 306 307* export options:: export options 308 309 310File: cvs.info, Node: export options, Up: export 311 312export options 313-------------- 314 315 These standard options are supported by `export' (*note Common 316options::, for a complete description of them): 317 318`-D DATE' 319 Use the most recent revision no later than DATE. 320 321`-f' 322 If no matching revision is found, retrieve the most recent 323 revision (instead of ignoring the file). 324 325`-l' 326 Local; run only in current working directory. 327 328`-n' 329 Do not run any checkout program. 330 331`-R' 332 Export directories recursively. This is on by default. 333 334`-r TAG' 335 Use revision TAG. 336 337 In addition, these options (that are common to `checkout' and 338`export') are also supported: 339 340`-d DIR' 341 Create a directory called DIR for the working files, instead of 342 using the module name. *Note checkout options::, for complete 343 details on how CVS handles this flag. 344 345`-k SUBST' 346 Set keyword expansion mode (*note Substitution modes::). 347 348`-N' 349 Only useful together with `-d DIR'. *Note checkout options::, for 350 complete details on how CVS handles this flag. 351 352 353File: cvs.info, Node: history, Next: import, Prev: export, Up: CVS commands 354 355history--Show status of files and users 356======================================= 357 358 * Synopsis: history [-report] [-flags] [-options args] [files...] 359 360 * Requires: the file `$CVSROOT/CVSROOT/history' 361 362 * Changes: nothing. 363 364 CVS can keep a history file that tracks each use of the `checkout', 365`commit', `rtag', `update', and `release' commands. You can use 366`history' to display this information in various formats. 367 368 Logging must be enabled by creating the file 369`$CVSROOT/CVSROOT/history'. 370 371 *Warning:* `history' uses `-f', `-l', `-n', and `-p' in ways that 372conflict with the normal use inside CVS (*note Common options::). 373 374* Menu: 375 376* history options:: history options 377 378 379File: cvs.info, Node: history options, Up: history 380 381history options 382--------------- 383 384 Several options (shown above as `-report') control what kind of 385report is generated: 386 387`-c' 388 Report on each time commit was used (i.e., each time the 389 repository was modified). 390 391`-e' 392 Everything (all record types). Equivalent to specifying `-x' with 393 all record types. Of course, `-e' will also include record types 394 which are added in a future version of CVS; if you are writing a 395 script which can only handle certain record types, you'll want to 396 specify `-x'. 397 398`-m MODULE' 399 Report on a particular module. (You can meaningfully use `-m' 400 more than once on the command line.) 401 402`-o' 403 Report on checked-out modules. This is the default report type. 404 405`-T' 406 Report on all tags. 407 408`-x TYPE' 409 Extract a particular set of record types TYPE from the CVS 410 history. The types are indicated by single letters, which you may 411 specify in combination. 412 413 Certain commands have a single record type: 414 415 `F' 416 release 417 418 `O' 419 checkout 420 421 `E' 422 export 423 424 `T' 425 rtag 426 427 One of four record types may result from an update: 428 429 `C' 430 A merge was necessary but collisions were detected (requiring 431 manual merging). 432 433 `G' 434 A merge was necessary and it succeeded. 435 436 `U' 437 A working file was copied from the repository. 438 439 `W' 440 The working copy of a file was deleted during update (because 441 it was gone from the repository). 442 443 One of three record types results from commit: 444 445 `A' 446 A file was added for the first time. 447 448 `M' 449 A file was modified. 450 451 `R' 452 A file was removed. 453 454 The options shown as `-flags' constrain or expand the report without 455requiring option arguments: 456 457`-a' 458 Show data for all users (the default is to show data only for the 459 user executing `history'). 460 461`-l' 462 Show last modification only. 463 464`-w' 465 Show only the records for modifications done from the same working 466 directory where `history' is executing. 467 468 The options shown as `-options ARGS' constrain the report based on 469an argument: 470 471`-b STR' 472 Show data back to a record containing the string STR in either 473 the module name, the file name, or the repository path. 474 475`-D DATE' 476 Show data since DATE. This is slightly different from the normal 477 use of `-D DATE', which selects the newest revision older than 478 DATE. 479 480`-f FILE' 481 Show data for a particular file (you can specify several `-f' 482 options on the same command line). This is equivalent to 483 specifying the file on the command line. 484 485`-n MODULE' 486 Show data for a particular module (you can specify several `-n' 487 options on the same command line). 488 489`-p REPOSITORY' 490 Show data for a particular source repository (you can specify 491 several `-p' options on the same command line). 492 493`-r REV' 494 Show records referring to revisions since the revision or tag 495 named REV appears in individual RCS files. Each RCS file is 496 searched for the revision or tag. 497 498`-t TAG' 499 Show records since tag TAG was last added to the history file. 500 This differs from the `-r' flag above in that it reads only the 501 history file, not the RCS files, and is much faster. 502 503`-u NAME' 504 Show records for user NAME. 505 506`-z TIMEZONE' 507 Show times in the selected records using the specified time zone 508 instead of UTC. 509 510 511File: cvs.info, Node: import, Next: log, Prev: history, Up: CVS commands 512 513import--Import sources into CVS, using vendor branches 514====================================================== 515 516 * Synopsis: import [-options] repository vendortag releasetag... 517 518 * Requires: Repository, source distribution directory. 519 520 * Changes: repository. 521 522 Use `import' to incorporate an entire source distribution from an 523outside source (e.g., a source vendor) into your source repository 524directory. You can use this command both for initial creation of a 525repository, and for wholesale updates to the module from the outside 526source. *Note Tracking sources::, for a discussion on this subject. 527 528 The REPOSITORY argument gives a directory name (or a path to a 529directory) under the CVS root directory for repositories; if the 530directory did not exist, import creates it. 531 532 When you use import for updates to source that has been modified in 533your source repository (since a prior import), it will notify you of 534any files that conflict in the two branches of development; use 535`checkout -j' to reconcile the differences, as import instructs you to 536do. 537 538 If CVS decides a file should be ignored (*note cvsignore::), it does 539not import it and prints `I ' followed by the filename (*note import 540output::, for a complete description of the output). 541 542 If the file `$CVSROOT/CVSROOT/cvswrappers' exists, any file whose 543names match the specifications in that file will be treated as packages 544and the appropriate filtering will be performed on the file/directory 545before being imported. *Note Wrappers::. 546 547 The outside source is saved in a first-level branch, by default 5481.1.1. Updates are leaves of this branch; for example, files from the 549first imported collection of source will be revision 1.1.1.1, then 550files from the first imported update will be revision 1.1.1.2, and so 551on. 552 553 At least three arguments are required. REPOSITORY is needed to 554identify the collection of source. VENDORTAG is a tag for the entire 555branch (e.g., for 1.1.1). You must also specify at least one 556RELEASETAG to identify the files at the leaves created each time you 557execute `import'. 558 559 Note that `import' does _not_ change the directory in which you 560invoke it. In particular, it does not set up that directory as a CVS 561working directory; if you want to work with the sources import them 562first and then check them out into a different directory (*note Getting 563the source::). 564 565* Menu: 566 567* import options:: import options 568* import output:: import output 569* import examples:: import examples 570 571 572File: cvs.info, Node: import options, Next: import output, Up: import 573 574import options 575-------------- 576 577 This standard option is supported by `import' (*note Common 578options::, for a complete description): 579 580`-m MESSAGE' 581 Use MESSAGE as log information, instead of invoking an editor. 582 583 There are the following additional special options. 584 585`-b BRANCH' 586 See *Note Multiple vendor branches::. 587 588`-k SUBST' 589 Indicate the keyword expansion mode desired. This setting will 590 apply to all files created during the import, but not to any files 591 that previously existed in the repository. See *Note Substitution 592 modes::, for a list of valid `-k' settings. 593 594`-I NAME' 595 Specify file names that should be ignored during import. You can 596 use this option repeatedly. To avoid ignoring any files at all 597 (even those ignored by default), specify `-I !'. 598 599 NAME can be a file name pattern of the same type that you can 600 specify in the `.cvsignore' file. *Note cvsignore::. 601 602`-W SPEC' 603 Specify file names that should be filtered during import. You can 604 use this option repeatedly. 605 606 SPEC can be a file name pattern of the same type that you can 607 specify in the `.cvswrappers' file. *Note Wrappers::. 608 609 610File: cvs.info, Node: import output, Next: import examples, Prev: import options, Up: import 611 612import output 613------------- 614 615 `import' keeps you informed of its progress by printing a line for 616each file, preceded by one character indicating the status of the file: 617 618`U FILE' 619 The file already exists in the repository and has not been locally 620 modified; a new revision has been created (if necessary). 621 622`N FILE' 623 The file is a new file which has been added to the repository. 624 625`C FILE' 626 The file already exists in the repository but has been locally 627 modified; you will have to merge the changes. 628 629`I FILE' 630 The file is being ignored (*note cvsignore::). 631 632`L FILE' 633 The file is a symbolic link; `cvs import' ignores symbolic links. 634 People periodically suggest that this behavior should be changed, 635 but if there is a consensus on what it should be changed to, it 636 doesn't seem to be apparent. (Various options in the `modules' 637 file can be used to recreate symbolic links on checkout, update, 638 etc.; *note modules::.) 639 640 641File: cvs.info, Node: import examples, Prev: import output, Up: import 642 643import examples 644--------------- 645 646 See *Note Tracking sources::, and *Note From files::. 647 648 649File: cvs.info, Node: log, Next: rdiff, Prev: import, Up: CVS commands 650 651log--Print out log information for files 652======================================== 653 654 * Synopsis: log [options] [files...] 655 656 * Requires: repository, working directory. 657 658 * Changes: nothing. 659 660 Display log information for files. `log' used to call the RCS 661utility `rlog'. Although this is no longer true in the current 662sources, this history determines the format of the output and the 663options, which are not quite in the style of the other CVS commands. 664 665 The output includes the location of the RCS file, the "head" 666revision (the latest revision on the trunk), all symbolic names (tags) 667and some other things. For each revision, the revision number, the 668author, the number of lines added/deleted and the log message are 669printed. All times are displayed in Coordinated Universal Time (UTC). 670(Other parts of CVS print times in the local timezone). 671 672 *Warning:* `log' uses `-R' in a way that conflicts with the normal 673use inside CVS (*note Common options::). 674 675* Menu: 676 677* log options:: log options 678* log examples:: log examples 679 680 681File: cvs.info, Node: log options, Next: log examples, Up: log 682 683log options 684----------- 685 686 By default, `log' prints all information that is available. All 687other options restrict the output. 688 689`-b' 690 Print information about the revisions on the default branch, 691 normally the highest branch on the trunk. 692 693`-d DATES' 694 Print information about revisions with a checkin date/time in the 695 range given by the semicolon-separated list of dates. The date 696 formats accepted are those accepted by the `-D' option to many 697 other CVS commands (*note Common options::). Dates can be 698 combined into ranges as follows: 699 700 `D1<D2' 701 `D2>D1' 702 Select the revisions that were deposited between D1 and D2. 703 704 `<D' 705 `D>' 706 Select all revisions dated D or earlier. 707 708 `D<' 709 `>D' 710 Select all revisions dated D or later. 711 712 `D' 713 Select the single, latest revision dated D or earlier. 714 715 The `>' or `<' characters may be followed by `=' to indicate an 716 inclusive range rather than an exclusive one. 717 718 Note that the separator is a semicolon (;). 719 720`-h' 721 Print only the name of the RCS file, name of the file in the 722 working directory, head, default branch, access list, locks, 723 symbolic names, and suffix. 724 725`-l' 726 Local; run only in current working directory. (Default is to run 727 recursively). 728 729`-N' 730 Do not print the list of tags for this file. This option can be 731 very useful when your site uses a lot of tags, so rather than 732 "more"'ing over 3 pages of tag information, the log information is 733 presented without tags at all. 734 735`-R' 736 Print only the name of the RCS file. 737 738`-rREVISIONS' 739 Print information about revisions given in the comma-separated 740 list REVISIONS of revisions and ranges. The following table 741 explains the available range formats: 742 743 `REV1:REV2' 744 Revisions REV1 to REV2 (which must be on the same branch). 745 746 `REV1::REV2' 747 Revisions between, but not including, REV1 and REV2. 748 749 `:REV' 750 Revisions from the beginning of the branch up to and 751 including REV. 752 753 `::REV' 754 Revisions from the beginning of the branch up to, but not 755 including, REV. 756 757 `REV:' 758 Revisions starting with REV to the end of the branch 759 containing REV. 760 761 `REV:' 762 Revisions starting just after REV to the end of the branch 763 containing REV. 764 765 `BRANCH' 766 An argument that is a branch means all revisions on that 767 branch. 768 769 `BRANCH1:BRANCH2' 770 `BRANCH1::BRANCH2' 771 A range of branches means all revisions on the branches in 772 that range. 773 774 `BRANCH.' 775 The latest revision in BRANCH. 776 777 A bare `-r' with no revisions means the latest revision on the 778 default branch, normally the trunk. There can be no space between 779 the `-r' option and its argument. 780 781`-s STATES' 782 Print information about revisions whose state attributes match one 783 of the states given in the comma-separated list STATES. 784 785`-t' 786 Print the same as `-h', plus the descriptive text. 787 788`-wLOGINS' 789 Print information about revisions checked in by users with login 790 names appearing in the comma-separated list LOGINS. If LOGINS is 791 omitted, the user's login is assumed. There can be no space 792 between the `-w' option and its argument. 793 794 `log' prints the intersection of the revisions selected with the 795options `-d', `-s', and `-w', intersected with the union of the 796revisions selected by `-b' and `-r'. 797 798 799File: cvs.info, Node: log examples, Prev: log options, Up: log 800 801log examples 802------------ 803 804 Contributed examples are gratefully accepted. 805 806 807File: cvs.info, Node: rdiff, Next: release, Prev: log, Up: CVS commands 808 809rdiff--'patch' format diffs between releases 810============================================ 811 812 * rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules... 813 814 * Requires: repository. 815 816 * Changes: nothing. 817 818 * Synonym: patch 819 820 Builds a Larry Wall format patch(1) file between two releases, that 821can be fed directly into the `patch' program to bring an old release 822up-to-date with the new release. (This is one of the few CVS commands 823that operates directly from the repository, and doesn't require a prior 824checkout.) The diff output is sent to the standard output device. 825 826 You can specify (using the standard `-r' and `-D' options) any 827combination of one or two revisions or dates. If only one revision or 828date is specified, the patch file reflects differences between that 829revision or date and the current head revisions in the RCS file. 830 831 Note that if the software release affected is contained in more than 832one directory, then it may be necessary to specify the `-p' option to 833the `patch' command when patching the old sources, so that `patch' is 834able to find the files that are located in other directories. 835 836* Menu: 837 838* rdiff options:: rdiff options 839* rdiff examples:: rdiff examples 840 841 842File: cvs.info, Node: rdiff options, Next: rdiff examples, Up: rdiff 843 844rdiff options 845------------- 846 847 These standard options are supported by `rdiff' (*note Common 848options::, for a complete description of them): 849 850`-D DATE' 851 Use the most recent revision no later than DATE. 852 853`-f' 854 If no matching revision is found, retrieve the most recent 855 revision (instead of ignoring the file). 856 857`-l' 858 Local; don't descend subdirectories. 859 860`-R' 861 Examine directories recursively. This option is on by default. 862 863`-r TAG' 864 Use revision TAG. 865 866 In addition to the above, these options are available: 867 868`-c' 869 Use the context diff format. This is the default format. 870 871`-s' 872 Create a summary change report instead of a patch. The summary 873 includes information about files that were changed or added 874 between the releases. It is sent to the standard output device. 875 This is useful for finding out, for example, which files have 876 changed between two dates or revisions. 877 878`-t' 879 A diff of the top two revisions is sent to the standard output 880 device. This is most useful for seeing what the last change to a 881 file was. 882 883`-u' 884 Use the unidiff format for the context diffs. Remember that old 885 versions of the `patch' program can't handle the unidiff format, 886 so if you plan to post this patch to the net you should probably 887 not use `-u'. 888 889`-V VN' 890 Expand keywords according to the rules current in RCS version VN 891 (the expansion format changed with RCS version 5). Note that this 892 option is no longer accepted. CVS will always expand keywords the 893 way that RCS version 5 does. 894 895 896File: cvs.info, Node: rdiff examples, Prev: rdiff options, Up: rdiff 897 898rdiff examples 899-------------- 900 901 Suppose you receive mail from foo@example.net asking for an update 902from release 1.2 to 1.4 of the tc compiler. You have no such patches 903on hand, but with CVS that can easily be fixed with a command such as 904this: 905 906 $ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \ 907 $$ Mail -s 'The patches you asked for' foo@example.net 908 909 Suppose you have made release 1.3, and forked a branch called 910`R_1_3fix' for bugfixes. `R_1_3_1' corresponds to release 1.3.1, which 911was made some time ago. Now, you want to see how much development has 912been done on the branch. This command can be used: 913 914 $ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name 915 cvs rdiff: Diffing module-name 916 File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6 917 File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4 918 File bar.h,v changed from revision 1.29.2.1 to 1.2 919 920 921File: cvs.info, Node: release, Next: update, Prev: rdiff, Up: CVS commands 922 923release--Indicate that a Module is no longer in use 924=================================================== 925 926 * release [-d] directories... 927 928 * Requires: Working directory. 929 930 * Changes: Working directory, history log. 931 932 This command is meant to safely cancel the effect of `cvs checkout'. 933Since CVS doesn't lock files, it isn't strictly necessary to use this 934command. You can always simply delete your working directory, if you 935like; but you risk losing changes you may have forgotten, and you leave 936no trace in the CVS history file (*note history file::) that you've 937abandoned your checkout. 938 939 Use `cvs release' to avoid these problems. This command checks that 940no uncommitted changes are present; that you are executing it from 941immediately above a CVS working directory; and that the repository 942recorded for your files is the same as the repository defined in the 943module database. 944 945 If all these conditions are true, `cvs release' leaves a record of 946its execution (attesting to your intentionally abandoning your 947checkout) in the CVS history log. 948 949* Menu: 950 951* release options:: release options 952* release output:: release output 953* release examples:: release examples 954 955 956File: cvs.info, Node: release options, Next: release output, Up: release 957 958release options 959--------------- 960 961 The `release' command supports one command option: 962 963`-d' 964 Delete your working copy of the file if the release succeeds. If 965 this flag is not given your files will remain in your working 966 directory. 967 968 *Warning:* The `release' command deletes all directories and 969 files recursively. This has the very serious side-effect that any 970 directory that you have created inside your checked-out sources, 971 and not added to the repository (using the `add' command; *note 972 Adding files::) will be silently deleted--even if it is non-empty! 973 974 975File: cvs.info, Node: release output, Next: release examples, Prev: release options, Up: release 976 977release output 978-------------- 979 980 Before `release' releases your sources it will print a one-line 981message for any file that is not up-to-date. 982 983 *Warning:* Any new directories that you have created, but not added 984to the CVS directory hierarchy with the `add' command (*note Adding 985files::) will be silently ignored (and deleted, if `-d' is specified), 986even if they contain files. 987 988`U FILE' 989`P FILE' 990 There exists a newer revision of this file in the repository, and 991 you have not modified your local copy of the file (`U' and `P' 992 mean the same thing). 993 994`A FILE' 995 The file has been added to your private copy of the sources, but 996 has not yet been committed to the repository. If you delete your 997 copy of the sources this file will be lost. 998 999`R FILE' 1000 The file has been removed from your private copy of the sources, 1001 but has not yet been removed from the repository, since you have 1002 not yet committed the removal. *Note commit::. 1003 1004`M FILE' 1005 The file is modified in your working directory. There might also 1006 be a newer revision inside the repository. 1007 1008`? FILE' 1009 FILE is in your working directory, but does not correspond to 1010 anything in the source repository, and is not in the list of files 1011 for CVS to ignore (see the description of the `-I' option, and 1012 *note cvsignore::). If you remove your working sources, this file 1013 will be lost. 1014 1015 1016File: cvs.info, Node: release examples, Prev: release output, Up: release 1017 1018release examples 1019---------------- 1020 1021 Release the `tc' directory, and delete your local working copy of 1022the files. 1023 1024 $ cd .. # You must stand immediately above the 1025 # sources when you issue `cvs release'. 1026 $ cvs release -d tc 1027 You have [0] altered files in this repository. 1028 Are you sure you want to release (and delete) directory `tc': y 1029 $ 1030 1031 1032File: cvs.info, Node: update, Prev: release, Up: CVS commands 1033 1034update--Bring work tree in sync with repository 1035=============================================== 1036 1037 * update [-AdflPpR] [-d] [-r tag|-D date] files... 1038 1039 * Requires: repository, working directory. 1040 1041 * Changes: working directory. 1042 1043 After you've run checkout to create your private copy of source from 1044the common repository, other developers will continue changing the 1045central source. From time to time, when it is convenient in your 1046development process, you can use the `update' command from within your 1047working directory to reconcile your work with any revisions applied to 1048the source repository since your last checkout or update. 1049 1050* Menu: 1051 1052* update options:: update options 1053* update output:: update output 1054 1055 1056File: cvs.info, Node: update options, Next: update output, Up: update 1057 1058update options 1059-------------- 1060 1061 These standard options are available with `update' (*note Common 1062options::, for a complete description of them): 1063 1064`-D date' 1065 Use the most recent revision no later than DATE. This option is 1066 sticky, and implies `-P'. See *Note Sticky tags::, for more 1067 information on sticky tags/dates. 1068 1069`-f' 1070 Only useful with the `-D DATE' or `-r TAG' flags. If no matching 1071 revision is found, retrieve the most recent revision (instead of 1072 ignoring the file). 1073 1074`-k KFLAG' 1075 Process keywords according to KFLAG. See *Note Keyword 1076 substitution::. This option is sticky; future updates of this 1077 file in this working directory will use the same KFLAG. The 1078 `status' command can be viewed to see the sticky options. See 1079 *Note Invoking CVS::, for more information on the `status' command. 1080 1081`-l' 1082 Local; run only in current working directory. *Note Recursive 1083 behavior::. 1084 1085`-P' 1086 Prune empty directories. See *Note Moving directories::. 1087 1088`-p' 1089 Pipe files to the standard output. 1090 1091`-R' 1092 Update directories recursively (default). *Note Recursive 1093 behavior::. 1094 1095`-r rev' 1096 Retrieve revision/tag REV. This option is sticky, and implies 1097 `-P'. See *Note Sticky tags::, for more information on sticky 1098 tags/dates. 1099 1100 These special options are also available with `update'. 1101 1102`-A' 1103 Reset any sticky tags, dates, or `-k' options. See *Note Sticky 1104 tags::, for more information on sticky tags/dates. 1105 1106`-C' 1107 Overwrite locally modified files with clean copies from the 1108 repository (the modified file is saved in `.#FILE.REVISION', 1109 however). 1110 1111`-d' 1112 Create any directories that exist in the repository if they're 1113 missing from the working directory. Normally, `update' acts only 1114 on directories and files that were already enrolled in your 1115 working directory. 1116 1117 This is useful for updating directories that were created in the 1118 repository since the initial checkout; but it has an unfortunate 1119 side effect. If you deliberately avoided certain directories in 1120 the repository when you created your working directory (either 1121 through use of a module name or by listing explicitly the files 1122 and directories you wanted on the command line), then updating 1123 with `-d' will create those directories, which may not be what you 1124 want. 1125 1126`-I NAME' 1127 Ignore files whose names match NAME (in your working directory) 1128 during the update. You can specify `-I' more than once on the 1129 command line to specify several files to ignore. Use `-I !' to 1130 avoid ignoring any files at all. *Note cvsignore::, for other 1131 ways to make CVS ignore some files. 1132 1133`-WSPEC' 1134 Specify file names that should be filtered during update. You can 1135 use this option repeatedly. 1136 1137 SPEC can be a file name pattern of the same type that you can 1138 specify in the `.cvswrappers' file. *Note Wrappers::. 1139 1140`-jREVISION' 1141 With two `-j' options, merge changes from the revision specified 1142 with the first `-j' option to the revision specified with the 1143 second `j' option, into the working directory. 1144 1145 With one `-j' option, merge changes from the ancestor revision to 1146 the revision specified with the `-j' option, into the working 1147 directory. The ancestor revision is the common ancestor of the 1148 revision which the working directory is based on, and the revision 1149 specified in the `-j' option. 1150 1151 Note that using a single `-j TAGNAME' option rather than `-j 1152 BRANCHNAME' to merge changes from a branch will often not remove 1153 files which were removed on the branch. *Note Merging adds and 1154 removals::, for more. 1155 1156 In addition, each `-j' option can contain an optional date 1157 specification which, when used with branches, can limit the chosen 1158 revision to one within a specific date. An optional date is 1159 specified by adding a colon (:) to the tag: 1160 `-jSYMBOLIC_TAG:DATE_SPECIFIER'. 1161 1162 *Note Branching and merging::. 1163 1164 1165File: cvs.info, Node: update output, Prev: update options, Up: update 1166 1167update output 1168------------- 1169 1170 `update' and `checkout' keep you informed of their progress by 1171printing a line for each file, preceded by one character indicating the 1172status of the file: 1173 1174`U FILE' 1175 The file was brought up to date with respect to the repository. 1176 This is done for any file that exists in the repository but not in 1177 your source, and for files that you haven't changed but are not 1178 the most recent versions available in the repository. 1179 1180`P FILE' 1181 Like `U', but the CVS server sends a patch instead of an entire 1182 file. These two things accomplish the same thing. 1183 1184`A FILE' 1185 The file has been added to your private copy of the sources, and 1186 will be added to the source repository when you run `commit' on 1187 the file. This is a reminder to you that the file needs to be 1188 committed. 1189 1190`R FILE' 1191 The file has been removed from your private copy of the sources, 1192 and will be removed from the source repository when you run 1193 `commit' on the file. This is a reminder to you that the file 1194 needs to be committed. 1195 1196`M FILE' 1197 The file is modified in your working directory. 1198 1199 `M' can indicate one of two states for a file you're working on: 1200 either there were no modifications to the same file in the 1201 repository, so that your file remains as you last saw it; or there 1202 were modifications in the repository as well as in your copy, but 1203 they were merged successfully, without conflict, in your working 1204 directory. 1205 1206 CVS will print some messages if it merges your work, and a backup 1207 copy of your working file (as it looked before you ran `update') 1208 will be made. The exact name of that file is printed while 1209 `update' runs. 1210 1211`C FILE' 1212 A conflict was detected while trying to merge your changes to FILE 1213 with changes from the source repository. FILE (the copy in your 1214 working directory) is now the result of attempting to merge the 1215 two revisions; an unmodified copy of your file is also in your 1216 working directory, with the name `.#FILE.REVISION' where REVISION 1217 is the revision that your modified file started from. Resolve the 1218 conflict as described in *Note Conflicts example::. (Note that 1219 some systems automatically purge files that begin with `.#' if 1220 they have not been accessed for a few days. If you intend to keep 1221 a copy of your original file, it is a very good idea to rename 1222 it.) Under VMS, the file name starts with `__' rather than `.#'. 1223 1224`? FILE' 1225 FILE is in your working directory, but does not correspond to 1226 anything in the source repository, and is not in the list of files 1227 for CVS to ignore (see the description of the `-I' option, and 1228 *note cvsignore::). 1229 1230