7 .\" Full space in nroff; half space in troff
14 .RB ` "\|\\$1\|" '\\$2
17 cvs \- Concurrent Versions System
20 \fBcvs\fP [ \fIcvs_options\fP ]
28 This manpage is a summary of some of the features of
30 but it may no longer be kept up-to-date.
31 For more current and in-depth documentation, please consult the
32 Cederqvist manual (via the
35 as described in the SEE ALSO section of this manpage).
37 .IX "revision control system" "\fLcvs\fR"
38 .IX cvs "" "\fLcvs\fP \- concurrent versions system"
39 .IX "concurrent versions system \- \fLcvs\fP"
40 .IX "release control system" "cvs command" "" "\fLcvs\fP \- concurrent versions system"
41 .IX "source control system" "cvs command" "" "\fLcvs\fP \- concurrent versions system"
42 .IX revisions "cvs command" "" "\fLcvs\fP \- source control"
43 CVS is a version control system, which allows you to keep old versions
44 of files (usually source code), keep a log of who, when, and why
45 changes occurred, etc., like RCS or SCCS. Unlike the simpler systems,
46 CVS does not just operate on one file at a time or one directory at a
47 time, but operates on hierarchical collections of directories
48 consisting of version controlled files. CVS helps to manage releases
49 and to control the concurrent editing of source files among multiple
50 authors. CVS allows triggers to enable/log/control various
51 operations and works well over a wide area network.
54 keeps a single copy of the master sources.
55 This copy is called the source ``repository''; it contains all the
56 information to permit extracting previous software releases at any
57 time based on either a symbolic revision tag, or a date in the past.
58 .SH "ESSENTIAL COMMANDS"
60 provides a rich variety of commands (\fIcvs_command\fP in the
61 Synopsis), each of which often has a wealth of options, to satisfy the
62 many needs of source management in distributed environments. However,
63 you don't have to master every detail to do useful work with
65 in fact, five commands are sufficient to use (and contribute to)
66 the source repository.
68 \fBcvs checkout\fP \fImodules\fP\|.\|.\|.
69 A necessary preliminary for most \fBcvs\fP work: creates your private
70 copy of the source for \fImodules\fP (named collections of source; you
71 can also use a path relative to the source repository here). You can
72 work with this copy without interfering with others' work. At least
73 one subdirectory level is always created.
76 Execute this command from \fIwithin\fP your private source
77 directory when you wish to update your copies of source files from
78 changes that other developers have made to the source in the
81 \fBcvs add\fP \fIfile\fP\|.\|.\|.
82 Use this command to enroll new files in \fBcvs\fP records of your
83 working directory. The files will be added to the repository the next
89 command to bootstrap new sources into the source repository.
91 is only used for new files to an already checked-out module.
93 \fBcvs remove\fP \fIfile\fP\|.\|.\|.
94 Use this command (after erasing any files listed) to declare that you
95 wish to eliminate files from the repository. The removal does not
96 affect others until you run
99 \fBcvs commit\fP \fIfile\fP\|.\|.\|.
100 Use this command when you wish to ``publish'' your changes to other
101 developers, by incorporating them in the source repository.
105 command line can include
107 which apply to the overall
111 which specifies a particular action on the source repository; and
115 to fully specify what the
120 you must be careful of precisely where you place options relative to the
122 The same option can mean different things depending on whether it
125 position (to the left of a
129 position (to the right of a
133 There are only two situations where you may omit
138 elicits a list of available commands, and
142 displays version information on \fBcvs\fP itself.
149 style long options as well as short options. Only
150 a few long options are currently supported, these are listed in
151 brackets after the short options whose functions they duplicate.
153 Use these options to control the overall
158 Display usage information about the specified
160 (but do not actually execute the command). If you don't specify a
163 displays a summary of all the commands available.
166 Causes the command to be
168 quiet; the command will generate output only for serious problems.
171 Causes the command to be somewhat quiet; informational messages, such
172 as reports of recursion through subdirectories, are suppressed.
174 \fB\-b\fP \fIbindir\fP
177 as the directory where
179 programs are located (CVS 1.9 and older).
180 Overrides the setting of the
182 environment variable.
183 This value should be specified as an absolute pathname.
185 \fB\-d\fP \fICVS_root_directory\fP
187 .I CVS_root_directory
188 as the root directory pathname of the master
190 Overrides the setting of the
192 environment variable.
193 This value should be specified as an absolute pathname.
195 \fB\-e\fP \fIeditor\fP
198 to enter revision log information.
199 Overrides the setting of the
205 environment variables.
210 startup file (\fI~/.cvsrc\fP).
213 Do not change any files. Attempt to execute the
215 but only to issue reports; do not remove, update, or merge any
216 existing files, or create any new files.
219 Trace program execution; display messages showing the steps of
221 activity. Particularly useful with
223 to explore the potential impact of an unfamiliar command.
226 Makes new working files read-only.
227 Same effect as if the
229 environment variable is set.
232 Turns on read-only repository mode. This allows one to check out from a
233 read-only repository, such as within an anoncvs server, or from a CDROM
235 Same effect as if the
237 environment variable is set. Using
239 can also considerably speed up checkout's over NFS.
242 Displays version and copyright information for
246 Makes new working files read-write (default).
247 Overrides the setting of the
249 environment variable.
252 Forces group-write perms on working files. This option is typically
253 used when you have multiple users sharing a single checked out source
254 tree, allowing them to operate their shells with a less dangerous umask.
255 To use this feature, create a directory to hold the checked-out source
256 tree, set it to a private group, and set up the directory such that
257 files created under it inherit the group id of the directory. This occurs
258 automatically with FreeBSD. With SysV you must typically set the SGID bit
259 on the directory. The users who are to share the checked out tree must
260 be placed in that group. Note that the sharing of a single checked-out
261 source tree is very different from giving several users access to a common
262 CVS repository. Access to a common CVS repository already maintains shared
263 group-write perms and does not require this option.
265 To use the option transparently, simply place the line 'cvs -g' in your
266 ~/.cvsrc file. Doing this is not recommended unless you firewall all your
267 source checkouts within a private group or within a private mode 0700
271 Encrypt all communication between the client and the server. As of
272 this writing, this is only implemented when using a Kerberos
275 \fB\-z\fP \fIcompression\-level\fP
276 When transferring files across the network use
278 with compression level \fIcompression\-level\fP to compress and
279 de-compress data as it is transferred. Requires the presence of
283 program in the current search path at both ends of the link.
285 Except when requesting general help with
291 to select a specific release control function to perform.
294 command accepts its own collection of options and arguments.
295 However, many options are available across several commands.
296 You can display a usage summary for each command by specifying the
298 option with the command.
299 .SH "CVS STARTUP FILE"
300 Normally, when CVS starts up, it reads the
302 file from the home directory of the user reading it. This startup
303 procedure can be turned off with the
309 file lists CVS commands with a list of arguments, one command per
310 line. For example, the following line in \fI.cvsrc\fP:
316 command will always be passed the \-c option in addition to any
317 other options that are specified in the command line (in this case
318 it will have the effect of producing context sensitive diffs for
323 Global options are specified using the \fBcvs\fP keyword. For example,
330 commands will behave as thought he \-q global option had been supplied.
331 .SH "CVS COMMAND SUMMARY"
332 Here are brief descriptions of all the
337 Add a new file or directory to the repository, pending a
340 Can only be done from within sources created by a previous
345 to place whole new hierarchies of sources under
348 (Does not directly affect repository; changes
353 control functions on the source repository. (Changes
354 repository directly; uses working directory without changing it.)
357 Make a working directory of source files for editing. (Creates or changes
361 Apply to the source repository changes, additions, and deletions from your
362 working directory. (Changes repository.)
365 Show differences between files in working directory and source
366 repository, or between two revisions in source repository.
367 (Does not change either repository or working directory.)
370 Prepare copies of a set of source files for shipment off site.
375 administrative directories are created (and therefore
377 cannot be executed from a directory prepared with
379 and a symbolic tag must be specified.
380 (Does not change repository; creates directory similar to working
386 commands that you or others have executed on a particular file or
387 directory in the source repository. (Does not change repository or
388 working directory.) History logs are kept only if enabled by creation
390 .` "$CVSROOT/CVSROOT/history"
395 Incorporate a set of updates from off-site into the source repository,
396 as a ``vendor branch''. (Changes repository.)
399 Initialize a repository by adding the CVSROOT subdirectory and some default
400 control files. You must use this command or initialize the repository in
401 some other way before you can use it.
406 (Does not change repository or working directory.)
409 Prepare a collection of diffs as a patch file between two releases in
410 the repository. (Does not change repository or working directory.)
415 abandoning any changes.
416 (Can delete working directory; no effect on repository.)
419 Remove files from the source repository, pending a
421 on the same files. (Does not directly affect repository;
422 changes working directory.)
425 Explicitly specify a symbolic tag for particular revisions of files in the
426 source repository. See also
428 (Changes repository directly; does not require or affect
432 Show current status of files: latest version, version in working
433 directory, whether working version has been edited and, optionally,
436 file. (Does not change
437 repository or working directory.)
440 Specify a symbolic tag for files in the repository. By default, tags
442 that were last synchronized with your working directory. (Changes
443 repository directly; uses working directory without changing it.)
446 Bring your working directory up to date with changes from the
447 repository. Merges are performed automatically when possible; a
448 warning is issued if manual resolution is required for conflicting
449 changes. (Changes working directory; does not change repository.)
450 .SH "COMMON COMMAND OPTIONS"
451 This section describes the
453 that are available across several
455 commands. Not all commands support all of these options; each option
456 is only supported for commands where it makes sense. However, when
457 a command has one of these options you can count on the same meaning
458 for the option as in other commands. (Other command
459 options, which are listed with the individual commands, may have
460 different meanings from one
466 command is an exception;
467 it supports many options that conflict
468 even with these standard options.
470 \fB\-D\fP \fIdate_spec\fP
471 Use the most recent revision no later than \fIdate_spec\fP (a single
472 argument, date description specifying a date in the
473 past). A wide variety of date formats are supported, in particular
474 ISO ("1972-09-24 20:05") or Internet ("24 Sep 1972 20:05").
475 The \fIdate_spec\fP is interpreted as being in the local timezone, unless a
476 specific timezone is specified.
477 The specification is ``sticky'' when you use it to make a
478 private copy of a source file; that is, when you get a working file
479 using \fB\-D\fP, \fBcvs\fP records the date you
480 specified, so that further updates in the same directory will use the
481 same date (unless you explicitly override it; see the description of
482 the \fBupdate\fP command).
484 is available with the
485 .BR checkout ", " diff ", " history ", " export ", "
486 .BR rdiff ", " rtag ", and "
489 Examples of valid date specifications include:
501 January 23, 1987 10:05pm
508 When you specify a particular date or tag to \fBcvs\fP commands, they
509 normally ignore files that do not contain the tag (or did not exist on
510 the date) that you specified. Use the \fB\-f\fP option if you want
511 files retrieved even when there is no match for the tag or date. (The
512 most recent version is used in this situation.)
514 is available with these commands:
515 .BR checkout ", " export ", "
516 .BR rdiff ", " rtag ", and " update .
518 \fB\-k\fP \fIkflag\fP
520 processing of keywords.
521 The \fB\-k\fP option is available with the
522 .BR add ", " checkout ", " diff ", " export ", "
523 .BR rdiff ", and " update
524 commands. Your \fIkflag\fP specification is ``sticky'' when you use
525 it to create a private copy of a source file; that is, when you use
526 this option with the \fBcheckout\fP or \fBupdate\fP commands,
527 \fBcvs\fP associates your selected \fIkflag\fP with the file, and
528 continues to use it with future \fBupdate\fP commands on the same file
529 until you specify otherwise.
531 Some of the more useful \fIkflag\fPs are \-ko and \-kb (for binary files),
532 and \-kv which is useful for an
534 where you wish to retain keyword information after an
539 Local; run only in current working directory, rather than recurring through
540 subdirectories. Available with the following commands:
541 .BR checkout ", " commit ", " diff ", "
542 .BR export ", " remove ", " rdiff ", " rtag ", "
543 .BR status ", " tag ", and " update .
549 .BR checkout / commit / tag / update
550 program. (A program can be specified to run on each of these
551 activities, in the modules database; this option bypasses it.)
553 .BR checkout ", " commit ", " export ", and "
560 option, which you can specify to the
567 Prune (remove) directories that are empty after being updated, on
568 .BR checkout ", or " update .
569 Normally, an empty directory (one that is void of revision-controlled
570 files) is left alone.
573 will cause these directories to be silently removed from your checked-out
575 This does not remove the directory from the repository, only from your
577 Note that this option is implied by the
582 .BR checkout " and " export .
585 Create/Update CVS/Template by copying it from the (local) repository.
586 This option is useful for developers maintaining a local cvs repository
587 but committing to a remote repository. By maintaining CVS/Template the
588 remote commits will still be able to bring up the proper template in the
589 commit editor session.
591 .BR checkout " and " update
595 Pipe the files retrieved from the repository to standard output,
596 rather than writing them in the current directory. Available with the
597 .BR checkout " and " update
601 Use the revision specified by the
603 argument instead of the default ``head'' revision. As well as
604 arbitrary tags defined with the \fBtag\fP or \fBrtag\fP command, two
605 special tags are always available:
608 recent version available in the repository, and
610 refers to the revision you last checked out into the current working
613 The \fItag\fP specification is ``sticky'' when you use
619 make your own copy of a file: \fBcvs\fP remembers the \fItag\fP and
620 continues to use it on future \fBupdate\fP commands, until you specify
623 can be either a symbolic or numeric tag.
626 global option along with the
628 command option is often useful, to suppress the warning messages when the
630 file does not contain the specified tag.
632 is available with the
633 .BR checkout ", " commit ", " diff ", "
634 .BR history ", " export ", "
635 .BR rdiff ", " rtag ", and " update
641 option, which you can specify to the
647 Here (finally) are details on all the
649 commands and the options each accepts. The summary lines at the top
650 of each command's description highlight three kinds of things:
652 \ \ \ \ Command Options and Arguments
653 Special options are described in detail below; common command options
654 may appear only in the summary line.
656 \ \ \ \ Working Directory, or Repository?
657 Some \fBcvs\fP commands require a working directory to operate; some
658 require a repository. Also, some commands \fIchange\fP the
659 repository, some change the working directory, and some change
663 Many commands have synonyms, which you may find easier to
664 remember (or type) than the principal name.
667 \fBadd\fP [\fB\-k\fP \fIkflag\fP] [\fB\-m '\fP\fImessage\fP\fB'\fP] \fIfiles.\|.\|.\fP
669 repository, working directory.
679 command to create a new file or directory in the
681 The files or directories specified with
683 must already exist in the current directory (which must have been created
687 To add a whole new directory hierarchy to the source repository
688 (for example, files received from a third-party vendor), use the
694 refers to an immediate sub-directory, the directory is
695 created at the correct place in the
696 source repository, and the necessary
698 administration files are created in your working directory.
699 If the directory already exists in the source repository,
701 still creates the administration files in your version of the directory.
702 This allows you to use
704 to add a particular directory to your private sources even if
705 someone else created that directory after your
707 of the sources. You can do the following:
712 example% mkdir new_directory
713 example% cvs add new_directory
714 example% cvs update new_directory
719 An alternate approach using
726 example% cvs update -d new_directory
731 (To add \fIany available\fP new directories to your working directory, it's
732 probably simpler to use
737 The added files are not placed in the
738 source repository until you use
740 to make the change permanent.
743 on a file that was removed with the
745 command will resurrect the file, if no
749 You will have the opportunity to specify a logging message, as usual,
752 to make the new file permanent. If you'd like to have another
753 logging message associated with just
755 of the file (for example, to describe the file's purpose), you can
757 .` "\-m \fImessage\fP"
764 option specifies the default way that this
765 file will be checked out.
768 argument is stored in the
770 file and can be changed with
774 is useful for checking in binaries that
778 \fBadmin\fP [\fIrcs-options\fP] \fIfiles.\|.\|.\fP
780 repository, working directory.
790 interface to assorted administrative
791 facilities, similar to
793 This command works recursively, so extreme care should be
796 \fBcheckout\fP [\fBoptions\fP] \fImodules\fP.\|.\|.
806 Make a working directory containing copies of the source files specified by
810 before using most of the other
812 commands, since most of them operate on your working directory.
814 \fImodules\fP are either symbolic names (themselves defined as the
817 in the source repository; see
819 for some collection of source directories and files, or paths to
820 directories or files in the repository.
826 may recursively create directories and populate them with the appropriate
828 You can then edit these source files at any time (regardless of whether
829 other software developers are editing their own copies of the sources);
830 update them to include new changes applied by others to the source
831 repository; or commit your work as a permanent change to the
836 is used to create directories.
837 The top-level directory created is always added to the directory
840 is invoked, and usually has the same name as the specified
844 alias, the created sub-directory may have a different name, but you can be
845 sure that it will be a sub-directory, and that
847 will show the relative path leading to each file as it is extracted into
848 your private work area (unless you specify the
854 on a directory that was already built by a prior
856 is also permitted, and
857 has the same effect as specifying the
861 command described below.
867 include the standard command options
868 .BR \-P ", " \-f ", "
871 .BR \-l ", " \-n ", " \-p ", "
877 In addition to those, you can use these special command options
883 option to reset any sticky tags, dates, or
885 options. (If you get a working file using one of the
886 \fB\-r\fP, \fB\-D\fP, or \fB\-k\fP options, \fBcvs\fP remembers the
887 corresponding tag, date, or \fIkflag\fP and continues using it on
888 future updates; use the \fB\-A\fP option to make \fBcvs\fP forget these
889 specifications, and retrieve the ``head'' version of the file).
893 option merges the changes made between the
894 resulting revision and the revision that it is based on (e.g., if
895 the tag refers to a branch,
897 will merge all changes made in that branch into your working file).
899 With two \fB-j\fP options,
901 will merge in the changes between the two respective revisions.
902 This can be used to ``remove'' a certain delta from your working file.
904 In addition, each \fB-j\fP option can contain on optional date
905 specification which, when used with branches, can limit the chosen
906 revision to one within a specific date.
907 An optional date is specified by adding a colon (:) to the tag.
908 An example might be what
910 tells you to do when you have
911 just imported sources that have conflicts with local changes:
916 example% cvs checkout -jTAG:yesterday -jTAG module
925 to avoid shortening module paths in your working directory. (Normally, \fBcvs\fP shortens paths as much as possible when you specify an explicit target directory.)
929 option to copy the module file, sorted, to the standard output,
930 instead of creating or modifying any files or directories in your
935 option to create a directory called
937 for the working files, instead of using the module name. Unless you
938 also use \fB\-N\fP, the paths created under \fIdir\fP will be as short
943 option to display per-module status information stored with
946 option within the modules file.
948 \fBcommit\fP [\fB\-lnR\fP] [\fB\-m\fP '\fIlog_message\fP' | \fB\-F\fP \fIfile\fP] [\fB\-r\fP \fIrevision\fP] [\fIfiles.\|.\|.\fP]
950 working directory, repository.
960 when you want to incorporate changes from your working source
961 files into the general source repository.
963 If you don't specify particular \fIfiles\fP to commit, all
964 of the files in your working current directory are examined.
966 is careful to change in the repository only those files that you have
967 really changed. By default (or if you explicitly specify the
970 in subdirectories are also examined and committed if they have
971 changed; you can use the
975 to the current directory only.
976 Sometimes you may want to force a file to be committed even though it
977 is unchanged; this is achieved with the
979 flag, which also has the effect of disabling recursion (you can turn
985 verifies that the selected files are up to date with the current revisions
986 in the source repository; it will notify you, and exit without
987 committing, if any of the specified files must be made current first
993 command for you, but rather leaves that for you to do when
996 When all is well, an editor is invoked to allow you to enter a log
997 message that will be written to one or more logging programs and placed in the
998 source repository file.
999 You can instead specify the log message on the command line with the
1001 option, thus suppressing the editor invocation, or use the
1003 option to specify that the argument \fIfile\fP contains the log message.
1007 option can be used to commit to a particular symbolic or numeric revision.
1008 For example, to bring all your files up to the
1009 revision ``3.0'' (including those that haven't changed), you might do:
1014 example% cvs commit -r3.0
1020 will only allow you to commit to a revision that is on the main trunk (a
1021 revision with a single dot).
1022 However, you can also commit to a branch revision (one that has an even
1023 number of dots) with the
1026 To create a branch revision, one typically use the
1032 .BR checkout " or " update
1033 can be used to base your sources on the newly created branch.
1034 From that point on, all
1036 changes made within these working sources will be automatically added
1037 to a branch revision, thereby not perturbing main-line development in any
1039 For example, if you had to create a patch to the 1.2 version of the
1040 product, even though the 2.0 version is already under development, you
1046 example% cvs rtag -b -rFCS1_2 FCS1_2_Patch product_module
1047 example% cvs checkout -rFCS1_2_Patch product_module
1048 example% cd product_module
1055 Say you have been working on some extremely experimental software, based on
1056 whatever revision you happened to checkout last week.
1057 If others in your group would like to work on this software with you, but
1058 without disturbing main-line development, you could commit your change to a
1060 Others can then checkout your experimental stuff and utilize the full
1063 conflict resolution.
1064 The scenario might look like:
1069 example% cvs tag -b EXPR1
1070 example% cvs update -rEXPR1
1077 Others would simply do
1078 .` "cvs checkout -rEXPR1 whatever_module"
1079 to work with you on the experimental change.
1081 \fBdiff\fP [\fB\-kl\fP] [\fIformat_options\fP] [[\fB\-r\fP \fIrev1\fP | \fB\-D\fP \fIdate1\fP | \fB\-j\fP \fIrev1:date1\fP] [\fB\-r\fP \fIrev2\fP | \fB\-D\fP \fIdate2\fP | \fB\-j\fP \fIrev2:date2\fP]] [\fIfiles.\|.\|.\fP]
1083 working directory, repository.
1088 You can compare your working files with revisions in the source
1089 repository, with the
1091 command. If you don't specify a particular revision, your files
1092 are compared with the revisions they were based on. You can also use
1097 to specify a particular revision to compare your files with. Finally,
1100 twice, you can see differences between two revisions in the
1102 You can also specify
1104 options to diff against a revision (on the head branch) in the past, and
1105 you can also specify
1107 options to diff against a revision relative to a branch tag in the past.
1114 options can be mixed together with at most two options ever specified.
1117 .` "cvs --help diff"
1118 for a list of supported
1119 .IR format_options .
1121 If you don't specify any files,
1123 will display differences for all those files in the current directory
1124 (and its subdirectories, unless you use the standard option
1127 differ from the corresponding revision in the source repository
1130 have changed), or that differ from the revision specified.
1132 \fBexport\fP [\-\fBf\|lNnQq\fP] \fB\-r\fP \fIrev\fP\||\|\fB\-D\fP \fIdate\fP [\fB\-d\fP \fIdir\fP] [\fB\-k\fP \fIkflag\fP] \fImodule\fP.\|.\|.
1139 This command is a variant of
1141 use it when you want a copy of the source for \fImodule\fP
1142 without the \fBcvs\fP administrative directories. For example, you
1145 to prepare source for shipment
1146 off-site. This command \fIrequires\fP that you specify a date or tag
1147 (with \fB\-D\fP or \fB\-r\fP), so that you can count on reproducing
1148 the source you ship to others.
1150 The only non-standard options are
1153 source into directory \fIdir\fP) and
1157 These have the same meanings as the same options in
1162 option is useful when
1166 keywords to be expanded such that an
1168 done at some other site will not lose the keyword revision information.
1169 Other \fIkflag\fPs may be used with
1171 and are described in
1174 \fBhistory\fP [\fB\-\fP\fIreport\fP] [\fB\-\fP\fIflags\fP] [\fB\-\fP\fIoptions args\fP] [\fIfiles\fP.\|.\|.]
1177 .` "$CVSROOT/CVSROOT/history"
1182 \fBcvs\fP keeps a history file that tracks each use of the
1183 \fBcheckout\fP, \fBcommit\fP, \fBrtag\fP, \fBupdate\fP, and \fBrelease\fP
1184 commands. You can use
1187 information in various formats.
1197 in ways that conflict with the
1200 COMMON COMMAND OPTIONS\c
1203 Several options (shown above as \fB\-\fP\fIreport\fP) control what
1204 kind of report is generated:
1207 Report on each time \fBcommit\fP was used (i.e., each time the
1208 repository was modified).
1210 \fB\ \ \ \ \ \ \-m\fP \fImodule\fP
1211 Report on a particular \fImodule\fP. (You can meaningfully use
1212 \fB\-m\fP more than once on the command line.)
1215 Report on checked-out modules.
1220 \fB\ \ \ \ \ \ \-x\fP \fItype\fP
1221 Extract a particular set of record types \fIX\fP from the \fBcvs\fP
1222 history. The types are indicated by single letters, which you may
1223 specify in combination.
1224 Certain commands have a single record type: \fBcheckout\fP (type `O'),
1225 \fBrelease\fP (type `F'), and \fBrtag\fP (type `T'). One of four
1226 record types may result from an \fBupdate\fP: `W', when the working copy
1227 of a file is deleted during update (because it was gone from the
1228 repository); `U', when a working file was copied from the
1229 repository; `G', when a merge was necessary and it succeeded; and 'C',
1230 when a merge was necessary but collisions were detected (requiring
1231 manual merging). Finally, one of three record types results from
1232 \fBcommit\fP: `M', when a file was modified; `A', when a file is first
1233 added; and `R', when a file is removed.
1236 Everything (all record types); equivalent to specifying
1239 \fB\ \ \ \ \ \ \-z\fP \fIzone\fP
1242 when outputting history records.
1245 stands for local time;
1246 numeric offsets stand for hours and minutes ahead of UTC.
1249 stands for 5 hours and 30 minutes ahead of (i.e. east of) UTC.
1252 The options shown as \fB\-\fP\fIflags\fP constrain the report without
1253 requiring option arguments:
1257 Show data for all users (the default is to show data only for the user
1262 Show last modification only.
1265 Show only the records for modifications done from the same working
1271 The options shown as \fB\-\fP\fIoptions args\fP constrain the report
1272 based on an argument:
1275 \fB\ \ \ \ \ \ \-b\fP \fIstr\fP
1276 Show data back to a record containing the string \fIstr\fP in either
1277 the module name, the file name, or the repository path.
1279 \fB\ \ \ \ \ \ \-D\fP \fIdate\fP
1280 Show data since \fIdate\fP.
1282 \fB\ \ \ \ \ \ \-p\fP \fIrepository\fP
1283 Show data for a particular source repository (you can specify several
1284 \fB\-p\fP options on the same command line).
1286 \fB\ \ \ \ \ \ \-r\fP \fIrev\fP
1287 Show records referring to revisions since the revision or tag
1288 named \fIrev\fP appears in individual RCS files.
1291 file is searched for the revision or tag.
1293 \fB\ \ \ \ \ \ \-t\fP \fItag\fP
1294 Show records since tag \fItag\fP was last added to the history file.
1295 This differs from the \fB-r\fP flag above in that it reads
1296 only the history file, not the
1298 files, and is much faster.
1300 \fB\ \ \ \ \ \ \-u\fP \fIname\fP
1301 Show records for user \fIname\fP.
1304 \fBimport\fP [\fB\-\fP\fIoptions\fP] \fIrepository vendortag releasetag\fP.\|.\|.
1306 Repository, source distribution directory.
1313 to incorporate an entire source
1314 distribution from an outside source (e.g., a source vendor) into your
1315 source repository directory. You can use this command both for
1316 initial creation of a repository, and for wholesale updates to the
1317 module form the outside source.
1319 The \fIrepository\fP argument gives a directory name (or a path to a
1320 directory) under the CVS root directory for repositories; if the
1321 directory did not exist, \fBimport\fP creates it.
1323 When you use \fBimport\fP for updates to source that has been modified in your
1324 source repository (since a prior \fBimport\fP), it
1325 will notify you of any files that conflict in the two branches of
1327 .` "cvs checkout -j"
1328 to reconcile the differences, as \fBimport\fP instructs you to do.
1330 By default, certain file names are ignored during
1332 names associated with
1334 administration, or with other common source control systems; common
1335 names for patch files, object files, archive files, and editor backup
1336 files; and other names that are usually artifacts of assorted utilities.
1337 For an up to date list of ignored file names, see the Cederqvist manual (as
1338 described in the SEE ALSO section of this manpage).
1340 The outside source is saved in a first-level
1343 Updates are leaves of this
1344 branch; for example, files from the first imported collection of
1345 source will be revision
1347 then files from the first
1348 imported update will be revision
1352 At least three arguments are required. \fIrepository\fP is needed to
1353 identify the collection of source. \fIvendortag\fP is a tag for the
1354 entire branch (e.g., for
1356 You must also specify at
1357 least one \fIreleasetag\fP to identify the files at the leaves created
1358 each time you execute
1363 command options is available: \fB\-m\fP
1364 \fImessage\fP. If you do not specify a logging message with
1365 \fB\-m\fP, your editor is invoked (as with \fBcommit\fP) to allow you
1368 There are three additional special options.
1372 to specify that each file's time of last modification should be used
1373 for the checkin date and time.
1376 .` "\-b \fIbranch\fP"
1377 to specify a first-level branch other
1383 to specify file names that should be
1384 ignored during \fBimport\fP. You can use this option repeatedly.
1385 To avoid ignoring any files at all (even those ignored by default),
1389 \fBlog\fP [\fB\-l\fP] \fIrlog-options [files\fP\|.\|.\|.]
1391 repository, working directory.
1399 Display log information for \fIfiles\fP.
1400 Among the more useful options are \fB\-h\fP
1401 to display only the header (including tag definitions, but omitting
1402 most of the full log); \fB\-r\fP to select logs on particular
1403 revisions or ranges of revisions; and \fB\-d\fP to select particular
1404 dates or date ranges. See
1406 for full explanations.
1407 This command is recursive by default, unless the
1409 option is specified.
1411 \fBrdiff\fP [\fB\-\fP\fIflags\fP] [\fB\-V\fP \fIvn\fP] [\fB\-r\fP \fIt\fP|\fB\-D\fP \fId\fP [\fB\-r\fP \fIt2\fP|\fB\-D\fP \fId2\fP]] \fImodules\|.\|.\|.\fP
1421 Builds a Larry Wall format
1423 file between two releases, that can be fed directly into the
1425 program to bring an old release up-to-date with the new release.
1426 (This is one of the few \fBcvs\fP commands that operates directly from
1427 the repository, and doesn't require a prior
1429 The diff output is sent to the standard output device.
1430 You can specify (using the standard \fB\-r\fP and \fB\-D\fP options)
1431 any combination of one or two revisions or dates.
1432 If only one revision or date is specified, the
1433 patch file reflects differences between that revision or date and the
1434 current ``head'' revisions in the
1438 Note that if the software release affected
1439 is contained in more than one directory, then it may be necessary to
1444 command when patching the old sources, so that
1446 is able to find the files that are located in other directories.
1448 The standard option \fIflags\fP \fB\-f\fP, and \fB\-l\fP
1449 are available with this command. There are also several
1450 special option flags:
1454 option, no patch output is produced.
1455 Instead, a summary of the changed or added files between the two
1456 releases is sent to the standard output device.
1457 This is useful for finding out, for example, which files have changed
1458 between two dates or revisions.
1462 option, a diff of the top two revisions is sent to the standard output device.
1463 This is most useful for seeing what the last change to a file was.
1467 option, the patch output uses the newer ``unidiff'' format for context
1472 to explicitly specify the
1474 form of context diffs
1475 (which is the default), if you like.
1477 \fBrelease\fP [\fB\-dQq\fP] \fImodules\fP\|.\|.\|.
1482 Working directory, history log.
1484 This command is meant to safely cancel the effect of
1488 doesn't lock files, it isn't strictly necessary to use this command.
1489 You can always simply delete your working directory, if you
1490 like; but you risk losing changes you may have forgotten, and you
1491 leave no trace in the
1493 history file that you've abandoned your checkout.
1497 to avoid these problems. This command
1498 checks that no un-committed changes are present; that you are
1499 executing it from immediately above, or inside, a \fBcvs\fP working
1500 directory; and that the repository recorded for your files is the same
1501 as the repository defined in the module database.
1503 If all these conditions are true,
1506 record of its execution (attesting to your intentionally abandoning
1507 your checkout) in the
1511 You can use the \fB\-d\fP flag to request that your working copies of
1512 the source files be deleted if the \fBrelease\fP succeeds.
1514 \fBremove\fP [\fB\-lR\fP] [\fIfiles\|.\|.\|.\fP]
1524 Use this command to declare that you wish to remove \fIfiles\fP from
1525 the source repository. Like most
1529 works on files in your working
1530 directory, not directly on the repository. As a safeguard, it also
1531 requires that you first erase the specified files from your working
1534 The files are not actually removed until you apply your changes to the
1537 at that point, the corresponding
1539 files in the source repository are
1543 directory (also within the source repository).
1545 This command is recursive by default, scheduling all physically removed
1546 files that it finds for removal by the next
1550 option to avoid this recursion, or just specify that actual files that you
1551 wish remove to consider.
1553 \fBrtag\fP [\fB\-f\|alnRQq\fP] [\fB\-b\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP | \fB\-D\fP \fIdate\fP] \fIsymbolic_tag\fP \fImodules\|.\|.\|.\fP
1563 You can use this command to assign symbolic tags to particular,
1564 explicitly specified source versions in the repository.
1566 works directly on the repository contents (and requires no
1571 instead, to base the selection of
1572 versions to tag on the contents of your working directory.
1574 In general, tags (often the symbolic names of software distributions)
1575 should not be removed, but the
1577 option is available as a means to remove completely obsolete symbolic names
1578 if necessary (as might be the case for an Alpha release, say).
1581 will not move a tag that already exists. With the \fB\-F\fP option,
1584 will re-locate any instance of \fIsymbolic_tag\fP that already exists
1585 on that file to the new repository versions. Without the \fB\-F\fP
1586 option, attempting to use
1588 to apply a tag that already exists on that file will produce an error
1591 The \fB-b\fP option makes the tag a ``branch'' tag, allowing
1592 concurrent, isolated development.
1593 This is most useful for creating a patch to a previously released software
1596 You can use the standard \fB\-r\fP and \fB\-D\fP options to tag only those
1597 files that already contain a certain tag. This method would be used
1598 to rename a tag: tag only the files identified by the old tag, then delete the
1599 old tag, leaving the new tag on exactly the same files as the old tag.
1602 executes recursively by default, tagging all subdirectories of
1603 \fImodules\fP you specify in the argument. You can restrict its
1604 operation to top-level directories with the standard \fB\-l\fP option;
1605 or you can explicitly request recursion with \fB\-R\fP.
1607 The modules database can specify a program to execute whenever a tag
1608 is specified; a typical use is to send electronic mail to a group of
1609 interested parties. If you want to bypass that program, use the
1610 standard \fB\-n\fP option.
1618 for removed files that contain the specified tag.
1619 The tag is removed from these files, which makes it convenient to re-use a
1620 symbolic tag as development continues (and files get removed from the
1621 up-coming distribution).
1623 \fBstatus\fP [\fB\-lRqQ\fP] [\fB\-v\fP] [\fIfiles\fP\|.\|.\|.]
1625 working directory, repository.
1630 Display a brief report on the current status of \fIfiles\fP with
1631 respect to the source repository, including any ``sticky'' tags,
1632 dates, or \fB\-k\fP options. (``Sticky'' options will restrict how
1634 operates until you reset them; see the
1636 .` "cvs update \-A\|.\|.\|.".)
1638 You can also use this command to anticipate the potential impact of a
1640 on your working source directory. If you do
1641 not specify any \fIfiles\fP explicitly, reports are shown for all
1642 files that \fBcvs\fP has placed in your working directory. You can
1643 limit the scope of this search to the current directory itself (not
1644 its subdirectories) with the standard \fB\-l\fP option flag; or you
1645 can explicitly request recursive status reports with the \fB\-R\fP
1650 option causes the symbolic tags for the
1652 file to be displayed as well.
1654 \fBtag\fP [\fB\-lQqR\fP] [\fB\-F\fP] [\fB\-b\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP | \fB\-D\fP \fIdate\fP] [\fB\-f\fP] \fIsymbolic_tag\fP [\fIfiles\fP\|.\|.\|.\|]
1656 working directory, repository.
1664 Use this command to assign symbolic tags to the nearest repository
1665 versions to your working sources. The tags are applied immediately to
1666 the repository, as with \fBrtag\fP.
1668 One potentially surprising aspect of the fact that \fBcvs tag\fP
1669 operates on the repository is that you are tagging the checked-in
1670 revisions, which may differ from locally modified files in your working
1671 directory. If you want to avoid doing this by mistake, specify the
1672 \fB-c\fP option to \fBcvs tag\fP. If there are any locally modified files, CVS
1673 will abort with an error before it tags any files.
1675 One use for tags is to record a ``snapshot'' of the current sources
1676 when the software freeze date of a project arrives. As bugs are fixed
1677 after the freeze date, only those changed sources that are to be part
1678 of the release need be re-tagged.
1680 The symbolic tags are meant to permanently record which revisions of which
1681 files were used in creating a software distribution.
1687 commands allow you to extract an exact copy of a tagged release at any time in
1688 the future, regardless of whether files have been changed, added, or removed
1689 since the release was tagged.
1691 You can use the standard \fB\-r\fP and \fB\-D\fP options to tag only those
1692 files that already contain a certain tag. This method would be used
1693 to rename a tag: tag only the files identified by the old tag, then delete the
1694 old tag, leaving the new tag on exactly the same files as the old tag.
1696 Specifying the \fB\-f\fP flag in addition to the \fB\-r\fP or \fB\-D\fP
1697 flags will tag those files named on the command line even if they do not
1698 contain the old tag or did not exist on the specified date.
1700 By default (without a \fB\-r\fP or \fB\-D\fP flag)
1701 the versions to be tagged are supplied
1702 implicitly by the \fBcvs\fP records of your working files' history
1703 rather than applied explicitly.
1706 .` "cvs tag \-d \fIsymbolic_tag\fP\|.\|.\|.",
1708 symbolic tag you specify is
1710 instead of being added. \fIWarning\fP: Be very certain of your ground
1711 before you delete a tag; doing this effectively discards some
1712 historical information, which may later turn out to have been valuable.
1715 will not move a tag that already exists. With the \fB\-F\fP option,
1718 will re-locate any instance of \fIsymbolic_tag\fP that already exists
1719 on that file to the new repository versions. Without the \fB\-F\fP
1720 option, attempting to use
1722 to apply a tag that already exists on that file will produce an error
1725 The \fB-b\fP option makes the tag a ``branch'' tag, allowing
1726 concurrent, isolated development.
1727 This is most useful for creating a patch to a previously released software
1732 executes recursively through subdirectories; you can prevent this by
1733 using the standard \fB\-l\fP option, or specify the recursion
1734 explicitly by using \fB\-R\fP.
1736 \fBupdate\fP [\fB\-ACdf\|lPpQqR\fP] [\fB\-d\fP] [\fB\-r\fP \fItag\fP|\fB\-D\fP \fIdate\fP] \fIfiles\|.\|.\|.\fP
1738 repository, working directory.
1745 to create your private copy of source from the common repository,
1746 other developers will continue changing the central source. From time
1747 to time, when it is convenient in your development process, you can
1751 from within your working directory to reconcile your work with any
1752 revisions applied to the source repository since your last
1758 keeps you informed of its progress by printing a line for each file,
1759 prefaced with one of the characters
1761 to indicate the status of the file:
1764 The file was brought \fIup to date\fP with respect to the repository.
1765 This is done for any file that exists in the repository but not in
1766 your source, and for files that you haven't changed but are not the most
1767 recent versions available in the repository.
1770 Like \fBU\fP, but the CVS server sends a patch instead of an entire file.
1771 This accomplishes the same thing as \fBU\fP using less bandwidth.
1774 The file has been \fIadded\fP to your private copy of the sources, and
1775 will be added to the
1776 source repository when you run
1779 This is a reminder to you that the file needs to be committed.
1782 The file has been \fIremoved\fP from your private copy of the sources, and
1783 will be removed from the
1784 source repository when you run
1787 This is a reminder to you that the file needs to be committed.
1790 The file is \fImodified\fP in your working directory.
1792 can indicate one of two states for a file you're working on: either
1793 there were no modifications to the same file in the repository, so
1794 that your file remains as you last saw it; or there were modifications
1795 in the repository as well as in your copy, but they were
1796 \fImerged\fP successfully, without conflict, in your working
1800 A \fIconflict\fP was detected while trying to merge your changes to
1801 \fIfile\fP with changes from the source repository. \fIfile\fP (the
1802 copy in your working directory) is now the result of merging
1803 the two versions; an unmodified copy of your file is also
1804 in your working directory, with the name `\fB.#\fP\fIfile\fP\fB.\fP\fIversion\fP',
1808 revision that your modified file started from.
1809 (Note that some systems automatically purge files that begin with
1812 if they have not been accessed for a few days.
1813 If you intend to keep a copy of your original file, it is a very good
1817 \fIfile\fP is in your working directory, but does not correspond to
1818 anything in the source repository, and is not in the list of files
1819 for \fBcvs\fP to ignore (see the description of the \fB\-I\fP option).
1825 option to reset any sticky tags, dates, or
1827 options. (If you get a working copy of a file by using one of the
1828 \fB\-r\fP, \fB\-D\fP, or \fB\-k\fP options, \fBcvs\fP remembers the
1829 corresponding tag, date, or \fIkflag\fP and continues using it on
1830 future updates; use the \fB\-A\fP option to make \fBcvs\fP forget these
1831 specifications, and retrieve the ``head'' version of the file).
1833 The \fB\-j\fP\fIbranch\fP option
1834 merges the changes made between the
1835 resulting revision and the revision that it is based on (e.g., if
1836 the tag refers to a branch,
1838 will merge all changes made in
1839 that branch into your working file).
1841 With two \fB-j\fP options,
1843 will merge in the changes between the two respective revisions.
1844 This can be used to ``remove'' a certain delta from your working file.
1845 E.g., If the file foo.c is based on
1846 revision 1.6 and I want to remove the changes made between 1.3 and
1852 example% cvs update -j1.5 -j1.3 foo.c # note the order...
1857 In addition, each \fB-j\fP option can contain on optional date
1858 specification which, when used with branches, can limit the chosen
1859 revision to one within a specific date.
1860 An optional date is specified by adding a colon (:) to the tag.
1865 -jSymbolic_Tag:Date_Specifier
1872 option to create any directories that exist in the repository if they're
1873 missing from the working directory. (Normally, update acts only on
1874 directories and files that were already enrolled in your
1875 working directory.) This is useful for updating directories
1876 that were created in the repository since the initial
1877 \fBcheckout\fP; but it has an unfortunate side effect. If you
1878 deliberately avoided certain directories in the repository when you
1879 created your working directory (either through use of a module name or by
1880 listing explicitly the files and directories you wanted on the
1881 command line), then updating with
1883 will create those directories, which may not be what you want.
1885 Use \fB\-I\fP \fIname\fP to ignore files whose names match \fIname\fP
1886 (in your working directory) during the update. You can specify
1887 \fB\-I\fP more than once on the command line to specify several files
1888 to ignore. By default,
1889 \fBupdate\fP ignores files whose names match certain patterns; for
1890 an up to date list of ignored file names, see the Cederqvist manual (as
1891 described in the SEE ALSO section of this manpage).
1895 to avoid ignoring any files at all.
1899 option to overwrite locally modified files with clean copies from
1900 the repository (the modified file is saved in
1901 `\fB.#\fP\fIfile\fP\fB.\fP\fIrevision\fP', however).
1903 The standard \fBcvs\fP command options \fB\-f\fP, \fB\-k\fP,
1904 \fB\-l\fP, \fB\-P\fP, \fB\-p\fP, and \fB\-r\fP
1905 are also available with \fBupdate\fP.
1908 For more detailed information on
1910 supporting files, see
1914 Files in home directories:
1919 initialization file. Lines in this file can be used to specify default
1922 command. For example the line
1926 is always passed the
1928 option in addition to any other options passed on the command line.
1931 Specifies wrappers to be used in addition to those specified in the
1932 CVSROOT/cvswrappers file in the repository.
1935 Files in working directories:
1938 A directory of \fBcvs\fP administrative files.
1943 List and status of files in your working directory.
1950 Flag: do not add more entries on
1954 Pathname to the repository (
1956 ) location at the time of checkout. This file is used instead
1959 environment variable if the environment variable is not
1960 set. A warning message will be issued when the contents of this
1963 environment variable differ. The file may be over-ridden by the
1965 .SM CVS_IGNORE_REMOTE_ROOT
1966 environment variable.
1969 Pathname to the corresponding directory in the source repository.
1972 Contains the per-directory ``sticky'' tag or date information.
1973 This file is created/updated when you specify
1981 commands, and no files are specified.
1984 Name of program to run on
1988 Name of program to run on
1992 Files in source repositories:
1995 Directory of global administrative files for repository.
1997 CVSROOT/commitinfo,v
1998 Records programs for filtering
2002 CVSROOT/cvswrappers,v
2005 wrapper commands to be used when checking files into and out of the
2006 repository. Wrappers allow the file or directory to be processed
2007 on the way in and out of CVS. The intended uses are many, one
2008 possible use would be to reformat a C file before the file is checked
2009 in, so all of the code in the repository looks the same.
2012 Records programs for editing/validating
2017 Log file of \fBcvs\fP transactions.
2020 Records programs for piping
2025 Definitions for modules in this repository.
2028 Records pathnames to templates used during a
2033 Records programs for validating/logging
2040 Directory for removed source files.
2043 A lock directory created by
2045 when doing sensitive changes to the
2049 Temporary lock file for repository.
2059 Should contain the full pathname to the root of the
2061 source repository (where the
2063 files are kept). This information must be available to \fBcvs\fP for
2064 most commands to execute; if
2066 is not set, or if you wish to override it for one invocation, you can
2067 supply it on the command line:
2068 .` "cvs \-d \fIcvsroot cvs_command\fP\|.\|.\|."
2069 You may not need to set
2071 if your \fBcvs\fP binary has the right path compiled in.
2078 will try hard to make the files in your working directory read-only.
2079 When this is not set, the default behavior is to permit modification
2080 of your working files.
2085 option is assumed, and
2087 operates in read-only repository mode.
2090 Specifies the full pathname where to find
2096 (CVS 1.9 and older).
2099 Specifies the program to use for recording log messages during
2105 environment variables are tried (in that order).
2106 If neither is set, a system-dependent default editor (e.g.,
2111 If this variable is set then
2113 will use this port in
2115 rather than the default port (cvspserver 2401).
2117 .SM CVS_IGNORE_REMOTE_ROOT
2118 If this variable is set then
2120 will ignore all references to remote repositories in the CVS/Root file.
2123 Specifies a set of default options for
2125 These options are interpreted before the startup file (\fI~/.cvsrc\fP) is read
2126 and can be overridden by explicit command line parameters.
2130 uses the contents of this variable to determine the name of the
2131 remote shell command to use when starting a
2133 server. If this variable is not set then
2139 uses the contents of this variable to determine the name of the
2141 server command. If this variable is not set then
2146 This variable is used by the
2148 script to determine the name of the wrapper file, in addition to the
2149 wrappers defaults contained in the repository
2150 .SM (CVSROOT/cvswrappers)
2151 and the user's home directory (~/.cvswrappers).
2155 Original author of the
2157 shell script version posted to
2158 .B comp.sources.unix
2159 in the volume6 release of December, 1986.
2160 Credited with much of the
2162 conflict resolution algorithms.
2165 Coder and designer of the
2167 program itself in April, 1989, based on the original work done by Dick.
2170 Helped Brian with the design of the
2172 module and vendor branch support and author of the
2174 shell script (the ancestor of
2177 And many others too numerous to mention here.
2179 The most comprehensive manual for CVS is
2180 Version Management with CVS by Per Cederqvist et al. Depending on
2181 your system, you may be able to get it with the
2183 command or it may be available as cvs.ps (postscript), cvs.texinfo
2184 (texinfo source), or cvs.html.
2186 For CVS updates, more information on documentation, software related
2187 to CVS, development of CVS, and more, see:
2189 .B http://cvshome.org
2190 .B http://www.loria.fr/~molli/cvs-index.html