(More practical use information coming.) Available on all UMBC servers, including Linux.gl.umbc.edu. cvs - Concurrent Versions System From man cvs and cvs help CVS is a version control system, which allows you to keep old versions of files (usually source code), keep a log of who, when, and why changes occurred, etc., like RCS or SCCS. Unlike the simpler systems, CVS does not just operate on one file at a time or one directory at a time, but operates on hierarchical collections of directories consisting of version controlled files. CVS helps to manage releases and to control the concurrent editing of source files among multiple authors. CVS allows triggers to enable log, control, various operations and works well over a wide area network. CVS keeps a single copy of the master sources. This copy is called the source "repository"; it contains all the information to permit extracting previous software releases at any time based on either a symbolic revision tag, or a date in the past. Essential Commands CVS provides a rich variety of commands, each of which often has a wealth of options, to satisfy the many needs of source management in distributed environments. However, you don’t have to master every detail to do useful work with CVS; in fact, five commands are sufficient to use (and contribute to) the source repository. cvs checkout module ... A necessary preliminary for most CVS work: creates your private copy of the source for modules (named collections of source; you can also use a path relative to the source repository here). You can work with this copy without interfering with others’ work. At least one subdirectory level is always created. cvs update Execute this command from within your private source directory when you wish to update your copies of source files from changes that other developers have made to the source in the repository. cvs add file ... Use this command to enroll new files in CVS records of your working directory. The files will be added to the repository the next time you run cvs commit. Note: You should use the cvs import command to bootstrap new sources into the source repository. cvs add is only used for new files to an already checked-out module. cvs remove file ... Use this command (after erasing any files listed) to declare that you wish to eliminate files from the repository. The removal does not affect others until you run cvs commit. cvs commit file Use this command when you wish to "publish" your changes to other developers, by incorporating them in the source repository. Options The CVS command line can include CVS options, which apply to the overall CVS program; a CVS command, which specifies a particular action on the source repository; and command options and command arguments to fully specify what the CVS command will do. Warning: you must be careful of precisely where you place options relative to the CVS commands. The same option can mean different things depending on whether it is in the CVS options position (to the left of a CVS command) or in the CVS options position (to the right of a CVS command). There are only two situations where you may omit CVS command: cvs -H or cvs --help These elicits a list of available commands, and cvs -v or cvs --version displays version information on CVS itself. CVS Options As of release 1.6, CVS supports GNU style long options as well as short options. Only a few long options are currently supported, these are listed in brackets after the short options whose functions they duplicate. -a Authenticate all communication between the client and the server. Only has an effect on the cvs client. As of this writing, this is only implemented when using a GSSAPI connection (see node 'GSSAPI authenticated' in the CVS manual). Authentication prevents certain sorts of attacks involving hijacking the active tcp connection. Enabling authentication does not enable encryption. -b bindir In cvs 1.9.18 and older, this specified that rcs programs are in the bindir directory. Current versions of cvs do not run rcs programs; for compatibility this option is accepted, but it does nothing. -T tempdir Use tempdir as the directory where temporary files are located. The cvs client and server store temporary files in a temporary direc‐ tory. The path to this temporary directory is set via, in order of precedence: · The argument to the global -T option. · The value set for TmpDir in the config file (server only - see node 'config' in the CVS manual). · The contents of the $TMPDIR environment variable (%TMPDIR% on Win‐ dows - see node 'Environment variables' in the CVS manual). · /tmp Temporary directories should always be specified as an absolute pathname. When running a CVS client, -T affects only the local process; specifying -T for the client has no effect on the server and vice versa. -d cvs_root_directory Use cvs_root_directory as the root directory pathname of the reposi‐ tory. Overrides the setting of the $CVSROOT environment variable. See node 'Repository' in the CVS manual. -e editor Use editor to enter revision log information. Overrides the setting of the $CVSEDITOR and $EDITOR environment variables. For more infor‐ mation, see node 'Committing your changes' in the CVS manual. -f Do not read the ~/.cvsrc file. This option is most often used because of the non-orthogonality of the cvs option set. For example, the cvs log option -N (turn off display of tag names) does not have a corresponding option to turn the display on. So if you have -N in the ~/.cvsrc entry for log, you may need to use -f to show the tag names. -g Forges group-writable permissions on files in the working copy. This option is typically used when you have multiple users sharing a sin‐ gle checked out source tree, allowing them to operate their shells with a less dangerous umask at the expense of cvs security. To use this feature, create a directory to hold the checked-out source tree, set it to a private group, and set up the directory such that files created under it inherit the gid of the directory. On BSD systems, this occurs automatically. On SYSV systems and GNU/Linux, the sgid bit must be set on the directory for this. The users who are to share the checked out tree must be placed in that group which owns the directory. Note that the sharing of a single checked-out source tree is very different from giving several users access to a common cvs reposi‐ tory. Access to a common cvs repository already maintains shared group-write permissions and does not require this option. Due to the security implications, setting this option globally in your .cvsrc file is strongly discouraged; if you must, ensure all source checkouts are "firewalled" within a private group or a private mode 0700 directory. -R Turns on read-only repository mode. This allows one to check out from a read-only repository, such as within an anoncvs server, or from a cd-rom repository. Same effect as if the CVSREADONLYFS environment variable is set. Using -R can also considerably speed up checkouts over NFS. -n Do not change any files. Attempt to execute the cvs_command, but only to issue reports; do not remove, update, or merge any existing files, or create any new files. Note that cvs will not necessarily produce exactly the same output as without -n. In some cases the output will be the same, but in other cases cvs will skip some of the processing that would have been required to produce the exact same output. -Q Cause the command to be really quiet; the command will only generate output for serious problems. -q Cause the command to be somewhat quiet; informational messages, such as reports of recursion through subdirectories, are suppressed. -r Make new working files read-only. Same effect as if the $CVSREAD environment variable is set (see node 'Environment variables' in the CVS manual). The default is to make working files writable, unless watches are on (see node 'Watches' in the CVS manual). -s variable=value Set a user variable (see node 'Variables' in the CVS manual). -t Trace program execution; display messages showing the steps of cvs activity. Particularly useful with -n to explore the potential impact of an unfamiliar command. -w Make new working files read-write. Overrides the setting of the $CVSREAD environment variable. Files are created read-write by default, unless $CVSREAD is set or -r is given. -x Encrypt all communication between the client and the server. Only has an effect on the cvs client. As of this writing, this is only implemented when using a GSSAPI connection (see node 'GSSAPI authen‐ ticated' in the CVS manual) or a Kerberos connection (see node 'Ker‐ beros authenticated' in the CVS manual). Enabling encryption implies that message traffic is also authenticated. Encryption support is not available by default; it must be enabled using a special config‐ ure option, --enable-encryption, when you build cvs. -z level Request compression level for network traffic. cvs interprets level identically to the gzip program. Valid levels are 1 (high speed, low compression) to 9 (low speed, high compression), or 0 to disable com‐ pression (the default). Data sent to the server will be compressed at the requested level and the client will request the server use the same compression level for data returned. The server will use the closest level allowed by the server administrator to compress returned data. This option only has an effect when passed to the cvs client. There is more information: You can read from the man page by typing: man cvs Then type cvs --help Usage: cvs [cvs-options] command [command-options-and-arguments] where cvs-options are -4, -6,-q, -n, etc. (specify --help-options for a list of options) where command is add, admin, etc. (specify --help-commands for a list of commands or --help-synonyms for a list of command synonyms) where command-options-and-arguments depend on the specific command (specify -H followed by a command name for command-specific help) Specify --help to receive this message The Concurrent Versions System (CVS) is a tool for version control. For CVS updates and additional information, see the CVS home page at http://cvs.nongnu.org/