xref: /openbsd/usr.bin/cvs/cvs.5 (revision c70dac2b)
1*c70dac2bStobias.\"	$OpenBSD: cvs.5,v 1.4 2007/09/19 13:49:55 tobias Exp $
2a7bff744Sjmc.\"
3a7bff744Sjmc.\" Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
4a7bff744Sjmc.\" Copyright (c) 2004-2007 Xavier Santolaria <xsa@openbsd.org>
5a7bff744Sjmc.\" All rights reserved.
6a7bff744Sjmc.\"
7a7bff744Sjmc.\" Redistribution and use in source and binary forms, with or without
8a7bff744Sjmc.\" modification, are permitted provided that the following conditions
9a7bff744Sjmc.\" are met:
10a7bff744Sjmc.\"
11a7bff744Sjmc.\" 1. Redistributions of source code must retain the above copyright
12a7bff744Sjmc.\"    notice, this list of conditions and the following disclaimer.
13a7bff744Sjmc.\" 2. The name of the author may not be used to endorse or promote products
14a7bff744Sjmc.\"    derived from this software without specific prior written permission.
15a7bff744Sjmc.\"
16a7bff744Sjmc.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
17a7bff744Sjmc.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
18a7bff744Sjmc.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
19a7bff744Sjmc.\" THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20a7bff744Sjmc.\" EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21a7bff744Sjmc.\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22a7bff744Sjmc.\" OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23a7bff744Sjmc.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24a7bff744Sjmc.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25a7bff744Sjmc.\" ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26a7bff744Sjmc.\"
27a2bdf3e3Stobias.Dd $Mdocdate: September 19 2007 $
28a7bff744Sjmc.Dt CVS 5
29a7bff744Sjmc.Os
30a7bff744Sjmc.Sh NAME
31a7bff744Sjmc.Nm cvs
32a7bff744Sjmc.Nd OpenCVS files format
33a7bff744Sjmc.Sh DESCRIPTION
34a7bff744SjmcThis manual page documents the various support files for
35a7bff744Sjmc.Xr cvs 1
36a7bff744Sjmcand the format of those files.
37a7bff744Sjmc.Pp
38a7bff744SjmcThe location of a module's files are known as its
39a7bff744Sjmc.Dv CVSROOT .
40a7bff744SjmcThe files within CVSROOT are as follows:
41a7bff744Sjmc.Bl -tag -width Ds
42a7bff744Sjmc.It Pa $CVSROOT/CVSROOT
43a7bff744SjmcDirectory containing repository administrative files.
44a7bff744Sjmc.It Pa $CVSROOT/CVSROOT/config
45a7bff744SjmcFile containing various configuration options.
46a7bff744SjmcThe format of each line is as follows:
47a7bff744Sjmc.Pp
48a7bff744Sjmc.Dl keyword=value
49a7bff744Sjmc.Pp
50a7bff744SjmcExtraneous spaces or tabs are not permitted.
51a7bff744SjmcA line beginning with a hash character
52a7bff744Sjmc.Pq Sq #
53a7bff744Sjmcis considered a comment and ignored.
54a7bff744Sjmc.Pp
55a7bff744SjmcThe following options are available:
56a7bff744Sjmc.Pp
57a7bff744Sjmc.Bl -tag -width "dlimit=XvalueXXX" -offset indent -compact
58a7bff744Sjmc.It dlimit='value'
59a7bff744SjmcSet the process data size limit.
60a7bff744Sjmc.It tag='value'
61a7bff744SjmcSet the name of a local tag to use in addition to Id.
62a7bff744Sjmc.It umask='value'
63a7bff744SjmcSet the default umask to use when creating files and directories.
64a7bff744Sjmc.El
65a7bff744Sjmc.It Pa $CVSROOT/CVSROOT/history
66a7bff744SjmcFile containing reports of
67a7bff744Sjmc.Ic checkout ,
68a7bff744Sjmc.Ic commit ,
69a7bff744Sjmc.Ic export ,
70a7bff744Sjmc.Ic release ,
71a7bff744Sjmc.Ic rtag ,
72a7bff744Sjmcand
73a7bff744Sjmc.Ic update
74a7bff744Sjmccommands that have been issued.
75a7bff744SjmcBy default, the
76a7bff744Sjmc.Ic init
77a7bff744Sjmccommand creates the
78a7bff744Sjmc.Pa history
79a7bff744Sjmcfile.
80a7bff744SjmcTo disable history logging, the
81a7bff744Sjmc.Pa history
82a7bff744Sjmcfile should be removed manually.
83a7bff744SjmcThe
84a7bff744Sjmc.Ic history
85a7bff744Sjmccommand shows these reports according to several criteria.
86a7bff744Sjmc.It Pa $CVSROOT/CVSROOT/loginfo
87a7bff744SjmcFile containing associations between modules and handlers for
88a7bff744Sjmcpost-commit logging.
89a7bff744Sjmc.El
90a7bff744Sjmc.Pp
91a7bff744SjmcEach directory that is managed by
92a7bff744Sjmc.Nm
93a7bff744Sjmccontains a
94a7bff744Sjmc.Pa CVS
95a7bff744Sjmcdirectory.
96a7bff744SjmcThis directory is used by various
97a7bff744Sjmc.Nm
98a7bff744Sjmccommands to record the status of files in the current working directory.
99a7bff744SjmcThese files should not be modified manually by the user but by the
100a7bff744Sjmc.Nm
101a7bff744Sjmccommands instead.
102a7bff744SjmcFiles that are always stored in every
103a7bff744Sjmc.Pa CVS
104a7bff744Sjmcdirectory are as follows:
105a7bff744Sjmc.Bl -tag -width Ds
106a7bff744Sjmc.It Pa CVS/Entries
107a7bff744SjmcFile containing a list of files managed by
108a7bff744Sjmc.Nm .
109a7bff744Sjmc.Pa Entries
110a7bff744Sjmchas one line per file or directory describing the state of it with
111a7bff744Sjmcregard to the source repository.
112a7bff744SjmcThese lines have the following format:
113a7bff744Sjmc.Pp
114a7bff744Sjmc.Dl /name/revision/timestamp/options/tag
115a7bff744Sjmc.Bl -tag -width Ds
116a7bff744Sjmc.It name
117a7bff744SjmcName of the file in the directory.
118a7bff744Sjmc.It revision
119a7bff744SjmcRevision of the file in the working directory.
120a7bff744SjmcThe revision is equal to
121a7bff744Sjmc.Sq 0
122a7bff744Sjmcif the file has been added with the
123a7bff744Sjmc.Ic add
124a7bff744Sjmccommand or preceded by the
125a7bff744Sjmc.Sq -
126a7bff744Sjmccharacter if the file has been removed with the
127a7bff744Sjmc.Ic remove
128a7bff744Sjmccommand.
129a7bff744Sjmc.It timestamp
130a7bff744SjmcContains the timestamp of the file at the time
131a7bff744Sjmc.Nm
132a7bff744Sjmccreated it.
133a7bff744SjmcIf the timestamp is different from the actual modification time of the file,
134a7bff744Sjmcit means that the file has been modified.
135a7bff744Sjmc.It options
136a7bff744SjmcContains the keyword substitution mode used for this file.
137a7bff744Sjmc.It tag
138a7bff744SjmcContains
139a7bff744Sjmc.Sq T
140a7bff744Sjmcfollowed by a tagname or
141a7bff744Sjmc.Sq D
142a7bff744Sjmcfollowed by a date.
143a7bff744Sjmc.El
144a7bff744Sjmc.Pp
145a7bff744SjmcEntries corresponding to directories have the following format:
146a7bff744Sjmc.Pp
147a7bff744Sjmc.Dl D/name////
148a7bff744Sjmc.Pp
149a7bff744SjmcThe lines in the
150a7bff744Sjmc.Pa Entries
151a7bff744Sjmcfile can be in any order.
152a7bff744Sjmc.It Pa CVS/Repository
153a7bff744SjmcFile containing the path to the corresponding directory in the
154a7bff744Sjmcsource repository.
155a7bff744Sjmc.It Pa CVS/Root
156a7bff744SjmcFile containing the value of the
157a7bff744Sjmc.Ev CVSROOT
158a7bff744Sjmcvariable at the time of checkout.
159a7bff744SjmcThis file is used by all
160a7bff744Sjmc.Nm
161a7bff744Sjmccommands instead of
162a7bff744Sjmc.Ev CVSROOT
163a7bff744Sjmconce
164a7bff744Sjmc.Nm
165a7bff744Sjmchas checked for its existence.
166a7bff744Sjmc.El
167a7bff744Sjmc.Pp
168a7bff744SjmcDepending on the circumstances, other files may exist in the
169a7bff744Sjmc.Pa CVS
170a7bff744Sjmcdirectory:
171a7bff744Sjmc.Bl -tag -width Ds
172a7bff744Sjmc.It Pa CVS/Base
173a7bff744SjmcIf pseudo-lock mode is enabled in client-server mode,
174a7bff744Sjmcthe
175a7bff744Sjmc.Pa Base
176a7bff744Sjmcdirectory contains a copy of the file on which the
177a7bff744Sjmc.Ic edit
178a7bff744Sjmccommand has been issued.
179a7bff744SjmcThis allows the
180a7bff744Sjmc.Ic unedit
181a7bff744Sjmccommand to operate even if the CVS server is unreachable.
182a7bff744Sjmc.It Pa CVS/Baserev
183a7bff744SjmcFile listing the revisions for each file contained in the
184a7bff744Sjmc.Pa Base
185a7bff744Sjmcdirectory under the following format:
186a7bff744Sjmc.Pp
187a7bff744Sjmc.Dl name/revision/
188a7bff744Sjmc.It Pa CVS/Baserev.tmp
189a7bff744SjmcTemporary file used to write
190a7bff744Sjmc.Pa CVS/Baserev
191a7bff744Sjmccontent then atomically renamed to
192a7bff744Sjmc.Pa Baserev .
193a7bff744Sjmc.It Pa CVS/Checkin.prog
194a7bff744SjmcFile containing the path to the command specified with the
195a7bff744Sjmc.Fl i
196a7bff744Sjmcoption in the
197a7bff744Sjmc.Pa CVSROOT/modules
198a7bff744Sjmcfile.
199a7bff744Sjmc.It Pa CVS/Entries.Backup
200a7bff744SjmcTemporary file used to write
201a7bff744Sjmc.Pa CVS/Entries
202a7bff744Sjmccontent then atomically renamed to
203a7bff744Sjmc.Pa Entries .
204a7bff744Sjmc.It Pa CVS/Entries.Static
205a7bff744SjmcTells
206a7bff744Sjmc.Nm
207a7bff744Sjmcto not add files to the directory unless the
208a7bff744Sjmc.Ic update
209a7bff744Sjmccommand is issued with the
210a7bff744Sjmc.Fl d
211a7bff744Sjmcoption.
212a7bff744Sjmc.It Pa CVS/Notify
213a7bff744SjmcFile containing the notifications that could not be sent to the
214a7bff744SjmcCVS server but will be sent at the next successful connection.
215a7bff744Sjmc.It Pa CVS/Notify.tmp
216a7bff744SjmcTemporary file used to write
217a7bff744Sjmc.Pa CVS/Notify
218a7bff744Sjmccontent then atomically renamed to
219a7bff744Sjmc.Pa Notify .
220a7bff744Sjmc.It Pa CVS/Tag
221a7bff744SjmcFile containing the symbolic revision that was used at checkout.
222a7bff744SjmcThe first character of the line is a single letter indicating the
223a7bff744Sjmctype of tag:
224a7bff744Sjmc.Sq D ,
225a7bff744Sjmc.Sq N ,
226a7bff744Sjmcor
227a7bff744Sjmc.Sq T ,
228a7bff744Sjmcfor date, non-branch tag, or branch tag, respectively.
229a7bff744SjmcThe rest of the line is the tag or date itself.
230a7bff744SjmcThe
231a7bff744Sjmc.Pa Tag
232a7bff744Sjmcfile should not be removed manually:
233a7bff744Sjmcinstead, use
234a7bff744Sjmc.Dq update -A .
235a7bff744Sjmc.It Pa CVS/Template
236a7bff744SjmcFile containing the template specified by the
237a7bff744Sjmc.Pa CVSROOT/rcsinfo
238a7bff744Sjmcfile.
239a7bff744SjmcIt is only used in client-server mode.
240a7bff744SjmcLocally,
241a7bff744Sjmc.Nm
242a7bff744Sjmcuses the
243a7bff744Sjmc.Pa rcsinfo
244a7bff744Sjmcfile directly.
245a7bff744Sjmc.It Pa CVS/Update.prog
246a7bff744SjmcFile containing the path to the command specified with the
247a7bff744Sjmc.Fl u
248a7bff744Sjmcoption in the
249a7bff744Sjmc.Pa CVSROOT/modules
250a7bff744Sjmcfile.
251a7bff744Sjmc.It Pa CVS/<name>,t
252a7bff744SjmcFile containing the description of the file
253a7bff744Sjmc.Pa file
254a7bff744Sjmcthat has been added with the
255a7bff744Sjmc.Ic add
256a7bff744Sjmccommand.
257a7bff744SjmcThis description is used by
258a7bff744Sjmc.Nm
259a7bff744Sjmcwhen archiving this file with the
260a7bff744Sjmc.Ic commit
261a7bff744Sjmccommand.
262a7bff744Sjmc.It Pa $HOME/.cvsignore
263a7bff744SjmcThis file provides a list of files (or
264a7bff744Sjmc.Xr sh 1
265a7bff744Sjmcfile name patterns) that should be ignored by
266a7bff744Sjmc.Xr cvs 1
267a7bff744Sjmcduring the
268a7bff744Sjmc.Ic import ,
269a7bff744Sjmc.Ic release ,
270a7bff744Sjmcand
271a7bff744Sjmc.Ic update
272a7bff744Sjmccommands.
273a7bff744Sjmc.Pp
274a7bff744SjmcThe syntax of the
275a7bff744Sjmc.Nm
276a7bff744Sjmcfile consists of a series of lines, each of which contains a
277a7bff744Sjmcspace-separated list of filenames.
278a7bff744SjmcThere is currently no way of using comments in this file.
279a7bff744Sjmc.Pp
280a7bff744SjmcDefault patterns that are ignored by
281a7bff744Sjmc.Xr cvs 1
282a7bff744Sjmcare as follows:
283a7bff744Sjmc.Bd -filled
284a7bff744SjmcCVS,
285a7bff744SjmcRCS,
286a7bff744SjmcRCSLOG,
287a7bff744SjmcSCCS,
288a7bff744SjmcTAGS,
289a7bff744Sjmctags,
290a7bff744Sjmccore,
291a7bff744Sjmccvslog*,
292a7bff744Sjmc*.o,
293a7bff744Sjmc*.so,
294a7bff744Sjmc*.a,
295a7bff744Sjmc*.bak,
296a7bff744Sjmc*.orig,
297a7bff744Sjmc*.rej,
298a7bff744Sjmc*.old,
299a7bff744Sjmc*.exe,
300a7bff744Sjmc*.depend,
301a7bff744Sjmc*.obj,
302a7bff744Sjmc*.elc,
303a7bff744Sjmc*.ln,
304a7bff744Sjmc*.olb,
305a7bff744Sjmc*.core,
306a7bff744Sjmc.#*,
307a7bff744Sjmc*~,
308a7bff744Sjmc_$*,
309a7bff744Sjmc*$,
310a7bff744Sjmc#*,
311a7bff744Sjmc,*.
312a7bff744Sjmc.Ed
313a7bff744Sjmc.Pp
314a7bff744SjmcThe list can be modified using the methods described below:
315a7bff744Sjmc.Pp
316a7bff744Sjmc.Bl -enum -compact
317a7bff744Sjmc.It
318a7bff744SjmcThe
319a7bff744Sjmc.Pa $CVSROOT/CVSROOT/cvsignore
320a7bff744Sjmcfile appends patterns to ignore for the whole repository.
321a7bff744Sjmc.It
322a7bff744SjmcThe
323a7bff744Sjmc.Pa $HOME/.cvsignore
324a7bff744Sjmcfile appends patterns to ignore for user only.
325a7bff744Sjmc.It
326a7bff744SjmcThe content of the
327a7bff744Sjmc.Ev CVSIGNORE
328a7bff744Sjmcvariable is appended to the list.
329a7bff744Sjmc.It
330a7bff744SjmcOptions to the command line
331a7bff744Sjmc.Fl I
332a7bff744Sjmcflag, available for the
333a7bff744Sjmc.Ic import
334a7bff744Sjmcand
335a7bff744Sjmc.Ic update
336a7bff744Sjmccommands, appends patterns for the current command line action only.
337a7bff744Sjmc.It
338a7bff744Sjmc.Pa .cvsignore
339a7bff744Sjmcfiles placed in the repository directories allow to add patterns to
340a7bff744Sjmcignore locally.
341a7bff744SjmcThey do not take effect on sub-directories.
342a7bff744Sjmc.El
343a7bff744Sjmc.Pp
344a7bff744SjmcThe
345a7bff744Sjmc.Sq !\&
346a7bff744Sjmccharacter can be used to reset the list of patterns using any of these
347a7bff744Sjmcfive methods.
348a7bff744Sjmc.Pp
349a7bff744SjmcFor the
350a7bff744Sjmc.Ic update
351a7bff744Sjmccommand,
352a7bff744Sjmc.Xr cvs 1
353a7bff744Sjmchandles files that are already present in the repository even if they
354a7bff744Sjmcare in the list to ignore.
355a7bff744SjmcFiles that are in the list to ignore but not in the repository will not
356a7bff744Sjmcbe listed.
357a7bff744SjmcThis way, files preceded by the
358a7bff744Sjmc.Sq ?\&
359a7bff744Sjmccharacter will not appear even if they should.
360a7bff744Sjmc.It Pa $HOME/.cvsrc
361a7bff744SjmcThis file provides a way to give the
362a7bff744Sjmc.Xr cvs 1
363a7bff744Sjmcprogram implicit global options and command-specific options.
364a7bff744SjmcUnless the
365a7bff744Sjmc.Fl f
366a7bff744Sjmcoption is specified,
367a7bff744Sjmc.Xr cvs 1
368a7bff744Sjmcreads its startup configuration file
369a7bff744Sjmc.Pa .cvsrc
370a7bff744Sjmcfrom the home directory of the user who invoked it.
371a7bff744Sjmc.Pp
372a7bff744SjmcThe format of each line is as follows:
373a7bff744Sjmc.Pp
374a7bff744Sjmc.Dl command [arg ...]
375a7bff744Sjmc.Pp
376a7bff744Sjmcwhere
377a7bff744Sjmc.Ar command
378a7bff744Sjmcis either the
379a7bff744Sjmc.Sq cvs
380a7bff744Sjmckeyword to specify global options, one of the supported
381a7bff744Sjmc.Xr cvs 1
382a7bff744Sjmccommands or a command alias.
383a7bff744SjmcArguments following
384a7bff744Sjmc.Ar command
385a7bff744Sjmcwill be added implicitly to the appropriate command's argument vector if it is
386a7bff744Sjmcrun.
387a7bff744SjmcLines whose
388a7bff744Sjmc.Ar command
389a2bdf3e3Stobiasargument is not a valid command will generate a warning when running with
390a7bff744Sjmcthe
391a2bdf3e3Stobias.Fl V
392a2bdf3e3Stobiasflag.
393a7bff744Sjmc.Pp
394*c70dac2bStobiasEmpty lines are ignored.
395a7bff744SjmcA line beginning with a hash character
396a7bff744Sjmc.Pq Sq #
397a7bff744Sjmcis considered a comment and ignored.
398a7bff744Sjmc.Pp
399a7bff744SjmcFor example, to specify that
400a7bff744Sjmc.Xr cvs 1
401a7bff744Sjmcshould always run in quiet mode and the
402a7bff744Sjmc.Ic diff
403a7bff744Sjmcinternal command should always produce unified output:
404a7bff744Sjmc.Bd -literal -offset indent
405a7bff744Sjmccvs -q
406a7bff744Sjmcdiff -u
407a7bff744Sjmc.Ed
408a7bff744Sjmc.It Pa $HOME/.cvswrappers
409a7bff744SjmcThis file, located in
410a7bff744Sjmc.Pa $CVSROOT/CVSROOT
411a7bff744Sjmcand/or
412a7bff744Sjmc.Pa $HOME/.cvswrappers ,
413a7bff744Sjmcprovides a way to configure filters for
414a7bff744Sjmc.Xr cvs 1
415a7bff744Sjmcbased on file type (name).
416a7bff744SjmcThis works by specifying a pattern to match for varying file types.
417a7bff744Sjmc.Pp
418a7bff744SjmcThe format of each line is as follows:
419a7bff744Sjmc.Pp
420a7bff744Sjmc.Dl pattern [option 'value'] [option 'value'] ...
421a7bff744Sjmc.Pp
422a7bff744SjmcThe following options are supported:
423a7bff744Sjmc.Bl -tag -width Ds
424a7bff744Sjmc.It Fl f Ar filter
425a7bff744SjmcExecute
426a7bff744Sjmc.Ar filter
427a7bff744Sjmcwhen the file is extracted from the repository (for the
428a7bff744Sjmc.Ic checkout ,
429a7bff744Sjmc.Ic export ,
430a7bff744Sjmcand
431a7bff744Sjmc.Ic update
432a7bff744Sjmccommands).
433a7bff744Sjmc.It Fl k Ar mode
434a7bff744SjmcSpecify the keyword substitution mode.
435a7bff744SjmcSee the
436a7bff744Sjmc.Sx KEYWORD SUBSTITUTION
437a7bff744Sjmcsection of
438a7bff744Sjmc.Xr rcs 1
439a7bff744Sjmcfor more information.
440a7bff744Sjmc.It Fl m Ar method
441a7bff744SjmcSpecify the merge methodology to be used when a file is updated.
442a7bff744Sjmc.Pp
443a7bff744SjmcThe methods are as follows:
444a7bff744Sjmc.Bl -tag -width Ds
445a7bff744Sjmc.It COPY
446a7bff744SjmcWhen the
447a7bff744Sjmc.Ic update
448a7bff744Sjmccommand is used,
449a7bff744Sjmc.Xr cvs 1
450a7bff744Sjmcwill merely copy one version over another and let the user do the merge
451a7bff744Sjmcby himself.
452a7bff744SjmcThis method is used by default on binary files (see the
453a7bff744Sjmc.Fl k Ar b
454a7bff744Sjmcoption).
455a7bff744Sjmc.It MERGE
456a7bff744SjmcTry to merge the files.
457a7bff744SjmcThis method is the default.
458a7bff744Sjmc.El
459a7bff744Sjmc.It Fl t Ar filter
460a7bff744SjmcExecute
461a7bff744Sjmc.Ar filter
462a7bff744Sjmcbefore the file is archived in the repository (for the
463a7bff744Sjmc.Ic commit ,
464a7bff744Sjmcand
465a7bff744Sjmc.Ic import
466a7bff744Sjmccommands).
467a7bff744Sjmc.El
468a7bff744Sjmc.It Pa $TMPDIR/cvs-serv Ns Aq Pa pid
469a7bff744SjmcTemporary directory created by the server where
470a7bff744Sjmc.Ar pid
471a7bff744Sjmcis the process ID of the server.
472a7bff744SjmcIt is located in the directory specified by the
473a7bff744Sjmc.Ev TMPDIR
474a7bff744Sjmcenvironment variable or the
475a7bff744Sjmc.Fl T
476a7bff744Sjmcglobal option.
477a7bff744SjmcSee above for more information.
478a7bff744Sjmc.El
479a7bff744Sjmc.Sh SEE ALSO
480a7bff744Sjmc.Xr cvs 1 ,
481a7bff744Sjmc.Xr cvsintro 7
482