1.\" $OpenBSD: cvs.1,v 1.125 2009/06/06 14:17:27 ray Exp $ 2.\" 3.\" Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org> 4.\" Copyright (c) 2004-2008 Xavier Santolaria <xsa@openbsd.org> 5.\" All rights reserved. 6.\" 7.\" Redistribution and use in source and binary forms, with or without 8.\" modification, are permitted provided that the following conditions 9.\" are met: 10.\" 11.\" 1. Redistributions of source code must retain the above copyright 12.\" notice, this list of conditions and the following disclaimer. 13.\" 2. The name of the author may not be used to endorse or promote products 14.\" derived from this software without specific prior written permission. 15.\" 16.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 17.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 18.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 19.\" THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20.\" EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21.\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 22.\" OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 23.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 24.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 25.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26.\" 27.Dd $Mdocdate: June 6 2009 $ 28.Dt CVS 1 29.Os 30.Sh NAME 31.Nm cvs 32.Nd OpenCVS Concurrent Versioning System 33.Sh SYNOPSIS 34.Nm 35.Bk -words 36.Op Fl flnQqRrtVvw 37.Op Fl d Ar root 38.Op Fl e Ar editor 39.Xo 40.Oo Fl s 41.Ar var Ns = Ns Ar val Oc 42.Xc 43.Op Fl T Ar tmpdir 44.Op Fl z Ar level 45.Ar command ... 46.Ek 47.Sh DESCRIPTION 48The 49.Nm 50program acts as both client and server for the use of and administration of 51a CVS source repository. 52CVS is used to maintain version information on files that are kept in a 53repository. 54Although it is more commonly used to track changes in source code, there 55are no real limitations to the type of files that can be stored in a 56repository. 57For a general introduction to CVS, see 58.Xr cvsintro 7 . 59.Pp 60.Nm 61reads its startup configuration file, 62.Pa .cvsrc , 63from the home directory of the user who invoked it. 64This file is used to specify implicit options passed to 65.Nm 66or one of its commands whenever it is invoked. 67The defaults in the configuration file can be overridden with the 68.Fl f 69option (see below). 70See 71.Xr cvs 5 72for further information. 73.Pp 74.Nm 75also supports 76keyword substitution \(en 77see the 78.Xr rcs 1 79man page for more information. 80.Pp 81The following options are supported: 82.Bl -tag -width Ds 83.It Fl d Ar root 84Use 85.Ar root 86as the path to the root directory of the CVS repository. 87The value must specify an absolute path. 88.It Fl e Ar editor 89Use the program 90.Ar editor 91whenever editing log information. 92This option overrides the environment variables CVSEDITOR, VISUAL, and EDITOR. 93.It Fl f 94Do not read the user's configuration file on startup. 95.It Fl l 96Suppress logging of history information. 97.It Fl n 98Dry-run mode. 99Show which files will be used by the command issued 100without really running it. 101.It Fl Q 102Be extra quiet. 103Only error messages will be displayed. 104.It Fl q 105Be quiet about reporting. 106.It Fl R 107Permit checkout from a read-only repository. 108Implies 109.Fl l . 110See also 111.Ev CVSREADONLYFS , 112below. 113.It Fl r 114Extract files in read-only mode. 115.It Fl s Ar var Ns = Ns Ar val 116Set the value of the internal variable 117.Ar var 118to the string 119.Ar val . 120.It Fl T Ar tmpdir 121Set the value of the directory where temporary files are to be created. 122The default is set to 123.Pa /tmp . 124.It Fl t 125Trace program execution. 126.It Fl V 127Verbose mode. 128All messages will be displayed. 129This is the default. 130.Fl V 131and 132.Fl Q 133are mutually exclusive. 134If both are specified, 135.Fl Q 136takes precedence. 137.It Fl v 138Display version information and exit. 139.It Fl w 140Extract new files in read-write mode. 141Overrides the setting of the 142.Ev CVSREAD 143environment variable. 144This is the default unless 145.Ev CVSREAD 146is set or the 147.Fl r 148option is specified. 149.It Fl z Ar level 150Specify the compression level to 151.Xr gzip 1 152when transferring files. 153The compression level ranges from 1 to 9, 154with 1 being the fastest, 155and 9 providing the best level of compression. 156The default is 6. 157.El 158.Pp 159.Ex -std cvs 160.Sh COMMANDS 161.Nm 162supports the following commands: 163add, 164admin, 165annotate, 166checkout, 167commit, 168diff, 169edit, 170editors, 171export, 172history, 173import, 174init, 175kserver, 176log, 177rannotate, 178rdiff, 179release, 180remove, 181rlog, 182rtag, 183server, 184status, 185tag, 186unedit, 187update, 188version, 189watch, 190watchers. 191The commands are fully explained in this section. 192.Pp 193Files may be selected by 194.Em revision 195or, where no revision is specified, 196the latest revision of the default branch is used. 197Revisions are specified either by using the 198.Fl r 199option or 200by appending the revision number to any option that supports it. 201.Pp 202.Nm 203supports the notion of 204.Em state . 205The state is an arbitrary string of characters used to describe a file 206(or a specific revision of a file). 207States can be set or changed using the 208.Fl s 209option, for CVS tools which support it. 210The state of a file/revision can be modified without having to 211.Ic commit 212a new file/revision. 213The default state is 214.Sq Exp 215(Experimental). 216Examples of states could be 217.Sq Dev , 218.Sq Reviewed , 219or 220.Sq Stab . 221.Ss add 222Before a file is known to 223.Nm , 224it must be added to the repository using this command. 225Adding a file does not actually publish the contents of the 226file: the 227.Ic commit 228command must also be used to publish it into the repository, 229and thus let others access the file. 230.Pp 231Note: since directories have no versioning system, it is sufficient 232to add them with the 233.Ic add 234command alone; the 235.Ic commit 236command is not necessary. 237.Bd -literal -offset indent 238usage: cvs add [-k mode] [-m msg] file ... 239.Ed 240.Pp 241The 242.Ic add 243command takes the following options: 244.Bl -tag -width Ds -offset 3n 245.It Fl k Ar mode 246Specify the keyword substitution mode. 247.It Fl m Ar msg 248Attach log message 249.Ar msg . 250By default, no log message is required. 251.El 252.Pp 253Aliases: 254.Ic ad , 255.Ic new . 256.Ss admin 257The 258.Ic admin 259command is used to directly modify the RCS files. 260.Bd -literal -offset indent 261usage: cvs admin [-Iq] [-b branch] [-k mode] [-m rev:msg] 262 [-N tag[:rev]] [-n tag[:rev]] [-o rev] 263 [-s state[:rev]] [-t file | str] 264.Ed 265.Pp 266The 267.Ic admin 268command takes the following options: 269.Bl -tag -width Ds -offset 3n 270.It Fl b Ar branch 271Set the default branch to 272.Ar branch . 273.It Fl I 274Command is interactive. 275.It Fl k Ar mode 276Specify the keyword substitution mode. 277.It Fl m Ar rev : Ns Ar msg 278Change the log message of a revision. 279.It Xo Fl N 280.Ar tag Ns Op : Ns Ar rev 281.Xc 282Same as 283.Fl n , 284but override tag if it already exists. 285.It Xo Fl n 286.Ar tag Ns Op : Ns Ar rev 287.Xc 288Associate the 289.Ar tag 290with the 291.Ar rev 292or the branch given as argument. 293If the revision or the branch is not specified, the tag is deleted. 294The 295.Sq \&: 296character means the association of the tag and the latest revision of 297the default branch. 298A branch number ending with the 299.Sq \&. 300character means the current latest revision in the branch. 301This option is functionally the same as the 302.Ic rtag 303command, but it avoids the check of the tags done with the 304.Pa CVSROOT/taginfo 305file. 306.It Fl o Ar rev 307Delete one or more revisions. 308The specifications of the values or revisions are as follows: 309.Bl -tag -width Ds 310.It rev 311Specific revision. 312.It rev1:rev2 313Delete all revisions of a branch between 314.Ar rev1 315and 316.Ar rev2 . 317.It rev1::rev2 318Delete all revisions of a branch between 319.Ar rev1 320and 321.Ar rev2 322without deleting revisions 323.Ar rev1 324and 325.Ar rev2 . 326.It :rev 327Delete all revisions of the branch until revision 328.Ar rev . 329.It rev: 330Delete all revisions of the branch from revision 331.Ar rev 332until the last revision of the branch. 333.El 334.It Fl q 335Quiet mode. 336.It Xo Fl s 337.Ar state Ns Op : Ns Ar rev 338.Xc 339Change state of a revision. 340.It Fl t Ar file \*(Ba Ar str 341Change the descriptive text. 342The descriptive text is taken from the 343.Ar file 344specified as argument or from the string 345.Ar str 346given as argument if it is preceded by the 347.Sq - 348character. 349If no argument is used, the descriptive text is taken from standard input. 350.El 351.Pp 352Aliases: 353.Ic adm , 354.Ic rcs . 355.Ss annotate 356For each line of any files specified, show information about its 357last revision. 358The information given is the last revision when a modification occurred, 359the author's name, and the date of the revision. 360.Bd -literal -offset indent 361usage: cvs annotate [flR] [-D date | -r rev] [file ...] 362.Ed 363.Pp 364The 365.Ic annotate 366command takes the following options: 367.Bl -tag -width Ds -offset 3n 368.It Fl D Ar date 369Show the annotations as of the latest revision no later than 370.Ar date . 371.It Fl f 372Force the use of the head revision if the specified 373tag or date is not found. 374This can be used in combination with 375.Fl D 376or 377.Fl r 378to ensure that there is some output from the 379.Ic annotate 380command, even if only to show Revision 1.1 of the file. 381.It Fl l 382Limit the scope of the search to the local directory 383only and disable recursive behaviour. 384.It Fl R 385Enable recursive behaviour. 386This is the default. 387.It Fl r Ar rev 388Show annotations as of revision 389.Ar rev 390(can be a revision number or a tag). 391.El 392.Pp 393Aliases: 394.Ic ann , 395.Ic blame . 396.Ss checkout 397The 398.Ic checkout 399command is used to create a local copy of one or more modules present on the 400target CVS repository. 401.Bd -literal -offset indent 402usage: cvs checkout [-AcflNnPpRs] [-d dir] [-j rev] [-k mode] 403 -D date | -r rev module ... 404.Ed 405.Pp 406The 407.Ic checkout 408command takes the following options: 409.Bl -tag -width Ds -offset 3n 410.It Fl A 411Reset any sticky tags, dates, or keyword substitution modes that 412have been set on the tree. 413.It Fl c 414Display the list of available modules. 415.It Fl D Ar date 416Check out as of the latest revision no later than 417.Ar date 418(implies 419.Fl P ) 420(is sticky). 421.It Fl d Ar dir 422Check out in directory 423.Ar dir 424instead of the directory bearing the same name as the 425.Ar module . 426.It Fl f 427Force the use of the head revision if the specified 428tag or date is not found. 429.It Fl j Ar rev 430Merge in changes made between current revision and 431.Ar rev . 432If two 433.Fl j 434options are specified, only merge the differences between the two 435revisions of the branch. 436This allows successive merges without having to resolve 437already resolved conflicts again. 438.It Fl k Ar mode 439Specify the keyword substitution mode (is sticky). 440.It Fl l 441Limit the scope of the search to the local directory 442only and disable recursive behaviour. 443.It Fl N 444If used in conjunction with the 445.Fl d 446option, files are placed in local directory 447.Ar module , 448located in directory 449.Ar dir . 450.It Fl n 451Do not execute programs listed in the 452.Pa CVSROOT/modules 453file. 454.It Fl P 455Prune empty directories. 456.It Fl p 457Check out files to standard output (avoids stickiness). 458.It Fl R 459Enable recursive behaviour. 460This is the default. 461.It Fl r Ar rev 462Check out from a particular revision or branch (implies 463.Fl P ) 464(is sticky). 465.It Fl s 466Like 467.Fl c , 468but include module status. 469.El 470.Pp 471Aliases: 472.Ic co , 473.Ic get . 474.Ss commit 475The 476.Ic commit 477command is used to send local changes back to the server and update the 478repository's information to reflect the changes. 479.Bd -literal -offset indent 480usage: cvs commit [-flnR] [-F logfile | -m msg] [-r rev] [file ...] 481.Ed 482.Pp 483The 484.Ic commit 485command takes the following options: 486.Bl -tag -width Ds -offset 3n 487.It Fl F Ar logfile 488Specify a 489.Ar file 490which contains the log message. 491.It Fl f 492Force a file to be committed, even though it is unchanged. 493.It Fl l 494Limit the scope of the search to the local directory 495only and disable recursive behaviour. 496.It Fl m Ar msg 497Specify a log message on the command line (suppresses the editor invocation). 498.It Fl n 499Do not execute programs listed in the 500.Pa CVSROOT/modules 501file. 502.It Fl R 503Enable recursive behaviour. 504This is the default. 505.It Fl r Ar rev 506Commit to a particular symbolic or numerical revision. 507.El 508.Pp 509Aliases: 510.Ic ci , 511.Ic com . 512.Ss diff 513The 514.Ic diff 515command is very similar to the 516.Xr diff 1 517program, except that the differential comparisons that it generates are 518between local or remote revisions of files stored in the CVS repository. 519.Bd -literal -offset indent 520usage: cvs diff [-abcdilNnpRuw] 521 [[-D date1 | -r rev1] [-D date2 | -r rev2]] 522 [-k mode] [file ...] 523.Ed 524.Pp 525The 526.Ic diff 527command takes the following options: 528.Bl -tag -width Ds -offset 3n 529.It Fl a 530Treat all files as ASCII text. 531See 532.Xr diff 1 533for more information. 534.It Fl b 535Causes trailing blanks (spaces and tabs) to be ignored, and other 536strings of blanks to compare equal. 537.It Fl c 538Produces a diff with three lines of context. 539See 540.Xr diff 1 541for more information. 542.It Xo Fl D Ar date1 543.Op Fl D Ar date2 544.Xc 545Differences between the revision at 546.Ar date1 547and the working copy or 548.Ar date1 549and 550.Ar date2 551(if specified). 552.It Fl d 553Try very hard to produce a diff as small as possible. 554See 555.Xr diff 1 556for more information. 557.It Fl i 558Ignore the case of letters. 559For example, 560.Sq A 561will compare equal to 562.Sq a . 563.It Fl k Ar mode 564Specify the keyword substitution mode. 565.It Fl l 566Limit the scope of the search to the local directory 567only and disable recursive behaviour. 568.It Fl N 569Include added or removed files. 570.It Fl n 571Produces a diff in the same format as that used by 572.Xr rcsdiff 1 , 573with a count of changed lines on each insert or delete command. 574.It Fl p 575With unified and context diffs, show with each change the first 57640 characters of the last line before the context beginning with 577a letter, an underscore or a dollar sign. 578See 579.Xr diff 1 580for more information. 581.It Fl R 582Enable recursive behaviour. 583This is the default. 584.It Xo Fl r Ar rev1 585.Op Fl r Ar rev2 586.Xc 587Differences between revision 588.Ar rev1 589and the working copy or 590.Ar rev1 591and 592.Ar rev2 593(if specified). 594.It Fl t 595Will expand tabs in output lines. 596Normal or 597.Fl c 598output adds character(s) to the front of each line which may screw up 599the indentation of the original source lines and make the output listing 600difficult to interpret. 601This option will preserve the original source's indentation. 602.It Fl u 603Produces a unified diff with three lines of context. 604See 605.Xr diff 1 606for more information. 607.It Fl w 608Is similar to 609.Fl b 610but causes whitespace (blanks and tabs) to be totally ignored. 611For example, 612.Dq if (\ \&a == b \&) 613will compare equal to 614.Dq if(a==b) . 615.El 616.Pp 617Aliases: 618.Ic di , 619.Ic dif . 620.Ss edit 621The 622.Ic edit 623command is used to make a file that is being watched 624(and therefore read-only) 625readable and writable and to inform others that it is in the 626process of being changed. 627Notifications terminate when the 628.Ic commit 629command is issued. 630Editing rights on the file can be given up using the 631.Ic unedit 632command, which terminates the temporary notifications. 633.Bd -literal -offset indent 634usage: cvs edit [-lR] [-a action] [file ...] 635.Ed 636.Pp 637The 638.Ic edit 639command takes the following options: 640.Bl -tag -width Ds -offset 3n 641.It Fl a Ar action 642Specify the temporary notification wanted: 643.Pp 644.Bl -tag -width Ds -compact 645.It Cm commit 646Another user has committed changes to the file. 647.It Cm edit 648Another user has issued the 649.Ic edit 650command on the file. 651.It Cm unedit 652Another user has issued the 653.Ic unedit 654command on the file. 655.It Cm all 656All of the above. 657.It Cm none 658None of the above. 659.El 660.Pp 661The 662.Fl a 663flag may appear more than once, or not at all. 664If omitted, the action defaults to 665.Cm all . 666.It Fl l 667Limit the scope of the search to the local directory 668only and disable recursive behaviour. 669.It Fl R 670Enable recursive behaviour. 671This is the default. 672.El 673.Ss editors 674The 675.Ic editors 676command lists the users with edition rights on a file. 677For that, pseudo-lock mode must be enabled (see the 678.Ic watch 679command). 680The e-mail address of the user editing the file, the timestamp 681when the edition first started, the host from where the edition 682has been requested and the path to the edited file are listed. 683.Bd -literal -offset indent 684usage: cvs editors [-lR] [file ...] 685.Ed 686.Pp 687The 688.Ic editors 689command takes the following options: 690.Bl -tag -width Ds -offset 3n 691.It Fl l 692Limit the scope of the search to the local directory 693only and disable recursive behaviour. 694.It Fl R 695Enable recursive behaviour. 696This is the default. 697.El 698.Ss export 699The 700.Ic export 701command extracts a copy of 702.Ar module 703without including the directories used for management by 704.Nm . 705This eases production of a software release. 706A date or a revision must be specified for the command to be valid, 707which ensures that later extractions can be reproduced with the same 708options as the release. 709.Pp 710The checked out module's files will be placed in a directory 711bearing the same name as the checked out module, by default. 712.Bd -literal -offset indent 713usage: cvs export [-flNnR] [-d dir] [-k mode] 714 -D date | -r rev module ... 715.Ed 716.Pp 717The 718.Ic export 719command takes the following options: 720.Bl -tag -width Ds -offset 3n 721.It Fl D Ar date 722Export as of the latest revision no later than 723.Ar date . 724.It Fl d Ar dir 725Export in directory 726.Ar dir 727instead of the directory bearing the same name as the 728.Ar module . 729.It Fl f 730Force the use of the head revision if the specified 731tag or date is not found. 732This can be used in combination with 733.Fl D 734or 735.Fl r 736to ensure that the 737.Ic export 738command is valid. 739.It Fl k Ar mode 740Specify the keyword substitution mode: the 741.Fl k Ar v 742option is often used to avoid substitution of keywords during 743a release cycle. 744However, be aware that it does not handle an export containing 745binary files correctly. 746.It Fl l 747Limit the scope of the search to the local directory 748only and disable recursive behaviour. 749.It Fl N 750If used in conjunction with the 751.Fl d 752option, files are placed in local directory 753.Ar module , 754located in directory 755.Ar dir . 756.It Fl n 757Do not execute programs listed in the 758.Pa CVSROOT/modules 759file. 760.It Fl R 761Enable recursive behaviour. 762This is the default. 763.It Fl r Ar rev 764Export from a particular symbolic or numerical revision. 765.El 766.Pp 767Aliases: 768.Ic ex , 769.Ic exp . 770.Ss history 771The 772.Ic history 773command is used to display the history of actions done in the 774base repository. 775This functionality is only available if the 776.Pa CVSROOT/history 777file has been created. 778Only the 779.Ic checkout , 780.Ic commit , 781.Ic export , 782.Ic release , 783.Ic rtag , 784and 785.Ic update 786commands are logged into this file. 787.Bd -literal -offset indent 788usage: cvs history [-aceloTw] [-b str] [-D date] [-f file] 789 [-m module] [-n module] [-p path] [-r rev] 790 [-t tag] [-u user] [-x ACEFGMORTUW] [-z tz] 791 [file ...] 792.Ed 793.Pp 794The 795.Ic history 796command takes the following options: 797.Bl -tag -width Ds -offset 3n 798.It Fl a 799Display records for all users. 800By default, only records from the user issuing the 801.Ic history 802command are displayed. 803.It Fl b Ar str 804Display everything back to a record containing the string 805.Ar str 806in either the module name, the file name, or the repository path. 807.It Fl c 808Display the archived files 809.Pf ( Ic commit 810command). 811.It Fl D Ar date 812Report no later than 813.Ar date . 814.It Fl e 815Select all records (same as 816.Fl x 817with all types). 818.It Fl f Ar file 819Display records related to 820.Ar file . 821.It Fl l 822Show last checkouts of modules with the 823.Ic checkout 824command. 825.It Fl m Ar module 826Look for the 827.Ar module 828(can be used several times). 829.It Fl n Ar module 830Search into the 831.Ar module . 832.It Fl o 833Report on modules checked out by users. 834.It Fl p Ar path 835Display records from the base repository being in the directory 836specified by the 837.Ar path . 838.It Fl r Ar rev 839Report for a particular revision (checks in the RCS file). 840.It Fl T 841Report on all tags. 842.It Fl t Ar tag 843Report since tag record placed in the 844.Pa CVSROOT/history 845file by any user. 846.It Fl u Ar user 847Report for a specified 848.Ar user . 849Can be used several times to match many users. 850.It Fl w 851Check that records match the current working directory. 852.It Fl x Ar ACEFGMORTUW 853Extract by a specific record type specified by a single letter. 854They can be used in combination. 855The available types are as follows: 856.Bl -tag -width Ds 857.It A 858A file has been added with the 859.Ic add 860command. 861.It C 862A merge has been done, but unresolved conflicts still remain. 863.It E 864Export. 865.It F 866Release. 867.It G 868A merge has been done without conflict. 869.It M 870A file has been modified (using the 871.Ic commit 872command). 873.It O 874Checkout. 875.It R 876A file has been removed with the 877.Ic remove 878command. 879.It T 880Rtag. 881.It U 882Normal update. 883.It W 884The file has been deleted from the directory because it does not 885exist anymore in the base repository. 886.El 887.It Fl z Ar tz 888Display records with the time synchronized with timezone 889.Ar tz . 890.El 891.Pp 892All records have the following five first columns: 893.Pp 894.Bl -dash -compact 895.It 896The record type (the 897.Fl x 898option). 899.It 900The date of the action. 901.It 902The time of the action. 903.It 904The time zone. 905.It 906The user who made the action. 907.El 908.Pp 909The other columns vary depending on the command issued: 910.Pp 911For records coming from the 912.Ic rtag 913command, the additional columns are as follows: 914.Bd -literal -offset indent 915<module> [<tag>:<argument>] {<working directory>} 916.Ed 917.Pp 918For records coming from the 919.Ic checkout 920and 921.Ic export 922commands, the additional columns are as follows: 923.Bd -literal -offset indent 924<request> <repository> =<module>= <working directory> 925.Ed 926.Pp 927For records coming from the 928.Ic release 929command, the additional columns are as follows: 930.Bd -literal -offset indent 931=<module>= <working directory> 932.Ed 933.Pp 934For records coming from the 935.Ic commit 936and 937.Ic update 938commands, the additional columns are as follows: 939.Bd -literal -offset indent 940<version> <file> <module> == <working directory> 941.Ed 942.Pp 943Aliases: 944.Ic hi , 945.Ic his . 946.Ss import 947Import sources into CVS using vendor branches. 948.Pp 949At least three arguments are required: 950.Ar module 951specifies the location of the sources to be imported; 952.Ar vendortag 953is a tag for the entire branch; 954.Ar releasetag 955is used to identify the files created with 956.Ic cvs import . 957.Bd -literal -offset indent 958usage: cvs import [-d] [-b branch] [-I ign] [-k mode] [-m msg] 959 [-W spec] module vendortag releasetag 960.Ed 961.Pp 962The 963.Ic import 964command takes the following options: 965.Bl -tag -width Ds -offset 3n 966.It Fl b Ar branch 967Specify the first-level branch number. 968.It Fl d 969Use the file's last modification time as the timestamp for the 970initial revisions. 971.It Fl I Ar ign 972Ignore files specified by 973.Ar ign . 974This option can be used several times on the command line. 975To see all files, use the 976.Fl I Ar !\& 977specification. 978.It Fl k Ar mode 979Specify the keyword substitution mode (is sticky). 980.It Fl m Ar msg 981Specify the log message to send. 982.It Fl W Ar spec 983Wrappers specification line. 984.El 985.Pp 986Aliases: 987.Ic im , 988.Ic imp . 989.Ss init 990Create a CVS repository if it doesn't exist. 991.Ss kserver 992Start a Kerberos authentication server. 993.Ss log 994The 995.Ic log 996command displays information on a 997.Ar file 998such as its different revisions, description, different tags, 999as well as the comments, dates, and authors of these revisions. 1000By default, the 1001.Ic log 1002command displays all the available information; the options are only 1003used to restrict the displayed information. 1004.Bd -literal -offset indent 1005usage: cvs log [-bhlNRt] [-d dates] [-r revs] [-s state] 1006 [-w users] [file ...] 1007.Ed 1008.Pp 1009The 1010.Ic log 1011command takes the following options: 1012.Bl -tag -width Ds -offset 3n 1013.It Fl b 1014List revisions of the default branch only. 1015.It Fl d Ar dates 1016Specify revisions with dates matching the specification. 1017The specification might be as follows: 1018.Bl -tag -width Ds 1019.It date1<date2 or date2>date1 1020Select all revisions between 1021.Ar date1 1022and 1023.Ar date2 . 1024.It <date or date> 1025Select all revisions before 1026.Ar date . 1027.It >date or date< 1028Select all revisions after 1029.Ar date . 1030.It date 1031Select the latest revision before or equal to 1032.Ar date . 1033.El 1034.Pp 1035The 1036.Sq \*(Gt 1037and 1038.Sq \*(Lt 1039characters can be followed by the 1040.Sq = 1041character to imply an inclusive specification. 1042Several specifications can be used by separating them with the 1043.Sq \&; 1044character. 1045.It Fl h 1046Print header only. 1047.It Fl l 1048Limit the scope of the search to the local directory only. 1049.It Fl N 1050Do not list tags. 1051.It Fl R 1052Print name of RCS file only. 1053.It Fl r Ar revs 1054Specify revision(s) to list: 1055.Bl -tag -width Ds 1056.It rev1,rev2,... 1057A list of revisions is specified by separating names or numbers 1058of revisions by the 1059.Sq \&, 1060character. 1061.It rev1:rev2 1062List all revisions between 1063.Ar rev1 1064and 1065.Ar rev2 1066(they must be on the same branch). 1067.It :rev 1068List all revisions since the beginning of the branch until 1069.Ar rev 1070included. 1071.It rev: 1072List all revisions of the branch beginning with 1073.Ar rev . 1074.It branch 1075List all revisions of a branch. 1076.It branch. 1077List the latest revision of the branch 1078.Ar branch . 1079.It branch1:branch2 1080List all revisions of branches between 1081.Ar branch1 1082and 1083.Ar branch2 . 1084.El 1085.Pp 1086Without argument, the 1087.Fl r 1088option means the latest revision of the default branch. 1089.It Fl s Ar state 1090List revisions of the specified 1091.Ar state 1092only. 1093Several states can be listed by separating them with the 1094.Sq \&, 1095character. 1096.It Fl t 1097Print header and description only. 1098.It Fl w Ar users 1099Do not list revisions made by specified 1100.Ar users . 1101Usernames should be separated by the 1102.Sq \&, 1103character. 1104.El 1105.Pp 1106Aliases: 1107.Ic lo . 1108.Ss rannotate 1109For each line of any files specified, show information about its 1110last revision. 1111The information given is the last revision when a modification occurred, 1112the author's name, and the date of the revision. 1113This command does not need a local checkout of the repository 1114to work. 1115.Bd -literal -offset indent 1116usage: cvs rannotate [flR] [-D date | -r rev] module ... 1117.Ed 1118.Pp 1119The 1120.Ic rannotate 1121command takes the following options: 1122.Bl -tag -width Ds -offset 3n 1123.It Fl D Ar date 1124Show the annotations as of the latest revision no later than 1125.Ar date . 1126.It Fl f 1127Force the use of the head revision if the specified 1128tag or date is not found. 1129This can be used in combination with 1130.Fl D 1131or 1132.Fl r 1133to ensure that there is some output from the 1134.Ic rannotate 1135command, even if only to show Revision 1.1 of the file. 1136.It Fl l 1137Limit the scope of the search to the local directory 1138only and disable recursive behaviour. 1139.It Fl R 1140Enable recursive behaviour. 1141This is the default. 1142.It Fl r Ar rev 1143Show annotations as of revision 1144.Ar rev 1145(can be a revision number or a tag). 1146.El 1147.Pp 1148Aliases: 1149.Ic rann , 1150.Ic ra . 1151.Ss rdiff 1152The 1153.Ic rdiff 1154command lists differences between two revisions in a 1155.Xr patch 1 1156compatible format. 1157This command does not need a local checkout of the repository 1158to work. 1159.Bd -literal -offset indent 1160usage: cvs rdiff [-flR] [-c | -u] [-s | -t] [-V ver] 1161 -D date | -r rev [-D date2 | -r rev2] 1162 module ... 1163.Ed 1164.Pp 1165The 1166.Ic rdiff 1167command takes the following options: 1168.Bl -tag -width Ds -offset 3n 1169.It Fl c 1170Produces a diff with three lines of context. 1171See 1172.Xr diff 1 1173for more information. 1174This is the default. 1175.It Xo Fl D Ar date 1176.Op Fl D Ar date2 1177.Xc 1178Differences between the revision at 1179.Ar date 1180and the working copy or 1181.Ar date 1182and 1183.Ar date2 1184(if specified). 1185.It Fl f 1186Force the use of the head revision if the specified 1187date or revision is not found. 1188.It Fl l 1189Limit the scope of the search to the local directory 1190only and disable recursive behaviour. 1191.It Fl R 1192Enable recursive behaviour. 1193This is the default. 1194.It Xo Fl r Ar rev 1195.Op Fl r Ar rev2 1196.Xc 1197Differences between revision 1198.Ar rev 1199and the working copy or 1200.Ar rev 1201and 1202.Ar rev2 1203(if specified). 1204.It Fl s 1205Create a summary change instead of a whole patch. 1206.It Fl t 1207Lists differences between the last two revisions of each file. 1208.It Fl u 1209Produces a diff in unidiff format. 1210.It Fl V Ar ver 1211Use the RCS version 1212.Ar ver 1213for keyword substitution. 1214.El 1215.Pp 1216Aliases: 1217.Ic pa , 1218.Ic patch . 1219.Ss release 1220The 1221.Ic release 1222command indicates to 1223.Nm 1224that the working copy of a module is no longer in use and checks 1225that non archived modifications in the base repository do exist. 1226This command is not mandatory. 1227Local directories could always be removed without using it, but 1228in this case the handling of history information will no longer be 1229correct (see the 1230.Ic history 1231command). 1232.Bd -literal -offset indent 1233usage: cvs release [-d] dir ... 1234.Ed 1235.Pp 1236The 1237.Ic release 1238command takes the following options: 1239.Bl -tag -width Ds -offset 3n 1240.It Fl d Ar dir 1241Remove the directory 1242.Ar dir . 1243Be aware that this option silently removes any directories that have 1244been added to the local working copy without using the 1245.Ic add 1246command. 1247.El 1248.Pp 1249For each file not being synchronized with the base repository, 1250a single letter prefix is given to specify the state of the file. 1251The possible prefixes are as follows: 1252.Bl -tag -width Ds 1253.It \&? 1254The file is unknown to 1255.Nm 1256and is not in the list of files to ignore. 1257Any new directories which have not been added with the 1258.Ic add 1259command are silently ignored as well as their content. 1260.It A 1261The file has been added with the 1262.Ic add 1263command, but has not been committed to the repository with the 1264.Ic commit 1265command. 1266.It M 1267The file has been locally modified; a more recent version might 1268exist in the base repository. 1269.It R 1270The file has been removed with the 1271.Ic remove 1272command, but has not been committed to the repository with the 1273.Ic commit 1274command. 1275.It U 1276A more recent version of the file does exist but it is not 1277locally up to date. 1278.El 1279.Pp 1280Aliases: 1281.Ic re , 1282.Ic rel . 1283.Ss remove 1284The 1285.Ic remove 1286command is used to inform 1287.Nm 1288that 1289.Ar file 1290is scheduled to be removed from the repository. 1291Files are not actually removed from the repository until the 1292.Ic commit 1293command has been run subsequently. 1294.Pp 1295There is no way to remove a directory with the 1296.Ic remove 1297command. 1298.Nm 1299will only remove a directory if it is empty and if the 1300.Ic checkout 1301or 1302.Ic update 1303commands are run with the 1304.Fl P 1305option. 1306(Note that the 1307.Ic export 1308command always removes empty directories.) 1309.Bd -literal -offset indent 1310usage: cvs remove [-flR] [file ...] 1311.Ed 1312.Pp 1313The 1314.Ic remove 1315command takes the following options: 1316.Bl -tag -width Ds -offset 3n 1317.It Fl f 1318Force local file removal. 1319If this flag is not used, the file must be locally removed beforehand for 1320the command to be valid. 1321.It Fl l 1322Limit the scope of the search to the local directory 1323only and disable recursive behaviour. 1324.It Fl R 1325Enable recursive behaviour. 1326This is the default. 1327.El 1328.Pp 1329Aliases: 1330.Ic rm , 1331.Ic delete . 1332.Ss rlog 1333The 1334.Ic rlog 1335command displays information on a 1336.Ar file 1337such as its different revisions, description, different tags, 1338as well as the comments, dates, and authors of these revisions. 1339By default, the 1340.Ic rlog 1341command displays all the available information; the options are only 1342used to restrict the displayed information. 1343This command does not need a local checkout of the repository 1344to work. 1345.Bd -literal -offset indent 1346usage: cvs rlog [-bhlNRt] [-d dates] [-r revs] [-s state] 1347 [-w users] module ... 1348.Ed 1349.Pp 1350The 1351.Ic rlog 1352command takes the following options: 1353.Bl -tag -width Ds -offset 3n 1354.It Fl b 1355List revisions of the default branch only. 1356.It Fl d Ar dates 1357Specify revisions with dates matching the specification. 1358The specification might be as follows: 1359.Bl -tag -width Ds 1360.It date1<date2 or date2>date1 1361Select all revisions between 1362.Ar date1 1363and 1364.Ar date2 . 1365.It <date or date> 1366Select all revisions before 1367.Ar date . 1368.It >date or date< 1369Select all revisions after 1370.Ar date . 1371.It date 1372Select the latest revision before or equal to 1373.Ar date . 1374.El 1375.Pp 1376The 1377.Sq \*(Gt 1378and 1379.Sq \*(Lt 1380characters can be followed by the 1381.Sq = 1382character to imply an inclusive specification. 1383Several specifications can be used by separating them with the 1384.Sq \&; 1385character. 1386.It Fl h 1387Print header only. 1388.It Fl l 1389Limit the scope of the search to the local directory only. 1390.It Fl N 1391Do not list tags. 1392.It Fl R 1393Print name of RCS file only. 1394.It Fl r Ar revs 1395Specify revision(s) to list: 1396.Bl -tag -width Ds 1397.It rev1,rev2,... 1398A list of revisions is specified by separating names or numbers 1399of revisions by the 1400.Sq \&, 1401character. 1402.It rev1:rev2 1403List all revisions between 1404.Ar rev1 1405and 1406.Ar rev2 1407(they must be on the same branch). 1408.It :rev 1409List all revisions since the beginning of the branch until 1410.Ar rev 1411included. 1412.It rev: 1413List all revisions of the branch beginning with 1414.Ar rev . 1415.It branch 1416List all revisions of a branch. 1417.It branch. 1418List the latest revision of the branch 1419.Ar branch . 1420.It branch1:branch2 1421List all revisions of branches between 1422.Ar branch1 1423and 1424.Ar branch2 . 1425.El 1426.Pp 1427Without argument, the 1428.Fl r 1429option means the latest revision of the default branch. 1430.It Fl s Ar state 1431List revisions of the specified 1432.Ar state 1433only. 1434Several states can be listed by separating them with the 1435.Sq \&, 1436character. 1437.It Fl t 1438Print header and description only. 1439.It Fl w Ar users 1440Do not list revisions made by specified 1441.Ar users . 1442Usernames should be separated by the 1443.Sq \&, 1444character. 1445.El 1446.Pp 1447Aliases: 1448.Ic rlo . 1449.Ss rtag 1450The 1451.Ic rtag 1452command adds a symbolic tag to one or more modules. 1453It is often used to create a new branch using the 1454.Fl b 1455option. 1456.Bd -literal -offset indent 1457usage: cvs rtag [-abdFflnR] [-D date | -r rev] 1458 symbolic_tag module ... 1459.Ed 1460.Pp 1461The 1462.Ic rtag 1463command takes the following options: 1464.Bl -tag -width Ds -offset 3n 1465.It Fl a 1466Clear tag from files already removed with the 1467.Ic remove 1468command. 1469.It Fl b 1470Create a branch. 1471.It Fl D Ar date 1472Tag the most recent revision before 1473.Ar date . 1474.It Fl d 1475Delete tag. 1476.It Fl F 1477Move tag if it already exists. 1478If this option is not used and a tag is used a second time, 1479.Nm 1480will not execute the action. 1481.It Fl f 1482Force the use of the head revision if the specified 1483revision or date is not found. 1484.It Fl l 1485Limit the scope of the search to the local directory 1486only and disable recursive behaviour. 1487.It Fl n 1488Do not execute programs listed in the 1489.Pa CVSROOT/modules 1490file. 1491.It Fl R 1492Enable recursive behaviour. 1493This is the default. 1494.It Fl r Ar rev 1495Tag at revision 1496.Ar rev . 1497.El 1498.Pp 1499Aliases: 1500.Ic rt , 1501.Ic rfreeze . 1502.Ss server 1503Server mode. 1504.Ss status 1505The 1506.Ic status 1507command is used to display the state of checked out files. 1508.Bd -literal -offset indent 1509usage: cvs status [-lRv] [file ...] 1510.Ed 1511.Pp 1512The 1513.Ic status 1514command takes the following options: 1515.Bl -tag -width Ds -offset 3n 1516.It Fl l 1517Limit the scope of the search to the local directory 1518only and disable recursive behaviour. 1519.It Fl R 1520Enable recursive behaviour. 1521This is the default. 1522.It Fl v 1523Display symbolic tags for 1524.Ar file . 1525.Pp 1526The state may be one of the following: 1527.Bl -tag -width Ds 1528.It Cm Locally Added 1529The file has been added with the 1530.Ic add 1531command, but has not been committed to the repository with the 1532.Ic commit 1533command. 1534.It Cm Locally Modified 1535The file is up to date, but has been locally modified. 1536.It Cm Locally Removed 1537The file has been removed with the 1538.Ic remove 1539command, but has not been committed to the repository with the 1540.Ic commit 1541command. 1542.It Cm Needs Checkout 1543The file has not been modified; a new version is available. 1544.It Cm Needs Merge 1545The file has been modified and a newer version is available. 1546.It Cm Needs Patch 1547Same as 1548.Ic Needs Checkout 1549but, in client-server mode, only the differences are sent to save 1550network resources. 1551.It Cm Unresolved Conflict 1552A merge has been done, but unresolved conflicts still remain. 1553.It Cm Up-to-date 1554The file is up to date. 1555.El 1556.El 1557.Pp 1558Aliases: 1559.Ic st , 1560.Ic stat . 1561.Ss tag 1562The 1563.Ic tag 1564command adds a symbolic tag to a checked out version of one or more files. 1565.Bd -literal -offset indent 1566usage: cvs tag [-bcdFflR] [-D date | -r rev] [symbolic_tag] 1567 [file ...] 1568.Ed 1569.Pp 1570The 1571.Ic tag 1572command takes the following options: 1573.Bl -tag -width Ds -offset 3n 1574.It Fl b 1575Create a branch. 1576.It Fl c 1577Check that working files are not modified. 1578.It Fl D Ar date 1579Tag the most recent revision before 1580.Ar date . 1581.It Fl d 1582Delete tag. 1583.It Fl F 1584Move tag if it already exists. 1585If this option is not used and a tag is used a second time, 1586.Nm 1587will not execute the action. 1588.It Fl f 1589Force the use of the head revision if the specified 1590revision or date is not found. 1591.It Fl l 1592Limit the scope of the search to the local directory 1593only and disable recursive behaviour. 1594.It Fl R 1595Enable recursive behaviour. 1596This is the default. 1597.It Fl r Ar rev 1598Tag at revision 1599.Ar rev . 1600.El 1601.Pp 1602Aliases: 1603.Ic ta , 1604.Ic freeze . 1605.Ss unedit 1606The 1607.Ic unedit 1608command is used to give up an edition on a file and thus cancel 1609the wanted temporary notifications. 1610If the file has been modified since the 1611.Ic edit 1612command has been issued, 1613.Nm 1614will ask if it should go back to the previous version, and lose the 1615modifications done on the file, or stay in edition mode on it. 1616.Bd -literal -offset indent 1617usage: cvs unedit [-lR] [file ...] 1618.Ed 1619.Pp 1620The 1621.Ic unedit 1622command takes the following options: 1623.Bl -tag -width Ds -offset 3n 1624.It Fl l 1625Limit the scope of the search to the local directory 1626only and disable recursive behaviour. 1627.It Fl R 1628Enable recursive behaviour. 1629This is the default. 1630.El 1631.Ss update 1632The 1633.Ic update 1634command is used to merge any of the changes that have occurred on the remote 1635repository into the local one where the command was run. 1636.Bd -literal -offset indent 1637usage: cvs update [-ACdflPpR] [-D date | -r rev] [-I ign] 1638 [-j rev] [-k mode] [-W spec] [file ...] 1639.Ed 1640.Pp 1641The 1642.Ic update 1643command takes the following options: 1644.Bl -tag -width Ds -offset 3n 1645.It Fl A 1646Reset any sticky tags, dates, or keyword substitution modes that 1647have been set on the tree. 1648.It Fl C 1649Overwrite locally modified files with clean repository copies. 1650.It Fl D Ar date 1651Update as of the latest revision no later than 1652.Ar date 1653(is sticky). 1654.It Fl d 1655Create any new directories. 1656Without this option, 1657.Nm 1658does not create any new files sitting in these new directories 1659added in the base repository since the last update of the working 1660copy, or since the last update with the 1661.Fl d 1662option. 1663.It Fl f 1664Force the use of the head revision if the specified 1665tag or date is not found. 1666.It Fl I Ar ign 1667Ignore files specified by 1668.Ar ign . 1669This option can be used several times on the command line. 1670To see all files, use the 1671.Fl I Ar !\& 1672specification. 1673.It Fl j Ar rev 1674Merge in changes made between current revision and 1675.Ar rev . 1676If two 1677.Fl j 1678options are specified, only merge the differences between the two 1679revisions of the branch. 1680This allows successive merges without having to resolve 1681already resolved conflicts again. 1682.It Fl k Ar mode 1683Specify the keyword substitution mode (is sticky). 1684.It Fl l 1685Limit the scope of the search to the local directory 1686only and disable recursive behaviour. 1687.It Fl P 1688Prune any directories that have become empty as a result of the update. 1689.It Fl p 1690Send the result of the update to standard output (avoids stickiness). 1691.It Fl R 1692Enable recursive behaviour. 1693This is the default. 1694.It Fl r Ar rev 1695Update from a particular revision or branch (is sticky). 1696.It Fl W Ar spec 1697Wrappers specification line. 1698.El 1699.Pp 1700By default, the 1701.Ic update 1702command does not create new directories; the 1703.Fl d 1704option must be used for that. 1705.Pp 1706For each file updated, a single letter prefix is given to 1707specify the state of the file. 1708The possible prefixes are as follows: 1709.Bl -tag -width Ds 1710.It \&? 1711The file is unknown to 1712.Nm . 1713.It A 1714The file has been added with the 1715.Ic add 1716command, but has not been committed to the repository with the 1717.Ic commit 1718command. 1719.It C 1720A merge, with a more recent version of the file, has been done, 1721but unresolved conflicts still remain. 1722.It M 1723The file has been locally modified; if a more recent version 1724is available, the merge has been done without conflict. 1725.It P 1726The same as 1727.Sq U , 1728but, in client-server mode, only differences are sent to save network 1729resources. 1730.It R 1731The file has been removed with the 1732.Ic remove 1733command, but has not been committed to the repository with the 1734.Ic commit 1735command. 1736.It U 1737The file is up to date. 1738.El 1739.Pp 1740Aliases: 1741.Ic up , 1742.Ic upd . 1743.Ss version 1744Causes 1745.Nm 1746to print its version information. 1747If this command is issued within a local copy of a remote repository or 1748if either the 1749.Ev CVSROOT 1750environment variable or the 1751.Fl d 1752flag specify a remote repository, 1753.Nm 1754will also connect to the server and ask it to print its version information. 1755.Pp 1756Aliases: 1757.Ic ve , 1758.Ic ver . 1759.Ss watch 1760The 1761.Ic watch 1762command switches a file from normal mode to 1763pseudo-lock mode as well as handling the notifications associated 1764with it. 1765Pseudo-lock mode means knowing who is editing a file: 1766for that, 1767.Nm 1768extracts the file in read-only mode. 1769Users must use the 1770.Ic edit 1771command to get the editing rights on the file. 1772.Pp 1773One of the following arguments to the 1774.Ic watch 1775command is mandatory: on, off, add, or remove. 1776.Ar on 1777switches the file into pseudo-lock mode; 1778.Ar off 1779switches it back to normal mode; 1780.Ar add 1781adds notifications for specific actions on the file; 1782.Ar remove 1783removes those notifications. 1784.Pp 1785The notifications are permanent. 1786They remain in place until the 1787.Ic watch remove 1788command is issued while the temporary notifications are 1789made available with the 1790.Ic edit 1791command. 1792.Bd -literal -offset indent 1793usage: cvs watch on | off | add | remove [-lR] [-a action] 1794 [file ...] 1795.Ed 1796.Pp 1797The 1798.Ic watch 1799command takes the following options: 1800.Bl -tag -width Ds -offset 3n 1801.It Fl a Ar action 1802Specify the permanent notification wanted for 1803.Ar add | remove : 1804.Pp 1805.Bl -tag -width Ds -compact 1806.It Cm commit 1807Another user has committed changes to the file. 1808.It Cm edit 1809Another user is editing the file. 1810.It Cm unedit 1811Another user has finished editing the file. 1812.It Cm all 1813All of the above. 1814.It Cm none 1815No notification. 1816.El 1817.Pp 1818If no specification is requested using the 1819.Ar add 1820or 1821.Ar remove 1822arguments, it implies the 1823.Fl a Ar all 1824option. 1825.It Fl l 1826Limit the scope of the search to the local directory 1827only and disable recursive behaviour. 1828.It Fl R 1829Enable recursive behaviour. 1830This is the default. 1831.El 1832.Ss watchers 1833The 1834.Ic watchers 1835command lists the users who asked for notifications as well as the 1836notifications details. 1837The possible notifications are as follows: 1838.Bl -tag -width Ds 1839.It Cm commit 1840Permanent watch of a commit of a new version of a file. 1841.It Cm edit 1842Permanent watch of the start of file edition. 1843.It Cm tcommit 1844Temporary watch of a commit of new version of a file. 1845.It Cm tedit 1846Temporary watch of the start of file edition. 1847.It Cm tunedit 1848Temporary watch of the end of file edition. 1849.It Cm unedit 1850Permanent watch of the end of file edition. 1851.El 1852.Pp 1853The temporary watches are set using the 1854.Ic edit 1855command, until the 1856.Ic commit 1857or 1858.Ic unedit 1859command is issued on a file. 1860.Bd -literal -offset indent 1861usage: cvs watchers [-lR] [file ...] 1862.Ed 1863.Pp 1864The 1865.Ic watchers 1866command takes the following options: 1867.Bl -tag -width Ds -offset 3n 1868.It Fl l 1869Limit the scope of the search to the local directory 1870only and disable recursive behaviour. 1871.It Fl R 1872Enable recursive behaviour. 1873This is the default. 1874.El 1875.Sh ENVIRONMENT 1876.Bl -tag -width Ds 1877.It Ev CVS_CLIENT_LOG 1878This variable enables logging of all communications between the client and 1879server when running in non-local mode. 1880If set, this environment variable must contain a base path from which two 1881paths will be generated by appending ".in" to the value for the server's 1882input and ".out" for the server's output. 1883.Pp 1884The path can contain the following substitutes: 1885.Pp 1886.Bl -tag -width Ds -offset indent -compact 1887.It %c 1888the command being run 1889.It %d 1890the date 1891.It %p 1892the process ID 1893.It %u 1894the username of the person running it 1895.El 1896.Pp 1897The substitutes are only supported by OpenCVS. 1898.It Ev CVS_RSH 1899Name of the program to use when connecting to the server through a remote 1900shell. 1901The default is to use the 1902.Xr ssh 1 1903program. 1904.It Ev CVS_SERVER 1905If set, gives the name of the program to invoke as a 1906.Nm 1907server when using remote shell. 1908The default is to use `cvs'. 1909.It Ev CVSEDITOR 1910Name of the editor to use when editing commit messages. 1911Checked before 1912.Ev EDITOR 1913and 1914.Ev VISUAL . 1915.It Ev CVSREAD 1916If set, 1917.Nm 1918extracts files in read-only mode. 1919.It Ev CVSREADONLYFS 1920Permit checkout from a read-only repository. 1921Implies 1922.Fl l . 1923See also 1924.Fl R , 1925above. 1926.It Ev CVSROOT 1927When set, this variable should contain the string pointing to the root 1928directory of the CVS repository. 1929The contents of this variable are ignored when the 1930.Fl d 1931option is given or if `Root' files exist in the checked-out copy. 1932.It Ev EDITOR 1933Name of the editor to use when editing commit messages. 1934This is traditionally a line-oriented editor, 1935such as 1936.Xr ex 1 . 1937.It Ev HOME 1938Directory where the 1939.Pa .cvsignore 1940and 1941.Pa .cvsrc 1942files are searched for. 1943.It Ev TMPDIR 1944When set, this variable specifies the directory where temporary files 1945are to be created. 1946The default is set to 1947.Pa /tmp . 1948.It Ev VISUAL 1949Name of the editor to use when editing commit messages. 1950This is traditionally a screen-oriented editor, 1951such as 1952.Xr vi 1 . 1953.El 1954.Sh SEE ALSO 1955.Xr diff 1 , 1956.Xr gzip 1 , 1957.Xr patch 1 , 1958.Xr rcs 1 , 1959.Xr cvs 5 , 1960.Xr cvsintro 7 1961.Sh STANDARDS 1962The flag 1963.Op Fl x 1964has no effect and is provided 1965for compatibility only. 1966.Sh HISTORY 1967The OpenCVS project is a BSD-licensed rewrite of the original 1968Concurrent Versioning System written by Jean-Francois Brousseau. 1969The original CVS code was written in large parts by Dick Grune, 1970Brian Berliner and Jeff Polk. 1971.Sh AUTHORS 1972.An Jean-Francois Brousseau 1973.An Vincent Labrecque 1974.An Joris Vink 1975.An Xavier Santolaria 1976.Sh CAVEATS 1977This CVS implementation does not fully conform to the GNU CVS version. 1978In some cases, this was done explicitly because GNU CVS has inconsistencies 1979or ambiguous behaviour. 1980Some things have also been left out or modified to enhance the overall 1981security of the system. 1982.Pp 1983Among other things, support for the pserver connection mechanism has been 1984dropped because of security issues with the authentication mechanism. 1985