cvs-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Cvs-cvs] Changes to ccvs/doc/cvs.1 [signed-commits]


From: Derek Robert Price
Subject: [Cvs-cvs] Changes to ccvs/doc/cvs.1 [signed-commits]
Date: Tue, 11 Oct 2005 23:00:45 -0400

Index: ccvs/doc/cvs.1
diff -u /dev/null ccvs/doc/cvs.1:1.35.2.1
--- /dev/null   Wed Oct 12 03:00:45 2005
+++ ccvs/doc/cvs.1      Wed Oct 12 03:00:40 2005
@@ -0,0 +1,4010 @@
+.\" This is the man page for CVS.  It is auto-generated from the
+.\" cvs.man.header, cvs.texinfo, & cvs.man.footer files.  Please make changes
+.\" there.  A full copyright & license notice may also be found in cvs.texinfo.
+.\"
+.\" Man page autogeneration, including this header file, is
+.\" Copyright 2004-2005 The Free Software Foundation, Inc.,
+.\"                     Derek R. Price, & Ximbiot <http://ximbiot.com>.
+.\"
+.\" This documentation is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 2, or (at your option)
+.\" any later version.
+.\"
+.\" This documentation is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this documentation; if not, write to the Free Software
+.\" Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+.de Id
+.ds Rv \\$3
+.ds Dt \\$4
+..
+.TH CVS 1 "\*(Dt"
+.\" Full space in nroff; half space in troff
+.de SP
+.if n .sp
+.if t .sp .5
+..
+.\" quoted command
+.de `
+.RB ` "\|\\$1\|" '\\$2
+..
+.SH "NAME"
+cvs \- Concurrent Versions System
+.SH "SYNOPSIS"
+.TP
+\fBcvs\fP [ \fIcvs_options\fP ]
+.I cvs_command
+[
+.I command_options
+] [
+.I command_args
+]
+.SH "NOTE"
+.IX "revision control system" "\fLcvs\fR"
+.IX  cvs  ""  "\fLcvs\fP \- concurrent versions system"
+.IX  "concurrent versions system \- \fLcvs\fP"
+.IX  "release control system"  "cvs command"  ""  "\fLcvs\fP \- concurrent 
versions system"
+.IX  "source control system"  "cvs command"  ""  "\fLcvs\fP \- concurrent 
versions system"
+.IX  revisions  "cvs command"  ""  "\fLcvs\fP \- source control"
+This manpage is a summary of some of the features of
+\fBcvs\fP.  It is auto-generated from an appendix of the CVS manual.
+For more in-depth documentation, please consult the
+Cederqvist manual (via the
+.B info CVS
+command or otherwise,
+as described in the SEE ALSO section of this manpage).  Cross-references
+in this man page refer to nodes in the same.
+.SH "CVS commands"
+.SS "Guide to CVS commands"
+.SP
+This appendix describes the overall structure of
+\fBcvs\fR commands, and describes some commands in
+detail (others are described elsewhere; for a quick
+reference to \fBcvs\fR commands, see node `Invoking CVS\(aq in the CVS manual).
+.SP
+.SH "Structure"
+.SS "Overall structure of CVS commands"
+.IX "Structure"
+.IX "CVS command structure"
+.IX "Command structure"
+.IX "Format of CVS commands"
+.SP
+The overall format of all \fBcvs\fR commands is:
+.SP
+.PD 0
+.SP
+.IP "" 2
+cvs [ cvs_options ] cvs_command [ command_options ] [ command_args ]
+
+.PD
+.IP "" 0
+.SP
+.IP "" 0
+\fBcvs\fR
+.IP "" 2
+The name of the \fBcvs\fR program.
+.SP
+.IP "" 0
+\fBcvs_options\fR
+.IP "" 2
+Some options that affect all sub-commands of \fBcvs\fR.  These are
+described below.
+.SP
+.IP "" 0
+\fBcvs_command\fR
+.IP "" 2
+One of several different sub-commands.  Some of the commands have
+aliases that can be used instead; those aliases are noted in the
+reference manual for that command.  There are only two situations
+where you may omit \fBcvs_command\fR: \fBcvs -H\fR elicits a
+list of available commands, and \fBcvs -v\fR displays version
+information on \fBcvs\fR itself.
+.SP
+.IP "" 0
+\fBcommand_options\fR
+.IP "" 2
+Options that are specific for the command.
+.SP
+.IP "" 0
+\fBcommand_args\fR
+.IP "" 2
+Arguments to the commands.
+.SP
+There is unfortunately some confusion between
+\fBcvs_options\fR and \fBcommand_options\fR.
+When given as a \fBcvs_option\fR, some options only
+affect some of the commands.  When given as a
+\fBcommand_option\fR it may have a different meaning, and
+be accepted by more commands.  In other words, do not
+take the above categorization too seriously.  Look at
+the documentation instead.
+.SP
+.SH "Exit status"
+.SS "CVS\(aqs exit status"
+.IX "Exit status, of CVS"
+.SP
+\fBcvs\fR can indicate to the calling environment whether it
+succeeded or failed by setting its \fIexit status\fR.
+The exact way of testing the exit status will vary from
+one operating system to another.  For example in a unix
+shell script the \fB$?\fR variable will be 0 if the
+last command returned a successful exit status, or
+greater than 0 if the exit status indicated failure.
+.SP
+If \fBcvs\fR is successful, it returns a successful status;
+if there is an error, it prints an error message and
+returns a failure status.  The one exception to this is
+the \fBcvs diff\fR command.  It will return a
+successful status if it found no differences, or a
+failure status if there were differences or if there
+was an error.  Because this behavior provides no good
+way to detect errors, in the future it is possible that
+\fBcvs diff\fR will be changed to behave like the
+other \fBcvs\fR commands.
+.SP
+.SH "~/.cvsrc"
+.SS "Default options and the ~/.cvsrc file"
+.IX "\&.cvsrc file"
+.IX "Option defaults"
+.SP
+There are some \fBcommand_options\fR that are used so
+often that you might have set up an alias or some other
+means to make sure you always specify that option.  One
+example (the one that drove the implementation of the
+\fB.cvsrc\fR support, actually) is that many people find the
+default output of the \fBdiff\fR command to be very
+hard to read, and that either context diffs or unidiffs
+are much easier to understand.
+.SP
+The \fB~/.cvsrc\fR file is a way that you can add
+default options to \fBcvs_commands\fR within cvs,
+instead of relying on aliases or other shell scripts.
+.SP
+The format of the \fB~/.cvsrc\fR file is simple.  The
+file is searched for a line that begins with the same
+name as the \fBcvs_command\fR being executed.  If a
+match is found, then the remainder of the line is split
+up (at whitespace characters) into separate options and
+added to the command arguments \fIbefore\fR any
+options from the command line.
+.SP
+If a command has two names (e.g., \fBcheckout\fR and
+\fBco\fR), the official name, not necessarily the one
+used on the command line, will be used to match against
+the file.  So if this is the contents of the user\(aqs
+\fB~/.cvsrc\fR file:
+.SP
+.PD 0
+.SP
+.IP "" 2
+log -N
+.IP "" 2
+diff -uN
+.IP "" 2
+rdiff -u
+.IP "" 2
+update -Pd
+.IP "" 2
+checkout -P
+.IP "" 2
+release -d
+
+.PD
+.IP "" 0
+.SP
+the command \fBcvs checkout foo\fR would have the
+\fB-P\fR option added to the arguments, as well as
+\fBcvs co foo\fR.
+.SP
+With the example file above, the output from \fBcvs
+diff foobar\fR will be in unidiff format.  \fBcvs diff
+-c foobar\fR will provide context diffs, as usual.
+Getting "old" format diffs would be slightly more
+complicated, because \fBdiff\fR doesn\(aqt have an option
+to specify use of the "old" format, so you would need
+\fBcvs -f diff foobar\fR.
+.SP
+In place of the command name you can use \fBcvs\fR to
+specify global options (see node `Global options\(aq in the CVS manual).  For
+example the following line in \fB.cvsrc\fR
+.SP
+.PD 0
+.SP
+.IP "" 2
+cvs -z6
+
+.PD
+.IP "" 0
+.SP
+causes \fBcvs\fR to use compression level 6.
+.SP
+.SH "Global options"
+.IX "Options, global"
+.IX "Global options"
+.IX "Left-hand options"
+.SP
+The available \fBcvs_options\fR (that are given to the
+left of \fBcvs_command\fR) are:
+.SP
+.IP "" 0
+\fB--allow-root=\fIrootdir\fB\fR
+.IP "" 2
+May be invoked multiple times to specify one legal \fBcvsroot\fR directory with
+each invocation.  Also causes CVS to preparse the configuration file for each
+specified root, which can be useful when configuring write proxies,  See
+see node `Password authentication server\(aq in the CVS manual & see node 
`Write proxies\(aq in the CVS manual.
+.SP
+.IX "Authentication, stream"
+.IX "Stream authentication"
+.IP "" 0
+\fB-a\fR
+.IP "" 2
+Authenticate all communication between the client and
+the server.  Only has an effect on the \fBcvs\fR client.
+As of this writing, this is only implemented when using
+a GSSAPI connection (see node `GSSAPI authenticated\(aq in the CVS manual).
+Authentication prevents certain sorts of attacks
+involving hijacking the active \fBtcp\fR connection.
+Enabling authentication does not enable encryption.
+.SP
+.IX "RCSBIN, overriding"
+.IX "Overriding RCSBIN"
+.IP "" 0
+\fB-b \fIbindir\fB\fR
+.IP "" 2
+In \fBcvs\fR 1.9.18 and older, this specified that
+\fBrcs\fR programs are in the \fIbindir\fR directory.
+Current versions of \fBcvs\fR do not run \fBrcs\fR
+programs; for compatibility this option is accepted,
+but it does nothing.
+.SP
+.IX "TMPDIR, environment variable"
+.IX "temporary file directory, set via command line"
+.IX "temporary file directory, set via environment variable"
+.IX "temporary file directory, set via config"
+.IX "temporary files, location of"
+.IP "" 0
+\fB-T \fItempdir\fB\fR
+.IP "" 2
+Use \fItempdir\fR as the directory where temporary files are
+located.
+.SP
+The \fBcvs\fR client and server store temporary files in a temporary directory.
+The path to this temporary directory is set via, in order of precedence:
+.SP
+.IP "\(bu" 4
+The argument to the global \fB-T\fR option.
+.SP
+.IP "\(bu" 4
+The value set for \fBTmpDir\fR in the config file (server only -
+see node `config\(aq in the CVS manual).
+.SP
+.IP "\(bu" 4
+The contents of the \fB$TMPDIR\fR environment variable (\fB%TMPDIR%\fR on
+Windows - see node `Environment variables\(aq in the CVS manual).
+.SP
+.IP "\(bu" 4
+/tmp
+.SP
+.SP
+Temporary directories should always be specified as an absolute pathname.
+When running a CVS client, \fB-T\fR affects only the local process;
+specifying \fB-T\fR for the client has no effect on the server and
+vice versa.
+.SP
+.IX "CVSROOT, overriding"
+.IX "Overriding CVSROOT"
+.IP "" 0
+\fB-d \fIcvs_root_directory\fB\fR
+.IP "" 2
+Use \fIcvs_root_directory\fR as the root directory
+pathname of the repository.  Overrides the setting of
+the \fB$CVSROOT\fR environment variable.  see node `Repository\(aq in the CVS 
manual.
+.SP
+.IX "EDITOR, overriding"
+.IX "Overriding EDITOR"
+.IP "" 0
+\fB-e \fIeditor\fB\fR
+.IP "" 2
+Use \fIeditor\fR to enter revision log information.  Overrides the
+setting of the \fB$CVSEDITOR\fR and \fB$EDITOR\fR
+environment variables.  For more information, see
+see node `Committing your changes\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-f\fR
+.IP "" 2
+Do not read the \fB~/.cvsrc\fR file.  This
+option is most often used because of the
+non-orthogonality of the \fBcvs\fR option set.  For
+example, the \fBcvs log\fR option \fB-N\fR (turn off
+display of tag names) does not have a corresponding
+option to turn the display on.  So if you have
+\fB-N\fR in the \fB~/.cvsrc\fR entry for \fBlog\fR,
+you may need to use \fB-f\fR to show the tag names.
+.SP
+.IP "" 0
+\fB-H\fR
+.IP "" 2
+.IP "" 0
+\fB--help\fR
+.IP "" 2
+Display usage information about the specified \fBcvs_command\fR
+(but do not actually execute the command).  If you don\(aqt specify
+a command name, \fBcvs -H\fR displays overall help for
+\fBcvs\fR, including a list of other help options.
+.SP
+.IX "Read-only repository mode"
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+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 \fBcd-rom\fR
+repository.
+.SP
+Same effect as if the \fBCVSREADONLYFS\fR environment
+variable is set. Using \fB-R\fR can also considerably
+speed up checkouts over NFS.
+.SP
+.IX "Read-only mode"
+.IP "" 0
+\fB-n\fR
+.IP "" 2
+Do not change any files.  Attempt to execute the
+\fBcvs_command\fR, but only to issue reports; do not remove,
+update, or merge any existing files, or create any new files.
+.SP
+Note that \fBcvs\fR will not necessarily produce exactly
+the same output as without \fB-n\fR.  In some cases
+the output will be the same, but in other cases
+\fBcvs\fR will skip some of the processing that would
+have been required to produce the exact same output.
+.SP
+.IP "" 0
+\fB-Q\fR
+.IP "" 2
+Cause the command to be really quiet; the command will only
+generate output for serious problems.
+.SP
+.IP "" 0
+\fB-q\fR
+.IP "" 2
+Cause the command to be somewhat quiet; informational messages,
+such as reports of recursion through subdirectories, are
+suppressed.
+.SP
+.IX "Read-only files, and -r"
+.IP "" 0
+\fB-r\fR
+.IP "" 2
+Make new working files read-only.  Same effect
+as if the \fB$CVSREAD\fR environment variable is set
+(see node `Environment variables\(aq in the CVS manual).  The default is to
+make working files writable, unless watches are on
+(see node `Watches\(aq in the CVS manual).
+.SP
+.IP "" 0
+\fB-s \fIvariable\fB=\fIvalue\fB\fR
+.IP "" 2
+Set a user variable (see node `Variables\(aq in the CVS manual).
+.SP
+.IX "Trace"
+.IP "" 0
+\fB-t\fR
+.IP "" 2
+Trace program execution; display messages showing the steps of
+\fBcvs\fR activity.  Particularly useful with \fB-n\fR to explore the
+potential impact of an unfamiliar command.
+.SP
+.IP "" 0
+\fB-v\fR
+.IP "" 2
+.IP "" 0
+\fB--version\fR
+.IP "" 2
+Display version and copyright information for \fBcvs\fR.
+.SP
+.IX "CVSREAD, overriding"
+.IX "Overriding CVSREAD"
+.IP "" 0
+\fB-w\fR
+.IP "" 2
+Make new working files read-write.  Overrides the
+setting of the \fB$CVSREAD\fR environment variable.
+Files are created read-write by default, unless \fB$CVSREAD\fR is
+set or \fB-r\fR is given.
+.SP
+.IP "" 0
+\fB-x\fR
+.IP "" 2
+.IX "Encryption"
+Encrypt all communication between the client and the
+server.  Only has an effect on the \fBcvs\fR client.  As
+of this writing, this is only implemented when using a
+GSSAPI connection (see node `GSSAPI authenticated\(aq in the CVS manual) or a
+Kerberos connection (see node `Kerberos authenticated\(aq 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 configure option, \fB--enable-encryption\fR,
+when you build \fBcvs\fR.
+.SP
+.IP "" 0
+\fB-z \fIlevel\fB\fR
+.IP "" 2
+.IX "Compression"
+.IX "Gzip"
+Request compression \fIlevel\fR for network traffic.
+\fBcvs\fR interprets \fIlevel\fR identically to the \fBgzip\fR program.
+Valid levels are 1 (high speed, low compression) to
+9 (low speed, high compression), or 0 to disable
+compression (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 \fBcvs\fR client.
+.SP
+.SH "Common options"
+.SS "Common command options"
+.IX "Common options"
+.IX "Right-hand options"
+.SP
+This section describes the \fBcommand_options\fR that
+are available across several \fBcvs\fR commands.  These
+options are always given to the right of
+\fBcvs_command\fR. Not all
+commands support all of these options; each option is
+only supported for commands where it makes sense.
+However, when a command has one of these options you
+can almost always count on the same behavior of the
+option as in other commands.  (Other command options,
+which are listed with the individual commands, may have
+different behavior from one \fBcvs\fR command to the other).
+.SP
+\fBNote: the \fBhistory\fB command is an exception; it supports
+many options that conflict even with these standard options.\fR
+.SP
+.IX "Dates"
+.IX "Time"
+.IX "Specifying dates"
+.IP "" 0
+\fB-D \fIdate_spec\fB\fR
+.IP "" 2
+Use the most recent revision no later than \fIdate_spec\fR.
+\fIdate_spec\fR is a single argument, a date description
+specifying a date in the past.
+.SP
+The specification is \fIsticky\fR when you use it to make a
+private copy of a source file; that is, when you get a working
+file using \fB-D\fR, \fBcvs\fR records the date you specified, so that
+further updates in the same directory will use the same date
+(for more information on sticky tags/dates, see node `Sticky tags\(aq in the 
CVS manual).
+.SP
+\fB-D\fR is available with the \fBannotate\fR, \fBcheckout\fR,
+\fBdiff\fR, \fBexport\fR, \fBhistory\fR, \fBls\fR,
+\fBrdiff\fR, \fBrls\fR, \fBrtag\fR, \fBtag\fR, and \fBupdate\fR commands.
+(The \fBhistory\fR command uses this option in a
+slightly different way; see node `history options\(aq in the CVS manual).
+.SP
+For a complete description of the date formats accepted by \fBcvs\fR,
+see node `Date input formats\(aq in the CVS manual.
+.SP
+Remember to quote the argument to the \fB-D\fR
+flag so that your shell doesn\(aqt interpret spaces as
+argument separators.  A command using the \fB-D\fR
+flag can look like this:
+.SP
+.PD 0
+.SP
+.IP "" 4
+$ cvs diff -D "1 hour ago" cvs.texinfo
+
+.PD
+.IP "" 2
+.SP
+.IX "Forcing a tag match"
+.IP "" 0
+\fB-f\fR
+.IP "" 2
+When you specify a particular date or tag to \fBcvs\fR commands, they
+normally ignore files that do not contain the tag (or did not
+exist prior to the date) that you specified.  Use the \fB-f\fR option
+if you want files retrieved even when there is no match for the
+tag or date.  (The most recent revision of the file
+will be used).
+.SP
+Note that even with \fB-f\fR, a tag that you specify
+must exist (that is, in some file, not necessary in
+every file).  This is so that \fBcvs\fR will continue to
+give an error if you mistype a tag name.
+.SP
+\fB-f\fR is available with these commands:
+\fBannotate\fR, \fBcheckout\fR, \fBexport\fR,
+\fBrdiff\fR, \fBrtag\fR, and \fBupdate\fR.
+.SP
+\fBWARNING:  The \fBcommit\fB and \fBremove\fB
+commands also have a
+\fB-f\fB option, but it has a different behavior for
+those commands.  See see node `commit options\(aq in the CVS manual, and
+see node `Removing files\(aq in the CVS manual.\fR
+.SP
+.IP "" 0
+\fB-k \fIkflag\fB\fR
+.IP "" 2
+Override the default processing of RCS keywords other than
+\fB-kb\fR.  see node `Keyword substitution\(aq in the CVS manual, for the 
meaning of
+\fIkflag\fR.  Used with the \fBcheckout\fR and \fBupdate\fR
+commands, your \fIkflag\fR specification is
+\fIsticky\fR; that is, when you use this option
+with a \fBcheckout\fR or \fBupdate\fR command,
+\fBcvs\fR associates your selected \fIkflag\fR with any files
+it operates on, and continues to use that \fIkflag\fR with future
+commands on the same files until you specify otherwise.
+.SP
+The \fB-k\fR option is available with the \fBadd\fR,
+\fBcheckout\fR, \fBdiff\fR, \fBexport\fR, \fBimport\fR,
+\fBrdiff\fR, and \fBupdate\fR commands.
+.SP
+\fBWARNING: Prior to CVS version 1.12.2, the \fB-k\fB flag
+overrode the \fB-kb\fB indication for a binary file.  This could
+sometimes corrupt binary files.  see node `Merging and keywords\(aq in the CVS 
manual, for
+more.\fR
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Local; run only in current working directory, rather than
+recursing through subdirectories.
+.SP
+Available with the following commands: \fBannotate\fR, \fBcheckout\fR,
+\fBcommit\fR, \fBdiff\fR, \fBedit\fR, \fBeditors\fR, \fBexport\fR,
+\fBlog\fR, \fBrdiff\fR, \fBremove\fR, \fBrtag\fR,
+\fBstatus\fR, \fBtag\fR, \fBunedit\fR, \fBupdate\fR, \fBwatch\fR,
+and \fBwatchers\fR.
+.SP
+.IX "Editor, avoiding invocation of"
+.IX "Avoiding editor invocation"
+.IP "" 0
+\fB-m \fImessage\fB\fR
+.IP "" 2
+Use \fImessage\fR as log information, instead of
+invoking an editor.
+.SP
+Available with the following commands: \fBadd\fR,
+\fBcommit\fR and \fBimport\fR.
+.SP
+.IP "" 0
+\fB-n\fR
+.IP "" 2
+Do not run any tag program.  (A program can be
+specified to run in the modules
+database (see node `modules\(aq in the CVS manual); this option bypasses it).
+.SP
+\fBNote: this is not the same as the \fBcvs -n\fB
+program option, which you can specify to the left of a cvs command!\fR
+.SP
+Available with the \fBcheckout\fR, \fBcommit\fR, \fBexport\fR,
+and \fBrtag\fR commands.
+.SP
+.IP "" 0
+\fB-P\fR
+.IP "" 2
+Prune empty directories.  See see node `Removing directories\(aq in the CVS 
manual.
+.SP
+.IP "" 0
+\fB-p\fR
+.IP "" 2
+Pipe the files retrieved from the repository to standard output,
+rather than writing them in the current directory.  Available
+with the \fBcheckout\fR and \fBupdate\fR commands.
+.SP
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+Process directories recursively.  This is the default for all \fBcvs\fR
+commands, with the exception of \fBls\fR & \fBrls\fR.
+.SP
+Available with the following commands: \fBannotate\fR, \fBcheckout\fR,
+\fBcommit\fR, \fBdiff\fR, \fBedit\fR, \fBeditors\fR, \fBexport\fR,
+\fBls\fR, \fBrdiff\fR, \fBremove\fR, \fBrls\fR, \fBrtag\fR,
+\fBstatus\fR, \fBtag\fR, \fBunedit\fR, \fBupdate\fR, \fBwatch\fR,
+and \fBwatchers\fR.
+.SP
+.IP "" 0
+\fB-r \fItag\fB\fR
+.IP "" 2
+.IP "" 0
+\fB-r \fItag\fB[:\fIdate\fB]\fR
+.IP "" 2
+.IX "HEAD, special tag"
+.IX "BASE, special tag"
+Use the revision specified by the \fItag\fR argument (and the \fIdate\fR
+argument for the commands which accept it) instead of the
+default \fIhead\fR revision.  As well as arbitrary tags defined
+with the \fBtag\fR or \fBrtag\fR command, two special tags are
+always available: \fBHEAD\fR refers to the most recent version
+available in the repository, and \fBBASE\fR refers to the
+revision you last checked out into the current working directory.
+.SP
+The tag specification is sticky when you use this
+with \fBcheckout\fR or \fBupdate\fR to make your own
+copy of a file: \fBcvs\fR remembers the tag and continues to use it on
+future update commands, until you specify otherwise (for more information
+on sticky tags/dates, see node `Sticky tags\(aq in the CVS manual).
+.SP
+The tag can be either a symbolic or numeric tag, as
+described in see node `Tags\(aq in the CVS manual, or the name of a branch, as
+described in see node `Branching and merging\(aq in the CVS manual.
+When \fItag\fR is the name of a
+branch, some commands accept the optional \fIdate\fR argument to specify
+the revision as of the given date on the branch.
+When a command expects a specific revision,
+the name of a branch is interpreted as the most recent
+revision on that branch.
+.SP
+Specifying the \fB-q\fR global option along with the
+\fB-r\fR command option is often useful, to suppress
+the warning messages when the \fBrcs\fR file
+does not contain the specified tag.
+.SP
+\fBNote: this is not the same as the overall \fBcvs -r\fB option,
+which you can specify to the left of a \fBcvs\fB command!\fR
+.SP
+\fB-r \fItag\fB\fR is available with the \fBcommit\fR and \fBhistory\fR
+commands.
+.SP
+\fB-r \fItag\fB[:\fIdate\fB]\fR is available with the \fBannotate\fR,
+\fBcheckout\fR, \fBdiff\fR, \fBexport\fR, \fBrdiff\fR, \fBrtag\fR,
+and \fBupdate\fR commands.
+.SP
+.IP "" 0
+\fB-W\fR
+.IP "" 2
+Specify file names that should be filtered.  You can
+use this option repeatedly.  The spec can be a file
+name pattern of the same type that you can specify in
+the \fB.cvswrappers\fR file.
+Available with the following commands: \fBimport\fR,
+and \fBupdate\fR.
+.SP
+.SP
+.SH "admin"
+.SS "Administration"
+.IX "Admin (subcommand)"
+.SP
+.IP "\(bu" 2
+Requires: repository, working directory.
+.IP "\(bu" 2
+Changes: repository.
+.IP "\(bu" 2
+Synonym: rcs
+.SP
+This is the \fBcvs\fR interface to assorted
+administrative facilities.  Some of them have
+questionable usefulness for \fBcvs\fR but exist for
+historical purposes.  Some of the questionable options
+are likely to disappear in the future.  This command
+\fIdoes\fR work recursively, so extreme care should be
+used.
+.SP
+.IX "cvsadmin"
+.IX "UserAdminOptions, in CVSROOT/config"
+On unix, if there is a group named \fBcvsadmin\fR,
+only members of that group can run \fBcvs admin\fR
+commands, except for those specified using the
+\fBUserAdminOptions\fR configuration option in the
+\fBCVSROOT/config\fR file.  Options specified using
+\fBUserAdminOptions\fR can be run by any user.  See
+see node `config\(aq in the CVS manual for more on \fBUserAdminOptions\fR.
+.SP
+The \fBcvsadmin\fR group should exist on the server,
+or any system running the non-client/server \fBcvs\fR.
+To disallow \fBcvs admin\fR for all users, create a
+group with no users in it.  On NT, the \fBcvsadmin\fR
+feature does not exist and all users
+can run \fBcvs admin\fR.
+.SP
+.SH "admin options"
+.SP
+Some of these options have questionable usefulness for
+\fBcvs\fR but exist for historical purposes.  Some even
+make it impossible to use \fBcvs\fR until you undo the
+effect!
+.SP
+.IP "" 0
+\fB-A\fIoldfile\fB\fR
+.IP "" 2
+Might not work together with \fBcvs\fR.  Append the
+access list of \fIoldfile\fR to the access list of the
+\fBrcs\fR file.
+.SP
+.IP "" 0
+\fB-a\fIlogins\fB\fR
+.IP "" 2
+Might not work together with \fBcvs\fR.  Append the
+login names appearing in the comma-separated list
+\fIlogins\fR to the access list of the \fBrcs\fR file.
+.SP
+.IP "" 0
+\fB-b[\fIrev\fB]\fR
+.IP "" 2
+Set the default branch to \fIrev\fR.  In \fBcvs\fR, you
+normally do not manipulate default branches; sticky
+tags (see node `Sticky tags\(aq in the CVS manual) are a better way to decide
+which branch you want to work on.  There is one reason
+to run \fBcvs admin -b\fR: to revert to the vendor\(aqs
+version when using vendor branches (see node `Reverting
+local changes\(aq in the CVS manual).
+There can be no space between \fB-b\fR and its argument.
+.SP
+.IX "Comment leader"
+.IP "" 0
+\fB-c\fIstring\fB\fR
+.IP "" 2
+Sets the comment leader to \fIstring\fR.  The comment
+leader is not used by current versions of \fBcvs\fR or
+\fBrcs\fR 5.7.  Therefore, you can almost surely not
+worry about it.  see node `Keyword substitution\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-e[\fIlogins\fB]\fR
+.IP "" 2
+Might not work together with \fBcvs\fR.  Erase the login
+names appearing in the comma-separated list
+\fIlogins\fR from the access list of the RCS file.  If
+\fIlogins\fR is omitted, erase the entire access list.
+There can be no space between \fB-e\fR and its argument.
+.SP
+.IP "" 0
+\fB-I\fR
+.IP "" 2
+Run interactively, even if the standard input is not a
+terminal.  This option does not work with the
+client/server \fBcvs\fR and is likely to disappear in
+a future release of \fBcvs\fR.
+.SP
+.IP "" 0
+\fB-i\fR
+.IP "" 2
+Useless with \fBcvs\fR.  This creates and initializes a
+new \fBrcs\fR file, without depositing a revision.  With
+\fBcvs\fR, add files with the \fBcvs add\fR command
+(see node `Adding files\(aq in the CVS manual).
+.SP
+.IP "" 0
+\fB-k\fIsubst\fB\fR
+.IP "" 2
+Set the default keyword
+substitution to \fIsubst\fR.  see node `Keyword
+substitution\(aq in the CVS manual.  Giving an explicit \fB-k\fR option to
+\fBcvs update\fR, \fBcvs export\fR, or \fBcvs
+checkout\fR overrides this default.
+.SP
+.IP "" 0
+\fB-l[\fIrev\fB]\fR
+.IP "" 2
+Lock the revision with number \fIrev\fR.  If a branch
+is given, lock the latest revision on that branch.  If
+\fIrev\fR is omitted, lock the latest revision on the
+default branch.  There can be no space between
+\fB-l\fR and its argument.
+.SP
+This can be used in conjunction with the
+\fBrcslock.pl\fR script in the \fBcontrib\fR
+directory of the \fBcvs\fR source distribution to
+provide reserved checkouts (where only one user can be
+editing a given file at a time).  See the comments in
+that file for details (and see the \fBREADME\fR file
+in that directory for disclaimers about the unsupported
+nature of contrib).  According to comments in that
+file, locking must set to strict (which is the default).
+.SP
+.IP "" 0
+\fB-L\fR
+.IP "" 2
+Set locking to strict.  Strict locking means that the
+owner of an RCS file is not exempt from locking for
+checkin.  For use with \fBcvs\fR, strict locking must be
+set; see the discussion under the \fB-l\fR option above.
+.SP
+.IX "Changing a log message"
+.IX "Replacing a log message"
+.IX "Correcting a log message"
+.IX "Fixing a log message"
+.IX "Log message, correcting"
+.IP "" 0
+\fB-m\fIrev\fB:\fImsg\fB\fR
+.IP "" 2
+Replace the log message of revision \fIrev\fR with
+\fImsg\fR.
+.SP
+.IP "" 0
+\fB-N\fIname\fB[:[\fIrev\fB]]\fR
+.IP "" 2
+Act like \fB-n\fR, except override any previous
+assignment of \fIname\fR.  For use with magic branches,
+see see node `Magic branch numbers\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-n\fIname\fB[:[\fIrev\fB]]\fR
+.IP "" 2
+Associate the symbolic name \fIname\fR with the branch
+or revision \fIrev\fR.  It is normally better to use
+\fBcvs tag\fR or \fBcvs rtag\fR instead.  Delete the
+symbolic name if both \fB:\fR and \fIrev\fR are
+omitted; otherwise, print an error message if
+\fIname\fR is already associated with another number.
+If \fIrev\fR is symbolic, it is expanded before
+association.  A \fIrev\fR consisting of a branch number
+followed by a \fB.\fR stands for the current latest
+revision in the branch.  A \fB:\fR with an empty
+\fIrev\fR stands for the current latest revision on the
+default branch, normally the trunk.  For example,
+\fBcvs admin -n\fIname\fB:\fR associates \fIname\fR with the
+current latest revision of all the RCS files;
+this contrasts with \fBcvs admin -n\fIname\fB:$\fR which
+associates \fIname\fR with the revision numbers
+extracted from keyword strings in the corresponding
+working files.
+.SP
+.IX "Deleting revisions"
+.IX "Outdating revisions"
+.IX "Saving space"
+.IP "" 0
+\fB-o\fIrange\fB\fR
+.IP "" 2
+Deletes (\fIoutdates\fR) the revisions given by
+\fIrange\fR.
+.SP
+Note that this command can be quite dangerous unless
+you know \fIexactly\fR what you are doing (for example
+see the warnings below about how the
+\fIrev1\fR:\fIrev2\fR syntax is confusing).
+.SP
+If you are short on disc this option might help you.
+But think twice before using it\(emthere is no way short
+of restoring the latest backup to undo this command!
+If you delete different revisions than you planned,
+either due to carelessness or (heaven forbid) a \fBcvs\fR
+bug, there is no opportunity to correct the error
+before the revisions are deleted.  It probably would be
+a good idea to experiment on a copy of the repository
+first.
+.SP
+Specify \fIrange\fR in one of the following ways:
+.SP
+.IP "" 2
+\fB\fIrev1\fB::\fIrev2\fB\fR
+.IP "" 4
+Collapse all revisions between rev1 and rev2, so that
+\fBcvs\fR only stores the differences associated with going
+from rev1 to rev2, not intermediate steps.  For
+example, after \fB-o 1.3::1.5\fR one can retrieve
+revision 1.3, revision 1.5, or the differences to get
+from 1.3 to 1.5, but not the revision 1.4, or the
+differences between 1.3 and 1.4.  Other examples:
+\fB-o 1.3::1.4\fR and \fB-o 1.3::1.3\fR have no
+effect, because there are no intermediate revisions to
+remove.
+.SP
+.IP "" 2
+\fB::\fIrev\fB\fR
+.IP "" 4
+Collapse revisions between the beginning of the branch
+containing \fIrev\fR and \fIrev\fR itself.  The
+branchpoint and \fIrev\fR are left intact.  For
+example, \fB-o ::1.3.2.6\fR deletes revision 1.3.2.1,
+revision 1.3.2.5, and everything in between, but leaves
+1.3 and 1.3.2.6 intact.
+.SP
+.IP "" 2
+\fB\fIrev\fB::\fR
+.IP "" 4
+Collapse revisions between \fIrev\fR and the end of the
+branch containing \fIrev\fR.  Revision \fIrev\fR is
+left intact but the head revision is deleted.
+.SP
+.IP "" 2
+\fB\fIrev\fB\fR
+.IP "" 4
+Delete the revision \fIrev\fR.  For example, \fB-o
+1.3\fR is equivalent to \fB-o 1.2::1.4\fR.
+.SP
+.IP "" 2
+\fB\fIrev1\fB:\fIrev2\fB\fR
+.IP "" 4
+Delete the revisions from \fIrev1\fR to \fIrev2\fR,
+inclusive, on the same branch.  One will not be able to
+retrieve \fIrev1\fR or \fIrev2\fR or any of the
+revisions in between.  For example, the command
+\fBcvs admin -oR_1_01:R_1_02 \&.\fR is rarely useful.
+It means to delete revisions up to, and including, the
+tag R_1_02.  But beware!  If there are files that have not
+changed between R_1_02 and R_1_03 the file will have
+\fIthe same\fR numerical revision number assigned to
+the tags R_1_02 and R_1_03.  So not only will it be
+impossible to retrieve R_1_02; R_1_03 will also have to
+be restored from the tapes!  In most cases you want to
+specify \fIrev1\fR::\fIrev2\fR instead.
+.SP
+.IP "" 2
+\fB:\fIrev\fB\fR
+.IP "" 4
+Delete revisions from the beginning of the
+branch containing \fIrev\fR up to and including
+\fIrev\fR.
+.SP
+.IP "" 2
+\fB\fIrev\fB:\fR
+.IP "" 4
+Delete revisions from revision \fIrev\fR, including
+\fIrev\fR itself, to the end of the branch containing
+\fIrev\fR.
+.SP
+None of the revisions to be deleted may have
+branches or locks.
+.SP
+If any of the revisions to be deleted have symbolic
+names, and one specifies one of the \fB::\fR syntaxes,
+then \fBcvs\fR will give an error and not delete any
+revisions.  If you really want to delete both the
+symbolic names and the revisions, first delete the
+symbolic names with \fBcvs tag -d\fR, then run
+\fBcvs admin -o\fR.  If one specifies the
+non-\fB::\fR syntaxes, then \fBcvs\fR will delete the
+revisions but leave the symbolic names pointing to
+nonexistent revisions.  This behavior is preserved for
+compatibility with previous versions of \fBcvs\fR, but
+because it isn\(aqt very useful, in the future it may
+change to be like the \fB::\fR case.
+.SP
+Due to the way \fBcvs\fR handles branches \fIrev\fR
+cannot be specified symbolically if it is a branch.
+see node `Magic branch numbers\(aq in the CVS manual, for an explanation.
+.SP
+Make sure that no-one has checked out a copy of the
+revision you outdate.  Strange things will happen if he
+starts to edit it and tries to check it back in.  For
+this reason, this option is not a good way to take back
+a bogus commit; commit a new revision undoing the bogus
+change instead (see node `Merging two revisions\(aq in the CVS manual).
+.SP
+.IP "" 0
+\fB-q\fR
+.IP "" 2
+Run quietly; do not print diagnostics.
+.SP
+.IP "" 0
+\fB-s\fIstate\fB[:\fIrev\fB]\fR
+.IP "" 2
+Useful with \fBcvs\fR.  Set the state attribute of the
+revision \fIrev\fR to \fIstate\fR.  If \fIrev\fR is a
+branch number, assume the latest revision on that
+branch.  If \fIrev\fR is omitted, assume the latest
+revision on the default branch.  Any identifier is
+acceptable for \fIstate\fR.  A useful set of states is
+\fBExp\fR (for experimental), \fBStab\fR (for
+stable), and \fBRel\fR (for released).  By default,
+the state of a new revision is set to \fBExp\fR when
+it is created.  The state is visible in the output from
+\fIcvs log\fR (see node `log\(aq in the CVS manual), and in the
+\fB$\fP\fPLog$\fR and \fB$\fP\fPState$\fR keywords
+(see node `Keyword substitution\(aq in the CVS manual).  Note that \fBcvs\fR
+uses the \fBdead\fR state for its own purposes (see node `Attic\(aq in the CVS 
manual); to
+take a file to or from the \fBdead\fR state use
+commands like \fBcvs remove\fR and \fBcvs add\fR
+(see node `Adding and removing\(aq in the CVS manual), not \fBcvs admin -s\fR.
+.SP
+.IP "" 0
+\fB-t[\fIfile\fB]\fR
+.IP "" 2
+Useful with \fBcvs\fR.  Write descriptive text from the
+contents of the named \fIfile\fR into the RCS file,
+deleting the existing text.  The \fIfile\fR pathname
+may not begin with \fB-\fR.  The descriptive text can be seen in the
+output from \fBcvs log\fR (see node `log\(aq in the CVS manual).
+There can be no space between \fB-t\fR and its argument.
+.SP
+If \fIfile\fR is omitted,
+obtain the text from standard input, terminated by
+end-of-file or by a line containing \fB.\fR by itself.
+Prompt for the text if interaction is possible; see
+\fB-I\fR.
+.SP
+.IP "" 0
+\fB-t-\fIstring\fB\fR
+.IP "" 2
+Similar to \fB-t\fIfile\fB\fR. Write descriptive text
+from the \fIstring\fR into the \fBrcs\fR file, deleting
+the existing text.
+There can be no space between \fB-t\fR and its argument.
+.SP
+.IP "" 0
+\fB-U\fR
+.IP "" 2
+Set locking to non-strict.  Non-strict locking means
+that the owner of a file need not lock a revision for
+checkin.  For use with \fBcvs\fR, strict locking must be
+set; see the discussion under the \fB-l\fR option
+above.
+.SP
+.IP "" 0
+\fB-u[\fIrev\fB]\fR
+.IP "" 2
+See the option \fB-l\fR above, for a discussion of
+using this option with \fBcvs\fR.  Unlock the revision
+with number \fIrev\fR.  If a branch is given, unlock
+the latest revision on that branch.  If \fIrev\fR is
+omitted, remove the latest lock held by the caller.
+Normally, only the locker of a revision may unlock it;
+somebody else unlocking a revision breaks the lock.
+This causes the original locker to be sent a \fBcommit\fR
+notification (see node `Getting Notified\(aq in the CVS manual).
+There can be no space between \fB-u\fR and its argument.
+.SP
+.IP "" 0
+\fB-V\fIn\fB\fR
+.IP "" 2
+In previous versions of \fBcvs\fR, this option meant to
+write an \fBrcs\fR file which would be acceptable to
+\fBrcs\fR version \fIn\fR, but it is now obsolete and
+specifying it will produce an error.
+.SP
+.IP "" 0
+\fB-x\fIsuffixes\fB\fR
+.IP "" 2
+In previous versions of \fBcvs\fR, this was documented
+as a way of specifying the names of the \fBrcs\fR
+files.  However, \fBcvs\fR has always required that the
+\fBrcs\fR files used by \fBcvs\fR end in \fB,v\fR, so
+this option has never done anything useful.
+.SP
+.SP
+.SH "annotate"
+.SS "What revision modified each line of a file?"
+.IX "annotate (subcommand)"
+.SP
+.IP "\(bu" 2
+Synopsis: annotate [options] files\&...
+.IP "\(bu" 2
+Requires: repository.
+.IP "\(bu" 2
+Changes: nothing.
+.SP
+For each file in \fIfiles\fR, print the head revision
+of the trunk, together with information on the last
+modification for each line.  
+.SP
+.SH "annotate options"
+.SP
+These standard options are supported by \fBannotate\fR
+(see node `Common options\(aq in the CVS manual, for a complete description of
+them):
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Local directory only, no recursion.
+.SP
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+Process directories recursively.
+.SP
+.IP "" 0
+\fB-f\fR
+.IP "" 2
+Use head revision if tag/date not found.
+.SP
+.IP "" 0
+\fB-F\fR
+.IP "" 2
+Annotate binary files.
+.SP
+.IP "" 0
+\fB-r \fItag\fB[:\fIdate\fB]\fR
+.IP "" 2
+Annotate file as of specified revision/tag or, when \fIdate\fR is specified
+and \fItag\fR is a branch tag, the version from the branch \fItag\fR as it
+existed on \fIdate\fR.  See see node `Common options\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-D \fIdate\fB\fR
+.IP "" 2
+Annotate file as of specified date.
+.SP
+.SH "annotate example"
+.SP
+For example:
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs annotate ssfile
+.IP "" 2
+Annotations for ssfile
+.IP "" 2
+***************
+.IP "" 2
+1.1          (mary     27-Mar-96): ssfile line 1
+.IP "" 2
+1.2          (joe      28-Mar-96): ssfile line 2
+
+.PD
+.IP "" 0
+.SP
+The file \fBssfile\fR currently contains two lines.
+The \fBssfile line 1\fR line was checked in by
+\fBmary\fR on March 27.  Then, on March 28, \fBjoe\fR
+added a line \fBssfile line 2\fR, without modifying
+the \fBssfile line 1\fR line.  This report doesn\(aqt
+tell you anything about lines which have been deleted
+or replaced; you need to use \fBcvs diff\fR for that
+(see node `diff\(aq in the CVS manual).
+.SP
+The options to \fBcvs annotate\fR are listed in
+see node `Invoking CVS\(aq in the CVS manual, and can be used to select the 
files
+and revisions to annotate.  The options are described
+in more detail there and in see node `Common options\(aq in the CVS manual.
+.SP
+.SH "checkout"
+.SS "Check out sources for editing"
+.IX "checkout (subcommand)"
+.IX "co (subcommand)"
+.SP
+.IP "\(bu" 2
+Synopsis: checkout [options] modules\&...
+.IP "\(bu" 2
+Requires: repository.
+.IP "\(bu" 2
+Changes: working directory.
+.IP "\(bu" 2
+Synonyms: co, get
+.SP
+Create or update a working directory containing copies of the
+source files specified by \fImodules\fR.  You must execute
+\fBcheckout\fR before using most of the other \fBcvs\fR
+commands, since most of them operate on your working
+directory.
+.SP
+The \fImodules\fR are either
+symbolic names for some
+collection of source directories and files, or paths to
+directories or files in the repository.  The symbolic
+names are defined in the \fBmodules\fR file.
+see node `modules\(aq in the CVS manual.
+.SP
+Depending on the modules you specify, \fBcheckout\fR may
+recursively create directories and populate them with
+the appropriate source files.  You can then edit these
+source files at any time (regardless of whether other
+software developers are editing their own copies of the
+sources); update them to include new changes applied by
+others to the source repository; or commit your work as
+a permanent change to the source repository.
+.SP
+Note that \fBcheckout\fR is used to create
+directories.  The top-level directory created is always
+added to the directory where \fBcheckout\fR is
+invoked, and usually has the same name as the specified
+module.  In the case of a module alias, the created
+sub-directory may have a different name, but you can be
+sure that it will be a sub-directory, and that
+\fBcheckout\fR will show the relative path leading to
+each file as it is extracted into your private work
+area (unless you specify the \fB-Q\fR global option).
+.SP
+The files created by \fBcheckout\fR are created
+read-write, unless the \fB-r\fR option to \fBcvs\fR
+(see node `Global options\(aq in the CVS manual) is specified, the
+\fBCVSREAD\fR environment variable is specified
+(see node `Environment variables\(aq in the CVS manual), or a watch is in
+effect for that file (see node `Watches\(aq in the CVS manual).
+.SP
+Note that running \fBcheckout\fR on a directory that was already
+built by a prior \fBcheckout\fR is also permitted.
+This is similar to specifying the \fB-d\fR option
+to the \fBupdate\fR command in the sense that new
+directories that have been created in the repository
+will appear in your work area.
+However, \fBcheckout\fR takes a module name whereas
+\fBupdate\fR takes a directory name.  Also
+to use \fBcheckout\fR this way it must be run from the
+top level directory (where you originally ran
+\fBcheckout\fR from), so before you run
+\fBcheckout\fR to update an existing directory, don\(aqt
+forget to change your directory to the top level
+directory.
+.SP
+For the output produced by the \fBcheckout\fR command
+see see node `update output\(aq in the CVS manual.
+.SP
+.SH "checkout options"
+.SP
+These standard options are supported by \fBcheckout\fR
+(see node `Common options\(aq in the CVS manual, for a complete description of
+them):
+.SP
+.IP "" 0
+\fB-D \fIdate\fB\fR
+.IP "" 2
+Use the most recent revision no later than \fIdate\fR.
+This option is sticky, and implies \fB-P\fR.  See
+see node `Sticky tags\(aq in the CVS manual, for more information on sticky 
tags/dates.
+.SP
+.IP "" 0
+\fB-f\fR
+.IP "" 2
+Only useful with the \fB-D\fR or \fB-r\fR flags.  If no matching revision is
+found, retrieve the most recent revision (instead of ignoring the file).
+.SP
+.IP "" 0
+\fB-k \fIkflag\fB\fR
+.IP "" 2
+Process keywords according to \fIkflag\fR.  See
+see node `Keyword substitution\(aq in the CVS manual.
+This option is sticky; future updates of
+this file in this working directory will use the same
+\fIkflag\fR.  The \fBstatus\fR command can be viewed
+to see the sticky options.  See see node `Invoking CVS\(aq in the CVS manual, 
for
+more information on the \fBstatus\fR command.
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Local; run only in current working directory.
+.SP
+.IP "" 0
+\fB-n\fR
+.IP "" 2
+Do not run any checkout program (as specified
+with the \fB-o\fR option in the modules file;
+see node `modules\(aq in the CVS manual).
+.SP
+.IP "" 0
+\fB-P\fR
+.IP "" 2
+Prune empty directories.  See see node `Moving directories\(aq in the CVS 
manual.
+.SP
+.IP "" 0
+\fB-p\fR
+.IP "" 2
+Pipe files to the standard output.
+.SP
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+Checkout directories recursively.  This option is on by default.
+.SP
+.IP "" 0
+\fB-r \fItag\fB[:\fIdate\fB]\fR
+.IP "" 2
+Checkout the revision specified by \fItag\fR or, when \fIdate\fR is specified
+and \fItag\fR is a branch tag, the version from the branch \fItag\fR as it
+existed on \fIdate\fR.  This option is sticky, and implies \fB-P\fR.
+See see node `Sticky tags\(aq in the CVS manual, for more information on 
sticky tags/dates.  Also,
+see see node `Common options\(aq in the CVS manual.
+.SP
+In addition to those, you can use these special command
+options with \fBcheckout\fR:
+.SP
+.IP "" 0
+\fB-A\fR
+.IP "" 2
+Reset any sticky tags, dates, or \fB-k\fR options.
+See see node `Sticky tags\(aq in the CVS manual, for more information on 
sticky tags/dates.
+.SP
+.IP "" 0
+\fB-c\fR
+.IP "" 2
+Copy the module file, sorted, to the standard output,
+instead of creating or modifying any files or
+directories in your working directory.
+.SP
+.IP "" 0
+\fB-d \fIdir\fB\fR
+.IP "" 2
+Create a directory called \fIdir\fR for the working
+files, instead of using the module name.  In general,
+using this flag is equivalent to using \fBmkdir
+\fIdir\fB; cd \fIdir\fB\fR followed by the checkout
+command without the \fB-d\fR flag.
+.SP
+There is an important exception, however.  It is very
+convenient when checking out a single item to have the
+output appear in a directory that doesn\(aqt contain empty
+intermediate directories.  In this case \fIonly\fR,
+\fBcvs\fR tries to \`\`shorten\(aq\(aq pathnames to avoid those empty
+directories.
+.SP
+For example, given a module \fBfoo\fR that contains
+the file \fBbar.c\fR, the command \fBcvs co -d dir
+foo\fR will create directory \fBdir\fR and place
+\fBbar.c\fR inside.  Similarly, given a module
+\fBbar\fR which has subdirectory \fBbaz\fR wherein
+there is a file \fBquux.c\fR, the command \fBcvs co
+-d dir bar/baz\fR will create directory \fBdir\fR and
+place \fBquux.c\fR inside.
+.SP
+Using the \fB-N\fR flag will defeat this behavior.
+Given the same module definitions above, \fBcvs co
+-N -d dir foo\fR will create directories \fBdir/foo\fR
+and place \fBbar.c\fR inside, while \fBcvs co -N -d
+dir bar/baz\fR will create directories \fBdir/bar/baz\fR
+and place \fBquux.c\fR inside.
+.SP
+.IP "" 0
+\fB-j \fItag\fB\fR
+.IP "" 2
+With two \fB-j\fR options, merge changes from the
+revision specified with the first \fB-j\fR option to
+the revision specified with the second \fBj\fR option,
+into the working directory.
+.SP
+With one \fB-j\fR option, merge changes from the
+ancestor revision to the revision specified with the
+\fB-j\fR option, into the working directory.  The
+ancestor revision is the common ancestor of the
+revision which the working directory is based on, and
+the revision specified in the \fB-j\fR option.
+.SP
+In addition, each -j option can contain an optional
+date specification which, when used with branches, can
+limit the chosen revision to one within a specific
+date.  An optional date is specified by adding a colon
+(:) to the tag:
+\fB-j\fISymbolic_Tag\fB:\fIDate_Specifier\fB\fR.
+.SP
+see node `Branching and merging\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-N\fR
+.IP "" 2
+Only useful together with \fB-d \fIdir\fB\fR.  With
+this option, \fBcvs\fR will not \`\`shorten\(aq\(aq module paths
+in your working directory when you check out a single
+module.  See the \fB-d\fR flag for examples and a
+discussion.
+.SP
+.IP "" 0
+\fB-s\fR
+.IP "" 2
+Like \fB-c\fR, but include the status of all modules,
+and sort it by the status string.  see node `modules\(aq in the CVS manual, for
+info about the \fB-s\fR option that is used inside the
+modules file to set the module status.
+.SP
+.SH "checkout examples"
+.SP
+Get a copy of the module \fBtc\fR:
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs checkout tc
+
+.PD
+.IP "" 0
+.SP
+Get a copy of the module \fBtc\fR as it looked one day
+ago:
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs checkout -D yesterday tc
+
+.PD
+.IP "" 0
+.SP
+.SH "commit"
+.SS "Check files into the repository"
+.IX "commit (subcommand)"
+.SP
+.IP "\(bu" 2
+Synopsis: commit [-glnRf] [-m \(aqlog_message\(aq |
+-F file] [-r revision] [--sign] [--sign-template \fItemplate\fR]
+[--sign-arg \fIarg\fR]\&... [files\&...]
+.IP "\(bu" 2
+Requires: working directory, repository.
+.IP "\(bu" 2
+Changes: repository.
+.IP "\(bu" 2
+Synonym: ci
+.SP
+Use \fBcommit\fR when you want to incorporate changes
+from your working source files into the source
+repository.
+.SP
+If you don\(aqt specify particular files to commit, all of
+the files in your working current directory are
+examined.  \fBcommit\fR is careful to change in the
+repository only those files that you have really
+changed.  By default (or if you explicitly specify the
+\fB-R\fR option), files in subdirectories are also
+examined and committed if they have changed; you can
+use the \fB-l\fR option to limit \fBcommit\fR to the
+current directory only.
+.SP
+\fBcommit\fR verifies that the selected files are up
+to date with the current revisions in the source
+repository; it will notify you, and exit without
+committing, if any of the specified files must be made
+current first with \fBupdate\fR (see node `update\(aq in the CVS manual).
+\fBcommit\fR does not call the \fBupdate\fR command
+for you, but rather leaves that for you to do when the
+time is right.
+.SP
+When all is well, an editor is invoked to allow you to
+enter a log message that will be written to one or more
+logging programs (see node `modules\(aq in the CVS manual, and see node 
`loginfo\(aq in the CVS manual)
+and placed in the \fBrcs\fR file inside the
+repository.  This log message can be retrieved with the
+\fBlog\fR command; see see node `log\(aq in the CVS manual.  You can specify 
the
+log message on the command line with the \fB-m
+\fImessage\fB\fR option, and thus avoid the editor invocation,
+or use the \fB-F \fIfile\fB\fR option to specify
+that the argument file contains the log message.
+.SP
+At \fBcommit\fR, a unique commitid is placed in the \fBrcs\fR
+file inside the repository. All files committed at once
+get the same commitid. The commitid can be retrieved with
+the \fBlog\fR and \fBstatus\fR command; see see node `log\(aq in the CVS 
manual,
+see node `File status\(aq in the CVS manual.
+.SP
+.SH "commit options"
+.SP
+These standard options are supported by \fBcommit\fR
+(see node `Common options\(aq in the CVS manual, for a complete description of
+them):
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Local; run only in current working directory.
+.SP
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+Commit directories recursively.  This is on by default.
+.SP
+.IP "" 0
+\fB-r \fIrevision\fB\fR
+.IP "" 2
+Commit to \fIrevision\fR.  \fIrevision\fR must be
+either a branch, or a revision on the main trunk that
+is higher than any existing revision number
+(see node `Assigning revisions\(aq in the CVS manual).  You
+cannot commit to a specific revision on a branch.
+.SP
+\fBcommit\fR also supports these options:
+.SP
+.IP "" 0
+\fB-c\fR
+.IP "" 2
+Refuse to commit files unless the user has registered a valid edit on the
+file via \fBcvs edit\fR.  This is most useful when \fBcommit -c\fR
+and \fBedit -c\fR have been placed in all \fB.cvsrc\fR files.
+A commit can be forced anyways by either regestering an edit retroactively
+via \fBcvs edit\fR (no changes to the file will be lost) or using the
+\fB-f\fR option to commit.  Support for \fBcommit -c\fR requires both
+client and a server versions 1.12.10 or greater.
+.SP
+.IP "" 0
+\fB-F \fIfile\fB\fR
+.IP "" 2
+Read the log message from \fIfile\fR, instead
+of invoking an editor.
+.SP
+.IP "" 0
+\fB-f\fR
+.IP "" 2
+Note that this is not the standard behavior of
+the \fB-f\fR option as defined in see node `Common options\(aq in the CVS 
manual.
+.SP
+Force \fBcvs\fR to commit a new revision even if you haven\(aqt
+made any changes to the file.  As of \fBcvs\fR version 1.12.10,
+it also causes the \fB-c\fR option to be ignored.  If the current revision
+of \fIfile\fR is 1.7, then the following two commands
+are equivalent:
+.SP
+.PD 0
+.SP
+.IP "" 4
+$ cvs commit -f \fIfile\fR
+.IP "" 4
+$ cvs commit -r 1.8 \fIfile\fR
+
+.PD
+.IP "" 2
+.SP
+The \fB-f\fR option disables recursion (i.e., it
+implies \fB-l\fR).  To force \fBcvs\fR to commit a new
+revision for all files in all subdirectories, you must
+use \fB-f -R\fR.
+.SP
+.IP "" 0
+\fB-m \fImessage\fB\fR
+.IP "" 2
+Use \fImessage\fR as the log message, instead of
+invoking an editor.
+.SP
+.IP "" 0
+\fB-g\fR
+.IP "" 2
+.IP "" 0
+\fB--sign\fR
+.IP "" 2
+.IP "" 0
+\fB--nosign\fR
+.IP "" 2
+Force OpenPGP signatures on or off.  \fB-g\fR & \fB--sign\fR will cause the
+commit to abort if the server does not support OpenPGP signatures.  Without one
+of these options, CVS will autonegotiate signing, attempting to sign commits
+when the server supports it.  Overrides the \fBsign\fR and \fBnosign\fR
+method options.
+.SP
+.IP "" 0
+\fB--sign-template \fItemplate\fB\fR
+.IP "" 2
+Use \fItemplate\fR as the command line template to generate OpenPGP signatures.
+Format strings in this template are substituted before the commit is run:
+.SP
+.IP "" 2
+\fB%t\fR
+.IP "" 4
+Substitute in the textmode flag (defaults to \fB--textmode\fR) when a
+signature is being generated for a text file.
+.SP
+.IP "" 2
+\fB%a\fR
+.IP "" 4
+Substitute in any \fIarg\fRs set via the \fB--sign-arg\fR option or the
+CVSROOT sign-arg method option.
+.SP
+.IP "" 2
+\fB%s\fR
+.IP "" 4
+Substitute the name of the file to generate a signature for.
+.SP
+This template should send the generated signature to its standard output.
+Overrides the \fBsign-template\fR method optoin and defaults to something like
+\fB/usr/bin/gpg --detach-sign --output - %t %a %s\fR.
+.SP
+.SH "commit examples"
+.SP
+.SS "Committing to a branch"
+.SP
+You can commit to a branch revision (one that has an
+even number of dots) with the \fB-r\fR option.  To
+create a branch revision, use the \fB-b\fR option
+of the \fBrtag\fR or \fBtag\fR commands
+(see node `Branching and merging\(aq in the CVS manual).  Then, either 
\fBcheckout\fR or
+\fBupdate\fR can be used to base your sources on the
+newly created branch.  From that point on, all
+\fBcommit\fR changes made within these working sources
+will be automatically added to a branch revision,
+thereby not disturbing main-line development in any
+way.  For example, if you had to create a patch to the
+1.2 version of the product, even though the 2.0 version
+is already under development, you might do:
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
+.IP "" 2
+$ cvs checkout -r FCS1_2_Patch product_module
+.IP "" 2
+$ cd product_module
+.IP "" 2
+[[ hack away ]]
+.IP "" 2
+$ cvs commit
+
+.PD
+.IP "" 0
+.SP
+This works automatically since the \fB-r\fR option is
+sticky.
+.SP
+.SS "Creating the branch after editing"
+.SP
+Say you have been working on some extremely
+experimental software, based on whatever revision you
+happened to checkout last week.  If others in your
+group would like to work on this software with you, but
+without disturbing main-line development, you could
+commit your change to a new branch.  Others can then
+checkout your experimental stuff and utilize the full
+benefit of \fBcvs\fR conflict resolution.  The scenario might
+look like:
+.SP
+.PD 0
+.SP
+.IP "" 2
+[[ hacked sources are present ]]
+.IP "" 2
+$ cvs tag -b EXPR1
+.IP "" 2
+$ cvs update -r EXPR1
+.IP "" 2
+$ cvs commit
+
+.PD
+.IP "" 0
+.SP
+The \fBupdate\fR command will make the \fB-r
+EXPR1\fR option sticky on all files.  Note that your
+changes to the files will never be removed by the
+\fBupdate\fR command.  The \fBcommit\fR will
+automatically commit to the correct branch, because the
+\fB-r\fR is sticky.  You could also do like this:
+.SP
+.PD 0
+.SP
+.IP "" 2
+[[ hacked sources are present ]]
+.IP "" 2
+$ cvs tag -b EXPR1
+.IP "" 2
+$ cvs commit -r EXPR1
+
+.PD
+.IP "" 0
+.SP
+but then, only those files that were changed by you
+will have the \fB-r EXPR1\fR sticky flag.  If you hack
+away, and commit without specifying the \fB-r EXPR1\fR
+flag, some files may accidentally end up on the main
+trunk.
+.SP
+To work with you on the experimental change, others
+would simply do
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs checkout -r EXPR1 whatever_module
+
+.PD
+.IP "" 0
+.SP
+.SH "diff"
+.SS "Show differences between revisions"
+.IX "diff (subcommand)"
+.SP
+.IP "\(bu" 2
+Synopsis: diff [-lR] [-k kflag] [format_options] [(-r rev1[:date1] | -D date1) 
[-r rev2[:date2] | -D date2]] [files\&...]
+.IP "\(bu" 2
+Requires: working directory, repository.
+.IP "\(bu" 2
+Changes: nothing.
+.SP
+The \fBdiff\fR command is used to compare different
+revisions of files.  The default action is to compare
+your working files with the revisions they were based
+on, and report any differences that are found.
+.SP
+If any file names are given, only those files are
+compared.  If any directories are given, all files
+under them will be compared.
+.SP
+The exit status for diff is different than for other
+\fBcvs\fR commands; for details see node `Exit status\(aq in the CVS manual.
+.SP
+.SH "diff options"
+.SP
+These standard options are supported by \fBdiff\fR
+(see node `Common options\(aq in the CVS manual, for a complete description of
+them):
+.SP
+.IP "" 0
+\fB-D \fIdate\fB\fR
+.IP "" 2
+Use the most recent revision no later than \fIdate\fR.
+See \fB-r\fR for how this affects the comparison.
+.SP
+.IP "" 0
+\fB-k \fIkflag\fB\fR
+.IP "" 2
+Process keywords according to \fIkflag\fR.  See
+see node `Keyword substitution\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Local; run only in current working directory.
+.SP
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+Examine directories recursively.  This option is on by
+default.
+.SP
+.IP "" 0
+\fB-r \fItag\fB[:\fIdate\fB]\fR
+.IP "" 2
+Compare with revision specified by \fItag\fR or, when \fIdate\fR is specified
+and \fItag\fR is a branch tag, the version from the branch \fItag\fR as it
+existed on \fIdate\fR.  Zero, one or two
+\fB-r\fR options can be present.  With no \fB-r\fR
+option, the working file will be compared with the
+revision it was based on.  With one \fB-r\fR, that
+revision will be compared to your current working file.
+With two \fB-r\fR options those two revisions will be
+compared (and your working file will not affect the
+outcome in any way).
+.SP
+One or both \fB-r\fR options can be replaced by a
+\fB-D \fIdate\fB\fR option, described above.
+.SP
+The following options specify the format of the
+output.  They have the same meaning as in GNU diff.
+Most options have two equivalent names, one of which is a single letter
+preceded by \fB-\fR, and the other of which is a long name preceded by
+\fB--\fR.
+.SP
+.IP "" 0
+\fB-\fIlines\fB\fR
+.IP "" 2
+Show \fIlines\fR (an integer) lines of context.  This option does not
+specify an output format by itself; it has no effect unless it is
+combined with \fB-c\fR or \fB-u\fR.  This option is obsolete.  For proper
+operation, \fBpatch\fR typically needs at least two lines of context.
+.SP
+.IP "" 0
+\fB-a\fR
+.IP "" 2
+Treat all files as text and compare them line-by-line, even if they
+do not seem to be text.
+.SP
+.IP "" 0
+\fB-b\fR
+.IP "" 2
+Ignore trailing white space and consider all other sequences of one or
+more white space characters to be equivalent.
+.SP
+.IP "" 0
+\fB-B\fR
+.IP "" 2
+Ignore changes that just insert or delete blank lines.
+.SP
+.IP "" 0
+\fB--binary\fR
+.IP "" 2
+Read and write data in binary mode.
+.SP
+.IP "" 0
+\fB--brief\fR
+.IP "" 2
+Report only whether the files differ, not the details of the
+differences.
+.SP
+.IP "" 0
+\fB-c\fR
+.IP "" 2
+Use the context output format.
+.SP
+.IP "" 0
+\fB-C \fIlines\fB\fR
+.IP "" 2
+.IP "" 0
+\fB--context\fR[\fB=\fIlines\fB\fR]\fB\fR
+.IP "" 2
+Use the context output format, showing \fIlines\fR (an integer) lines of
+context, or three if \fIlines\fR is not given.
+For proper operation, \fBpatch\fR typically needs at least two lines of
+context.
+.SP
+.IP "" 0
+\fB--changed-group-format=\fIformat\fB\fR
+.IP "" 2
+Use \fIformat\fR to output a line group containing differing lines from
+both files in if-then-else format.  see node `Line group formats\(aq in the 
CVS manual.
+.SP
+.IP "" 0
+\fB-d\fR
+.IP "" 2
+Change the algorithm to perhaps find a smaller set of changes.  This makes
+\fBdiff\fR slower (sometimes much slower).
+.SP
+.IP "" 0
+\fB-e\fR
+.IP "" 2
+.IP "" 0
+\fB--ed\fR
+.IP "" 2
+Make output that is a valid \fBed\fR script.
+.SP
+.IP "" 0
+\fB--expand-tabs\fR
+.IP "" 2
+Expand tabs to spaces in the output, to preserve the alignment of tabs
+in the input files.
+.SP
+.IP "" 0
+\fB-f\fR
+.IP "" 2
+Make output that looks vaguely like an \fBed\fR script but has changes
+in the order they appear in the file.
+.SP
+.IP "" 0
+\fB-F \fIregexp\fB\fR
+.IP "" 2
+In context and unified format, for each hunk of differences, show some
+of the last preceding line that matches \fIregexp\fR.
+.SP
+.IP "" 0
+\fB--forward-ed\fR
+.IP "" 2
+Make output that looks vaguely like an \fBed\fR script but has changes
+in the order they appear in the file.
+.SP
+.IP "" 0
+\fB-H\fR
+.IP "" 2
+Use heuristics to speed handling of large files that have numerous
+scattered small changes.
+.SP
+.IP "" 0
+\fB--horizon-lines=\fIlines\fB\fR
+.IP "" 2
+Do not discard the last \fIlines\fR lines of the common prefix
+and the first \fIlines\fR lines of the common suffix.
+.SP
+.IP "" 0
+\fB-i\fR
+.IP "" 2
+Ignore changes in case; consider upper- and lower-case letters
+equivalent.
+.SP
+.IP "" 0
+\fB-I \fIregexp\fB\fR
+.IP "" 2
+Ignore changes that just insert or delete lines that match \fIregexp\fR.
+.SP
+.IP "" 0
+\fB--ifdef=\fIname\fB\fR
+.IP "" 2
+Make merged if-then-else output using \fIname\fR.
+.SP
+.IP "" 0
+\fB--ignore-all-space\fR
+.IP "" 2
+Ignore white space when comparing lines.
+.SP
+.IP "" 0
+\fB--ignore-blank-lines\fR
+.IP "" 2
+Ignore changes that just insert or delete blank lines.
+.SP
+.IP "" 0
+\fB--ignore-case\fR
+.IP "" 2
+Ignore changes in case; consider upper- and lower-case to be the same.
+.SP
+.IP "" 0
+\fB--ignore-matching-lines=\fIregexp\fB\fR
+.IP "" 2
+Ignore changes that just insert or delete lines that match \fIregexp\fR.
+.SP
+.IP "" 0
+\fB--ignore-space-change\fR
+.IP "" 2
+Ignore trailing white space and consider all other sequences of one or
+more white space characters to be equivalent.
+.SP
+.IP "" 0
+\fB--initial-tab\fR
+.IP "" 2
+Output a tab rather than a space before the text of a line in normal or
+context format.  This causes the alignment of tabs in the line to look
+normal.
+.SP
+.IP "" 0
+\fB-L \fIlabel\fB\fR
+.IP "" 2
+Use \fIlabel\fR instead of the file name in the context format
+and unified format headers.
+.SP
+.IP "" 0
+\fB--label=\fIlabel\fB\fR
+.IP "" 2
+Use \fIlabel\fR instead of the file name in the context format
+and unified format headers.
+.SP
+.IP "" 0
+\fB--left-column\fR
+.IP "" 2
+Print only the left column of two common lines in side by side format.
+.SP
+.IP "" 0
+\fB--line-format=\fIformat\fB\fR
+.IP "" 2
+Use \fIformat\fR to output all input lines in if-then-else format.
+see node `Line formats\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB--minimal\fR
+.IP "" 2
+Change the algorithm to perhaps find a smaller set of changes.  This
+makes \fBdiff\fR slower (sometimes much slower).
+.SP
+.IP "" 0
+\fB-n\fR
+.IP "" 2
+Output RCS-format diffs; like \fB-f\fR except that each command
+specifies the number of lines affected.
+.SP
+.IP "" 0
+\fB-N\fR
+.IP "" 2
+.IP "" 0
+\fB--new-file\fR
+.IP "" 2
+In directory comparison, if a file is found in only one directory,
+treat it as present but empty in the other directory.
+.SP
+.IP "" 0
+\fB--new-group-format=\fIformat\fB\fR
+.IP "" 2
+Use \fIformat\fR to output a group of lines taken from just the second
+file in if-then-else format.  see node `Line group formats\(aq in the CVS 
manual.
+.SP
+.IP "" 0
+\fB--new-line-format=\fIformat\fB\fR
+.IP "" 2
+Use \fIformat\fR to output a line taken from just the second file in
+if-then-else format.  see node `Line formats\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB--old-group-format=\fIformat\fB\fR
+.IP "" 2
+Use \fIformat\fR to output a group of lines taken from just the first
+file in if-then-else format.  see node `Line group formats\(aq in the CVS 
manual.
+.SP
+.IP "" 0
+\fB--old-line-format=\fIformat\fB\fR
+.IP "" 2
+Use \fIformat\fR to output a line taken from just the first file in
+if-then-else format.  see node `Line formats\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-p\fR
+.IP "" 2
+Show which C function each change is in.
+.SP
+.IP "" 0
+\fB--rcs\fR
+.IP "" 2
+Output RCS-format diffs; like \fB-f\fR except that each command
+specifies the number of lines affected.
+.SP
+.IP "" 0
+\fB--report-identical-files\fR
+.IP "" 2
+.IP "" 0
+\fB-s\fR
+.IP "" 2
+Report when two files are the same.
+.SP
+.IP "" 0
+\fB--show-c-function\fR
+.IP "" 2
+Show which C function each change is in.
+.SP
+.IP "" 0
+\fB--show-function-line=\fIregexp\fB\fR
+.IP "" 2
+In context and unified format, for each hunk of differences, show some
+of the last preceding line that matches \fIregexp\fR.
+.SP
+.IP "" 0
+\fB--side-by-side\fR
+.IP "" 2
+Use the side by side output format.
+.SP
+.IP "" 0
+\fB--speed-large-files\fR
+.IP "" 2
+Use heuristics to speed handling of large files that have numerous
+scattered small changes.
+.SP
+.IP "" 0
+\fB--suppress-common-lines\fR
+.IP "" 2
+Do not print common lines in side by side format.
+.SP
+.IP "" 0
+\fB-t\fR
+.IP "" 2
+Expand tabs to spaces in the output, to preserve the alignment of tabs
+in the input files.
+.SP
+.IP "" 0
+\fB-T\fR
+.IP "" 2
+Output a tab rather than a space before the text of a line in normal or
+context format.  This causes the alignment of tabs in the line to look
+normal.
+.SP
+.IP "" 0
+\fB--text\fR
+.IP "" 2
+Treat all files as text and compare them line-by-line, even if they
+do not appear to be text.
+.SP
+.IP "" 0
+\fB-u\fR
+.IP "" 2
+Use the unified output format.
+.SP
+.IP "" 0
+\fB--unchanged-group-format=\fIformat\fB\fR
+.IP "" 2
+Use \fIformat\fR to output a group of common lines taken from both files
+in if-then-else format.  see node `Line group formats\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB--unchanged-line-format=\fIformat\fB\fR
+.IP "" 2
+Use \fIformat\fR to output a line common to both files in if-then-else
+format.  see node `Line formats\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-U \fIlines\fB\fR
+.IP "" 2
+.IP "" 0
+\fB--unified\fR[\fB=\fIlines\fB\fR]\fB\fR
+.IP "" 2
+Use the unified output format, showing \fIlines\fR (an integer) lines of
+context, or three if \fIlines\fR is not given.
+For proper operation, \fBpatch\fR typically needs at least two lines of
+context.
+.SP
+.IP "" 0
+\fB-w\fR
+.IP "" 2
+Ignore white space when comparing lines.
+.SP
+.IP "" 0
+\fB-W \fIcolumns\fB\fR
+.IP "" 2
+.IP "" 0
+\fB--width=\fIcolumns\fB\fR
+.IP "" 2
+Use an output width of \fIcolumns\fR in side by side format.
+.SP
+.IP "" 0
+\fB-y\fR
+.IP "" 2
+Use the side by side output format.
+.SP
+.SH "Line group formats"
+.SP
+Line group formats let you specify formats suitable for many
+applications that allow if-then-else input, including programming
+languages and text formatting languages.  A line group format specifies
+the output format for a contiguous group of similar lines.
+.SP
+For example, the following command compares the TeX file \fBmyfile\fR
+with the original version from the repository,
+and outputs a merged file in which old regions are
+surrounded by \fB\\begin{em}\fR-\fB\\end{em}\fR lines, and new
+regions are surrounded by \fB\\begin{bf}\fR-\fB\\end{bf}\fR lines.
+.SP
+.PD 0
+.SP
+.IP "" 2
+cvs diff \\
+.IP "" 2
+   --old-group-format=\(aq\\begin{em}
+.IP "" 2
+%<\\end{em}
+.IP "" 2
+\(aq \\
+.IP "" 2
+   --new-group-format=\(aq\\begin{bf}
+.IP "" 2
+%>\\end{bf}
+.IP "" 2
+\(aq \\
+.IP "" 2
+   myfile
+
+.PD
+.IP "" 0
+.SP
+The following command is equivalent to the above example, but it is a
+little more verbose, because it spells out the default line group formats.
+.SP
+.PD 0
+.SP
+.IP "" 2
+cvs diff \\
+.IP "" 2
+   --old-group-format=\(aq\\begin{em}
+.IP "" 2
+%<\\end{em}
+.IP "" 2
+\(aq \\
+.IP "" 2
+   --new-group-format=\(aq\\begin{bf}
+.IP "" 2
+%>\\end{bf}
+.IP "" 2
+\(aq \\
+.IP "" 2
+   --unchanged-group-format=\(aq%=\(aq \\
+.IP "" 2
+   --changed-group-format=\(aq\\begin{em}
+.IP "" 2
+%<\\end{em}
+.IP "" 2
+\\begin{bf}
+.IP "" 2
+%>\\end{bf}
+.IP "" 2
+\(aq \\
+.IP "" 2
+   myfile
+
+.PD
+.IP "" 0
+.SP
+Here is a more advanced example, which outputs a diff listing with
+headers containing line numbers in a \`\`plain English\(aq\(aq style.
+.SP
+.PD 0
+.SP
+.IP "" 2
+cvs diff \\
+.IP "" 2
+   --unchanged-group-format=\(aq\(aq \\
+.IP "" 2
+   --old-group-format=\(aq-------- %dn line%(n=1?:s) deleted at %df:
+.IP "" 2
+%<\(aq \\
+.IP "" 2
+   --new-group-format=\(aq-------- %dN line%(N=1?:s) added after %de:
+.IP "" 2
+%>\(aq \\
+.IP "" 2
+   --changed-group-format=\(aq-------- %dn line%(n=1?:s) changed at %df:
+.IP "" 2
+%<-------- to:
+.IP "" 2
+%>\(aq \\
+.IP "" 2
+   myfile
+
+.PD
+.IP "" 0
+.SP
+To specify a line group format, use one of the options
+listed below.  You can specify up to four line group formats, one for
+each kind of line group.  You should quote \fIformat\fR, because it
+typically contains shell metacharacters.
+.SP
+.IP "" 0
+\fB--old-group-format=\fIformat\fB\fR
+.IP "" 2
+These line groups are hunks containing only lines from the first file.
+The default old group format is the same as the changed group format if
+it is specified; otherwise it is a format that outputs the line group as-is.
+.SP
+.IP "" 0
+\fB--new-group-format=\fIformat\fB\fR
+.IP "" 2
+These line groups are hunks containing only lines from the second
+file.  The default new group format is same as the changed group
+format if it is specified; otherwise it is a format that outputs the
+line group as-is.
+.SP
+.IP "" 0
+\fB--changed-group-format=\fIformat\fB\fR
+.IP "" 2
+These line groups are hunks containing lines from both files.  The
+default changed group format is the concatenation of the old and new
+group formats.
+.SP
+.IP "" 0
+\fB--unchanged-group-format=\fIformat\fB\fR
+.IP "" 2
+These line groups contain lines common to both files.  The default
+unchanged group format is a format that outputs the line group as-is.
+.SP
+In a line group format, ordinary characters represent themselves;
+conversion specifications start with \fB%\fR and have one of the
+following forms.
+.SP
+.IP "" 0
+\fB%<\fR
+.IP "" 2
+stands for the lines from the first file, including the trailing newline.
+Each line is formatted according to the old line format (see node `Line 
formats\(aq in the CVS manual).
+.SP
+.IP "" 0
+\fB%>\fR
+.IP "" 2
+stands for the lines from the second file, including the trailing newline.
+Each line is formatted according to the new line format.
+.SP
+.IP "" 0
+\fB%=\fR
+.IP "" 2
+stands for the lines common to both files, including the trailing newline.
+Each line is formatted according to the unchanged line format.
+.SP
+.IP "" 0
+\fB%%\fR
+.IP "" 2
+stands for \fB%\fR.
+.SP
+.IP "" 0
+\fB%c\(aq\fIC\fB\(aq\fR
+.IP "" 2
+where \fIC\fR is a single character, stands for \fIC\fR.
+\fIC\fR may not be a backslash or an apostrophe.
+For example, \fB%c\(aq:\(aq\fR stands for a colon, even inside
+the then-part of an if-then-else format, which a colon would
+normally terminate.
+.SP
+.IP "" 0
+\fB%c\(aq\\\fIO\fB\(aq\fR
+.IP "" 2
+where \fIO\fR is a string of 1, 2, or 3 octal digits,
+stands for the character with octal code \fIO\fR.
+For example, \fB%c\(aq\\0\(aq\fR stands for a null character.
+.SP
+.IP "" 0
+\fB\fIF\fB\fIn\fB\fR
+.IP "" 2
+where \fIF\fR is a \fBprintf\fR conversion specification and \fIn\fR is one
+of the following letters, stands for \fIn\fR\(aqs value formatted with \fIF\fR.
+.SP
+.IP "" 2
+\fBe\fR
+.IP "" 4
+The line number of the line just before the group in the old file.
+.SP
+.IP "" 2
+\fBf\fR
+.IP "" 4
+The line number of the first line in the group in the old file;
+equals \fIe\fR + 1.
+.SP
+.IP "" 2
+\fBl\fR
+.IP "" 4
+The line number of the last line in the group in the old file.
+.SP
+.IP "" 2
+\fBm\fR
+.IP "" 4
+The line number of the line just after the group in the old file;
+equals \fIl\fR + 1.
+.SP
+.IP "" 2
+\fBn\fR
+.IP "" 4
+The number of lines in the group in the old file; equals \fIl\fR - \fIf\fR + 1.
+.SP
+.IP "" 2
+\fBE, F, L, M, N\fR
+.IP "" 4
+Likewise, for lines in the new file.
+.SP
+.SP
+The \fBprintf\fR conversion specification can be \fB%d\fR,
+\fB%o\fR, \fB%x\fR, or \fB%X\fR, specifying decimal, octal,
+lower case hexadecimal, or upper case hexadecimal output
+respectively.  After the \fB%\fR the following options can appear in
+sequence: a \fB-\fR specifying left-justification; an integer
+specifying the minimum field width; and a period followed by an
+optional integer specifying the minimum number of digits.
+For example, \fB%5dN\fR prints the number of new lines in the group
+in a field of width 5 characters, using the \fBprintf\fR format \fB"%5d"\fR.
+.SP
+.IP "" 0
+\fB(\fIA\fB=\fIB\fB?\fIT\fB:\fIE\fB)\fR
+.IP "" 2
+If \fIA\fR equals \fIB\fR then \fIT\fR else \fIE\fR.
+\fIA\fR and \fIB\fR are each either a decimal constant
+or a single letter interpreted as above.
+This format spec is equivalent to \fIT\fR if
+\fIA\fR\(aqs value equals \fIB\fR\(aqs; otherwise it is equivalent to \fIE\fR.
+.SP
+For example, \fB%(N=0?no:%dN) line%(N=1?:s)\fR is equivalent to
+\fBno lines\fR if \fIN\fR (the number of lines in the group in the
+new file) is 0, to \fB1 line\fR if \fIN\fR is 1, and to \fB%dN lines\fR
+otherwise.
+.SP
+.SH "Line formats"
+.SP
+Line formats control how each line taken from an input file is
+output as part of a line group in if-then-else format.
+.SP
+For example, the following command outputs text with a one-column
+change indicator to the left of the text.  The first column of output
+is \fB-\fR for deleted lines, \fB|\fR for added lines, and a space
+for unchanged lines.  The formats contain newline characters where
+newlines are desired on output.
+.SP
+.PD 0
+.SP
+.IP "" 2
+cvs diff \\
+.IP "" 2
+   --old-line-format=\(aq-%l
+.IP "" 2
+\(aq \\
+.IP "" 2
+   --new-line-format=\(aq|%l
+.IP "" 2
+\(aq \\
+.IP "" 2
+   --unchanged-line-format=\(aq %l
+.IP "" 2
+\(aq \\
+.IP "" 2
+   myfile
+
+.PD
+.IP "" 0
+.SP
+To specify a line format, use one of the following options.  You should
+quote \fIformat\fR, since it often contains shell metacharacters.
+.SP
+.IP "" 0
+\fB--old-line-format=\fIformat\fB\fR
+.IP "" 2
+formats lines just from the first file.
+.SP
+.IP "" 0
+\fB--new-line-format=\fIformat\fB\fR
+.IP "" 2
+formats lines just from the second file.
+.SP
+.IP "" 0
+\fB--unchanged-line-format=\fIformat\fB\fR
+.IP "" 2
+formats lines common to both files.
+.SP
+.IP "" 0
+\fB--line-format=\fIformat\fB\fR
+.IP "" 2
+formats all lines; in effect, it sets all three above options simultaneously.
+.SP
+In a line format, ordinary characters represent themselves;
+conversion specifications start with \fB%\fR and have one of the
+following forms.
+.SP
+.IP "" 0
+\fB%l\fR
+.IP "" 2
+stands for the contents of the line, not counting its trailing
+newline (if any).  This format ignores whether the line is incomplete.
+.SP
+.IP "" 0
+\fB%L\fR
+.IP "" 2
+stands for the contents of the line, including its trailing newline
+(if any).  If a line is incomplete, this format preserves its
+incompleteness.
+.SP
+.IP "" 0
+\fB%%\fR
+.IP "" 2
+stands for \fB%\fR.
+.SP
+.IP "" 0
+\fB%c\(aq\fIC\fB\(aq\fR
+.IP "" 2
+where \fIC\fR is a single character, stands for \fIC\fR.
+\fIC\fR may not be a backslash or an apostrophe.
+For example, \fB%c\(aq:\(aq\fR stands for a colon.
+.SP
+.IP "" 0
+\fB%c\(aq\\\fIO\fB\(aq\fR
+.IP "" 2
+where \fIO\fR is a string of 1, 2, or 3 octal digits,
+stands for the character with octal code \fIO\fR.
+For example, \fB%c\(aq\\0\(aq\fR stands for a null character.
+.SP
+.IP "" 0
+\fB\fIF\fBn\fR
+.IP "" 2
+where \fIF\fR is a \fBprintf\fR conversion specification,
+stands for the line number formatted with \fIF\fR.
+For example, \fB%.5dn\fR prints the line number using the
+\fBprintf\fR format \fB"%.5d"\fR.  see node `Line group formats\(aq in the CVS 
manual, for
+more about printf conversion specifications.
+.SP
+.SP
+The default line format is \fB%l\fR followed by a newline character.
+.SP
+If the input contains tab characters and it is important that they line
+up on output, you should ensure that \fB%l\fR or \fB%L\fR in a line
+format is just after a tab stop (e.g. by preceding \fB%l\fR or
+\fB%L\fR with a tab character), or you should use the \fB-t\fR or
+\fB--expand-tabs\fR option.
+.SP
+Taken together, the line and line group formats let you specify many
+different formats.  For example, the following command uses a format
+similar to \fBdiff\fR\(aqs normal format.  You can tailor this command
+to get fine control over \fBdiff\fR\(aqs output.
+.SP
+.PD 0
+.SP
+.IP "" 2
+cvs diff \\
+.IP "" 2
+   --old-line-format=\(aq< %l
+.IP "" 2
+\(aq \\
+.IP "" 2
+   --new-line-format=\(aq> %l
+.IP "" 2
+\(aq \\
+.IP "" 2
+   --old-group-format=\(aq%df%(f=l?:,%dl)d%dE
+.IP "" 2
+%<\(aq \\
+.IP "" 2
+   --new-group-format=\(aq%dea%dF%(F=L?:,%dL)
+.IP "" 2
+%>\(aq \\
+.IP "" 2
+   --changed-group-format=\(aq%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
+.IP "" 2
+%<\(em
+.IP "" 2
+%>\(aq \\
+.IP "" 2
+   --unchanged-group-format=\(aq\(aq \\
+.IP "" 2
+   myfile
+
+.PD
+.IP "" 0
+.SP
+.SH "diff examples"
+.SP
+The following line produces a Unidiff (\fB-u\fR flag)
+between revision 1.14 and 1.19 of
+\fBbackend.c\fR.  Due to the \fB-kk\fR flag no
+keywords are substituted, so differences that only depend
+on keyword substitution are ignored.
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs diff -kk -u -r 1.14 -r 1.19 backend.c
+
+.PD
+.IP "" 0
+.SP
+Suppose the experimental branch EXPR1 was based on a
+set of files tagged RELEASE_1_0.  To see what has
+happened on that branch, the following can be used:
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs diff -r RELEASE_1_0 -r EXPR1
+
+.PD
+.IP "" 0
+.SP
+A command like this can be used to produce a context
+diff between two releases:
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs
+
+.PD
+.IP "" 0
+.SP
+If you are maintaining ChangeLogs, a command like the following
+just before you commit your changes may help you write
+the ChangeLog entry.  All local modifications that have
+not yet been committed will be printed.
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs diff -u | less
+
+.PD
+.IP "" 0
+.SP
+.SH "export"
+.SS "Export sources from CVS, similar to checkout"
+.IX "export (subcommand)"
+.SP
+.IP "\(bu" 2
+Synopsis: export [-flNnR] (-r rev[:date] | -D date) [-k subst] [-d dir] 
module\&...
+.IP "\(bu" 2
+Requires: repository.
+.IP "\(bu" 2
+Changes: current directory.
+.SP
+This command is a variant of \fBcheckout\fR; use it
+when you want a copy of the source for module without
+the \fBcvs\fR administrative directories.  For example, you
+might use \fBexport\fR to prepare source for shipment
+off-site.  This command requires that you specify a
+date or tag (with \fB-D\fR or \fB-r\fR), so that you
+can count on reproducing the source you ship to others
+(and thus it always prunes empty directories).
+.SP
+One often would like to use \fB-kv\fR with \fBcvs
+export\fR.  This causes any keywords to be
+expanded such that an import done at some other site
+will not lose the keyword revision information.  But be
+aware that doesn\(aqt handle an export containing binary
+files correctly.  Also be aware that after having used
+\fB-kv\fR, one can no longer use the \fBident\fR
+command (which is part of the \fBrcs\fR suite\(emsee
+ident(1)) which looks for keyword strings.  If
+you want to be able to use \fBident\fR you must not
+use \fB-kv\fR.
+.SP
+.SH "export options"
+.SP
+These standard options are supported by \fBexport\fR
+(see node `Common options\(aq in the CVS manual, for a complete description of
+them):
+.SP
+.IP "" 0
+\fB-D \fIdate\fB\fR
+.IP "" 2
+Use the most recent revision no later than \fIdate\fR.
+.SP
+.IP "" 0
+\fB-f\fR
+.IP "" 2
+If no matching revision is found, retrieve the most
+recent revision (instead of ignoring the file).
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Local; run only in current working directory.
+.SP
+.IP "" 0
+\fB-n\fR
+.IP "" 2
+Do not run any checkout program.
+.SP
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+Export directories recursively.  This is on by default.
+.SP
+.IP "" 0
+\fB-r \fItag\fB[:\fIdate\fB]\fR
+.IP "" 2
+Export the revision specified by \fItag\fR or, when \fIdate\fR is specified
+and \fItag\fR is a branch tag, the version from the branch \fItag\fR as it
+existed on \fIdate\fR.  See see node `Common options\(aq in the CVS manual.
+.SP
+In addition, these options (that are common to
+\fBcheckout\fR and \fBexport\fR) are also supported:
+.SP
+.IP "" 0
+\fB-d \fIdir\fB\fR
+.IP "" 2
+Create a directory called \fIdir\fR for the working
+files, instead of using the module name.
+see node `checkout options\(aq in the CVS manual, for complete details on how
+\fBcvs\fR handles this flag.
+.SP
+.IP "" 0
+\fB-k \fIsubst\fB\fR
+.IP "" 2
+Set keyword expansion mode (see node `Substitution modes\(aq in the CVS 
manual).
+.SP
+.IP "" 0
+\fB-N\fR
+.IP "" 2
+Only useful together with \fB-d \fIdir\fB\fR.
+see node `checkout options\(aq in the CVS manual, for complete details on how
+\fBcvs\fR handles this flag.
+.SP
+.SH "history"
+.SS "Show status of files and users"
+.IX "history (subcommand)"
+.SP
+.IP "\(bu" 2
+Synopsis:     history [-report] [-flags] [-options args] [files\&...]
+.IP "\(bu" 2
+Requires: the file \fB$CVSROOT/CVSROOT/history\fR
+.IP "\(bu" 2
+Changes: nothing.
+.SP
+\fBcvs\fR can keep a history log that tracks each use of most \fBcvs\fR
+commands.  You can use \fBhistory\fR to display this information in
+various formats.
+.SP
+To enable logging, the \fBLogHistory\fR config option must be set to
+some value other than the empty string and the history file specified by
+the \fBHistoryLogPath\fR option must be writable by all users who may run
+the \fBcvs\fR executable (see node `config\(aq in the CVS manual).
+.SP
+To enable the \fBhistory\fR command, logging must be enabled as above and
+the \fBHistorySearchPath\fR config option (see node `config\(aq in the CVS 
manual) must be set to
+specify some number of the history logs created thereby and these files must
+be readable by each user who might run the \fBhistory\fR command.
+.SP
+Creating a repository via the \fBcvs init\fR command will enable logging of
+all possible events to a single history log file
+(\fB$CVSROOT/CVSROOT/history\fR) with read and write permissions for all
+users (see node `Creating a repository\(aq in the CVS manual).
+.SP
+\fBNote: \fBhistory\fB uses \fB-f\fB, \fB-l\fB,
+\fB-n\fB, and \fB-p\fB in ways that conflict with the
+normal use inside \fBcvs\fB (see node `Common options\(aq in the CVS 
manual).\fR
+.SP
+.SH "history options"
+.SP
+Several options (shown above as \fB-report\fR)  control  what
+kind of report is generated:
+.SP
+.IP "" 0
+\fB-c\fR
+.IP "" 2
+Report on each time commit was used (i.e., each time
+the repository was modified).
+.SP
+.IP "" 0
+\fB-e\fR
+.IP "" 2
+Everything (all record types).  Equivalent to
+specifying \fB-x\fR with all record types.  Of course,
+\fB-e\fR will also include record types which are
+added in a future version of \fBcvs\fR; if you are
+writing a script which can only handle certain record
+types, you\(aqll want to specify \fB-x\fR.
+.SP
+.IP "" 0
+\fB-m \fImodule\fB\fR
+.IP "" 2
+Report on a particular module.  (You can meaningfully
+use \fB-m\fR more than once on the command line.)
+.SP
+.IP "" 0
+\fB-o\fR
+.IP "" 2
+Report on checked-out modules.  This is the default report type.
+.SP
+.IP "" 0
+\fB-T\fR
+.IP "" 2
+Report on all tags.
+.SP
+.IP "" 0
+\fB-x \fItype\fB\fR
+.IP "" 2
+Extract a particular set of record types \fItype\fR from the \fBcvs\fR
+history.  The types are indicated by single letters,
+which you may specify in combination.
+.SP
+Certain commands have a single record type:
+.SP
+.IP "" 2
+\fBF\fR
+.IP "" 4
+release
+.IP "" 2
+\fBO\fR
+.IP "" 4
+checkout
+.IP "" 2
+\fBE\fR
+.IP "" 4
+export
+.IP "" 2
+\fBT\fR
+.IP "" 4
+rtag
+.SP
+One of five record types may result from an update:
+.SP
+.IP "" 2
+\fBC\fR
+.IP "" 4
+A merge was necessary but collisions were
+detected (requiring manual merging).
+.IP "" 2
+\fBG\fR
+.IP "" 4
+A merge was necessary and it succeeded.
+.IP "" 2
+\fBU\fR
+.IP "" 4
+A working file was copied from the repository.
+.IP "" 2
+\fBP\fR
+.IP "" 4
+A working file was patched to match the repository.
+.IP "" 2
+\fBW\fR
+.IP "" 4
+The working copy of a file was deleted during
+update (because it was gone from the repository).
+.SP
+One of three record types results from commit:
+.SP
+.IP "" 2
+\fBA\fR
+.IP "" 4
+A file was added for the first time.
+.IP "" 2
+\fBM\fR
+.IP "" 4
+A file was modified.
+.IP "" 2
+\fBR\fR
+.IP "" 4
+A file was removed.
+.SP
+The options shown as \fB-flags\fR constrain or expand
+the report without requiring option arguments:
+.SP
+.IP "" 0
+\fB-a\fR
+.IP "" 2
+Show data for all users (the default is to show data
+only for the user executing \fBhistory\fR).
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Show last modification only.
+.SP
+.IP "" 0
+\fB-w\fR
+.IP "" 2
+Show only the records for modifications done from the
+same working directory where \fBhistory\fR is
+executing.
+.SP
+The options shown as \fB-options \fIargs\fB\fR constrain the report
+based on an argument:
+.SP
+.IP "" 0
+\fB-b \fIstr\fB\fR
+.IP "" 2
+Show data back to a record containing  the  string
+\fIstr\fR  in  either the module name, the file name, or
+the repository path.
+.SP
+.IP "" 0
+\fB-D \fIdate\fB\fR
+.IP "" 2
+Show data since \fIdate\fR.  This is slightly different
+from the normal use of \fB-D \fIdate\fB\fR, which
+selects the newest revision older than \fIdate\fR.
+.SP
+.IP "" 0
+\fB-f \fIfile\fB\fR
+.IP "" 2
+Show data for a particular file
+(you can specify several \fB-f\fR options on the same command line).
+This is equivalent to specifying the file on the command line.
+.SP
+.IP "" 0
+\fB-n \fImodule\fB\fR
+.IP "" 2
+Show data for a particular module
+(you can specify several \fB-n\fR options on the same command line).
+.SP
+.IP "" 0
+\fB-p \fIrepository\fB\fR
+.IP "" 2
+Show data for a particular source repository  (you
+can specify several \fB-p\fR options on the same command
+line).
+.SP
+.IP "" 0
+\fB-r \fIrev\fB\fR
+.IP "" 2
+Show records referring to revisions since the revision
+or tag named \fIrev\fR appears in individual \fBrcs\fR
+files.  Each \fBrcs\fR file is searched for the revision or
+tag.
+.SP
+.IP "" 0
+\fB-t \fItag\fB\fR
+.IP "" 2
+Show records since tag \fItag\fR was last added to the
+history file.  This differs from the \fB-r\fR flag
+above in that it reads only the history file, not the
+\fBrcs\fR files, and is much faster.
+.SP
+.IP "" 0
+\fB-u \fIname\fB\fR
+.IP "" 2
+Show records for user \fIname\fR.
+.SP
+.IP "" 0
+\fB-z \fItimezone\fB\fR
+.IP "" 2
+Show times in the selected records using the specified
+time zone instead of UTC.
+.SP
+.SH "import"
+.SS "Import sources into CVS, using vendor branches"
+.IX "import (subcommand)"
+.SP
+.IP "\(bu" 2
+Synopsis: import [-options] repository vendortag releasetag\&...
+.IP "\(bu" 2
+Requires: Repository, source distribution directory.
+.IP "\(bu" 2
+Changes: repository.
+.SP
+Use \fBimport\fR to incorporate an entire source
+distribution from an outside source (e.g., a source
+vendor) into your source repository directory.  You can
+use this command both for initial creation of a
+repository, and for wholesale updates to the module
+from the outside source.  see node `Tracking sources\(aq in the CVS manual, for
+a discussion on this subject.
+.SP
+The \fIrepository\fR argument gives a directory name
+(or a path to a directory) under the \fBcvs\fR root directory
+for repositories; if the directory did not exist,
+import creates it.
+.SP
+When you use import for updates to source that has been
+modified in your source repository (since a prior
+import), it will notify you of any files that conflict
+in the two branches of development; use \fBcheckout
+-j\fR to reconcile the differences, as import instructs
+you to do.
+.SP
+If \fBcvs\fR decides a file should be ignored
+(see node `cvsignore\(aq in the CVS manual), it does not import it and prints
+\fBI \fR followed by the filename (see node `import output\(aq in the CVS 
manual, for a
+complete description of the output).
+.SP
+If the file \fB$CVSROOT/CVSROOT/cvswrappers\fR exists,
+any file whose names match the specifications in that
+file will be treated as packages and the appropriate
+filtering will be performed on the file/directory
+before being imported.  see node `Wrappers\(aq in the CVS manual.
+.SP
+The outside source is saved in a first-level
+branch, by default 1.1.1.  Updates are leaves of this
+branch; for example, files from the first imported
+collection of source will be revision 1.1.1.1, then
+files from the first imported update will be revision
+1.1.1.2, and so on.
+.SP
+At least three arguments are required.
+\fIrepository\fR is needed to identify the collection
+of source.  \fIvendortag\fR is a tag for the entire
+branch (e.g., for 1.1.1).  You must also specify at
+least one \fIreleasetag\fR to uniquely identify the files at
+the leaves created each time you execute \fBimport\fR.  The
+\fIreleasetag\fR should be new, not previously existing in the
+repository file, and uniquely identify the imported release,
+.SP
+Note that \fBimport\fR does \fInot\fR change the
+directory in which you invoke it.  In particular, it
+does not set up that directory as a \fBcvs\fR working
+directory; if you want to work with the sources import
+them first and then check them out into a different
+directory (see node `Getting the source\(aq in the CVS manual).
+.SP
+.SH "import options"
+.SP
+This standard option is supported by \fBimport\fR
+(see node `Common options\(aq in the CVS manual, for a complete description):
+.SP
+.IP "" 0
+\fB-m \fImessage\fB\fR
+.IP "" 2
+Use \fImessage\fR as log information, instead of
+invoking an editor.
+.SP
+There are the following additional special options.
+.SP
+.IP "" 0
+\fB-b \fIbranch\fB\fR
+.IP "" 2
+See see node `Multiple vendor branches\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-k \fIsubst\fB\fR
+.IP "" 2
+Indicate the keyword expansion mode desired.  This
+setting will apply to all files created during the
+import, but not to any files that previously existed in
+the repository.  See see node `Substitution modes\(aq in the CVS manual, for a
+list of valid \fB-k\fR settings.
+.SP
+.IP "" 0
+\fB-I \fIname\fB\fR
+.IP "" 2
+Specify file names that should be ignored during
+import.  You can use this option repeatedly.  To avoid
+ignoring any files at all (even those ignored by
+default), specify \`-I !\(aq.
+.SP
+\fIname\fR can be a file name pattern of the same type
+that you can specify in the \fB.cvsignore\fR file.
+see node `cvsignore\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-W \fIspec\fB\fR
+.IP "" 2
+Specify file names that should be filtered during
+import.  You can use this option repeatedly.
+.SP
+\fIspec\fR can be a file name pattern of the same type
+that you can specify in the \fB.cvswrappers\fR
+file. see node `Wrappers\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-X\fR
+.IP "" 2
+Modify the algorithm used by \fBcvs\fR when importing new files
+so that new files do not immediately appear on the main trunk.
+.SP
+Specifically, this flag causes \fBcvs\fR to mark new files as
+if they were deleted on the main trunk, by taking the following
+steps for each file in addition to those normally taken on import:
+creating a new revision on the main trunk indicating that
+the new file is \fBdead\fR, resetting the new file\(aqs default branch,
+and placing the file in the Attic (see node `Attic\(aq in the CVS manual) 
directory.
+.SP
+Use of this option can be forced on a repository-wide basis
+by setting the \fBImportNewFilesToVendorBranchOnly\fR option in
+CVSROOT/config (see node `config\(aq in the CVS manual).
+.SP
+.SH "import output"
+.SP
+\fBimport\fR keeps you informed of its progress by printing a line
+for each file, preceded by one character indicating the status of the file:
+.SP
+.IP "" 0
+\fBU \fIfile\fB\fR
+.IP "" 2
+The file already exists in the repository and has not been locally
+modified; a new revision has been created (if necessary).
+.SP
+.IP "" 0
+\fBN \fIfile\fB\fR
+.IP "" 2
+The file is a new file which has been added to the repository.
+.SP
+.IP "" 0
+\fBC \fIfile\fB\fR
+.IP "" 2
+The file already exists in the repository but has been locally modified;
+you will have to merge the changes.
+.SP
+.IP "" 0
+\fBI \fIfile\fB\fR
+.IP "" 2
+The file is being ignored (see node `cvsignore\(aq in the CVS manual).
+.SP
+.IX "Symbolic link, importing"
+.IX "Link, symbolic, importing"
+.IP "" 0
+\fBL \fIfile\fB\fR
+.IP "" 2
+The file is a symbolic link; \fBcvs import\fR ignores symbolic links.
+People periodically suggest that this behavior should
+be changed, but if there is a consensus on what it
+should be changed to, it is not apparent.
+(Various options in the \fBmodules\fR file can be used
+to recreate symbolic links on checkout, update, etc.;
+see node `modules\(aq in the CVS manual.)
+.SP
+.SH "import examples"
+.SP
+See see node `Tracking sources\(aq in the CVS manual, and see node `From 
files\(aq in the CVS manual.
+.SP
+.SH "log"
+.SS "Print out log information for files"
+.IX "log (subcommand)"
+.SP
+.IP "\(bu" 2
+Synopsis: log [options] [files\&...]
+.IP "\(bu" 2
+Requires: repository, working directory.
+.IP "\(bu" 2
+Changes: nothing.
+.SP
+Display log information for files.  \fBlog\fR used to
+call the \fBrcs\fR utility \fBrlog\fR.  Although this
+is no longer true in the current sources, this history
+determines the format of the output and the options,
+which are not quite in the style of the other \fBcvs\fR
+commands.
+.SP
+.IX "Timezone, in output"
+.IX "Zone, time, in output"
+The output includes the location of the \fBrcs\fR file,
+the \fIhead\fR revision (the latest revision on the
+trunk), all symbolic names (tags) and some other
+things.  For each revision, the revision number, the
+date, the author, the number of lines added/deleted, the commitid
+and the log message are printed.  All dates are displayed
+in local time at the client. This is typically specified in
+the \fB$TZ\fR environment variable, which can be set to
+govern how \fBlog\fR displays dates.
+.SP
+\fBNote: \fBlog\fB uses \fB-R\fB in a way that conflicts
+with the normal use inside \fBcvs\fB (see node `Common options\(aq in the CVS 
manual).\fR
+.SP
+.SH "log options"
+.SP
+By default, \fBlog\fR prints all information that is
+available.  All other options restrict the output.  Note that the revision
+selection options (\fB-d\fR, \fB-r\fR, \fB-s\fR, and \fB-w\fR) have no
+effect, other than possibly causing a search for files in Attic directories,
+when used in conjunction with the options that restrict the output to only
+\fBlog\fR header fields (\fB-b\fR, \fB-h\fR, \fB-R\fR, and \fB-t\fR)
+unless the \fB-S\fR option is also specified.
+.SP
+.IP "" 0
+\fB-b\fR
+.IP "" 2
+Print information about the revisions on the default
+branch, normally the highest branch on the trunk.
+.SP
+.IP "" 0
+\fB-d \fIdates\fB\fR
+.IP "" 2
+Print information about revisions with a checkin
+date/time in the range given by the
+semicolon-separated list of dates.  The date formats
+accepted are those accepted by the \fB-D\fR option to
+many other \fBcvs\fR commands (see node `Common options\(aq in the CVS manual).
+Dates can be combined into ranges as follows:
+.SP
+.IP "" 2
+\fB\fId1\fB<\fId2\fB\fR
+.IP "" 4
+.IP "" 2
+\fB\fId2\fB>\fId1\fB\fR
+.IP "" 4
+Select the revisions that were deposited between
+\fId1\fR and \fId2\fR.
+.SP
+.IP "" 2
+\fB<\fId\fB\fR
+.IP "" 4
+.IP "" 2
+\fB\fId\fB>\fR
+.IP "" 4
+Select all revisions dated \fId\fR or earlier.
+.SP
+.IP "" 2
+\fB\fId\fB<\fR
+.IP "" 4
+.IP "" 2
+\fB>\fId\fB\fR
+.IP "" 4
+Select all revisions dated \fId\fR or later.
+.SP
+.IP "" 2
+\fB\fId\fB\fR
+.IP "" 4
+Select the single, latest revision dated \fId\fR or
+earlier.
+.SP
+The \fB>\fR or \fB<\fR characters may be followed by
+\fB=\fR to indicate an inclusive range rather than an
+exclusive one.
+.SP
+Note that the separator is a semicolon (;).
+.SP
+.IP "" 0
+\fB-h\fR
+.IP "" 2
+Print only the name of the \fBrcs\fR file, name
+of the file in the working directory, head,
+default branch, access list, locks, symbolic names, and
+suffix.
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Local; run only in current working directory.  (Default
+is to run recursively).
+.SP
+.IP "" 0
+\fB-N\fR
+.IP "" 2
+Do not print the list of tags for this file.  This
+option can be very useful when your site uses a lot of
+tags, so rather than "more"\(aqing over 3 pages of tag
+information, the log information is presented without
+tags at all.
+.SP
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+Print only the name of the \fBrcs\fR file.
+.SP
+.IP "" 0
+\fB-r\fIrevisions\fB\fR
+.IP "" 2
+Print information about revisions given in the
+comma-separated list \fIrevisions\fR of revisions and
+ranges.  The following table explains the available
+range formats:
+.SP
+.IP "" 2
+\fB\fIrev1\fB:\fIrev2\fB\fR
+.IP "" 4
+Revisions \fIrev1\fR to \fIrev2\fR (which must be on
+the same branch).
+.SP
+.IP "" 2
+\fB\fIrev1\fB::\fIrev2\fB\fR
+.IP "" 4
+The same, but excluding \fIrev1\fR.
+.SP
+.IP "" 2
+\fB:\fIrev\fB\fR
+.IP "" 4
+.IP "" 2
+\fB::\fIrev\fB\fR
+.IP "" 4
+Revisions from the beginning of the branch up to
+and including \fIrev\fR.
+.SP
+.IP "" 2
+\fB\fIrev\fB:\fR
+.IP "" 4
+Revisions starting with \fIrev\fR to the end of the
+branch containing \fIrev\fR.
+.SP
+.IP "" 2
+\fB\fIrev\fB::\fR
+.IP "" 4
+Revisions starting just after \fIrev\fR to the end of the
+branch containing \fIrev\fR.
+.SP
+.IP "" 2
+\fB\fIbranch\fB\fR
+.IP "" 4
+An argument that is a branch means all revisions on
+that branch.
+.SP
+.IP "" 2
+\fB\fIbranch1\fB:\fIbranch2\fB\fR
+.IP "" 4
+.IP "" 2
+\fB\fIbranch1\fB::\fIbranch2\fB\fR
+.IP "" 4
+A range of branches means all revisions
+on the branches in that range.
+.SP
+.IP "" 2
+\fB\fIbranch\fB.\fR
+.IP "" 4
+The latest revision in \fIbranch\fR.
+.SP
+A bare \fB-r\fR with no revisions means the latest
+revision on the default branch, normally the trunk.
+There can be no space between the \fB-r\fR option and
+its argument.
+.SP
+.IP "" 0
+\fB-S\fR
+.IP "" 2
+Suppress the header if no revisions are selected.
+.SP
+.IP "" 0
+\fB-s \fIstates\fB\fR
+.IP "" 2
+Print information about revisions whose state
+attributes match one of the states given in the
+comma-separated list \fIstates\fR.  Individual states may
+be any text string, though \fBcvs\fR commonly only uses two
+states, \fBExp\fR and \fBdead\fR.  See see node `admin options\(aq in the CVS 
manual
+for more information.
+.SP
+.IP "" 0
+\fB-t\fR
+.IP "" 2
+Print the same as \fB-h\fR, plus the descriptive text.
+.SP
+.IP "" 0
+\fB-w\fIlogins\fB\fR
+.IP "" 2
+Print information about revisions checked in by users
+with login names appearing in the comma-separated list
+\fIlogins\fR.  If \fIlogins\fR is omitted, the user\(aqs
+login is assumed.  There can be no space between the
+\fB-w\fR option and its argument.
+.SP
+\fBlog\fR prints the intersection of the revisions
+selected with the options \fB-d\fR, \fB-s\fR, and
+\fB-w\fR, intersected with the union of the revisions
+selected by \fB-b\fR and \fB-r\fR.
+.SP
+.SH "log examples"
+.SP
+.IX "Timezone, in output"
+.IX "Zone, time, in output"
+Since \fBlog\fR shows dates in local time,
+you might want to see them in Coordinated Universal Time (UTC) or
+some other timezone.
+To do this you can set your \fB$TZ\fR environment
+variable before invoking \fBcvs\fR:
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ TZ=UTC cvs log foo.c
+.IP "" 2
+$ TZ=EST cvs log bar.c
+
+.PD
+.IP "" 0
+.SP
+(If you are using a \fBcsh\fR-style shell, like \fBtcsh\fR,
+you would need to prefix the examples above with \fBenv\fR.)
+.SP
+.SH "ls & rls"
+.IX "ls (subcommand)"
+.IX "rls (subcommand)"
+.SP
+.IP "\(bu" 2
+ls [-e | -l] [-RP] [-r tag[:date]] [-D date] [path\&...]
+.IP "\(bu" 2
+Requires: repository for \fBrls\fR, repository & working directory for
+\fBls\fR.
+.IP "\(bu" 2
+Changes: nothing.
+.IP "\(bu" 2
+Synonym: \fBdir\fR & \fBlist\fR are synonyms for \fBls\fR and \fBrdir\fR
+& \fBrlist\fR are synonyms for \fBrls\fR.
+.SP
+The \fBls\fR and \fBrls\fR commands are used to list
+files and directories in the repository.
+.SP
+By default \fBls\fR lists the files and directories
+that belong in your working directory, what would be
+there after an \fBupdate\fR.
+.SP
+By default \fBrls\fR lists the files and directories
+on the tip of the trunk in the topmost directory of the
+repository.
+.SP
+Both commands accept an optional list of file and
+directory names, relative to the working directory for
+\fBls\fR and the topmost directory of the repository
+for \fBrls\fR.  Neither is recursive by default.
+.SP
+.SH "ls & rls options"
+.SP
+These standard options are supported by \fBls\fR & \fBrls\fR:
+.SP
+.IP "" 0
+\fB-d\fR
+.IP "" 2
+Show dead revisions (with tag when specified).
+.SP
+.IP "" 0
+\fB-e\fR
+.IP "" 2
+Display in CVS/Entries format.  This format is meant to remain easily parsable
+by automation.
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Display all details.
+.SP
+.IP "" 0
+\fB-P\fR
+.IP "" 2
+Don\(aqt list contents of empty directories when recursing.
+.SP
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+List recursively.
+.SP
+.IP "" 0
+\fB-r \fItag\fB[:\fIdate\fB]\fR
+.IP "" 2
+Show files specified by \fItag\fR or, when \fIdate\fR is specified
+and \fItag\fR is a branch tag, the version from the branch \fItag\fR as it
+existed on \fIdate\fR.  See see node `Common options\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-D \fIdate\fB\fR
+.IP "" 2
+Show files from date.
+.SP
+.SH "rls examples"
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs rls
+.IP "" 2
+cvs rls: Listing module: \`.\(aq
+.IP "" 2
+CVSROOT
+.IP "" 2
+first-dir
+
+.PD
+.IP "" 0
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs rls CVSROOT
+.IP "" 2
+cvs rls: Listing module: \`CVSROOT\(aq
+.IP "" 2
+checkoutlist
+.IP "" 2
+commitinfo
+.IP "" 2
+config
+.IP "" 2
+cvswrappers
+.IP "" 2
+loginfo
+.IP "" 2
+modules
+.IP "" 2
+notify
+.IP "" 2
+rcsinfo
+.IP "" 2
+taginfo
+.IP "" 2
+verifymsg
+.SP
+
+.PD
+.IP "" 0
+.SP
+.SH "rdiff"
+.SS "\(aqpatch\(aq format diffs between releases"
+.IX "rdiff (subcommand)"
+.SP
+.IP "\(bu" 2
+rdiff [-flags] [-V vn] (-r tag1[:date1] | -D date1) [-r tag2[:date2] | -D 
date2] modules\&...
+.IP "\(bu" 2
+Requires: repository.
+.IP "\(bu" 2
+Changes: nothing.
+.IP "\(bu" 2
+Synonym: patch
+.SP
+Builds a Larry Wall format patch(1) file between two
+releases, that can be fed directly into the \fBpatch\fR
+program to bring an old release up-to-date with the new
+release.  (This is one of the few \fBcvs\fR commands that
+operates directly from the repository, and doesn\(aqt
+require a prior checkout.) The diff output is sent to
+the standard output device.
+.SP
+You can specify (using the standard \fB-r\fR and
+\fB-D\fR options) any combination of one or two
+revisions or dates.  If only one revision or date is
+specified, the patch file reflects differences between
+that revision or date and the current head revisions in
+the \fBrcs\fR file.
+.SP
+Note that if the software release affected is contained
+in more than one directory, then it may be necessary to
+specify the \fB-p\fR option to the \fBpatch\fR command when
+patching the old sources, so that \fBpatch\fR is able to find
+the files that are located in other directories.
+.SP
+.SH "rdiff options"
+.SP
+These standard options are supported by \fBrdiff\fR
+(see node `Common options\(aq in the CVS manual, for a complete description of
+them):
+.SP
+.IP "" 0
+\fB-D \fIdate\fB\fR
+.IP "" 2
+Use the most recent revision no later than \fIdate\fR.
+.SP
+.IP "" 0
+\fB-f\fR
+.IP "" 2
+If no matching revision is found, retrieve the most
+recent revision (instead of ignoring the file).
+.SP
+.IP "" 0
+\fB-k \fIkflag\fB\fR
+.IP "" 2
+Process keywords according to \fIkflag\fR.  See
+see node `Keyword substitution\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Local; don\(aqt descend subdirectories.
+.SP
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+Examine directories recursively.  This option is on by default.
+.SP
+.IP "" 0
+\fB-r \fItag\fB\fR
+.IP "" 2
+Use the revision specified by \fItag\fR, or when \fIdate\fR is specified
+and \fItag\fR is a branch tag, the version from the branch \fItag\fR as it
+existed on \fIdate\fR.  See see node `Common options\(aq in the CVS manual.
+.SP
+In addition to the above, these options are available:
+.SP
+.IP "" 0
+\fB-c\fR
+.IP "" 2
+Use the context diff format.  This is the default format.
+.SP
+.IP "" 0
+\fB-s\fR
+.IP "" 2
+Create a summary change report instead of a patch.  The
+summary includes information about files that were
+changed or added between the releases.  It is sent to
+the standard output device.  This is useful for finding
+out, for example, which files have changed between two
+dates or revisions.
+.SP
+.IP "" 0
+\fB-t\fR
+.IP "" 2
+A diff of the top two revisions is sent to the standard
+output device.  This is most useful for seeing what the
+last change to a file was.
+.SP
+.IP "" 0
+\fB-u\fR
+.IP "" 2
+Use the unidiff format for the context diffs.
+Remember that old versions
+of the \fBpatch\fR program can\(aqt handle the unidiff
+format, so if you plan to post this patch to the net
+you should probably not use \fB-u\fR.
+.SP
+.IP "" 0
+\fB-V \fIvn\fB\fR
+.IP "" 2
+Expand keywords according to the rules current in
+\fBrcs\fR version \fIvn\fR (the expansion format changed with
+\fBrcs\fR version 5).  Note that this option is no
+longer accepted.  \fBcvs\fR will always expand keywords the
+way that \fBrcs\fR version 5 does.
+.SP
+.SH "rdiff examples"
+.SP
+Suppose you receive mail from address@hidden asking for an
+update from release 1.2 to 1.4 of the tc compiler.  You
+have no such patches on hand, but with \fBcvs\fR that can
+easily be fixed with a command such as this:
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs rdiff -c -r FOO1_2 -r FOO1_4 tc | \\
+.IP "" 2
+$$ Mail -s \(aqThe patches you asked for\(aq address@hidden
+
+.PD
+.IP "" 0
+.SP
+Suppose you have made release 1.3, and forked a branch
+called \fBR_1_3fix\fR for bug fixes.  \fBR_1_3_1\fR
+corresponds to release 1.3.1, which was made some time
+ago.  Now, you want to see how much development has been
+done on the branch.  This command can be used:
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cvs patch -s -r R_1_3_1 -r R_1_3fix module-name
+.IP "" 2
+cvs rdiff: Diffing module-name
+.IP "" 2
+File ChangeLog,v changed from revision 1.52.2.5 to 1.52.2.6
+.IP "" 2
+File foo.c,v changed from revision 1.52.2.3 to 1.52.2.4
+.IP "" 2
+File bar.h,v changed from revision 1.29.2.1 to 1.2
+
+.PD
+.IP "" 0
+.SP
+.SH "release"
+.SS "Indicate that a Module is no longer in use"
+.IX "release (subcommand)"
+.SP
+.IP "\(bu" 2
+release [-d] directories\&...
+.IP "\(bu" 2
+Requires: Working directory.
+.IP "\(bu" 2
+Changes: Working directory, history log.
+.SP
+This command is meant to safely cancel the effect of
+\fBcvs checkout\fR.  Since \fBcvs\fR doesn\(aqt lock files, it
+isn\(aqt strictly necessary to use this command.  You can
+always simply delete your working directory, if you
+like; but you risk losing changes you may have
+forgotten, and you leave no trace in the \fBcvs\fR history
+file (see node `history file\(aq in the CVS manual) that you\(aqve abandoned 
your
+checkout.
+.SP
+Use \fBcvs release\fR to avoid these problems.  This
+command checks that no uncommitted changes are
+present; that you are executing it from immediately
+above a \fBcvs\fR working directory; and that the repository
+recorded for your files is the same as the repository
+defined in the module database.
+.SP
+If all these conditions are true, \fBcvs release\fR
+leaves a record of its execution (attesting to your
+intentionally abandoning your checkout) in the \fBcvs\fR
+history log.
+.SP
+.SH "release options"
+.SP
+The \fBrelease\fR command supports one command option:
+.SP
+.IP "" 0
+\fB-d\fR
+.IP "" 2
+Delete your working copy of the file if the release
+succeeds.  If this flag is not given your files will
+remain in your working directory.
+.SP
+\fBWARNING:  The \fBrelease\fB command deletes
+all directories and files recursively.  This
+has the very serious side-effect that any directory
+that you have created inside your checked-out sources,
+and not added to the repository (using the \fBadd\fB
+command; see node `Adding files\(aq in the CVS manual) will be silently 
deleted\(emeven
+if it is non-empty!\fR
+.SP
+.SH "release output"
+.SP
+Before \fBrelease\fR releases your sources it will
+print a one-line message for any file that is not
+up-to-date.
+.SP
+.IP "" 0
+\fBU \fIfile\fB\fR
+.IP "" 2
+.IP "" 0
+\fBP \fIfile\fB\fR
+.IP "" 2
+There exists a newer revision of this file in the
+repository, and you have not modified your local copy
+of the file (\fBU\fR and \fBP\fR mean the same thing).
+.SP
+.IP "" 0
+\fBA \fIfile\fB\fR
+.IP "" 2
+The file has been added to your private copy of the
+sources, but has not yet been committed to the
+repository.  If you delete your copy of the sources
+this file will be lost.
+.SP
+.IP "" 0
+\fBR \fIfile\fB\fR
+.IP "" 2
+The file has been removed from your private copy of the
+sources, but has not yet been removed from the
+repository, since you have not yet committed the
+removal.  see node `commit\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fBM \fIfile\fB\fR
+.IP "" 2
+The file is modified in your working directory.  There
+might also be a newer revision inside the repository.
+.SP
+.IP "" 0
+\fB? \fIfile\fB\fR
+.IP "" 2
+\fIfile\fR is in your working directory, but does not
+correspond to anything in the source repository, and is
+not in the list of files for \fBcvs\fR to ignore (see the
+description of the \fB-I\fR option, and
+see node `cvsignore\(aq in the CVS manual).  If you remove your working
+sources, this file will be lost.
+.SP
+.SH "release examples"
+.SP
+Release the \fBtc\fR directory, and delete your local working copy
+of the files.
+.SP
+.PD 0
+.SP
+.IP "" 2
+$ cd \&..         # \fRYou must stand immediately above the\fR
+.IP "" 2
+                # \fRsources when you issue \fBcvs release\fR.\fR
+.IP "" 2
+$ cvs release -d tc
+.IP "" 2
+You have [0] altered files in this repository.
+.IP "" 2
+Are you sure you want to release (and delete) directory \`tc\(aq: y
+.IP "" 2
+$
+
+.PD
+.IP "" 0
+.SP
+.SH "server & pserver"
+.SS "Act as a server for a client on stdin/stdout"
+.IX "pserver (subcommand)"
+.IX "server (subcommand)"
+.SP
+.IP "\(bu" 2
+pserver [-c path]
+.SP
+server [-c path]
+.IP "\(bu" 2
+Requires: repository, client conversation on stdin/stdout
+.IP "\(bu" 2
+Changes: Repository or, indirectly, client working directory.
+.SP
+The \fBcvs\fR \fBserver\fR and \fBpserver\fR commands are used to provide
+repository access to remote clients and expect a client conversation on
+stdin & stdout.  Typically these commands are launched from \fBinetd\fR or
+via \fBssh\fR (see node `Remote repositories\(aq in the CVS manual).
+.SP
+\fBserver\fR expects that the client has already been authenticated somehow,
+typically via \fBssh\fR, and \fBpserver\fR attempts to authenticate the client
+itself.
+.SP
+Only one option is available with the \fBserver\fR and \fBpserver\fR
+commands:
+.SP
+.IX "configuration file"
+.IP "" 0
+\fB-c path\fR
+.IP "" 2
+Load configuration from \fIpath\fR rather than the default location 
+\fB$CVSROOT/CVSROOT/config\fR (see node `config\(aq in the CVS manual).  
\fIpath\fR must be
+\fB/etc/cvs.conf\fR or prefixed by \fB/etc/cvs/\fR.  This option is
+supported beginning with \fBcvs\fR release 1.12.13.
+.SP
+.SH "update"
+.SS "Bring work tree in sync with repository"
+.IX "update (subcommand)"
+.SP
+.IP "\(bu" 2
+update [-ACdflPpR] [-I name] [-j rev [-j rev]] [-k kflag] [-r tag[:date] | -D 
date] [-W spec] files\&...
+.IP "\(bu" 2
+Requires: repository, working directory.
+.IP "\(bu" 2
+Changes: working directory.
+.SP
+After you\(aqve run checkout to create your private copy
+of source from the common repository, other developers
+will continue changing the central source.  From time
+to time, when it is convenient in your development
+process, you can use the \fBupdate\fR command from
+within your working directory to reconcile your work
+with any revisions applied to the source repository
+since your last checkout or update.  Without the \fB-C\fR
+option, \fBupdate\fR will also merge any differences
+between the local copy of files and their base revisions
+into any destination revisions specified with \fB-r\fR,
+\fB-D\fR, or \fB-A\fR.
+.SP
+.SH "update options"
+.SP
+These standard options are available with \fBupdate\fR
+(see node `Common options\(aq in the CVS manual, for a complete description of
+them):
+.SP
+.IP "" 0
+\fB-D date\fR
+.IP "" 2
+Use the most recent revision no later than \fIdate\fR.
+This option is sticky, and implies \fB-P\fR.
+See see node `Sticky tags\(aq in the CVS manual, for more information on 
sticky tags/dates.
+.SP
+.IP "" 0
+\fB-f\fR
+.IP "" 2
+Only useful with the \fB-D\fR or \fB-r\fR flags.  If no matching revision
+is found, retrieve the most recent revision (instead of ignoring the file).
+.SP
+.IP "" 0
+\fB-k \fIkflag\fB\fR
+.IP "" 2
+Process keywords according to \fIkflag\fR.  See
+see node `Keyword substitution\(aq in the CVS manual.
+This option is sticky; future updates of
+this file in this working directory will use the same
+\fIkflag\fR.  The \fBstatus\fR command can be viewed
+to see the sticky options.  See see node `Invoking CVS\(aq in the CVS manual, 
for
+more information on the \fBstatus\fR command.
+.SP
+.IP "" 0
+\fB-l\fR
+.IP "" 2
+Local; run only in current working directory.  see node `Recursive 
behavior\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-P\fR
+.IP "" 2
+Prune empty directories.  See see node `Moving directories\(aq in the CVS 
manual.
+.SP
+.IP "" 0
+\fB-p\fR
+.IP "" 2
+Pipe files to the standard output.
+.SP
+.IP "" 0
+\fB-R\fR
+.IP "" 2
+Update directories recursively (default).  see node `Recursive
+behavior\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-r \fItag\fB[:\fIdate\fB]\fR
+.IP "" 2
+Retrieve the revisions specified by \fItag\fR or, when \fIdate\fR is specified
+and \fItag\fR is a branch tag, the version from the branch \fItag\fR as it
+existed on \fIdate\fR.  This option is sticky, and implies \fB-P\fR.
+See see node `Sticky tags\(aq in the CVS manual, for more information on 
sticky tags/dates. Also
+see see node `Common options\(aq in the CVS manual.
+.SP
+These special options are also available with
+\fBupdate\fR.
+.SP
+.IP "" 0
+\fB-A\fR
+.IP "" 2
+Reset any sticky tags, dates, or \fB-k\fR options.
+See see node `Sticky tags\(aq in the CVS manual, for more information on 
sticky tags/dates.
+.SP
+.IP "" 0
+\fB-C\fR
+.IP "" 2
+Overwrite locally modified files with clean copies from
+the repository (the modified file is saved in
+\fB.#\fIfile\fB.\fIrevision\fB\fR, however).
+.SP
+.IP "" 0
+\fB-d\fR
+.IP "" 2
+Create any directories that exist in the repository if
+they\(aqre missing from the working directory.  Normally,
+\fBupdate\fR acts only on directories and files that
+were already enrolled in your working directory.
+.SP
+This is useful for updating directories that were
+created in the repository since the initial checkout;
+but it has an unfortunate side effect.  If you
+deliberately avoided certain directories in the
+repository when you created your working directory
+(either through use of a module name or by listing
+explicitly the files and directories you wanted on the
+command line), then updating with \fB-d\fR will create
+those directories, which may not be what you want.
+.SP
+.IP "" 0
+\fB-I \fIname\fB\fR
+.IP "" 2
+Ignore files whose names match \fIname\fR (in your
+working directory) during the update.  You can specify
+\fB-I\fR more than once on the command line to specify
+several files to ignore.  Use \fB-I !\fR to avoid
+ignoring any files at all.  see node `cvsignore\(aq in the CVS manual, for 
other
+ways to make \fBcvs\fR ignore some files.
+.SP
+.IP "" 0
+\fB-W\fIspec\fB\fR
+.IP "" 2
+Specify file names that should be filtered during
+update.  You can use this option repeatedly.
+.SP
+\fIspec\fR can be a file name pattern of the same type
+that you can specify in the \fB.cvswrappers\fR
+file. see node `Wrappers\(aq in the CVS manual.
+.SP
+.IP "" 0
+\fB-j\fIrevision\fB\fR
+.IP "" 2
+With two \fB-j\fR options, merge changes from the
+revision specified with the first \fB-j\fR option to
+the revision specified with the second \fBj\fR option,
+into the working directory.
+.SP
+With one \fB-j\fR option, merge changes from the
+ancestor revision to the revision specified with the
+\fB-j\fR option, into the working directory.  The
+ancestor revision is the common ancestor of the
+revision which the working directory is based on, and
+the revision specified in the \fB-j\fR option.
+.SP
+Note that using a single \fB-j \fItagname\fB\fR option rather than
+\fB-j \fIbranchname\fB\fR to merge changes from a branch will
+often not remove files which were removed on the branch.
+see node `Merging adds and removals\(aq in the CVS manual, for more.
+.SP
+In addition, each \fB-j\fR option can contain an optional
+date specification which, when used with branches, can
+limit the chosen revision to one within a specific
+date.  An optional date is specified by adding a colon
+(:) to the tag:
+\fB-j\fISymbolic_Tag\fB:\fIDate_Specifier\fB\fR.
+.SP
+see node `Branching and merging\(aq in the CVS manual.
+.SP
+.SP
+.SH "update output"
+.SP
+\fBupdate\fR and \fBcheckout\fR keep you informed of
+their progress by printing a line for each file, preceded
+by one character indicating the status of the file:
+.SP
+.IP "" 0
+\fBU \fIfile\fB\fR
+.IP "" 2
+The file was brought up to date with respect to the
+repository.  This is done for any file that exists in
+the repository but not in your working directory, and for files
+that you haven\(aqt changed but are not the most recent
+versions available in the repository.
+.SP
+.IP "" 0
+\fBP \fIfile\fB\fR
+.IP "" 2
+Like \fBU\fR, but the \fBcvs\fR server sends a patch instead of an entire
+file.  This accomplishes the same thing as \fBU\fR using less bandwidth.
+.SP
+.IP "" 0
+\fBA \fIfile\fB\fR
+.IP "" 2
+The file has been added to your private copy of the
+sources, and will be added to the source repository
+when you run \fBcommit\fR on the file.  This is a
+reminder to you that the file needs to be committed.
+.SP
+.IP "" 0
+\fBR \fIfile\fB\fR
+.IP "" 2
+The file has been removed from your private copy of the
+sources, and will be removed from the source repository
+when you run \fBcommit\fR on the file.  This is a
+reminder to you that the file needs to be committed.
+.SP
+.IP "" 0
+\fBM \fIfile\fB\fR
+.IP "" 2
+The file is modified in  your  working  directory.
+.SP
+\fBM\fR can indicate one of two states for a file
+you\(aqre working on: either there were no modifications
+to the same file in the repository, so that your file
+remains as you last saw it; or there were modifications
+in the repository as well as in your copy, but they
+were merged successfully, without conflict, in your
+working directory.
+.SP
+\fBcvs\fR will print some messages if it merges your work,
+and a backup copy of your working file (as it looked
+before you ran \fBupdate\fR) will be made.  The exact
+name of that file is printed while \fBupdate\fR runs.
+.SP
+.IP "" 0
+\fBC \fIfile\fB\fR
+.IP "" 2
+.IX "\&.# files"
+.IX "__ files (VMS)"
+A conflict was detected while trying to merge your
+changes to \fIfile\fR with changes from the source
+repository.  \fIfile\fR (the copy in your working
+directory) is now the result of attempting to merge
+the two revisions; an unmodified copy of your file
+is also in your working directory, with the name
+\fB.#\fIfile\fB.\fIrevision\fB\fR where \fIrevision\fR
+is the revision that your modified file started
+from.  Resolve the conflict as described in
+see node `Conflicts example\(aq in the CVS manual.
+(Note that some systems automatically purge
+files that begin with \fB.#\fR if they have not been
+accessed for a few days.  If you intend to keep a copy
+of your original file, it is a very good idea to rename
+it.)  Under \fBvms\fR, the file name starts with
+\fB__\fR rather than \fB.#\fR.
+.SP
+.IP "" 0
+\fB? \fIfile\fB\fR
+.IP "" 2
+\fIfile\fR is in your working directory, but does not
+correspond to anything in the source repository, and is
+not in the list of files for \fBcvs\fR to ignore (see the
+description of the \fB-I\fR option, and
+see node `cvsignore\(aq in the CVS manual).
+.SH "AUTHORS"
+.TP
+Dick Grune
+Original author of the
+.B cvs
+shell script version posted to
+.B comp.sources.unix
+in the volume6 release of December, 1986.
+Credited with much of the
+.B cvs
+conflict resolution algorithms.
+.TP
+Brian Berliner
+Coder and designer of the
+.B cvs
+program itself in April, 1989, based on the original work done by Dick.
+.TP
+Jeff Polk
+Helped Brian with the design of the
+.B cvs
+module and vendor branch support and author of the
+.BR checkin ( 1 )
+shell script (the ancestor of \fBcvs import\fP).
+.TP
+Larry Jones, Derek R. Price, and Mark D. Baushke
+Have helped maintain
+.B cvs
+for many years.
+.TP
+And many others too numerous to mention here.
+.SH "SEE ALSO"
+The most comprehensive manual for CVS is
+Version Management with CVS by Per Cederqvist et al.  Depending on
+your system, you may be able to get it with the
+.B info CVS
+command or it may be available as cvs.pdf (Portable Document Format),
+cvs.ps (PostScript), cvs.texinfo (Texinfo source), or cvs.html.
+.SP
+For CVS updates, more information on documentation, software related
+to CVS, development of CVS, and more, see:
+.in +1i
+.SP
+.PD 0
+.IP "" 4
+.B http://www.nongnu.org/cvs/
+.in -1i
+.SP
+.BR ci ( 1 ),
+.BR co ( 1 ),
+.BR cvs ( 5 ),
+.BR cvsbug ( 8 ),
+.BR diff ( 1 ),
+.BR grep ( 1 ),
+.BR patch ( 1 ),
+.BR rcs ( 1 ),
+.BR rcsdiff ( 1 ),
+.BR rcsmerge ( 1 ),
+.BR rlog ( 1 ).




reply via email to

[Prev in Thread] Current Thread [Next in Thread]