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