`
`1.2 Concepts
`
`• Interaction model
`
`• Working file
`
`■ RCS file
`
`• Fundamental operations
`
`• Keywords
`
`1.2.1 Interaction model
`
`The interaction model is straightforward. For each working file, you initialize its RCS file
`once, then enter a cycle of checkout, modification, and checkin operations. Along the way,
`you can tweak some of the RCS file's metadata, as well. All of this is done through RCS
`commands; you need not modify the RCS file directly (and in fact you should probably
`avoid doing so lest RCS become confused). This model is somewhat analogous to using a
`library (of books). With a library, you sign up for a library card (initialize), then enter a cycle
`of taking a book home (checkout), enjoying it (NB: without modification, one hopes), and
`returning it to the library (checkin).
`
`Furthermore, you can compare revisions in the RCS file against each other, examine the
`user- (hopefully high) quality descriptions of the changes each revision embodies, merge
`selected revisions, and so forth.
`
`1.2.2 Working file
`
`RCS commands operate on one pair of files at a time. The working file is what you
`normally view and edit (e.g., a file of C programming language source code named a. c).
`Because the working file's contents can be extracted from the RCS file (called instantiating
`a working file), it can be safely deleted to regain some disk space.
`
`1.2.3 RCS file
`
`The RCS file is a separate file, conventionally placed in the subdirectory Res, wherein RCS
`commands organize the initial and subsequent revisions of the working file, associating
`with each revision a unique revision number along with the remembered particulars of the
`checkin that produced it. It also contains a description of the working file and various other
`metadata, described below.
`
`001
`
`GOOGLE 1044
`
`
`
` ÿÿ ÿ
`ÿ
`
`ÿ ÿ
`ÿÿ
`ÿÿ ÿ!!ÿ"#$ !
`%ÿ&'()*)+,ÿ,./0'&ÿ
`ÿÿ12 ÿ12ÿ
`0&3,45ÿ,./0'&ÿ
`ÿÿ
`ÿ
`62ÿ1ÿ
`
`
`
`ÿ
`ÿ
`ÿ
`ÿ2
`6
`!ÿ9
`<#<ÿÿÿÿÿÿÿÿÿ>>ÿ?@ ABACDÿDEFG@?ÿHC?ÿADAIA"Jÿ$K@$LADÿMINOA$"JJNPQ
`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿG?"D$KÿDEFG@?Rÿ<
`S#T#<#TUÿÿÿÿ>>ÿFC?@ÿ$CFOJA$"I@VÿMO@?K"OBÿ"HI@?ÿFE$KÿWD"?JNÿK"$LADWPQ
`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿG?"D$KÿDEFG@?RÿS#T#<
`XXX#XXX#XXXÿ>>ÿDCIÿ"ÿ "JAVÿ?@ ABACDÿDEFG@?Q
`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿKCY@ @?ÿ"ÿO@?H@$IJNÿ "JAVÿG?"D$KÿDEFG@?
` ÿ0&3,45ÿZ+),7ÿ
`ÿ ÿ2
`
`12 [
`ÿ2 ÿ2!ÿ
`
` ÿ2 ÿ2!ÿ ÿ
`12ÿ2
`
`ÿ ÿ ÿ7)Zÿ
`12 ÿ
`<#<ÿÿÿÿÿÿÿÿÿ>>ÿCDÿI?EDLQÿDCÿG?"D$KÿOCADIQ
`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿD@^IÿKAWK@?ÿG?"D$KÿDEFG@?RÿÿÿU
`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿD@^IÿKAWK@?ÿ?@ ABACDÿDEFG@?Rÿ<#U
`S#T#<#TUÿÿÿÿ>>ÿDCIÿCDÿI?EDLQÿG?"D$KÿOCADIRÿÿS#T
`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿD@^IÿKAWK@?ÿG?"D$KÿDEFG@?RÿÿÿS#T#U
`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿD@^IÿKAWK@?ÿ?@ ABACDÿDEFG@?RÿS#T#<#TX
`XXX#XXX#XXXÿ>>ÿDCIÿCDÿI?EDLQÿG?"D$KÿOCADIRÿÿXXX#XXX
`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿD@^IÿKAWK@?ÿG?"D$KÿDEFG@?RÿÿÿXXX#XXX#XXT
`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿD@^IÿKAWK@?ÿ?@ ABACDÿDEFG@?RÿXXX#XXX#XXX#<
`_ÿ
`ÿ2ÿ
` ÿ2
`
`ÿ ÿÿ ÿ 6
`ÿ2 ÿ
`0&3,45ÿ!!ÿ ÿ12 ÿ
`ÿ6ÿ
`6
`ÿ
`ÿ2ÿ cÿ
`ÿ ÿ
`ÿ
`*d/0+b)4ÿ,3/'*ÿÿ
`ÿ
`
`
`ÿ1ÿÿ
`2
`66 ÿÿ62
`1
` ÿ
`1
`
` ÿÿ ÿ
`ÿ
`ÿ
`ÿ
`ÿ344'**ÿ4+,7&+b
`Z+b)4d!ÿ ÿ2
`ÿ
`ÿÿ
`ÿ
`2
`!ÿ_ÿ
`ÿ
`2
`ÿ
`ÿÿ
`ÿ ÿÿÿ
`!ÿ ÿ
`
`ÿÿ
`ÿ
`
`
`
`2ÿÿÿ2
`
`
`ÿ ÿ
`ÿ
`
`002
`
`
`
`username may modify revno (that is, do a checkin operation to deposit the next higher
`revision, or a higher revision numberon the same branch as revno).
`
`1.2.4 Fundamental operations
`
`The checkin operation records the contents of the workingfile in the RCSfile, assigningit
`a new (normally the next higher) revision numberand recording the username, timestamp,
`state (a short symbol), and user-supplied log message(a textual description of the
`changesleadingto that revision). It uses diff to find the differences betweenthetip of the
`default branch andthe workingfile, thereby writing the minimal amountof information
`neededto be able to recreate the contents of the previous tip.
`
`1.2.5 Keywords
`
`The keywords and their values are:
`
`Author
`
`The login nameof the user who checkedin the revision.
`
`Date
`
`The checkoutoperation identifies a specific revision from the RCSfile and either displays
`the content to standard outputor instantiates a workingfile, overwriting any current
`instantiation with the selected revision. In either case, the content may undergo keyword
`expansion, which replacestext of the form ‘$keyword$’ with (possibly) different text
`comprising the keyword andits value, depending on the current keyword expansion mode
`(see Substitution mode option).
`
` ÿ
`ÿ
`ÿ ÿ ÿ ÿ
` ÿÿ ÿ ÿ ÿ ÿÿÿ ÿ ÿ ÿ !"
`#$%$&ÿ()*+,-.*/,0ÿ12.3,/41*5
`6ÿ7879:ÿ ÿ
`
` ÿ;ÿ <<
`ÿÿÿ !ÿ ÿ ÿ
` @@ÿ ÿÿ
` <!ÿ
` ÿ<
`
`ÿ; ÿÿ <ÿ ÿÿ
`
`6ÿ7879 @ÿ ÿ
`
`ÿÿÿ
`ÿ
` ÿ; ÿÿ<
`ÿ
`JK :ÿ; ÿ< ÿÿÿÿÿLMNOPQRSTMUÿ; ÿ <
`!ÿ
` ÿÿ
`;
`;
`ÿ? ÿ
`#$%$VÿW.XY13+5
`6ÿ
`;
`[\]^_`6ÿ< ÿ ÿÿÿÿ;ÿ
`ab]c6ÿ
`ÿ <
`
`"
`fcbgc`hÿ
`
`
`ÿ <
`
`ig? ÿ ÿLjOkTOSUÿÿ ÿ<
`ÿÿ ÿ ÿÿ
`ÿ!"
`l_mnc`6ÿ< ÿ ÿÿÿÿ;ÿ<
`ÿ ÿÿ<
`l_o
`
`The date and time the revision was checkedin. Mayinclude an appended timezone
`offset.
`
`Header
`
`A standard headercontaining the absolute RCS filename, the revision number, the
`date and time, the author, the state, and the locker(if locked). May include an
`appendedtimezone offset.
`
`Id
`
`Sameas‘Header’, except that only the basename appears (no directory components).
`
`Locker
`
`The login nameof the user who locked the revision (emptyif not locked).
`
`Log
`
`003
`
`003
`
`
`
`The log message supplied during checkin, preceded by a headercontaining the RCS
`filename, the revision number, the author, and the date and time. May include an
`appendedtimezone offset.
`
`Existing log messagesare not replaced. Instead, the new log message is inserted
`after ‘$Log:...$’. This is useful for accumulating a complete change log in a source
`file.
`
`Eachinserted line is prefixed by the string that prefixes the ‘Logs’ line. For example,
`if the ‘$Log$’ line is
`
`// $log:
`
`tan.cc $
`
`then RCSprefixes eachline of the log with ‘// ’ (slash, slash, space). This is useful
`for languages with commentsthat go to the end oftheline.
`
`The convention for other languagesis to use a ‘ * ’ (Space, asterisk, space) prefix
`inside a multiline comment. For example, theinitial log comment of a C program
`conventionally is of the following form:
`
` ÿÿ ÿ
`
`
`
`ÿ ÿ
` ÿ ÿ ÿ ÿ ÿ
` ÿ
` ÿ
`
`
` ÿ"#$%&'(((#)ÿ
`
`ÿÿ
`
`
`
`
`
`++ÿ#$%&'ÿ-./(00ÿ#
` ÿÿ
`
`
`ÿ
` ÿ!
` ÿ
` ÿ
`ÿ ÿ"ÿ3ÿ)ÿ1 ÿ
`
`
`
`+3ÿ3ÿ#$%&#
`ÿ3+
`*ÿ ! ÿ
`
`
` ÿÿ
`ÿ"5)6ÿ !ÿ
` ÿ
` ÿÿÿ
`789: ÿ
` ÿÿ ÿ
`ÿ ÿ
` ÿ"#?.@>'ÿ=%>ÿ#)ÿA
`ÿ"#?.@>'ÿ#)
`EFGHIJ: ÿ ÿÿ ÿÿ
`E:KILIMN ÿ
`ÿ
`GMOPQ: ÿ
`ÿÿ
`GR8R:
`
`For backwards compatibility with older versions of RCS, if the log prefix is ‘/*’ or ‘(*’
`surroundedby optional white space, inserted log lines contain a space instead of‘/’
`or ‘(’; however, this usage is obsolescent and should not be relied on.
`
`/*
`* $Llog$
`*/
`
`Name
`
`The symbolic name used to checkout the revision, if any. For example, ‘co -rJoe’
`generates ‘$name: Joe $’. Plain co generates just ‘$name: $’.
`
`RCSfile
`
`The basename of the RCSfile.
`
`Revision
`
`The revision number assignedto the revision.
`
`Source
`
`The absolute RCSfilename.
`
`State
`
`004
`
`004
`
`
`
`The state assigned to the revision with the -s option of res orci.
`
`
` ÿÿ
`ÿÿ ÿ
`ÿ !"ÿ#$%ÿ&$' #(ÿ)$* (%ÿ+,ÿ-'$' .ÿÿÿ/)#00(1/20*1
`
`Next: Quick tour, Previous: Credits, Up: Overview [Contents][Index]
`
`005
`
`005
`
`