19Sjkh.de Id
29Sjkh.ds Rv \\$3
39Sjkh.ds Dt \\$4
49Sjkh..
550472Speter.Id $FreeBSD$
69Sjkh.ds r \&\s-1RCS\s0
79Sjkh.if n .ds - \%--
89Sjkh.if t .ds - \(em
911891Speter.if !\n(.g \{\
1011891Speter.	if !\w|\*(lq| \{\
1111891Speter.		ds lq ``
1211891Speter.		if \w'\(lq' .ds lq "\(lq
1311891Speter.	\}
1411891Speter.	if !\w|\*(rq| \{\
1511891Speter.		ds rq ''
1611891Speter.		if \w'\(rq' .ds rq "\(rq
1711891Speter.	\}
1811891Speter.\}
199Sjkh.TH RCS 1 \*(Dt GNU
209Sjkh.SH NAME
219Sjkhrcs \- change RCS file attributes
229Sjkh.SH SYNOPSIS
239Sjkh.B rcs
2411891Speter.IR "options file " .\|.\|.
259Sjkh.SH DESCRIPTION
269Sjkh.B rcs
279Sjkhcreates new \*r files or changes attributes of existing ones.
289SjkhAn \*r file contains multiple revisions of text,
299Sjkhan access list, a change log,
309Sjkhdescriptive text,
319Sjkhand some control attributes.
329SjkhFor
339Sjkh.B rcs
349Sjkhto work, the caller's login name must be on the access list,
359Sjkhexcept if the access list is empty, the caller is the owner of the file
369Sjkhor the superuser, or
379Sjkhthe
389Sjkh.B \-i
399Sjkhoption is present.
409Sjkh.PP
419SjkhPathnames matching an \*r suffix denote \*r files;
429Sjkhall others denote working files.
439SjkhNames are paired as explained in
449Sjkh.BR ci (1).
459SjkhRevision numbers use the syntax described in
469Sjkh.BR ci (1).
479Sjkh.SH OPTIONS
489Sjkh.TP
499Sjkh.B \-i
509SjkhCreate and initialize a new \*r file, but do not deposit any revision.
519SjkhIf the \*r file has no path prefix, try to place it
529Sjkhfirst into the subdirectory
539Sjkh.BR ./RCS ,
549Sjkhand then into the current directory.
559SjkhIf the \*r file
569Sjkhalready exists, print an error message.
579Sjkh.TP
589Sjkh.BI \-a "logins"
599SjkhAppend the login names appearing in the comma-separated list
609Sjkh.I logins
619Sjkhto the access list of the \*r file.
629Sjkh.TP
639Sjkh.BI \-A "oldfile"
649SjkhAppend the access list of
659Sjkh.I oldfile
669Sjkhto the access list of the \*r file.
679Sjkh.TP
689Sjkh.BR \-e [\f2logins\fP]
699SjkhErase the login names appearing in the comma-separated list
709Sjkh.I logins
719Sjkhfrom the access list of the \*r file.
729SjkhIf
739Sjkh.I logins
749Sjkhis omitted, erase the entire access list.
759Sjkh.TP
769Sjkh.BR \-b [\f2rev\fP]
779SjkhSet the default branch to
789Sjkh.IR rev .
799SjkhIf
809Sjkh.I rev
819Sjkhis omitted, the default
829Sjkhbranch is reset to the (dynamically) highest branch on the trunk.
839Sjkh.TP
849Sjkh.BI \-c string
8511891SpeterSet the comment leader to
869Sjkh.IR string .
879SjkhAn initial
8811891Speter.BR ci ,
899Sjkhor an
909Sjkh.B "rcs\ \-i"
919Sjkhwithout
929Sjkh.BR \-c ,
9311891Speterguesses the comment leader from the suffix of the working filename.
9411891Speter.RS
9511891Speter.PP
9611891SpeterThis option is obsolescent, since \*r normally uses the preceding
9711891Speter.B $\&Log$
9811891Speterline's prefix when inserting log lines during checkout (see
9911891Speter.BR co (1)).
10011891SpeterHowever, older versions of \*r use the comment leader instead of the
10111891Speter.B $\&Log$
10211891Speterline's prefix, so
10311891Speterif you plan to access a file with both old and new versions of \*r,
10411891Spetermake sure its comment leader matches its
10511891Speter.B $\&Log$
10611891Speterline prefix.
10711891Speter.RE
1089Sjkh.TP
1099Sjkh.BI \-k subst
1109SjkhSet the default keyword substitution to
1119Sjkh.IR subst .
1129SjkhThe effect of keyword substitution is described in
1139Sjkh.BR co (1).
1149SjkhGiving an explicit
1159Sjkh.B \-k
1169Sjkhoption to
1179Sjkh.BR co ,
1189Sjkh.BR rcsdiff ,
1199Sjkhand
1209Sjkh.B rcsmerge
1219Sjkhoverrides this default.
1229SjkhBeware
1239Sjkh.BR "rcs\ \-kv",
1249Sjkhbecause
1259Sjkh.B \-kv
1269Sjkhis incompatible with
1279Sjkh.BR "co\ \-l".
1289SjkhUse
1299Sjkh.B "rcs\ \-kkv"
1309Sjkhto restore the normal default keyword substitution.
1319Sjkh.TP
1329Sjkh.BR \-l [\f2rev\fP]
1339SjkhLock the revision with number
1349Sjkh.IR rev .
1359SjkhIf a branch is given, lock the latest revision on that branch.
1369SjkhIf
1379Sjkh.I rev
1389Sjkhis omitted, lock the latest revision on the default branch.
1399SjkhLocking prevents overlapping changes.
14011891SpeterIf someone else already holds the lock, the lock is broken as with
1419Sjkh.B "rcs\ \-u"
1429Sjkh(see below).
1439Sjkh.TP
1449Sjkh.BR \-u [\f2rev\fP]
1459SjkhUnlock the revision with number
1469Sjkh.IR rev .
1479SjkhIf a branch is given, unlock the latest revision on that branch.
1489SjkhIf
1499Sjkh.I rev
1509Sjkhis omitted, remove the latest lock held by the caller.
15111891SpeterNormally, only the locker of a revision can unlock it.
1529SjkhSomebody else unlocking a revision breaks the lock.
1539SjkhThis causes a mail message to be sent to the original locker.
1549SjkhThe message contains a commentary solicited from the breaker.
1559SjkhThe commentary is terminated by end-of-file or by a line containing
1569Sjkh.BR \&. "\ by"
1579Sjkhitself.
1589Sjkh.TP
1599Sjkh.B \-L
1609SjkhSet locking to
1619Sjkh.IR strict .
1629SjkhStrict locking means that the owner
1639Sjkhof an \*r file is not exempt from locking for checkin.
1649SjkhThis option should be used for files that are shared.
1659Sjkh.TP
1669Sjkh.B \-U
1679SjkhSet locking to non-strict.  Non-strict locking means that the owner of
1689Sjkha file need not lock a revision for checkin.
1699SjkhThis option should
1709Sjkh.I not
1719Sjkhbe used for files that are shared.
1729SjkhWhether default locking is strict is determined by your system administrator,
1739Sjkhbut it is normally strict.
1749Sjkh.TP
1759Sjkh\f3\-m\fP\f2rev\fP\f3:\fP\f2msg\fP
1769SjkhReplace revision
1779Sjkh.IR rev 's
1789Sjkhlog message with
1799Sjkh.IR msg .
1809Sjkh.TP
18111891Speter.B \-M
18211891SpeterDo not send mail when breaking somebody else's lock.
18311891SpeterThis option is not meant for casual use;
18411891Speterit is meant for programs that warn users by other means, and invoke
18511891Speter.B "rcs\ \-u"
18611891Speteronly as a low-level lock-breaking operation.
18711891Speter.TP
1889Sjkh\f3\-n\fP\f2name\fP[\f3:\fP[\f2rev\fP]]
1899SjkhAssociate the symbolic name
1909Sjkh.I name
1919Sjkhwith the branch or
1929Sjkhrevision
1939Sjkh.IR rev .
1949SjkhDelete the symbolic name if both
1959Sjkh.B :
1969Sjkhand
1979Sjkh.I rev
1989Sjkhare omitted; otherwise, print an error message if
1999Sjkh.I name
2009Sjkhis already associated with
2019Sjkhanother number.
2029SjkhIf
2039Sjkh.I rev
2049Sjkhis symbolic, it is expanded before association.
2059SjkhA
2069Sjkh.I rev
2079Sjkhconsisting of a branch number followed by a
2089Sjkh.B .\&
2099Sjkhstands for the current latest revision in the branch.
2109SjkhA
2119Sjkh.B :
2129Sjkhwith an empty
2139Sjkh.I rev
2149Sjkhstands for the current latest revision on the default branch,
2159Sjkhnormally the trunk.
2169SjkhFor example,
2179Sjkh.BI "rcs\ \-n" name ":\ RCS/*"
2189Sjkhassociates
2199Sjkh.I name
2209Sjkhwith the current latest revision of all the named \*r files;
2219Sjkhthis contrasts with
2229Sjkh.BI "rcs\ \-n" name ":$\ RCS/*"
2239Sjkhwhich associates
2249Sjkh.I name
2259Sjkhwith the revision numbers extracted from keyword strings
2269Sjkhin the corresponding working files.
2279Sjkh.TP
2289Sjkh\f3\-N\fP\f2name\fP[\f3:\fP[\f2rev\fP]]
2299SjkhAct like
2309Sjkh.BR \-n ,
2319Sjkhexcept override any previous assignment of
2329Sjkh.IR name .
2339Sjkh.TP
2349Sjkh.BI \-o range
2359Sjkhdeletes (\*(lqoutdates\*(rq) the revisions given by
2369Sjkh.IR range .
2379SjkhA range consisting of a single revision number means that revision.
2389SjkhA range consisting of a branch number means the latest revision on that
2399Sjkhbranch.
2409SjkhA range of the form
2419Sjkh.IB rev1 : rev2
2429Sjkhmeans
2439Sjkhrevisions
2449Sjkh.I rev1
2459Sjkhto
2469Sjkh.I rev2
2479Sjkhon the same branch,
2489Sjkh.BI : rev
2499Sjkhmeans from the beginning of the branch containing
2509Sjkh.I rev
2519Sjkhup to and including
2529Sjkh.IR rev ,
2539Sjkhand
2549Sjkh.IB rev :
2559Sjkhmeans
2569Sjkhfrom revision
2579Sjkh.I rev
2589Sjkhto the end of the branch containing
2599Sjkh.IR rev .
26011891SpeterNone of the outdated revisions can have branches or locks.
2619Sjkh.TP
2629Sjkh.B \-q
2639SjkhRun quietly; do not print diagnostics.
2649Sjkh.TP
2659Sjkh.B \-I
2669SjkhRun interactively, even if the standard input is not a terminal.
2679Sjkh.TP
2689Sjkh.B \-s\f2state\fP\f1[\fP:\f2rev\fP\f1]\fP
2699SjkhSet the state attribute of the revision
2709Sjkh.I rev
2719Sjkhto
27211891Speter.IR state .
2739SjkhIf
2749Sjkh.I rev
2759Sjkhis a branch number, assume the latest revision on that branch.
2769SjkhIf
2779Sjkh.I rev
2789Sjkhis omitted, assume the latest revision on the default branch.
2799SjkhAny identifier is acceptable for
2809Sjkh.IR state .
2819SjkhA useful set of states
2829Sjkhis
2839Sjkh.B Exp
2849Sjkh(for experimental),
2859Sjkh.B Stab
2869Sjkh(for stable), and
2879Sjkh.B Rel
2889Sjkh(for
2899Sjkhreleased).
2909SjkhBy default,
2919Sjkh.BR ci (1)
2929Sjkhsets the state of a revision to
2939Sjkh.BR Exp .
2949Sjkh.TP
2959Sjkh.BR \-t [\f2file\fP]
2969SjkhWrite descriptive text from the contents of the named
2979Sjkh.I file
2989Sjkhinto the \*r file, deleting the existing text.
2999SjkhThe
3009Sjkh.IR file
30111891Speterpathname cannot begin with
3029Sjkh.BR \- .
3039SjkhIf
3049Sjkh.I file
3059Sjkhis omitted, obtain the text from standard input,
3069Sjkhterminated by end-of-file or by a line containing
3079Sjkh.BR \&. "\ by"
3089Sjkhitself.
3099SjkhPrompt for the text if interaction is possible; see
3109Sjkh.BR \-I .
3119SjkhWith
3129Sjkh.BR \-i ,
3139Sjkhdescriptive text is obtained
3149Sjkheven if
3159Sjkh.B \-t
3169Sjkhis not given.
3179Sjkh.TP
3189Sjkh.BI \-t\- string
3199SjkhWrite descriptive text from the
3209Sjkh.I string
3219Sjkhinto the \*r file, deleting the existing text.
3229Sjkh.TP
32311891Speter.B \-T
32411891SpeterPreserve the modification time on the \*r file
32511891Speterunless a revision is removed.
32611891SpeterThis option can suppress extensive recompilation caused by a
32711891Speter.BR make (1)
32811891Speterdependency of some copy of the working file on the \*r file.
32911891SpeterUse this option with care; it can suppress recompilation even when it is needed,
33011891Speteri.e. when a change to the \*r file
33111891Speterwould mean a change to keyword strings in the working file.
33211891Speter.TP
33311891Speter.BI \-V
33411891SpeterPrint \*r's version number.
33511891Speter.TP
3369Sjkh.BI \-V n
3379SjkhEmulate \*r version
3389Sjkh.IR n .
3399SjkhSee
3409Sjkh.BR co (1)
3419Sjkhfor details.
3429Sjkh.TP
3439Sjkh.BI \-x "suffixes"
3449SjkhUse
3459Sjkh.I suffixes
3469Sjkhto characterize \*r files.
3479SjkhSee
3489Sjkh.BR ci (1)
3499Sjkhfor details.
35011891Speter.TP
35111891Speter.BI \-z zone
35211891SpeterUse
35311891Speter.I zone
35411891Speteras the default time zone.
35511891SpeterThis option has no effect;
35611891Speterit is present for compatibility with other \*r commands.
35711891Speter.PP
35811891SpeterAt least one explicit option must be given,
35911891Speterto ensure compatibility with future planned extensions
36011891Speterto the
36111891Speter.B rcs
36211891Spetercommand.
3639Sjkh.SH COMPATIBILITY
3649SjkhThe
3659Sjkh.BI \-b rev
3669Sjkhoption generates an \*r file that cannot be parsed by \*r version 3 or earlier.
3679Sjkh.PP
3689SjkhThe
3699Sjkh.BI \-k subst
3709Sjkhoptions (except
3719Sjkh.BR \-kkv )
3729Sjkhgenerate an \*r file that cannot be parsed by \*r version 4 or earlier.
3739Sjkh.PP
3749SjkhUse
3759Sjkh.BI "rcs \-V" n
3769Sjkhto make an \*r file acceptable to \*r version
3779Sjkh.I n
3789Sjkhby discarding information that would confuse version
3799Sjkh.IR n .
3809Sjkh.PP
3819Sjkh\*r version 5.5 and earlier does not support the
3829Sjkh.B \-x
3839Sjkhoption, and requires a
3849Sjkh.B ,v
3859Sjkhsuffix on an \*r pathname.
3869Sjkh.SH FILES
3879Sjkh.B rcs
3889Sjkhaccesses files much as
3899Sjkh.BR ci (1)
3909Sjkhdoes,
3919Sjkhexcept that it uses the effective user for all accesses,
3929Sjkhit does not write the working file or its directory,
3939Sjkhand it does not even read the working file unless a revision number of
3949Sjkh.B $
3959Sjkhis specified.
3969Sjkh.SH ENVIRONMENT
3979Sjkh.TP
3989Sjkh.B \s-1RCSINIT\s0
3999Sjkhoptions prepended to the argument list, separated by spaces.
4009SjkhSee
4019Sjkh.BR ci (1)
4029Sjkhfor details.
4039Sjkh.SH DIAGNOSTICS
4049SjkhThe \*r pathname and the revisions outdated are written to
4059Sjkhthe diagnostic output.
4069SjkhThe exit status is zero if and only if all operations were successful.
4079Sjkh.SH IDENTIFICATION
4089SjkhAuthor: Walter F. Tichy.
4099Sjkh.br
41011891SpeterManual Page Revision: \*(Rv; Release Date: \*(Dt.
4119Sjkh.br
41211891SpeterCopyright \(co 1982, 1988, 1989 Walter F. Tichy.
4139Sjkh.br
41411891SpeterCopyright \(co 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.
4159Sjkh.SH "SEE ALSO"
41611891Speterrcsintro(1), co(1), ci(1), ident(1), rcsclean(1), rcsdiff(1),
41711891Speterrcsmerge(1), rlog(1), rcsfile(5)
4189Sjkh.br
4199SjkhWalter F. Tichy,
4209Sjkh\*r\*-A System for Version Control,
4219Sjkh.I "Software\*-Practice & Experience"
4229Sjkh.BR 15 ,
4239Sjkh7 (July 1985), 637-654.
4249Sjkh.SH BUGS
42511891SpeterA catastrophe (e.g. a system crash) can cause \*r to leave behind
42611891Spetera semaphore file that causes later invocations of \*r to claim
42711891Speterthat the \*r file is in use.
42811891SpeterTo fix this, remove the semaphore file.
42911891SpeterA semaphore file's name typically begins with
43011891Speter.B ,
43111891Speteror ends with
43211891Speter.BR _ .
43311891Speter.PP
4349SjkhThe separator for revision ranges in the
4359Sjkh.B \-o
4369Sjkhoption used to be
4379Sjkh.B \-
4389Sjkhinstead of
4399Sjkh.BR : ,
4409Sjkhbut this leads to confusion when symbolic names contain
4419Sjkh.BR \- .
4429SjkhFor backwards compatibility
4439Sjkh.B "rcs \-o"
4449Sjkhstill supports the old
4459Sjkh.B \-
4469Sjkhseparator, but it warns about this obsolete use.
4479Sjkh.PP
4489SjkhSymbolic names need not refer to existing revisions or branches.
4499SjkhFor example, the
4509Sjkh.B \-o
4519Sjkhoption does not remove symbolic names for the outdated revisions; you must use
4529Sjkh.B \-n
4539Sjkhto remove the names.
4549Sjkh.br
455