Annotation of src/usr.bin/cvs/cvs.1, Revision 1.47
1.47 ! xsa 1: .\" $OpenBSD: cvs.1,v 1.46 2005/02/09 16:34:56 xsa Exp $
1.1 jfb 2: .\"
3: .\" Copyright (c) 2004 Jean-Francois Brousseau <jfb@openbsd.org>
1.36 xsa 4: .\" Copyright (c) 2004, 2005 Xavier Santolaria <xsa@openbsd.org>
1.1 jfb 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 May 16, 2004
28: .Dt CVS 1
29: .Os
30: .Sh NAME
31: .Nm cvs
1.3 jfb 32: .Nd OpenCVS Concurrent Versioning System client
1.1 jfb 33: .Sh SYNOPSIS
34: .Nm
1.15 jmc 35: .Op Fl flQqtv
1.1 jfb 36: .Op Fl d Ar root
37: .Op Fl e Ar editor
1.20 jmc 38: .Xo
39: .Oo Fl s
40: .Ar var Ns = Ns Ar val Oc
41: .Xc
1.15 jmc 42: .Op Fl z Ar level
1.1 jfb 43: .Ar command Op Ar ...
44: .Sh DESCRIPTION
45: The
46: .Nm
47: program acts as both client and server for the use of and administration of
48: a CVS source repository.
49: CVS is used to maintain version information on files that are kept in a
50: repository.
51: Although it is more commonly used to track changes in source code, there
52: are no real limitations to the type of files that you can store in a
53: repository.
1.35 jmc 54: For a general introduction to CVS, see
55: .Xr cvsintro 7 .
1.1 jfb 56: .Pp
1.7 jfb 57: .Nm
1.35 jmc 58: reads its startup configuration file,
59: .Pa .cvsrc ,
1.7 jfb 60: from the home directory of the user who invoked it.
61: This file is used to specify implicit options passed to
62: .Nm
63: or one of its commands whenever it is invoked.
1.35 jmc 64: The defaults in the configuration file can be overridden with the
65: .Fl f
66: option (see below).
1.16 jmc 67: See
68: .Xr cvsrc 5
69: for further information.
1.7 jfb 70: .Pp
1.1 jfb 71: The following options are supported:
1.15 jmc 72: .Bl -tag -width "-e editorXX"
1.1 jfb 73: .It Fl d Ar root
74: Use
75: .Ar root
76: as the path to the root directory of the CVS repository.
77: The value must specify an absolute path.
78: .It Fl e Ar editor
79: Use the program
80: .Ar editor
81: whenever editing log information.
1.8 jmc 82: This option overrides the environment variables CVSEDITOR, VISUAL, and EDITOR.
1.1 jfb 83: .It Fl f
1.7 jfb 84: Do not read the user's configuration file on startup.
1.1 jfb 85: .It Fl l
86: Suppress logging of history information.
87: .It Fl Q
88: Be extra quiet.
89: Only error messages will be displayed.
90: .It Fl q
91: Be quiet about reporting.
1.20 jmc 92: .It Fl s Ar var Ns = Ns Ar val
93: Set the value of the internal variable
94: .Ar var
95: to the string
96: .Ar val .
1.15 jmc 97: .It Fl t
98: Trace program execution.
1.1 jfb 99: .It Fl v
100: Display version information and exit.
1.15 jmc 101: .It Fl z Ar level
102: Specify the compression level to
103: .Xr gzip 1
104: when transferring files.
105: The compression level ranges from 1 to 9,
106: with 1 being the fastest,
107: and 9 providing the best level of compression.
108: The default is 6.
1.45 xsa 109: .El
110: .Sh KEYWORD SUBSTITUTION
111: As long as you edit source files inside a working directory you
112: can always find out the state of your files via the
113: .Ic status
114: or
115: .Ic log
116: commands, but as soon as files get exported from
117: your local working copy, it becomes harder to identify which
118: revisions they are.
119: .Pp
120: .Nm
121: can use a mechanism known as
122: .Sq keyword substitution
123: to help identify the files.
124: Embedded strings of the form $keyword$ and $keyword:...$ in a file
125: are replaced with strings of the form $keyword: value$ whenever you
126: obtain a new revision of the file.
127: The possible keywords are as follows:
128: .Bl -tag -width "RevisionXXX"
1.46 xsa 129: .It \&$Author\&$
1.45 xsa 130: The name of the user who checked in the revision.
1.46 xsa 131: .It \&$Date\&$
1.45 xsa 132: The date and hour (UTC) the revision was checked in.
1.46 xsa 133: .It \&$Header\&$
1.45 xsa 134: Standard header containing the full pathname of the RCS
135: file, the revision number, the date (UTC), the author and the state.
1.46 xsa 136: .It \&$Id\&$
1.47 ! xsa 137: The same content as \&$Header\&$ but without the path
1.45 xsa 138: of the RCS file.
1.46 xsa 139: .It \&$Log\&$
1.45 xsa 140: The log message supplied during commit, preceded by a header
141: containing the RCS filename, the revision number, the
142: author, and the date (UTC).
1.46 xsa 143: .It \&$Name\&$
1.45 xsa 144: The tag name used to check out the file.
1.46 xsa 145: .It \&$RCSfile\&$
1.45 xsa 146: The name of the RCS file, but without a path.
1.46 xsa 147: .It \&$Revision\&$
1.45 xsa 148: The revision number assigned to the revision.
1.46 xsa 149: .It \&$Source\&$
1.45 xsa 150: The full pathname of the RCS file.
1.46 xsa 151: .It \&$State\&$
1.45 xsa 152: The state assigned to the revision.
153: .El
154: .Pp
155: Keyword substitution has its disadvantages: sometimes the
1.46 xsa 156: literal text string \&$Author\&$ is wanted inside a file without
1.45 xsa 157: .Nm
158: interpreting it as a keyword and expanding it into something like
1.46 xsa 159: \&$Author\&$.
1.45 xsa 160: The
161: .Fl k Ar o
162: option can be used to turn off keyword substitution entirely though.
163: There is unfortunately no way to selectively turn off keyword substitution.
164: .Pp
165: Each file and working directory copy of a file have a stored
166: default substitution mode.
167: Substitution modes on files are set by the
168: .Fl k Ar mode
169: option to the
170: .Ic add
171: and
172: .Ic admin
173: commands or by the
174: .Fl k Ar mode
175: or
176: .Fl A
177: options to the
178: .Ic checkout
179: or
180: .Ic update
181: commands.
182: .Pp
183: The possible substitution modes are as follows:
184: .Bl -tag -width Ds -offset 3n
185: .It Fl k Ar b
186: Like
187: .Fl k Ar o ,
188: but also avoids the conversion of line endings.
189: This option is used to handle binary files.
190: .It Fl k Ar k
191: Does not substitute the keywords.
192: Useful with the
193: .Ic diff
194: command to avoid displaying the differences between keyword substitutions.
195: .It Fl k Ar kv
196: The default behaviour.
1.47 ! xsa 197: Keywords are normally substituted i.e. \&$Revision\&$ becomes
! 198: \&$Revision: 1.1 \&$.
1.45 xsa 199: .It Fl k Ar kvl
200: Like
201: .Fl k Ar kv ,
202: except that the locker's name is displayed along with the version
203: if the given revision is currently locked.
204: This option is normally not useful as
205: .Nm
206: does not use file locking by default.
207: .It Fl k Ar o
208: No substitutions are done.
209: This option is often used with the
210: .Ic import
211: command to guarantee that files that already contain external keywords
212: do not get modified.
213: .It Fl k Ar v
214: Substitue the value of keywords instead of keywords themselves
1.47 ! xsa 215: e.g. instead of \&$Revision\&$, only insert 1.1 and not \&$Revision: 1.1 \&$.
1.45 xsa 216: This option must be used with care, as it can only be used once.
217: It is often used with the
218: .Ic export
219: command to freeze the values before releasing software.
1.1 jfb 220: .El
221: .Sh COMMANDS
1.3 jfb 222: The following commands are supported by
1.44 jmc 223: .Nm :
1.7 jfb 224: .Bl -tag -width "xxxxxxxxxxxx"
1.42 xsa 225: .It Xo Ic add
226: .Op Fl k Ar mode
227: .Op Fl m Ar msg
228: .Ar file ...
1.3 jfb 229: .Xc
1.7 jfb 230: .Pp
1.42 xsa 231: Before a file is known to
232: .Nm ,
233: it must be added to the repository using this command.
1.1 jfb 234: Adding a file does not actually publish the contents of the
1.42 xsa 235: file: the
1.11 jmc 236: .Ic commit
1.42 xsa 237: command must also be used to publish it into the repository,
238: and thus let others access the file.
239: .Pp
240: Note: since directories have no versioning system, it is sufficient
241: to add them with the
242: .Ic add
243: command alone; the
244: .Ic commit
245: command is not necessary.
1.1 jfb 246: .Pp
1.35 jmc 247: The
248: .Ic add
249: command takes the following options:
250: .Bl -tag -width Ds -offset 3n
1.42 xsa 251: .It Fl k Ar mode
252: Specify the keyword substitution mode.
1.35 jmc 253: .It Fl m Ar msg
254: Attach log message
255: .Ar msg .
256: By default, no log message is required.
257: .El
1.13 jmc 258: .Pp
259: Aliases:
260: .Ic ad ,
261: .Ic new .
262: .It Ic admin
263: Administration front-end for
264: .Xr rcs 1 .
265: .Pp
266: Aliases:
267: .Ic adm ,
268: .Ic rcs .
1.26 xsa 269: .It Xo Ic annotate
270: .Op Fl flR
271: .Oo Fl D Ar date \*(Ba
272: .Fl r Ar rev Oc
273: .Op Ar file ...
274: .Xc
275: .Pp
1.23 xsa 276: For each line of any files specified, show information about its
277: last revision.
278: The information given is the last revision when a modification occurred,
279: the author's name, and the date of the revision.
1.26 xsa 280: .Pp
281: The
1.35 jmc 282: .Ic annotate
283: command takes the following options:
284: .Bl -tag -width Ds -offset 3n
285: .It Fl D Ar date
286: Show the annotations as of the latest revision no later than
287: .Ar date .
288: .It Fl f
289: Force the use of the head revision if the specified
1.26 xsa 290: tag or date is not found.
291: This can be used in combination with
292: .Fl D
293: or
294: .Fl r
295: to ensure that there is some output from the
296: .Ic annotate
297: command, even if only to show Revision 1.1 of the file.
1.35 jmc 298: .It Fl l
299: Limit the scope of the search to the local directory
300: only and disable recursive behaviour.
301: .It Fl R
302: Enable recursive behaviour.
303: This is the default.
304: .It Fl r Ar rev
305: Show annotations as of revision
1.26 xsa 306: .Ar rev
307: (can be a revision number or a tag).
1.35 jmc 308: .El
1.13 jmc 309: .Pp
310: Aliases:
311: .Ic ann .
1.11 jmc 312: .It Xo Ic checkout
1.37 xsa 313: .Op Fl AcflNnPpRs
314: .Op Fl d Ar dir
315: .Op Fl j Ar rev
316: .Op Fl k Ar mode
317: .Fl D Ar date \*(Ba
318: .Fl r Ar rev
319: .Ar module ...
1.7 jfb 320: .Xc
321: .Pp
322: The
1.11 jmc 323: .Ic checkout
1.7 jfb 324: command is used to create a local copy of one or more modules present on the
325: target CVS repository.
1.37 xsa 326: .Pp
327: The
328: .Ic checkout
329: command takes the following options:
330: .Bl -tag -width Ds -offset 3n
331: .It Fl A
1.41 xsa 332: Reset any sticky tags, dates, or keyword substitution modes that
333: have been set on the tree.
1.37 xsa 334: .It Fl c
335: Display the list of available modules.
336: .It Fl D Ar date
337: Check out as of the latest revision no later than
338: .Ar date
339: (is sticky).
340: .It Fl d Ar dir
341: Check out in directory
342: .Ar dir
343: instead of the directory bearing the same name as the
344: .Ar module .
345: .It Fl f
346: Force the use of the head revision if the specified
347: tag or date is not found.
348: .It Fl j Ar rev
349: Merge in changes made between current revision and
350: .Ar rev .
351: If two
352: .Fl j
353: options are specified, only merge the differences between the two
354: revisions of the branch.
355: This allows successive merges without having to resolve
356: already resolved conflicts again.
357: .It Fl k Ar mode
358: Specify the keyword substitution mode (is sticky).
359: .It Fl l
360: Limit the scope of the search to the local directory
361: only and disable recursive behaviour.
362: .It Fl N
363: If used in conjunction with the
364: .Fl d
365: option, files are placed in local directory
366: .Ar module ,
367: located in directory
368: .Ar dir .
369: .It Fl n
370: Do not execute programs listed in the
371: .Pa CVSROOT/modules
372: file.
373: .It Fl P
374: Prune empty directories.
375: .It Fl p
376: Check out files to standard output (avoids stickiness).
377: .It Fl R
378: Enable recursive behaviour.
379: This is the default.
380: .It Fl r Ar rev
381: Check out from a particular revision or branch (implies
382: .Fl P )
383: (is sticky).
384: .It Fl s
385: Like
386: .Fl c ,
387: but include module status.
388: .El
1.13 jmc 389: .Pp
390: Aliases:
391: .Ic co ,
392: .Ic get .
1.11 jmc 393: .It Xo Ic commit
1.3 jfb 394: .Op Fl flnR
1.27 xsa 395: .Oo Fl F Ar logfile \*(Ba
396: .Fl m Ar msg Oc
1.3 jfb 397: .Op Fl r Ar rev
1.4 jfb 398: .Op Ar file ...
1.3 jfb 399: .Xc
1.7 jfb 400: .Pp
1.1 jfb 401: The
1.11 jmc 402: .Ic commit
1.1 jfb 403: command is used to send local changes back to the server and update the
404: repository's information to reflect the changes.
1.27 xsa 405: .Pp
406: The
1.35 jmc 407: .Ic commit
408: command takes the following options:
409: .Bl -tag -width Ds -offset 3n
410: .It Fl F Ar logfile
411: Specify a
1.27 xsa 412: .Ar file
1.35 jmc 413: which contains the log message.
414: .It Fl f
415: Force a file to be committed, even though it is unchanged.
416: .It Fl l
417: Limit the scope of the search to the local directory
418: only and disable recursive behaviour.
419: .It Fl m Ar msg
420: Specify a log message on the command line (suppresses the editor invocation).
421: .It Fl n
422: Do not execute programs listed in the
423: .Pa CVSROOT/modules
424: file.
425: .It Fl R
426: Enable recursive behaviour.
427: This is the default.
428: .It Fl r Ar rev
429: Commit to a particular symbolic or numerical revision.
430: .El
1.13 jmc 431: .Pp
432: Aliases:
433: .Ic ci ,
434: .Ic com .
1.24 jfb 435: .It Xo Ic diff Op Fl cilNpu
1.3 jfb 436: .Op Fl D Ar date
437: .Op Fl r Ar rev
1.4 jfb 438: .Op Ar file ...
1.3 jfb 439: .Xc
1.7 jfb 440: .Pp
1.3 jfb 441: The
1.11 jmc 442: .Ic diff
1.3 jfb 443: command is very similar to the
444: .Xr diff 1
1.5 jfb 445: program, except that the differential comparisons that it generates are
1.3 jfb 446: between local or remote revisions of files stored in the CVS repository.
1.13 jmc 447: .Pp
448: Aliases:
449: .Ic di ,
450: .Ic dif .
1.30 xsa 451: .It Xo Ic edit Op Fl lR
452: .Op Fl a Ar action
453: .Op Ar file ...
454: .Xc
455: .Pp
456: The
457: .Ic edit
1.35 jmc 458: command is used to make a file that is being watched
459: (and therefore read-only)
1.30 xsa 460: readable and writable and to inform others that you are planning to edit it.
461: Notifications terminate when the
462: .Ic commit
463: command is issued.
464: Editing rights on the file can be given up using the
465: .Ic unedit
1.35 jmc 466: command, which terminates the temporary notifications.
1.30 xsa 467: .Pp
468: The
1.35 jmc 469: .Ic edit
470: command takes the following options:
471: .Bl -tag -width Ds -offset 3n
472: .It Fl a Ar action
473: Specify the temporary notification wanted:
474: .Pp
475: .Bl -tag -width "commitXX" -compact
1.30 xsa 476: .It Cm commit
1.35 jmc 477: Another user has committed changes to the file.
1.30 xsa 478: .It Cm edit
479: Another user has issued the
480: .Ic edit
1.35 jmc 481: command on the file.
1.30 xsa 482: .It Cm unedit
483: Another user has issued the
484: .Ic unedit
1.35 jmc 485: command on the file.
1.30 xsa 486: .It Cm all
487: All of the above.
488: .It Cm none
489: None of the above.
490: .El
491: .Pp
492: The
493: .Fl a
494: flag may appear more than once, or not at all.
495: If omitted, the action defaults to
1.31 jmc 496: .Cm all .
1.35 jmc 497: .It Fl l
498: Limit the scope of the search to the local directory
499: only and disable recursive behaviour.
500: .It Fl R
501: Enable recursive behaviour.
502: This is the default.
503: .El
1.33 xsa 504: .It Xo Ic editors
505: .Op Fl lR
1.34 xsa 506: .Op Ar file ...
1.33 xsa 507: .Xc
508: .Pp
509: The
510: .Ic editors
511: command lists the users with edition rights on a file.
512: For that, pseudo-lock mode must be enabled (see the
513: .Ic watch
514: command).
515: The e-mail address of the user editing the file, the timestamp
516: when the edition first started, the host from where the edition
517: has been requested and the path to the edited file are listed.
518: .Pp
519: The
1.35 jmc 520: .Ic editors
521: command takes the following options:
522: .Bl -tag -width Ds -offset 3n
523: .It Fl l
524: Limit the scope of the search to the local directory
525: only and disable recursive behaviour.
526: .It Fl R
527: Enable recursive behaviour.
528: This is the default.
529: .El
1.36 xsa 530: .It Xo Ic export
531: .Op Fl flNnR
532: .Op Fl d Ar dir
533: .Op Fl k Ar mode
534: .Fl D Ar date \*(Ba
535: .Fl r Ar rev
536: .Ar module ...
537: .Xc
538: .Pp
539: The
540: .Ic export
541: command extracts a copy of
542: .Ar module
543: without including the directories used for management by
544: .Nm .
545: This eases production of a software release.
546: A date or a revision must be specified for the command to be valid,
547: which ensures that later extractions can be reproduced with the same
548: options as the release.
549: .Pp
550: The checked out module's files will be placed in a directory
551: bearing the same name as the checked out module, by default.
552: .Pp
553: The
554: .Ic export
555: command takes the following options:
556: .Bl -tag -width Ds -offset 3n
557: .It Fl D Ar date
558: Export as of the latest revision no later than
559: .Ar date .
560: .It Fl d Ar dir
561: Export in directory
562: .Ar dir
563: instead of the directory bearing the same name as the
564: .Ar module .
565: .It Fl f
566: Force the use of the head revision if the specified
567: tag or date is not found.
568: This can be used in combination with
569: .Fl D
570: or
571: .Fl r
572: to ensure that the
573: .Ic export
574: command is valid.
575: .It Fl k Ar mode
576: Specify the keyword substitution mode: the
577: .Fl k Ar v
578: option is often used to avoid substitution of keywords during
579: a release cycle.
580: However, be aware that it does not handle an export containing
581: binary files correctly.
582: .It Fl l
583: Limit the scope of the search to the local directory
584: only and disable recursive behaviour.
585: .It Fl N
586: If used in conjunction with the
587: .Fl d
588: option, files are placed in local directory
589: .Ar module ,
590: located in directory
591: .Ar dir .
592: .It Fl n
593: Do not execute programs listed in the
594: .Pa CVSROOT/modules
595: file.
596: .It Fl R
597: Enable recursive behaviour.
598: This is the default.
599: .It Fl r Ar rev
600: Export from a particular symbolic or numerical revision.
601: .El
1.13 jmc 602: .Pp
603: Aliases:
604: .Ic ex ,
605: .Ic exp .
606: .It Ic history
607: Show repository access history.
608: .Pp
609: Aliases:
610: .Ic hi ,
611: .Ic his .
1.22 jmc 612: .It Xo Ic import
613: .Op Fl b Ar branch
614: .Op Fl m Ar msg
615: .Ar repository
616: .Ar vendortag
617: .Ar releasetag
618: .Xc
619: .Pp
1.13 jmc 620: Import sources into CVS using vendor branches.
1.22 jmc 621: .Pp
622: At least three arguments are required:
623: .Ar repository
624: specifies the location of the sources to be imported;
625: .Ar vendortag
626: is a tag for the entire branch;
627: .Ar releasetag
628: is used to identify the files you created with
1.35 jmc 629: .Ic cvs import .
630: .Pp
631: The
632: .Ic import
633: command takes the following options:
634: .Bl -tag -width Ds -offset 3n
635: .It Fl b Ar branch
636: Specify the first-level branch number.
637: .It Fl m Ar msg
638: Specify the log message to send.
639: .El
1.13 jmc 640: .Pp
641: Aliases:
642: .Ic im ,
643: .Ic imp .
644: .It Ic init
645: Create a CVS repository if it doesn't exist.
646: .It Ic kserver
647: Start a Kerberos authentication server.
648: .It Ic log
649: Print out history information for files.
650: .Pp
651: Aliases:
652: .Ic lo .
653: .It Ic login
1.35 jmc 654: Prompt for a password for an authenticating server.
1.13 jmc 655: .It Ic logout
1.35 jmc 656: Remove an entry in
657: .Pa .cvspass
658: for a remote repository.
1.13 jmc 659: .It Ic rdiff
660: Create
661: .Xr patch 1
662: format diffs between releases.
1.39 xsa 663: .It Xo Ic release
664: .Op Fl d
665: .Ar dir ...
666: .Xc
667: The
668: .Ic release
669: command indicates to
670: .Nm
671: that the working copy of a module is no longer in use and checks
672: that non archived modifications in the base repository do exist.
673: This command is not mandatory.
674: Local directories could always be removed without using it, but
675: in this case the handling of history information will no longer be
676: correct (see the
677: .Ic history
678: command).
679: .Pp
680: The
681: .Ic release
682: command takes the following options:
683: .Bl -tag -width Ds -offset 3n
684: .It Fl d Ar dir
685: Remove the directory
686: .Ar dir .
687: Be aware that this option silently removes any directories that have
688: been added to the local working copy without using the
689: .Ic add
690: command.
691: .El
692: .Pp
693: For each file not being synchronized with the base repository,
694: a single letter prefix is given to specify the state of the file.
695: The possible prefixes are as follows:
696: .Bl -tag -width "XXX"
697: .It \&?
698: The file is unknown to
699: .Nm
700: and is not in the list of files to ignore.
701: Any new directories which have not been added with the
702: .Ic add
703: command are silently ignored as well as their content.
704: .It A
705: The file has been added with the
706: .Ic add
707: command, but has not been committed to the repository with the
708: .Ic commit
709: command.
710: .It M
711: The file has been locally modified; a more recent version might
712: exist in the base repository.
713: .It R
714: The file has been removed with the
715: .Ic remove
716: command, but has not been committed to the repository with the
717: .Ic commit
718: command.
719: .It U
720: A more recent version of the file does exist but it is not
721: locally up to date.
722: .El
1.40 xsa 723: .Pp
724: Aliases:
725: .Ic re ,
726: .Ic rel .
1.18 xsa 727: .It Xo Ic remove
728: .Op Fl flR
729: .Op Ar file ...
730: .Xc
731: The
732: .Ic remove
733: command is used to inform
734: .Nm
735: that
736: .Ar file
737: is scheduled to be removed from the repository.
738: Files are not actually removed from the repository until the
739: .Ic commit
740: command has been run subsequently.
1.28 xsa 741: .Pp
742: The
1.35 jmc 743: .Ic remove
744: command takes the following options:
745: .Bl -tag -width Ds -offset 3n
746: .It Fl f
747: Force local file removal.
1.28 xsa 748: If this flag is not used, the file must be locally removed beforehand for
749: the command to be valid.
1.35 jmc 750: .It Fl l
751: Limit the scope of the search to the local directory
752: only and disable recursive behaviour.
753: .It Fl R
754: Enable recursive behaviour.
755: This is the default.
756: .El
1.18 xsa 757: .Pp
758: Aliases:
1.19 xsa 759: .Ic rm ,
760: .Ic delete .
1.13 jmc 761: .It Ic rlog
762: Print out history information for a module.
763: .It Ic rtag
764: Add a symbolic link to a module.
765: .It Ic server
766: Server mode.
1.25 xsa 767: .It Xo Ic status
768: .Op Fl lRv
769: .Op Ar file ...
770: .Xc
771: The
772: .Ic status
773: command is used to display the state of checked out files.
774: .Pp
775: The
1.35 jmc 776: .Ic status
777: command takes the following options:
778: .Bl -tag -width Ds -offset 3n
779: .It Fl l
780: Limit the scope of the search to the local directory
781: only and disable recursive behaviour.
782: .It Fl R
783: Enable recursive behaviour.
784: This is the default.
785: .It Fl v
786: Display symbolic tags for
787: .Ar file .
1.25 xsa 788: .Pp
1.35 jmc 789: The state may be one of the following:
790: .Bl -tag -width "Locally modified"
1.25 xsa 791: .It Cm Locally Added
792: The file has been added with the
793: .Ic add
794: command, but has not been committed to the repository with the
795: .Ic commit
796: command.
797: .It Cm Locally Modified
1.35 jmc 798: The file is up to date, but has been locally modified.
1.25 xsa 799: .It Cm Locally Removed
800: The file has been removed with the
801: .Ic remove
802: command, but has not been committed to the repository with the
803: .Ic commit
804: command.
805: .It Cm Needs Checkout
806: The file has not been modified; a new version is available.
807: .It Cm Needs Merge
808: The file has been modified and a newer version is available.
809: .It Cm Needs Patch
810: Same as
811: .Ic Needs Checkout
812: but, in client-server mode, only the differences are sent to save
813: network resources.
814: .It Cm Unresolved Conflict
815: A merge has been done, but unresolved conflicts still remain.
816: .It Cm Up-to-date
817: The file is up to date.
818: .El
1.35 jmc 819: .El
1.13 jmc 820: .Pp
821: Aliases:
822: .Ic st ,
823: .Ic stat .
1.21 jmc 824: .It Xo Ic tag
1.35 jmc 825: .Op Fl bdlR
1.21 jmc 826: .Op Fl r Ar old_tag
827: .Op Ar symbolic_tag
828: .Op Ar file ...
829: .Xc
830: .Pp
831: Add a symbolic tag to a checked out version of
832: .Ar file .
833: .Pp
834: The
1.35 jmc 835: .Ic tag
836: command takes the following options:
837: .Bl -tag -width Ds -offset 3n
838: .It Fl b
839: Specify a branch tag.
840: .It Fl d
841: Delete tag.
842: .It Fl l
843: Limit the scope of the search to the local directory
844: only and disable recursive behaviour.
845: .It Fl R
846: Enable recursive behaviour.
847: This is the default.
848: .It Fl r Ar old_tag
1.21 jmc 849: .Nm
850: will only tag the files with
851: .Ar symbolic_tag
852: if they are already tagged with
853: .Ar old_tag .
854: When done, it will remove the old tag
855: leaving only the new tag behind on exactly the same files.
1.35 jmc 856: .El
1.13 jmc 857: .Pp
858: Aliases:
859: .Ic ta ,
860: .Ic freeze .
1.30 xsa 861: .It Xo Ic unedit Op Fl lR
862: .Op Ar file ...
863: .Xc
864: .Pp
865: The
866: .Ic unedit
867: command is used to give up an edition on a file and thus cancel
868: the wanted temporary notifications.
869: If the file has been modified since the
1.13 jmc 870: .Ic edit
1.30 xsa 871: command has been issued,
872: .Nm
873: will ask if you want to go back to the previous version, and lose the
874: modifications done on the file, or stay in edition mode on it.
875: .Pp
876: The
1.35 jmc 877: .Ic unedit
878: command takes the following options:
879: .Bl -tag -width Ds -offset 3n
880: .It Fl l
881: Limit the scope of the search to the local directory
882: only and disable recursive behaviour.
883: .It Fl R
884: Enable recursive behaviour.
885: This is the default.
886: .El
1.11 jmc 887: .It Xo Ic update
1.38 xsa 888: .Op Fl AdflPpR
889: .Oo Fl D Ar date \*(Ba
890: .Fl r Ar rev Oc
891: .Op Fl I Ar ign
892: .Op Fl j Ar rev
893: .Op Fl k Ar mode
894: .Op Fl W Ar spec
1.4 jfb 895: .Op Ar file ...
1.3 jfb 896: .Xc
1.7 jfb 897: .Pp
1.3 jfb 898: The
1.11 jmc 899: .Ic update
1.17 david 900: command is used to merge any of the changes that have occurred on the remote
1.3 jfb 901: repository into the local one where the command was run.
902: .Pp
903: The
1.35 jmc 904: .Ic update
905: command takes the following options:
906: .Bl -tag -width Ds -offset 3n
907: .It Fl A
1.41 xsa 908: Reset any sticky tags, dates, or keyword substitution modes that
909: have been set on the tree.
1.38 xsa 910: .It Fl D Ar date
911: Update as of the latest revision no later than
912: .Ar date
913: (is sticky).
914: .It Fl d
915: Create any new directories.
916: Without this option,
917: .Nm
918: does not create any new files sitting in these new directories
919: added in the base repository since the last update of the working
920: copy, or since the last update with the
921: .Fl d
922: option.
923: .It Fl f
924: Force the use of the head revision if the specified
925: tag or date is not found.
926: .It Fl I Ar ign
927: Ignore files specified by
928: .Ar ign .
929: This option can be used several times on the command line.
930: To see all files, use the
931: .Fl I Ar !\&
932: specification.
933: .It Fl j Ar rev
934: Merge in changes made between current revision and
935: .Ar rev .
936: If two
937: .Fl j
938: options are specified, only merge the differences between the two
939: revisions of the branch.
940: This allows successive merges without having to resolve
941: already resolved conflicts again.
942: .It Fl k Ar mode
943: Specify the keyword substitution mode (is sticky).
1.35 jmc 944: .It Fl l
945: Limit the scope of the search to the local directory
946: only and disable recursive behaviour.
947: .It Fl P
948: Prune any directories that have become empty as a result of the update.
1.38 xsa 949: .It Fl p
950: Send the result of the update to standard output (avoids stickiness).
1.35 jmc 951: .It Fl R
952: Enable recursive behaviour.
953: This is the default.
1.38 xsa 954: .It Fl r Ar rev
955: Update from a particular revision or branch (is sticky).
956: .It Fl W Ar spec
957: Wrappers specification line.
1.35 jmc 958: .El
1.38 xsa 959: .Pp
960: By default, the
961: .Ic update
962: command does not create new directories; the
963: .Fl d
964: option must be used for that.
1.29 xsa 965: .Pp
966: For each file updated, a single letter prefix is given to
967: specify the state of the file.
968: The possible prefixes are as follows:
969: .Bl -tag -width "XXX"
970: .It \&?
971: The file is unknown to
972: .Nm .
973: .It A
974: The file has been added with the
975: .Ic add
976: command, but has not been committed to the repository with the
977: .Ic commit
978: command.
979: .It C
980: A merge, with a more recent version of the file, has been done,
981: but unresolved conflicts still remain.
982: .It M
983: The file has been locally modified; if a more recent version
984: is available, the merge has been done without conflict.
985: .It P
986: The same as
987: .Sq U ,
988: but, in client-server mode, only differences are sent to save network
989: resources.
990: .It R
991: The file has been removed with the
992: .Ic remove
993: command, but has not been committed to the repository with the
994: .Ic commit
995: command.
996: .It U
997: The file is up to date.
998: .El
1.13 jmc 999: .Pp
1000: Aliases:
1001: .Ic up ,
1002: .Ic upd .
1.11 jmc 1003: .It Ic version
1.3 jfb 1004: Causes
1005: .Nm
1006: to print its version information.
1.14 jfb 1007: If this command is issued within a local copy of a remote repository or
1008: if either the
1009: .Ev CVSROOT
1010: environment variable or the
1011: .Fl d
1012: flag specify a remote repository,
1.3 jfb 1013: .Nm
1014: will also connect to the server and ask it to print its version information.
1.13 jmc 1015: .Pp
1016: Aliases:
1017: .Ic ve ,
1018: .Ic ver .
1.32 xsa 1019: .It Xo Ic watch
1020: .Ar on | off | add | remove
1021: .Op Fl lR
1022: .Op Fl a Ar action
1023: .Op Ar file ...
1024: .Xc
1025: .Pp
1026: The
1027: .Ic watch
1028: command switches a file from normal mode to
1029: pseudo-lock mode as well as handling the notifications associated
1030: with it.
1031: Pseudo-lock mode means knowing who is editing a file:
1032: for that,
1033: .Nm
1034: extracts the file in read-only mode.
1035: Users must use the
1036: .Ic edit
1037: command to get the editing rights on the file.
1038: .Pp
1039: One of the following arguments to the
1040: .Ic watch
1041: command is mandatory: on, off, add, or remove.
1042: .Ar on
1043: switches the file into pseudo-lock mode;
1044: .Ar off
1045: switches it back to normal mode;
1046: .Ar add
1047: adds notifications for specific actions on the file;
1048: .Ar remove
1049: removes those notifications.
1050: .Pp
1051: The notifications are permanent.
1052: They remain in place until the
1053: .Ic watch remove
1054: command is issued while the temporary notifications are
1055: made available with the
1056: .Ic edit
1057: command.
1058: .Pp
1059: The
1.35 jmc 1060: .Ic watch
1061: command takes the following options:
1062: .Bl -tag -width Ds -offset 3n
1063: .It Fl a Ar action
1064: Specify the permanent notification wanted for
1.32 xsa 1065: .Ar add | remove :
1066: .Pp
1067: .Bl -tag -width "commitXX" -compact
1068: .It Cm commit
1.35 jmc 1069: Another user has committed changes to the file.
1.32 xsa 1070: .It Cm edit
1.35 jmc 1071: Another user is editing the file.
1.32 xsa 1072: .It Cm unedit
1.35 jmc 1073: Another user has finished editing the file.
1.32 xsa 1074: .It Cm all
1075: All of the above.
1076: .It Cm none
1077: No notification.
1078: .El
1079: .Pp
1.35 jmc 1080: If no specification is requested using the
1.32 xsa 1081: .Ar add
1082: or
1083: .Ar remove
1084: arguments, it implies the
1085: .Fl a Ar all
1086: option.
1.35 jmc 1087: .It Fl l
1088: Limit the scope of the search to the local directory
1089: only and disable recursive behaviour.
1090: .It Fl R
1091: Enable recursive behaviour.
1092: This is the default.
1093: .El
1.32 xsa 1094: .It Xo Ic watchers
1095: .Op Fl lR
1096: .Op Ar file ...
1097: .Xc
1098: .Pp
1099: The
1100: .Ic watchers
1101: command lists the users who asked for notifications as well as the
1102: notifications details.
1103: The possible notifications are as follows:
1104: .Bl -tag -width "tcommitXX"
1105: .It Cm commit
1106: Permanent watch of a commit of a new version of a file.
1107: .It Cm edit
1108: Permanent watch of the start of file edition.
1109: .It Cm tcommit
1110: Temporary watch of a commit of new version of a file.
1111: .It Cm tedit
1112: Temporary watch of the start of file edition.
1113: .It Cm tunedit
1114: Temporary watch of the end of file edition.
1115: .It Cm unedit
1116: Permanent watch of the end of file edition.
1117: .El
1118: .Pp
1119: The temporary watches are set using the
1120: .Ic edit
1121: command, until the
1122: .Ic commit
1123: or
1124: .Ic unedit
1.35 jmc 1125: command is issued on a file.
1126: .Pp
1127: The
1128: .Ic watchers
1129: command takes the following options:
1130: .Bl -tag -width Ds -offset 3n
1131: .It Fl l
1132: Limit the scope of the search to the local directory
1133: only and disable recursive behaviour.
1134: .It Fl R
1135: Enable recursive behaviour.
1136: This is the default.
1137: .El
1.1 jfb 1138: .El
1139: .Sh ENVIRONMENT
1140: .Bl -tag -width CVS_CLIENT_LOG
1.8 jmc 1141: .It Ev CVS_CLIENT_LOG
1142: This variable enables logging of all communications between the client and
1143: server when running in non-local mode.
1144: If set, this environment variable must contain a base path from which two
1145: paths will be generated by appending ".in" to the value for the server's
1146: input and ".out" for the server's output.
1.1 jfb 1147: .It Ev CVS_RSH
1148: Name of the program to use when connecting to the server through a remote
1149: shell.
1150: The default is to use the
1151: .Xr ssh 1
1152: program.
1153: .It Ev CVS_SERVER
1154: If set, gives the name of the program to invoke as a
1155: .Nm
1156: server when using remote shell.
1157: The default is to use `cvs'.
1158: .It Ev CVSEDITOR
1159: Name of the editor to use when editing commit messages.
1.8 jmc 1160: Checked before
1161: .Ev EDITOR
1162: and
1163: .Ev VISUAL .
1164: .It Ev CVSROOT
1165: When set, this variable should contain the string pointing to the root
1166: directory of the CVS repository.
1167: The contents of this variable are ignored when the
1168: .Fl d
1169: option is given or if `Root' files exist in the checked-out copy.
1.1 jfb 1170: .It Ev EDITOR
1.9 jmc 1171: Name of the editor to use when editing commit messages.
1172: This is traditionally a line-oriented editor,
1173: such as
1174: .Xr ex 1 .
1.1 jfb 1175: .It Ev VISUAL
1.9 jmc 1176: Name of the editor to use when editing commit messages.
1177: This is traditionally a screen-oriented editor,
1178: such as
1179: .Xr vi 1 .
1.8 jmc 1180: .El
1181: .Sh FILES
1182: .Bl -tag -width Ds
1183: .It Pa $HOME/.cvsrc
1184: File containing a list of implicit options to pass to certain commands.
1185: This file is read on startup unless the
1186: .Fl f
1187: option is specified.
1188: .It Pa $CVSROOT/CVSROOT
1189: Directory containing repository administrative files.
1190: .It Pa $CVSROOT/CVSROOT/loginfo
1191: File containing associations between modules and handlers for
1192: post-commit logging.
1.1 jfb 1193: .El
1194: .Sh SEE ALSO
1195: .Xr diff 1 ,
1.15 jmc 1196: .Xr gzip 1 ,
1.1 jfb 1197: .Xr patch 1 ,
1.8 jmc 1198: .Xr rcs 1 ,
1.16 jmc 1199: .Xr cvsrc 5 ,
1.35 jmc 1200: .Xr cvsintro 7 ,
1.1 jfb 1201: .Xr cvsd 8
1.8 jmc 1202: .Sh HISTORY
1203: The OpenCVS project is a BSD-licensed rewrite of the original
1204: Concurrent Versioning System written by Jean-Francois Brousseau.
1205: The original CVS code was written in large parts by Dick Grune,
1206: Brian Berliner and Jeff Polk.
1207: .Sh AUTHORS
1208: .An Jean-Francois Brousseau
1209: .An Vincent Labrecque
1210: .An Joris Vink
1.43 jfb 1211: .An Xavier Santolaria
1.2 jfb 1212: .Sh CAVEATS
1213: This CVS implementation does not fully conform to the GNU CVS version.
1.3 jfb 1214: In some cases, this was done explicitly because GNU CVS has inconsistencies
1.2 jfb 1215: or ambiguous behaviour.
1.3 jfb 1216: Some things have also been left out or modified to enhance the overall
1217: security of the system.
1218: .Pp
1219: Among other things, support for the pserver connection mechanism has been
1220: dropped because of security issues with the authentication mechanism.