CVS Concurrent Versions System


(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/