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