NAME
     rcs - change RCS file attributes

SYNOPSIS
     rcs [ options ] file ...

DESCRIPTION
     Rcs creates new RCS files or changes attributes of  existing
     ones.   An  RCS file contains multiple revisions of text, an
     access list, a change log, descriptive text, and  some  con-
     trol  attributes.   For rcs to work, the caller's login name
     must be on the access list, except if  the  access  list  is
     empty, the caller is the owner of the file or the superuser,
     or the -i option is present.

     Files ending in `,v' are RCS files, all others  are  working
     files.  If  a  working  file is given, rcs tries to find the
     corresponding RCS file first in directory ./RCS and then  in
     the current directory, as explained in co(L).

     -i         creates and initializes a new RCS file, but  does
                not deposit any revision.  If the RCS file has no
                path prefix, rcs tries to place it first into the
                subdirectory  ./RCS,  and  then  into the current
                directory.  If the RCS file  already  exists,  an
                error message is printed.

     -alogins   appends the login names appearing in  the  comma-
                separated  list  logins to the access list of the
                RCS file.

     -Aoldfile  appends the access list of oldfile to the  access
                list of the RCS file.

     -e[logins] erases the login names appearing  in  the  comma-
                separated list logins from the access list of the
                RCS file.   If  logins  is  omitted,  the  entire
                access list is erased.

     -b[rev]    sets the default branch to rev. If rev  is  omit-
                ted,  the default branch is reset to the (dynami-
                cally) highest branch on the trunk.

     -cstring   sets the comment leader to  string.  The  comment
                leader  is  printed before every log message line
                generated by the keyword $Log$   during  checkout
                (see  co(L)).   This  is  useful  for programming
                languages without multi-line comments. During rcs
                -i  or  initial ci, the comment leader is guessed
                from the suffix of the working file.

     -l[rev]    locks the revision with number rev.  If a  branch
                is  given,  the latest revision on that branch is
                locked.  If rev is omitted, the  latest  revision
                on   the   default  branch  is  locked.   Locking
                prevents overlapping changes.  A lock is  removed
                with ci or rcs -u (see below).

     -u[rev]    unlocks the  revision  with  number  rev.   If  a
                branch  is  given,  the  latest  revision on that
                branch is  unlocked.   If  rev  is  omitted,  the
                latest  lock held by the caller is removed.  Nor-
                mally, only the locker of a revision  may  unlock
                it.   Somebody  else  unlocking a revision breaks
                the lock. This causes a mail message to  be  sent
                to  the  original locker.  The message contains a
                commentary solicited from the breaker.  The  com-
                mentary  is  terminated  with a line containing a
                single `.' or control-D.

     -L         sets locking to strict. Strict locking means that
                the owner of an RCS file is not exempt from lock-
                ing for checkin.  This option should be used  for
                files that are shared.

     -U         sets locking to  non-strict.  Non-strict  locking
                means  that  the  owner of a file need not lock a
                revision for checkin. This option should  NOT  be
                used  for files that are shared.  The default (-L
                or -U) is determined by your  system  administra-
                tor.

     -nname[:rev]
                associates the symbolic name name with the branch
                or  revision  rev. Rcs prints an error message if
                name is already associated with  another  number.
                If rev is omitted, the symbolic name is deleted.

     -Nname[:rev]
                same as -n, except that it overrides  a  previous
                assignment of name.

     -orange    deletes  ("outdates")  the  revisions  given   by
                range.   A  range consisting of a single revision
                number means that revision.  A  range  consisting
                of  a  branch number means the latest revision on
                that branch.  A range of the form rev1-rev2 means
                revisions  rev1  to rev2 on the same branch, -rev
                means from the beginning of the branch containing
                rev  up to and including rev, and rev- means from
                revision rev to the end of the branch  containing
                rev.   None  of  the  outdated revisions may have
                branches or locks.

     -q         quiet mode; diagnostics are not printed.

     -sstate[:rev]
                sets the state attribute of the revision  rev  to
                state.  If  rev  is  a  branch number, the latest
                revision on that branch is assumed.   If  rev  is
                omitted,  the  latest  revision  on  the  default
                branch is assumed.  Any identifier is  acceptable
                for  state.   A  useful set of states is Exp (for
                experimental), Stab (for stable),  and  Rel  (for
                released).  By default, ci(L) sets the state of a
                revision to Exp.

     -t[txtfile]
                writes  descriptive  text  into  the   RCS   file
                (deletes the existing text).  If txtfile is omit-
                ted, rcs prompts the user for text supplied  from
                the  standard  input, terminated with a line con-
                taining a single `.'  or  control-D.   Otherwise,
                the  descriptive  text  is  copied  from the file
                txtfile.  If the -i option is  present,  descrip-
                tive  text  is requested even if -t is not given.
                The prompt is suppressed if the standard input is
                not a terminal.

DIAGNOSTICS
     The RCS file name and the revisions outdated are written  to
     the diagnostic output.  The exit status always refers to the
     last RCS file operated upon, and is 0 if the  operation  was
     successful, 1 otherwise.

FILES
     The caller of the command must  have  read/write  permission
     for  the  directory containing the RCS file and read permis-
     sion for the RCS file itself.  Rcs creates a semaphore  file
     in  the same directory as the RCS file to prevent simultane-
     ous update.  For changes, rcs always creates a new file.  On
     successful  completion,  rcs deletes the old one and renames
     the new one.  This strategy makes links to  RCS  files  use-
     less.

IDENTIFICATION
     Author: Walter F. Tichy, Purdue University, West  Lafayette,
     IN, 47907.
     Revision Number: 1.4 ; Release Date: 89/10/30 .
     Copyright (C) 1982, 1988, 1989 by Walter F. Tichy.

SEE ALSO
     co(L),    ci(L),    ident(L),    rcsdiff(L),    rcsintro(L),
     rcsmerge(L), rlog(L), rcsfile(L)
     Walter F. Tichy, "Design, Implementation, and Evaluation  of
     a  Revision  Control  System,"  in  Proceedings  of  the 6th
     International  Conference  on  Software  Engineering,  IEEE,
     Tokyo, Sept. 1982.