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