xref: /openbsd-src/usr.bin/cvs/cvs.1 (revision 2b0358df1d88d06ef4139321dd05bd5e05d91eaf)
1.\"	$OpenBSD: cvs.1,v 1.122 2009/03/25 09:47:26 joris 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: March 25 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 [-cilNnpRu]
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 c
530Produces a diff with three lines of context.
531See
532.Xr diff 1
533for more information.
534.It Xo Fl D Ar date1
535.Op Fl D Ar date2
536.Xc
537Differences between the revision at
538.Ar date1
539and the working copy or
540.Ar date1
541and
542.Ar date2
543(if specified).
544.It Fl i
545Ignore the case of letters.
546For example,
547.Sq A
548will compare equal to
549.Sq a .
550.It Fl k Ar mode
551Specify the keyword substitution mode.
552.It Fl l
553Limit the scope of the search to the local directory
554only and disable recursive behaviour.
555.It Fl N
556Include added or removed files.
557.It Fl n
558Produces a diff in the same format as that used by
559.Xr rcsdiff 1 ,
560with a count of changed lines on each insert or delete command.
561.It Fl p
562With unified and context diffs, show with each change the first
56340 characters of the last line before the context beginning with
564a letter, an underscore or a dollar sign.
565See
566.Xr diff 1
567for more information.
568.It Fl R
569Enable recursive behaviour.
570This is the default.
571.It Xo Fl r Ar rev1
572.Op Fl r Ar rev2
573.Xc
574Differences between revision
575.Ar rev1
576and the working copy or
577.Ar rev1
578and
579.Ar rev2
580(if specified).
581.It Fl u
582Produces a unified diff with three lines of context.
583See
584.Xr diff 1
585for more information.
586.El
587.Pp
588Aliases:
589.Ic di ,
590.Ic dif .
591.Ss edit
592The
593.Ic edit
594command is used to make a file that is being watched
595(and therefore read-only)
596readable and writable and to inform others that it is in the
597process of being changed.
598Notifications terminate when the
599.Ic commit
600command is issued.
601Editing rights on the file can be given up using the
602.Ic unedit
603command, which terminates the temporary notifications.
604.Bd -literal -offset indent
605usage: cvs edit [-lR] [-a action] [file ...]
606.Ed
607.Pp
608The
609.Ic edit
610command takes the following options:
611.Bl -tag -width Ds -offset 3n
612.It Fl a Ar action
613Specify the temporary notification wanted:
614.Pp
615.Bl -tag -width Ds -compact
616.It Cm commit
617Another user has committed changes to the file.
618.It Cm edit
619Another user has issued the
620.Ic edit
621command on the file.
622.It Cm unedit
623Another user has issued the
624.Ic unedit
625command on the file.
626.It Cm all
627All of the above.
628.It Cm none
629None of the above.
630.El
631.Pp
632The
633.Fl a
634flag may appear more than once, or not at all.
635If omitted, the action defaults to
636.Cm all .
637.It Fl l
638Limit the scope of the search to the local directory
639only and disable recursive behaviour.
640.It Fl R
641Enable recursive behaviour.
642This is the default.
643.El
644.Ss editors
645The
646.Ic editors
647command lists the users with edition rights on a file.
648For that, pseudo-lock mode must be enabled (see the
649.Ic watch
650command).
651The e-mail address of the user editing the file, the timestamp
652when the edition first started, the host from where the edition
653has been requested and the path to the edited file are listed.
654.Bd -literal -offset indent
655usage: cvs editors [-lR] [file ...]
656.Ed
657.Pp
658The
659.Ic editors
660command takes the following options:
661.Bl -tag -width Ds -offset 3n
662.It Fl l
663Limit the scope of the search to the local directory
664only and disable recursive behaviour.
665.It Fl R
666Enable recursive behaviour.
667This is the default.
668.El
669.Ss export
670The
671.Ic export
672command extracts a copy of
673.Ar module
674without including the directories used for management by
675.Nm .
676This eases production of a software release.
677A date or a revision must be specified for the command to be valid,
678which ensures that later extractions can be reproduced with the same
679options as the release.
680.Pp
681The checked out module's files will be placed in a directory
682bearing the same name as the checked out module, by default.
683.Bd -literal -offset indent
684usage: cvs export [-flNnR] [-d dir] [-k mode]
685                  -D date | -r rev module ...
686.Ed
687.Pp
688The
689.Ic export
690command takes the following options:
691.Bl -tag -width Ds -offset 3n
692.It Fl D Ar date
693Export as of the latest revision no later than
694.Ar date .
695.It Fl d Ar dir
696Export in directory
697.Ar dir
698instead of the directory bearing the same name as the
699.Ar module .
700.It Fl f
701Force the use of the head revision if the specified
702tag or date is not found.
703This can be used in combination with
704.Fl D
705or
706.Fl r
707to ensure that the
708.Ic export
709command is valid.
710.It Fl k Ar mode
711Specify the keyword substitution mode: the
712.Fl k Ar v
713option is often used to avoid substitution of keywords during
714a release cycle.
715However, be aware that it does not handle an export containing
716binary files correctly.
717.It Fl l
718Limit the scope of the search to the local directory
719only and disable recursive behaviour.
720.It Fl N
721If used in conjunction with the
722.Fl d
723option, files are placed in local directory
724.Ar module ,
725located in directory
726.Ar dir .
727.It Fl n
728Do not execute programs listed in the
729.Pa CVSROOT/modules
730file.
731.It Fl R
732Enable recursive behaviour.
733This is the default.
734.It Fl r Ar rev
735Export from a particular symbolic or numerical revision.
736.El
737.Pp
738Aliases:
739.Ic ex ,
740.Ic exp .
741.Ss history
742The
743.Ic history
744command is used to display the history of actions done in the
745base repository.
746This functionality is only available if the
747.Pa CVSROOT/history
748file has been created.
749Only the
750.Ic checkout ,
751.Ic commit ,
752.Ic export ,
753.Ic release ,
754.Ic rtag ,
755and
756.Ic update
757commands are logged into this file.
758.Bd -literal -offset indent
759usage: cvs history [-aceloTw] [-b str] [-D date] [-f file]
760                   [-m module] [-n module] [-p path] [-r rev]
761                   [-t tag] [-u user] [-x ACEFGMORTUW] [-z tz]
762                   [file ...]
763.Ed
764.Pp
765The
766.Ic history
767command takes the following options:
768.Bl -tag -width Ds -offset 3n
769.It Fl a
770Display records for all users.
771By default, only records from the user issuing the
772.Ic history
773command are displayed.
774.It Fl b Ar str
775Display everything back to a record containing the string
776.Ar str
777in either the module name, the file name, or the repository path.
778.It Fl c
779Display the archived files
780.Pf ( Ic commit
781command).
782.It Fl D Ar date
783Report no later than
784.Ar date .
785.It Fl e
786Select all records (same as
787.Fl x
788with all types).
789.It Fl f Ar file
790Display records related to
791.Ar file .
792.It Fl l
793Show last checkouts of modules with the
794.Ic checkout
795command.
796.It Fl m Ar module
797Look for the
798.Ar module
799(can be used several times).
800.It Fl n Ar module
801Search into the
802.Ar module .
803.It Fl o
804Report on modules checked out by users.
805.It Fl p Ar path
806Display records from the base repository being in the directory
807specified by the
808.Ar path .
809.It Fl r Ar rev
810Report for a particular revision (checks in the RCS file).
811.It Fl T
812Report on all tags.
813.It Fl t Ar tag
814Report since tag record placed in the
815.Pa CVSROOT/history
816file by any user.
817.It Fl u Ar user
818Report for a specified
819.Ar user .
820Can be used several times to match many users.
821.It Fl w
822Check that records match the current working directory.
823.It Fl x Ar ACEFGMORTUW
824Extract by a specific record type specified by a single letter.
825They can be used in combination.
826The available types are as follows:
827.Bl -tag -width Ds
828.It A
829A file has been added with the
830.Ic add
831command.
832.It C
833A merge has been done, but unresolved conflicts still remain.
834.It E
835Export.
836.It F
837Release.
838.It G
839A merge has been done without conflict.
840.It M
841A file has been modified (using the
842.Ic commit
843command).
844.It O
845Checkout.
846.It R
847A file has been removed with the
848.Ic remove
849command.
850.It T
851Rtag.
852.It U
853Normal update.
854.It W
855The file has been deleted from the directory because it does not
856exist anymore in the base repository.
857.El
858.It Fl z Ar tz
859Display records with the time synchronized with timezone
860.Ar tz .
861.El
862.Pp
863All records have the following five first columns:
864.Pp
865.Bl -dash -compact
866.It
867The record type (the
868.Fl x
869option).
870.It
871The date of the action.
872.It
873The time of the action.
874.It
875The time zone.
876.It
877The user who made the action.
878.El
879.Pp
880The other columns vary depending on the command issued:
881.Pp
882For records coming from the
883.Ic rtag
884command, the additional columns are as follows:
885.Bd -literal -offset indent
886<module> [<tag>:<argument>] {<working directory>}
887.Ed
888.Pp
889For records coming from the
890.Ic checkout
891and
892.Ic export
893commands, the additional columns are as follows:
894.Bd -literal -offset indent
895<request> <repository> =<module>= <working directory>
896.Ed
897.Pp
898For records coming from the
899.Ic release
900command, the additional columns are as follows:
901.Bd -literal -offset indent
902=<module>= <working directory>
903.Ed
904.Pp
905For records coming from the
906.Ic commit
907and
908.Ic update
909commands, the additional columns are as follows:
910.Bd -literal -offset indent
911<version> <file> <module> == <working directory>
912.Ed
913.Pp
914Aliases:
915.Ic hi ,
916.Ic his .
917.Ss import
918Import sources into CVS using vendor branches.
919.Pp
920At least three arguments are required:
921.Ar module
922specifies the location of the sources to be imported;
923.Ar vendortag
924is a tag for the entire branch;
925.Ar releasetag
926is used to identify the files created with
927.Ic cvs import .
928.Bd -literal -offset indent
929usage: cvs import [-d] [-b branch] [-I ign] [-k mode] [-m msg]
930                  [-W spec] module vendortag releasetag
931.Ed
932.Pp
933The
934.Ic import
935command takes the following options:
936.Bl -tag -width Ds -offset 3n
937.It Fl b Ar branch
938Specify the first-level branch number.
939.It Fl d
940Use the file's last modification time as the timestamp for the
941initial revisions.
942.It Fl I Ar ign
943Ignore files specified by
944.Ar ign .
945This option can be used several times on the command line.
946To see all files, use the
947.Fl I Ar !\&
948specification.
949.It Fl k Ar mode
950Specify the keyword substitution mode (is sticky).
951.It Fl m Ar msg
952Specify the log message to send.
953.It Fl W Ar spec
954Wrappers specification line.
955.El
956.Pp
957Aliases:
958.Ic im ,
959.Ic imp .
960.Ss init
961Create a CVS repository if it doesn't exist.
962.Ss kserver
963Start a Kerberos authentication server.
964.Ss log
965The
966.Ic log
967command displays information on a
968.Ar file
969such as its different revisions, description, different tags,
970as well as the comments, dates, and authors of these revisions.
971By default, the
972.Ic log
973command displays all the available information; the options are only
974used to restrict the displayed information.
975.Bd -literal -offset indent
976usage: cvs log [-bhlNRt] [-d dates] [-r revs] [-s state]
977               [-w users] [file ...]
978.Ed
979.Pp
980The
981.Ic log
982command takes the following options:
983.Bl -tag -width Ds -offset 3n
984.It Fl b
985List revisions of the default branch only.
986.It Fl d Ar dates
987Specify revisions with dates matching the specification.
988The specification might be as follows:
989.Bl -tag -width Ds
990.It date1<date2 or date2>date1
991Select all revisions between
992.Ar date1
993and
994.Ar date2 .
995.It <date or date>
996Select all revisions before
997.Ar date .
998.It >date or date<
999Select all revisions after
1000.Ar date .
1001.It date
1002Select the latest revision before or equal to
1003.Ar date .
1004.El
1005.Pp
1006The
1007.Sq \*(Gt
1008and
1009.Sq \*(Lt
1010characters can be followed by the
1011.Sq =
1012character to imply an inclusive specification.
1013Several specifications can be used by separating them with the
1014.Sq \&;
1015character.
1016.It Fl h
1017Print header only.
1018.It Fl l
1019Limit the scope of the search to the local directory only.
1020.It Fl N
1021Do not list tags.
1022.It Fl R
1023Print name of RCS file only.
1024.It Fl r Ar revs
1025Specify revision(s) to list:
1026.Bl -tag -width Ds
1027.It rev1,rev2,...
1028A list of revisions is specified by separating names or numbers
1029of revisions by the
1030.Sq \&,
1031character.
1032.It rev1:rev2
1033List all revisions between
1034.Ar rev1
1035and
1036.Ar rev2
1037(they must be on the same branch).
1038.It :rev
1039List all revisions since the beginning of the branch until
1040.Ar rev
1041included.
1042.It rev:
1043List all revisions of the branch beginning with
1044.Ar rev .
1045.It branch
1046List all revisions of a branch.
1047.It branch.
1048List the latest revision of the branch
1049.Ar branch .
1050.It branch1:branch2
1051List all revisions of branches between
1052.Ar branch1
1053and
1054.Ar branch2 .
1055.El
1056.Pp
1057Without argument, the
1058.Fl r
1059option means the latest revision of the default branch.
1060.It Fl s Ar state
1061List revisions of the specified
1062.Ar state
1063only.
1064Several states can be listed by separating them with the
1065.Sq \&,
1066character.
1067.It Fl t
1068Print header and description only.
1069.It Fl w Ar users
1070Do not list revisions made by specified
1071.Ar users .
1072Usernames should be separated by the
1073.Sq \&,
1074character.
1075.El
1076.Pp
1077Aliases:
1078.Ic lo .
1079.Ss rannotate
1080For each line of any files specified, show information about its
1081last revision.
1082The information given is the last revision when a modification occurred,
1083the author's name, and the date of the revision.
1084This command does not need a local checkout of the repository
1085to work.
1086.Bd -literal -offset indent
1087usage: cvs rannotate [flR] [-D date | -r rev] module ...
1088.Ed
1089.Pp
1090The
1091.Ic rannotate
1092command takes the following options:
1093.Bl -tag -width Ds -offset 3n
1094.It Fl D Ar date
1095Show the annotations as of the latest revision no later than
1096.Ar date .
1097.It Fl f
1098Force the use of the head revision if the specified
1099tag or date is not found.
1100This can be used in combination with
1101.Fl D
1102or
1103.Fl r
1104to ensure that there is some output from the
1105.Ic rannotate
1106command, even if only to show Revision 1.1 of the file.
1107.It Fl l
1108Limit the scope of the search to the local directory
1109only and disable recursive behaviour.
1110.It Fl R
1111Enable recursive behaviour.
1112This is the default.
1113.It Fl r Ar rev
1114Show annotations as of revision
1115.Ar rev
1116(can be a revision number or a tag).
1117.El
1118.Pp
1119Aliases:
1120.Ic rann ,
1121.Ic ra .
1122.Ss rdiff
1123The
1124.Ic rdiff
1125command lists differences between two revisions in a
1126.Xr patch 1
1127compatible format.
1128This command does not need a local checkout of the repository
1129to work.
1130.Bd -literal -offset indent
1131usage: cvs rdiff [-flR] [-c | -u] [-s | -t] [-V ver]
1132                 -D date | -r rev [-D date2 | -r rev2]
1133                 module ...
1134.Ed
1135.Pp
1136The
1137.Ic rdiff
1138command takes the following options:
1139.Bl -tag -width Ds -offset 3n
1140.It Fl c
1141Produces a diff with three lines of context.
1142See
1143.Xr diff 1
1144for more information.
1145This is the default.
1146.It Xo Fl D Ar date
1147.Op Fl D Ar date2
1148.Xc
1149Differences between the revision at
1150.Ar date
1151and the working copy or
1152.Ar date
1153and
1154.Ar date2
1155(if specified).
1156.It Fl f
1157Force the use of the head revision if the specified
1158date or revision is not found.
1159.It Fl l
1160Limit the scope of the search to the local directory
1161only and disable recursive behaviour.
1162.It Fl R
1163Enable recursive behaviour.
1164This is the default.
1165.It Xo Fl r Ar rev
1166.Op Fl r Ar rev2
1167.Xc
1168Differences between revision
1169.Ar rev
1170and the working copy or
1171.Ar rev
1172and
1173.Ar rev2
1174(if specified).
1175.It Fl s
1176Create a summary change instead of a whole patch.
1177.It Fl t
1178Lists differences between the last two revisions of each file.
1179.It Fl u
1180Produces a diff in unidiff format.
1181.It Fl V Ar ver
1182Use the RCS version
1183.Ar ver
1184for keyword substitution.
1185.El
1186.Pp
1187Aliases:
1188.Ic pa ,
1189.Ic patch .
1190.Ss release
1191The
1192.Ic release
1193command indicates to
1194.Nm
1195that the working copy of a module is no longer in use and checks
1196that non archived modifications in the base repository do exist.
1197This command is not mandatory.
1198Local directories could always be removed without using it, but
1199in this case the handling of history information will no longer be
1200correct (see the
1201.Ic history
1202command).
1203.Bd -literal -offset indent
1204usage: cvs release [-d] dir ...
1205.Ed
1206.Pp
1207The
1208.Ic release
1209command takes the following options:
1210.Bl -tag -width Ds -offset 3n
1211.It Fl d Ar dir
1212Remove the directory
1213.Ar dir .
1214Be aware that this option silently removes any directories that have
1215been added to the local working copy without using the
1216.Ic add
1217command.
1218.El
1219.Pp
1220For each file not being synchronized with the base repository,
1221a single letter prefix is given to specify the state of the file.
1222The possible prefixes are as follows:
1223.Bl -tag -width Ds
1224.It \&?
1225The file is unknown to
1226.Nm
1227and is not in the list of files to ignore.
1228Any new directories which have not been added with the
1229.Ic add
1230command are silently ignored as well as their content.
1231.It A
1232The file has been added with the
1233.Ic add
1234command, but has not been committed to the repository with the
1235.Ic commit
1236command.
1237.It M
1238The file has been locally modified; a more recent version might
1239exist in the base repository.
1240.It R
1241The file has been removed with the
1242.Ic remove
1243command, but has not been committed to the repository with the
1244.Ic commit
1245command.
1246.It U
1247A more recent version of the file does exist but it is not
1248locally up to date.
1249.El
1250.Pp
1251Aliases:
1252.Ic re ,
1253.Ic rel .
1254.Ss remove
1255The
1256.Ic remove
1257command is used to inform
1258.Nm
1259that
1260.Ar file
1261is scheduled to be removed from the repository.
1262Files are not actually removed from the repository until the
1263.Ic commit
1264command has been run subsequently.
1265.Pp
1266There is no way to remove a directory with the
1267.Ic remove
1268command.
1269.Nm
1270will only remove a directory if it is empty and if the
1271.Ic checkout
1272or
1273.Ic update
1274commands are run with the
1275.Fl P
1276option.
1277(Note that the
1278.Ic export
1279command always removes empty directories.)
1280.Bd -literal -offset indent
1281usage: cvs remove [-flR] [file ...]
1282.Ed
1283.Pp
1284The
1285.Ic remove
1286command takes the following options:
1287.Bl -tag -width Ds -offset 3n
1288.It Fl f
1289Force local file removal.
1290If this flag is not used, the file must be locally removed beforehand for
1291the command to be valid.
1292.It Fl l
1293Limit the scope of the search to the local directory
1294only and disable recursive behaviour.
1295.It Fl R
1296Enable recursive behaviour.
1297This is the default.
1298.El
1299.Pp
1300Aliases:
1301.Ic rm ,
1302.Ic delete .
1303.Ss rlog
1304The
1305.Ic rlog
1306command displays information on a
1307.Ar file
1308such as its different revisions, description, different tags,
1309as well as the comments, dates, and authors of these revisions.
1310By default, the
1311.Ic rlog
1312command displays all the available information; the options are only
1313used to restrict the displayed information.
1314This command does not need a local checkout of the repository
1315to work.
1316.Bd -literal -offset indent
1317usage: cvs rlog [-bhlNRt] [-d dates] [-r revs] [-s state]
1318               [-w users] module ...
1319.Ed
1320.Pp
1321The
1322.Ic rlog
1323command takes the following options:
1324.Bl -tag -width Ds -offset 3n
1325.It Fl b
1326List revisions of the default branch only.
1327.It Fl d Ar dates
1328Specify revisions with dates matching the specification.
1329The specification might be as follows:
1330.Bl -tag -width Ds
1331.It date1<date2 or date2>date1
1332Select all revisions between
1333.Ar date1
1334and
1335.Ar date2 .
1336.It <date or date>
1337Select all revisions before
1338.Ar date .
1339.It >date or date<
1340Select all revisions after
1341.Ar date .
1342.It date
1343Select the latest revision before or equal to
1344.Ar date .
1345.El
1346.Pp
1347The
1348.Sq \*(Gt
1349and
1350.Sq \*(Lt
1351characters can be followed by the
1352.Sq =
1353character to imply an inclusive specification.
1354Several specifications can be used by separating them with the
1355.Sq \&;
1356character.
1357.It Fl h
1358Print header only.
1359.It Fl l
1360Limit the scope of the search to the local directory only.
1361.It Fl N
1362Do not list tags.
1363.It Fl R
1364Print name of RCS file only.
1365.It Fl r Ar revs
1366Specify revision(s) to list:
1367.Bl -tag -width Ds
1368.It rev1,rev2,...
1369A list of revisions is specified by separating names or numbers
1370of revisions by the
1371.Sq \&,
1372character.
1373.It rev1:rev2
1374List all revisions between
1375.Ar rev1
1376and
1377.Ar rev2
1378(they must be on the same branch).
1379.It :rev
1380List all revisions since the beginning of the branch until
1381.Ar rev
1382included.
1383.It rev:
1384List all revisions of the branch beginning with
1385.Ar rev .
1386.It branch
1387List all revisions of a branch.
1388.It branch.
1389List the latest revision of the branch
1390.Ar branch .
1391.It branch1:branch2
1392List all revisions of branches between
1393.Ar branch1
1394and
1395.Ar branch2 .
1396.El
1397.Pp
1398Without argument, the
1399.Fl r
1400option means the latest revision of the default branch.
1401.It Fl s Ar state
1402List revisions of the specified
1403.Ar state
1404only.
1405Several states can be listed by separating them with the
1406.Sq \&,
1407character.
1408.It Fl t
1409Print header and description only.
1410.It Fl w Ar users
1411Do not list revisions made by specified
1412.Ar users .
1413Usernames should be separated by the
1414.Sq \&,
1415character.
1416.El
1417.Pp
1418Aliases:
1419.Ic rlo .
1420.Ss rtag
1421The
1422.Ic rtag
1423command adds a symbolic tag to one or more modules.
1424It is often used to create a new branch using the
1425.Fl b
1426option.
1427.Bd -literal -offset indent
1428usage: cvs rtag [-abdFflnR] [-D date | -r rev]
1429                symbolic_tag module ...
1430.Ed
1431.Pp
1432The
1433.Ic rtag
1434command takes the following options:
1435.Bl -tag -width Ds -offset 3n
1436.It Fl a
1437Clear tag from files already removed with the
1438.Ic remove
1439command.
1440.It Fl b
1441Create a branch.
1442.It Fl D Ar date
1443Tag the most recent revision before
1444.Ar date .
1445.It Fl d
1446Delete tag.
1447.It Fl F
1448Move tag if it already exists.
1449If this option is not used and a tag is used a second time,
1450.Nm
1451will not execute the action.
1452.It Fl f
1453Force the use of the head revision if the specified
1454revision or date is not found.
1455.It Fl l
1456Limit the scope of the search to the local directory
1457only and disable recursive behaviour.
1458.It Fl n
1459Do not execute programs listed in the
1460.Pa CVSROOT/modules
1461file.
1462.It Fl R
1463Enable recursive behaviour.
1464This is the default.
1465.It Fl r Ar rev
1466Tag at revision
1467.Ar rev .
1468.El
1469.Pp
1470Aliases:
1471.Ic rt ,
1472.Ic rfreeze .
1473.Ss server
1474Server mode.
1475.Ss status
1476The
1477.Ic status
1478command is used to display the state of checked out files.
1479.Bd -literal -offset indent
1480usage: cvs status [-lRv] [file ...]
1481.Ed
1482.Pp
1483The
1484.Ic status
1485command takes the following options:
1486.Bl -tag -width Ds -offset 3n
1487.It Fl l
1488Limit the scope of the search to the local directory
1489only and disable recursive behaviour.
1490.It Fl R
1491Enable recursive behaviour.
1492This is the default.
1493.It Fl v
1494Display symbolic tags for
1495.Ar file .
1496.Pp
1497The state may be one of the following:
1498.Bl -tag -width Ds
1499.It Cm Locally Added
1500The file has been added with the
1501.Ic add
1502command, but has not been committed to the repository with the
1503.Ic commit
1504command.
1505.It Cm Locally Modified
1506The file is up to date, but has been locally modified.
1507.It Cm Locally Removed
1508The file has been removed with the
1509.Ic remove
1510command, but has not been committed to the repository with the
1511.Ic commit
1512command.
1513.It Cm Needs Checkout
1514The file has not been modified; a new version is available.
1515.It Cm Needs Merge
1516The file has been modified and a newer version is available.
1517.It Cm Needs Patch
1518Same as
1519.Ic Needs Checkout
1520but, in client-server mode, only the differences are sent to save
1521network resources.
1522.It Cm Unresolved Conflict
1523A merge has been done, but unresolved conflicts still remain.
1524.It Cm Up-to-date
1525The file is up to date.
1526.El
1527.El
1528.Pp
1529Aliases:
1530.Ic st ,
1531.Ic stat .
1532.Ss tag
1533The
1534.Ic tag
1535command adds a symbolic tag to a checked out version of one or more files.
1536.Bd -literal -offset indent
1537usage: cvs tag [-bcdFflR] [-D date | -r rev] [symbolic_tag]
1538               [file ...]
1539.Ed
1540.Pp
1541The
1542.Ic tag
1543command takes the following options:
1544.Bl -tag -width Ds -offset 3n
1545.It Fl b
1546Create a branch.
1547.It Fl c
1548Check that working files are not modified.
1549.It Fl D Ar date
1550Tag the most recent revision before
1551.Ar date .
1552.It Fl d
1553Delete tag.
1554.It Fl F
1555Move tag if it already exists.
1556If this option is not used and a tag is used a second time,
1557.Nm
1558will not execute the action.
1559.It Fl f
1560Force the use of the head revision if the specified
1561revision or date is not found.
1562.It Fl l
1563Limit the scope of the search to the local directory
1564only and disable recursive behaviour.
1565.It Fl R
1566Enable recursive behaviour.
1567This is the default.
1568.It Fl r Ar rev
1569Tag at revision
1570.Ar rev .
1571.El
1572.Pp
1573Aliases:
1574.Ic ta ,
1575.Ic freeze .
1576.Ss unedit
1577The
1578.Ic unedit
1579command is used to give up an edition on a file and thus cancel
1580the wanted temporary notifications.
1581If the file has been modified since the
1582.Ic edit
1583command has been issued,
1584.Nm
1585will ask if it should go back to the previous version, and lose the
1586modifications done on the file, or stay in edition mode on it.
1587.Bd -literal -offset indent
1588usage: cvs unedit [-lR] [file ...]
1589.Ed
1590.Pp
1591The
1592.Ic unedit
1593command takes the following options:
1594.Bl -tag -width Ds -offset 3n
1595.It Fl l
1596Limit the scope of the search to the local directory
1597only and disable recursive behaviour.
1598.It Fl R
1599Enable recursive behaviour.
1600This is the default.
1601.El
1602.Ss update
1603The
1604.Ic update
1605command is used to merge any of the changes that have occurred on the remote
1606repository into the local one where the command was run.
1607.Bd -literal -offset indent
1608usage: cvs update [-ACdflPpR] [-D date | -r rev] [-I ign]
1609                  [-j rev] [-k mode] [-W spec] [file ...]
1610.Ed
1611.Pp
1612The
1613.Ic update
1614command takes the following options:
1615.Bl -tag -width Ds -offset 3n
1616.It Fl A
1617Reset any sticky tags, dates, or keyword substitution modes that
1618have been set on the tree.
1619.It Fl C
1620Overwrite locally modified files with clean repository copies.
1621.It Fl D Ar date
1622Update as of the latest revision no later than
1623.Ar date
1624(is sticky).
1625.It Fl d
1626Create any new directories.
1627Without this option,
1628.Nm
1629does not create any new files sitting in these new directories
1630added in the base repository since the last update of the working
1631copy, or since the last update with the
1632.Fl d
1633option.
1634.It Fl f
1635Force the use of the head revision if the specified
1636tag or date is not found.
1637.It Fl I Ar ign
1638Ignore files specified by
1639.Ar ign .
1640This option can be used several times on the command line.
1641To see all files, use the
1642.Fl I Ar !\&
1643specification.
1644.It Fl j Ar rev
1645Merge in changes made between current revision and
1646.Ar rev .
1647If two
1648.Fl j
1649options are specified, only merge the differences between the two
1650revisions of the branch.
1651This allows successive merges without having to resolve
1652already resolved conflicts again.
1653.It Fl k Ar mode
1654Specify the keyword substitution mode (is sticky).
1655.It Fl l
1656Limit the scope of the search to the local directory
1657only and disable recursive behaviour.
1658.It Fl P
1659Prune any directories that have become empty as a result of the update.
1660.It Fl p
1661Send the result of the update to standard output (avoids stickiness).
1662.It Fl R
1663Enable recursive behaviour.
1664This is the default.
1665.It Fl r Ar rev
1666Update from a particular revision or branch (is sticky).
1667.It Fl W Ar spec
1668Wrappers specification line.
1669.El
1670.Pp
1671By default, the
1672.Ic update
1673command does not create new directories; the
1674.Fl d
1675option must be used for that.
1676.Pp
1677For each file updated, a single letter prefix is given to
1678specify the state of the file.
1679The possible prefixes are as follows:
1680.Bl -tag -width Ds
1681.It \&?
1682The file is unknown to
1683.Nm .
1684.It A
1685The file has been added with the
1686.Ic add
1687command, but has not been committed to the repository with the
1688.Ic commit
1689command.
1690.It C
1691A merge, with a more recent version of the file, has been done,
1692but unresolved conflicts still remain.
1693.It M
1694The file has been locally modified; if a more recent version
1695is available, the merge has been done without conflict.
1696.It P
1697The same as
1698.Sq U ,
1699but, in client-server mode, only differences are sent to save network
1700resources.
1701.It R
1702The file has been removed with the
1703.Ic remove
1704command, but has not been committed to the repository with the
1705.Ic commit
1706command.
1707.It U
1708The file is up to date.
1709.El
1710.Pp
1711Aliases:
1712.Ic up ,
1713.Ic upd .
1714.Ss version
1715Causes
1716.Nm
1717to print its version information.
1718If this command is issued within a local copy of a remote repository or
1719if either the
1720.Ev CVSROOT
1721environment variable or the
1722.Fl d
1723flag specify a remote repository,
1724.Nm
1725will also connect to the server and ask it to print its version information.
1726.Pp
1727Aliases:
1728.Ic ve ,
1729.Ic ver .
1730.Ss watch
1731The
1732.Ic watch
1733command switches a file from normal mode to
1734pseudo-lock mode as well as handling the notifications associated
1735with it.
1736Pseudo-lock mode means knowing who is editing a file:
1737for that,
1738.Nm
1739extracts the file in read-only mode.
1740Users must use the
1741.Ic edit
1742command to get the editing rights on the file.
1743.Pp
1744One of the following arguments to the
1745.Ic watch
1746command is mandatory: on, off, add, or remove.
1747.Ar on
1748switches the file into pseudo-lock mode;
1749.Ar off
1750switches it back to normal mode;
1751.Ar add
1752adds notifications for specific actions on the file;
1753.Ar remove
1754removes those notifications.
1755.Pp
1756The notifications are permanent.
1757They remain in place until the
1758.Ic watch remove
1759command is issued while the temporary notifications are
1760made available with the
1761.Ic edit
1762command.
1763.Bd -literal -offset indent
1764usage: cvs watch on | off | add | remove [-lR] [-a action]
1765                 [file ...]
1766.Ed
1767.Pp
1768The
1769.Ic watch
1770command takes the following options:
1771.Bl -tag -width Ds -offset 3n
1772.It Fl a Ar action
1773Specify the permanent notification wanted for
1774.Ar add | remove :
1775.Pp
1776.Bl -tag -width Ds -compact
1777.It Cm commit
1778Another user has committed changes to the file.
1779.It Cm edit
1780Another user is editing the file.
1781.It Cm unedit
1782Another user has finished editing the file.
1783.It Cm all
1784All of the above.
1785.It Cm none
1786No notification.
1787.El
1788.Pp
1789If no specification is requested using the
1790.Ar add
1791or
1792.Ar remove
1793arguments, it implies the
1794.Fl a Ar all
1795option.
1796.It Fl l
1797Limit the scope of the search to the local directory
1798only and disable recursive behaviour.
1799.It Fl R
1800Enable recursive behaviour.
1801This is the default.
1802.El
1803.Ss watchers
1804The
1805.Ic watchers
1806command lists the users who asked for notifications as well as the
1807notifications details.
1808The possible notifications are as follows:
1809.Bl -tag -width Ds
1810.It Cm commit
1811Permanent watch of a commit of a new version of a file.
1812.It Cm edit
1813Permanent watch of the start of file edition.
1814.It Cm tcommit
1815Temporary watch of a commit of new version of a file.
1816.It Cm tedit
1817Temporary watch of the start of file edition.
1818.It Cm tunedit
1819Temporary watch of the end of file edition.
1820.It Cm unedit
1821Permanent watch of the end of file edition.
1822.El
1823.Pp
1824The temporary watches are set using the
1825.Ic edit
1826command, until the
1827.Ic commit
1828or
1829.Ic unedit
1830command is issued on a file.
1831.Bd -literal -offset indent
1832usage: cvs watchers [-lR] [file ...]
1833.Ed
1834.Pp
1835The
1836.Ic watchers
1837command takes the following options:
1838.Bl -tag -width Ds -offset 3n
1839.It Fl l
1840Limit the scope of the search to the local directory
1841only and disable recursive behaviour.
1842.It Fl R
1843Enable recursive behaviour.
1844This is the default.
1845.El
1846.Sh ENVIRONMENT
1847.Bl -tag -width Ds
1848.It Ev CVS_CLIENT_LOG
1849This variable enables logging of all communications between the client and
1850server when running in non-local mode.
1851If set, this environment variable must contain a base path from which two
1852paths will be generated by appending ".in" to the value for the server's
1853input and ".out" for the server's output.
1854.Pp
1855The path can contain the following substitutes:
1856.Pp
1857.Bl -tag -width Ds -offset indent -compact
1858.It %c
1859the command being run
1860.It %d
1861the date
1862.It %p
1863the process ID
1864.It %u
1865the username of the person running it
1866.El
1867.Pp
1868The substitutes are only supported by OpenCVS.
1869.It Ev CVS_RSH
1870Name of the program to use when connecting to the server through a remote
1871shell.
1872The default is to use the
1873.Xr ssh 1
1874program.
1875.It Ev CVS_SERVER
1876If set, gives the name of the program to invoke as a
1877.Nm
1878server when using remote shell.
1879The default is to use `cvs'.
1880.It Ev CVSEDITOR
1881Name of the editor to use when editing commit messages.
1882Checked before
1883.Ev EDITOR
1884and
1885.Ev VISUAL .
1886.It Ev CVSREAD
1887If set,
1888.Nm
1889extracts files in read-only mode.
1890.It Ev CVSREADONLYFS
1891Permit checkout from a read-only repository.
1892Implies
1893.Fl l .
1894See also
1895.Fl R ,
1896above.
1897.It Ev CVSROOT
1898When set, this variable should contain the string pointing to the root
1899directory of the CVS repository.
1900The contents of this variable are ignored when the
1901.Fl d
1902option is given or if `Root' files exist in the checked-out copy.
1903.It Ev EDITOR
1904Name of the editor to use when editing commit messages.
1905This is traditionally a line-oriented editor,
1906such as
1907.Xr ex 1 .
1908.It Ev HOME
1909Directory where the
1910.Pa .cvsignore
1911and
1912.Pa .cvsrc
1913files are searched for.
1914.It Ev TMPDIR
1915When set, this variable specifies the directory where temporary files
1916are to be created.
1917The default is set to
1918.Pa /tmp .
1919.It Ev VISUAL
1920Name of the editor to use when editing commit messages.
1921This is traditionally a screen-oriented editor,
1922such as
1923.Xr vi 1 .
1924.El
1925.Sh SEE ALSO
1926.Xr diff 1 ,
1927.Xr gzip 1 ,
1928.Xr patch 1 ,
1929.Xr rcs 1 ,
1930.Xr cvs 5 ,
1931.Xr cvsintro 7
1932.Sh STANDARDS
1933The flag
1934.Op Fl x
1935has no effect and is provided
1936for compatibility only.
1937.Sh HISTORY
1938The OpenCVS project is a BSD-licensed rewrite of the original
1939Concurrent Versioning System written by Jean-Francois Brousseau.
1940The original CVS code was written in large parts by Dick Grune,
1941Brian Berliner and Jeff Polk.
1942.Sh AUTHORS
1943.An Jean-Francois Brousseau
1944.An Vincent Labrecque
1945.An Joris Vink
1946.An Xavier Santolaria
1947.Sh CAVEATS
1948This CVS implementation does not fully conform to the GNU CVS version.
1949In some cases, this was done explicitly because GNU CVS has inconsistencies
1950or ambiguous behaviour.
1951Some things have also been left out or modified to enhance the overall
1952security of the system.
1953.Pp
1954Among other things, support for the pserver connection mechanism has been
1955dropped because of security issues with the authentication mechanism.
1956