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