111891Speter.lf 1 ./rcsfile.5in
211891Speter.\" Set p to 1 if your formatter can handle pic output.
311891Speter.if t .nr p 1
49Sjkh.de Id
59Sjkh.ds Rv \\$3
69Sjkh.ds Dt \\$4
79Sjkh..
850472Speter.Id $FreeBSD$
99Sjkh.ds r \s-1RCS\s0
109Sjkh.if n .ds - \%--
119Sjkh.if t .ds - \(em
129Sjkh.TH RCSFILE 5 \*(Dt GNU
139Sjkh.SH NAME
149Sjkhrcsfile \- format of RCS file
159Sjkh.SH DESCRIPTION
169SjkhAn \*r file's
179Sjkhcontents are described by the grammar
189Sjkhbelow.
199Sjkh.PP
209SjkhThe text is free format: space, backspace, tab, newline, vertical
219Sjkhtab, form feed, and carriage return (collectively,
229Sjkh.IR "white space")
239Sjkhhave no significance except in strings.
2411891SpeterHowever, white space cannot appear within an id, num, or sym,
2511891Speterand an \*r file must end with a newline.
269Sjkh.PP
279SjkhStrings are enclosed by
289Sjkh.BR @ .
299SjkhIf a string contains a
309Sjkh.BR @ ,
319Sjkhit must be doubled;
3211891Speterotherwise, strings can contain arbitrary binary data.
339Sjkh.PP
349SjkhThe meta syntax uses the following conventions: `|' (bar) separates
359Sjkhalternatives; `{' and `}' enclose optional phrases; `{' and `}*' enclose
3611891Speterphrases that can be repeated zero or more times;
3711891Speter`{' and '}+' enclose phrases that must appear at least once and can be
389Sjkhrepeated;
399SjkhTerminal symbols are in
409Sjkh.BR boldface ;
419Sjkhnonterminal symbols are in
429Sjkh.IR italics .
439Sjkh.LP
4411891Speter.nr w \w'\f3deltatext\fP '
4511891Speter.nr y \w'\f3newphrase\fP '
4611891Speter.if \nw<\ny .nr w \ny
479Sjkh.nr x \w'\f3branches\fP'
489Sjkh.nr y \w'{ \f3comment\fP'
499Sjkh.if \nx<\ny .nr x \ny
509Sjkh.nr y \w'\f3{ branch\fP'
519Sjkh.if \nx<\ny .nr x \ny
5211891Speter.ta \nwu +\w'::=  'u +\nxu+\w'  'u
5311891Speter.fc #
549Sjkh.nf
559Sjkh\f2rcstext\fP	::=	\f2admin\fP {\f2delta\fP}* \f2desc\fP {\f2deltatext\fP}*
569Sjkh.LP
579Sjkh\f2admin\fP	::=	\f3head\fP	{\f2num\fP}\f3;\fP
589Sjkh		{ \f3branch\fP	{\f2num\fP}\f3;\fP }
599Sjkh		\f3access\fP	{\f2id\fP}*\f3;\fP
6011891Speter		\f3symbols\fP	{\f2sym\fP \f3:\fP \f2num\fP}*\f3;\fP
619Sjkh		\f3locks\fP	{\f2id\fP \f3:\fP \f2num\fP}*\f3;\fP  {\f3strict  ;\fP}
629Sjkh		{ \f3comment\fP	{\f2string\fP}\f3;\fP }
639Sjkh		{ \f3expand\fP	{\f2string\fP}\f3;\fP }
649Sjkh		{ \f2newphrase\fP }*
659Sjkh.LP
669Sjkh\f2delta\fP	::=	\f2num\fP
679Sjkh		\f3date\fP	\f2num\fP\f3;\fP
689Sjkh		\f3author\fP	\f2id\fP\f3;\fP
699Sjkh		\f3state\fP	{\f2id\fP}\f3;\fP
709Sjkh		\f3branches\fP	{\f2num\fP}*\f3;\fP
719Sjkh		\f3next\fP	{\f2num\fP}\f3;\fP
729Sjkh		{ \f2newphrase\fP }*
739Sjkh.LP
749Sjkh\f2desc\fP	::=	\f3desc\fP	\f2string\fP
759Sjkh.LP
769Sjkh\f2deltatext\fP	::=	\f2num\fP
779Sjkh		\f3log\fP	\f2string\fP
789Sjkh		{ \f2newphrase\fP }*
799Sjkh		\f3text\fP	\f2string\fP
809Sjkh.LP
8111891Speter\f2num\fP	::=	{\f2digit\fP | \f3.\fP}+
829Sjkh.LP
8311891Speter\f2digit\fP	::=	\f30\fP | \f31\fP | \f32\fP | \f33\fP | \f34\fP | \f35\fP | \f36\fP | \f37\fP | \f38\fP | \f39\fP
849Sjkh.LP
8511891Speter\f2id\fP	::=	{\f2num\fP} \f2idchar\fP {\f2idchar\fP | \f2num\fP}*
869Sjkh.LP
8711891Speter\f2sym\fP	::=	{\f2digit\fP}* \f2idchar\fP {\f2idchar\fP | \f2digit\fP}*
889Sjkh.LP
899Sjkh\f2idchar\fP	::=	any visible graphic character except \f2special\fP
909Sjkh.LP
919Sjkh\f2special\fP	::=	\f3$\fP | \f3,\fP | \f3.\fP | \f3:\fP | \f3;\fP | \f3@\fP
929Sjkh.LP
939Sjkh\f2string\fP	::=	\f3@\fP{any character, with \f3@\fP doubled}*\f3@\fP
949Sjkh.LP
959Sjkh\f2newphrase\fP	::=	\f2id\fP \f2word\fP* \f3;\fP
969Sjkh.LP
979Sjkh\f2word\fP	::=	\f2id\fP | \f2num\fP | \f2string\fP | \f3:\fP
989Sjkh.fi
999Sjkh.PP
1009SjkhIdentifiers are case sensitive.  Keywords are in lower case only.
10111891SpeterThe sets of keywords and identifiers can overlap.
10211891SpeterIn most environments \*r uses the \s-1ISO\s0 8859/1 encoding:
1039Sjkhvisible graphic characters are codes 041\-176 and 240\-377,
1049Sjkhand white space characters are codes 010\-015 and 040.
1059Sjkh.PP
10611891SpeterDates, which appear after the
10711891Speter.B date
10811891Speterkeyword, are of the form
10911891Speter\f2Y\fP\f3.\fP\f2mm\fP\f3.\fP\f2dd\fP\f3.\fP\f2hh\fP\f3.\fP\f2mm\fP\f3.\fP\f2ss\fP,
11011891Speterwhere
11111891Speter.I Y
11211891Speteris the year,
11311891Speter.I mm
11411891Speterthe month (01\-12),
11511891Speter.I dd
11611891Speterthe day (01\-31),
11711891Speter.I hh
11811891Speterthe hour (00\-23),
11911891Speter.I mm
12011891Speterthe minute (00\-59),
12111891Speterand
12211891Speter.I ss
12311891Speterthe second (00\-60).
12411891Speter.I Y
12511891Spetercontains just the last two digits of the year
12611891Speterfor years from 1900 through 1999,
12711891Speterand all the digits of years thereafter.
12811891SpeterDates use the Gregorian calendar; times use UTC.
12911891Speter.PP
1309SjkhThe
1319Sjkh.I newphrase
1329Sjkhproductions in the grammar are reserved for future extensions
1339Sjkhto the format of \*r files.
1349SjkhNo
1359Sjkh.I newphrase
1369Sjkhwill begin with any keyword already in use.
1379Sjkh.PP
1389SjkhThe
1399Sjkh.I delta
1409Sjkhnodes form a tree.  All nodes whose numbers
1419Sjkhconsist of a single pair
1429Sjkh(e.g., 2.3, 2.1, 1.3, etc.)
1439Sjkhare on the trunk, and are linked through the
1449Sjkh.B next
1459Sjkhfield in order of decreasing numbers.
1469SjkhThe
1479Sjkh.B head
1489Sjkhfield in the
1499Sjkh.I admin
1509Sjkhnode points to the head of that sequence (i.e., contains
1519Sjkhthe highest pair).
1529SjkhThe
1539Sjkh.B branch
1549Sjkhnode in the admin node indicates the default
1559Sjkhbranch (or revision) for most \*r operations.
1569SjkhIf empty, the default
1579Sjkhbranch is the highest branch on the trunk.
1589Sjkh.PP
1599SjkhAll
1609Sjkh.I delta
1619Sjkhnodes whose numbers consist of
1629Sjkh.RI 2 n
1639Sjkhfields
16411891Speter.RI ( n \(>=2)
1659Sjkh(e.g., 3.1.1.1, 2.1.2.2, etc.)
1669Sjkhare linked as follows.
1679SjkhAll nodes whose first
1689Sjkh.RI 2 n \-1
1699Sjkhnumber fields are identical are linked through the
1709Sjkh.B next
1719Sjkhfield in order of increasing numbers.
1729SjkhFor each such sequence,
1739Sjkhthe
1749Sjkh.I delta
1759Sjkhnode whose number is identical to the first
1769Sjkh.RI 2 n \-2
1779Sjkhnumber fields of the deltas on that sequence is called the branchpoint.
1789SjkhThe
1799Sjkh.B branches
1809Sjkhfield of a node contains a list of the
1819Sjkhnumbers of the first nodes of all sequences for which it is a branchpoint.
1829SjkhThis list is ordered in increasing numbers.
1839Sjkh.LP
18411891SpeterThe following diagram shows an example of an \*r file's organization.
18511891Speter.if !\np \{\
1869Sjkh.nf
1879Sjkh.vs 12
18811891Speter.ne 36
1899Sjkh.cs 1 20
1909Sjkh.eo
1919Sjkh
1929Sjkh                           Head
1939Sjkh                             |
1949Sjkh                             |
1959Sjkh                             v                        / \
1969Sjkh                         ---------                   /   \
1979Sjkh   / \          / \      |       |      / \         /     \
1989Sjkh  /   \        /   \     |  2.1  |     /   \       /       \
1999Sjkh /     \      /     \    |       |    /     \     /         \
2009Sjkh/1.2.1.3\    /1.3.1.1\   |       |   /1.2.2.2\   /1.2.2.1.1.1\
2019Sjkh---------    ---------   ---------   ---------   -------------
2029Sjkh    ^            ^           |           ^             ^
2039Sjkh    |            |           |           |             |
2049Sjkh    |            |           v           |             |
2059Sjkh   / \           |       ---------      / \            |
2069Sjkh  /   \          |       \  1.3  /     /   \           |
2079Sjkh /     \         ---------\     /     /     \-----------
2089Sjkh/1.2.1.1\                  \   /     /1.2.2.1\
2099Sjkh---------                   \ /      ---------
2109Sjkh    ^                        |           ^
2119Sjkh    |                        |           |
2129Sjkh    |                        v           |
2139Sjkh    |                    ---------       |
2149Sjkh    |                    \  1.2  /       |
2159Sjkh    ----------------------\     /---------
2169Sjkh                           \   /
2179Sjkh                            \ /
2189Sjkh                             |
2199Sjkh                             |
2209Sjkh                             v
2219Sjkh                         ---------
2229Sjkh                         \  1.1  /
2239Sjkh                          \     /
2249Sjkh                           \   /
2259Sjkh                            \ /
2269Sjkh
2279Sjkh.ec
2289Sjkh.cs 1
2299Sjkh.vs
2309Sjkh.fi
23111891Speter.\}
23211891Speter.if \np \{\
23311891Speter.lf 232
23411891Speter.PS 4.250i 3.812i
23511891Speter.\" -2.0625 -4.25 1.75 0
23611891Speter.\" 0.000i 4.250i 3.812i 0.000i
23711891Speter.nr 00 \n(.u
23811891Speter.nf
23911891Speter.nr 0x 1
24011891Speter\h'3.812i'
24111891Speter.sp -1
24211891Speter.lf 242
24311891Speter\h'2.062i-(\w'Head'u/2u)'\v'0.125i-(0v/2u)+0v+0.22m'Head
24411891Speter.sp -1
24511891Speter\h'2.062i'\v'0.250i'\D'l0.000i 0.500i'
24611891Speter.sp -1
24711891Speter\h'2.087i'\v'0.650i'\D'l-0.025i 0.100i'
24811891Speter.sp -1
24911891Speter\h'2.062i'\v'0.750i'\D'l-0.025i -0.100i'
25011891Speter.sp -1
25111891Speter\h'1.688i'\v'1.250i'\D'l0.750i 0.000i'
25211891Speter.sp -1
25311891Speter\h'2.438i'\v'1.250i'\D'l0.000i -0.500i'
25411891Speter.sp -1
25511891Speter\h'2.438i'\v'0.750i'\D'l-0.750i 0.000i'
25611891Speter.sp -1
25711891Speter\h'1.688i'\v'0.750i'\D'l0.000i 0.500i'
25811891Speter.sp -1
25911891Speter.lf 244
26011891Speter\h'2.062i-(\w'2.1'u/2u)'\v'1.000i-(0v/2u)+0v+0.22m'2.1
26111891Speter.sp -1
26211891Speter\h'2.062i'\v'1.250i'\D'l0.000i 0.500i'
26311891Speter.sp -1
26411891Speter\h'2.087i'\v'1.650i'\D'l-0.025i 0.100i'
26511891Speter.sp -1
26611891Speter\h'2.062i'\v'1.750i'\D'l-0.025i -0.100i'
26711891Speter.sp -1
26811891Speter.lf 246
26911891Speter\h'2.062i-(\w'1.3'u/2u)'\v'2.000i-(1v/2u)+0v+0.22m'1.3
27011891Speter.sp -1
27111891Speter\h'2.062i'\v'2.250i'\D'l-0.375i -0.500i'
27211891Speter.sp -1
27311891Speter\h'1.688i'\v'1.750i'\D'l0.750i 0.000i'
27411891Speter.sp -1
27511891Speter\h'2.438i'\v'1.750i'\D'l-0.375i 0.500i'
27611891Speter.sp -1
27711891Speter\h'1.875i'\v'2.000i'\D'~-0.500i 0.000i 0.000i -0.500i'
27811891Speter.sp -1
27911891Speter\h'1.350i'\v'1.600i'\D'l0.025i -0.100i'
28011891Speter.sp -1
28111891Speter\h'1.375i'\v'1.500i'\D'l0.025i 0.100i'
28211891Speter.sp -1
28311891Speter.lf 249
28411891Speter\h'1.375i-(\w'1.3.1.1'u/2u)'\v'1.250i-(1v/2u)+1v+0.22m'1.3.1.1
28511891Speter.sp -1
28611891Speter\h'1.375i'\v'1.000i'\D'l-0.375i 0.500i'
28711891Speter.sp -1
28811891Speter\h'1.000i'\v'1.500i'\D'l0.750i 0.000i'
28911891Speter.sp -1
29011891Speter\h'1.750i'\v'1.500i'\D'l-0.375i -0.500i'
29111891Speter.sp -1
29211891Speter\h'2.062i'\v'2.250i'\D'l0.000i 0.500i'
29311891Speter.sp -1
29411891Speter\h'2.087i'\v'2.650i'\D'l-0.025i 0.100i'
29511891Speter.sp -1
29611891Speter\h'2.062i'\v'2.750i'\D'l-0.025i -0.100i'
29711891Speter.sp -1
29811891Speter.lf 252
29911891Speter\h'2.062i-(\w'1.2'u/2u)'\v'3.000i-(1v/2u)+0v+0.22m'1.2
30011891Speter.sp -1
30111891Speter\h'2.062i'\v'3.250i'\D'l-0.375i -0.500i'
30211891Speter.sp -1
30311891Speter\h'1.688i'\v'2.750i'\D'l0.750i 0.000i'
30411891Speter.sp -1
30511891Speter\h'2.438i'\v'2.750i'\D'l-0.375i 0.500i'
30611891Speter.sp -1
30711891Speter\h'1.875i'\v'3.000i'\D'~-0.500i 0.000i -0.500i 0.000i -0.500i 0.000i 0.000i -0.500i'
30811891Speter.sp -1
30911891Speter\h'0.350i'\v'2.600i'\D'l0.025i -0.100i'
31011891Speter.sp -1
31111891Speter\h'0.375i'\v'2.500i'\D'l0.025i 0.100i'
31211891Speter.sp -1
31311891Speter.lf 255
31411891Speter\h'0.375i-(\w'1.2.1.1'u/2u)'\v'2.250i-(1v/2u)+1v+0.22m'1.2.1.1
31511891Speter.sp -1
31611891Speter\h'0.375i'\v'2.000i'\D'l-0.375i 0.500i'
31711891Speter.sp -1
31811891Speter\h'0.000i'\v'2.500i'\D'l0.750i 0.000i'
31911891Speter.sp -1
32011891Speter\h'0.750i'\v'2.500i'\D'l-0.375i -0.500i'
32111891Speter.sp -1
32211891Speter\h'0.375i'\v'2.000i'\D'l0.000i -0.500i'
32311891Speter.sp -1
32411891Speter\h'0.350i'\v'1.600i'\D'l0.025i -0.100i'
32511891Speter.sp -1
32611891Speter\h'0.375i'\v'1.500i'\D'l0.025i 0.100i'
32711891Speter.sp -1
32811891Speter.lf 257
32911891Speter\h'0.375i-(\w'1.2.1.3'u/2u)'\v'1.250i-(1v/2u)+1v+0.22m'1.2.1.3
33011891Speter.sp -1
33111891Speter\h'0.375i'\v'1.000i'\D'l-0.375i 0.500i'
33211891Speter.sp -1
33311891Speter\h'0.000i'\v'1.500i'\D'l0.750i 0.000i'
33411891Speter.sp -1
33511891Speter\h'0.750i'\v'1.500i'\D'l-0.375i -0.500i'
33611891Speter.sp -1
33711891Speter\h'2.250i'\v'3.000i'\D'~0.500i 0.000i 0.000i -0.500i'
33811891Speter.sp -1
33911891Speter\h'2.725i'\v'2.600i'\D'l0.025i -0.100i'
34011891Speter.sp -1
34111891Speter\h'2.750i'\v'2.500i'\D'l0.025i 0.100i'
34211891Speter.sp -1
34311891Speter.lf 261
34411891Speter\h'2.750i-(\w'1.2.2.1'u/2u)'\v'2.250i-(1v/2u)+1v+0.22m'1.2.2.1
34511891Speter.sp -1
34611891Speter\h'2.750i'\v'2.000i'\D'l-0.375i 0.500i'
34711891Speter.sp -1
34811891Speter\h'2.375i'\v'2.500i'\D'l0.750i 0.000i'
34911891Speter.sp -1
35011891Speter\h'3.125i'\v'2.500i'\D'l-0.375i -0.500i'
35111891Speter.sp -1
35211891Speter\h'2.938i'\v'2.250i'\D'~0.500i 0.000i 0.000i -0.500i 0.000i -0.500i'
35311891Speter.sp -1
35411891Speter\h'3.413i'\v'1.350i'\D'l0.025i -0.100i'
35511891Speter.sp -1
35611891Speter\h'3.438i'\v'1.250i'\D'l0.025i 0.100i'
35711891Speter.sp -1
35811891Speter.lf 264
35911891Speter\h'3.438i-(\w'\s-21.2.2.1.1.1\s0'u/2u)'\v'1.000i-(1v/2u)+1v+0.22m'\s-21.2.2.1.1.1\s0
36011891Speter.sp -1
36111891Speter\h'3.438i'\v'0.750i'\D'l-0.375i 0.500i'
36211891Speter.sp -1
36311891Speter\h'3.062i'\v'1.250i'\D'l0.750i 0.000i'
36411891Speter.sp -1
36511891Speter\h'3.812i'\v'1.250i'\D'l-0.375i -0.500i'
36611891Speter.sp -1
36711891Speter\h'2.750i'\v'2.000i'\D'l0.000i -0.500i'
36811891Speter.sp -1
36911891Speter\h'2.725i'\v'1.600i'\D'l0.025i -0.100i'
37011891Speter.sp -1
37111891Speter\h'2.750i'\v'1.500i'\D'l0.025i 0.100i'
37211891Speter.sp -1
37311891Speter.lf 267
37411891Speter\h'2.750i-(\w'1.2.2.2'u/2u)'\v'1.250i-(1v/2u)+1v+0.22m'1.2.2.2
37511891Speter.sp -1
37611891Speter\h'2.750i'\v'1.000i'\D'l-0.375i 0.500i'
37711891Speter.sp -1
37811891Speter\h'2.375i'\v'1.500i'\D'l0.750i 0.000i'
37911891Speter.sp -1
38011891Speter\h'3.125i'\v'1.500i'\D'l-0.375i -0.500i'
38111891Speter.sp -1
38211891Speter\h'2.062i'\v'3.250i'\D'l0.000i 0.500i'
38311891Speter.sp -1
38411891Speter\h'2.087i'\v'3.650i'\D'l-0.025i 0.100i'
38511891Speter.sp -1
38611891Speter\h'2.062i'\v'3.750i'\D'l-0.025i -0.100i'
38711891Speter.sp -1
38811891Speter.lf 270
38911891Speter\h'2.062i-(\w'1.1'u/2u)'\v'4.000i-(1v/2u)+0v+0.22m'1.1
39011891Speter.sp -1
39111891Speter\h'2.062i'\v'4.250i'\D'l-0.375i -0.500i'
39211891Speter.sp -1
39311891Speter\h'1.688i'\v'3.750i'\D'l0.750i 0.000i'
39411891Speter.sp -1
39511891Speter\h'2.438i'\v'3.750i'\D'l-0.375i 0.500i'
39611891Speter.sp -1
39711891Speter.sp 4.250i+1
39811891Speter.if \n(00 .fi
39911891Speter.br
40011891Speter.nr 0x 0
40111891Speter.lf 271
40211891Speter.PE
40311891Speter.lf 272
40411891Speter.\}
4059Sjkh.SH IDENTIFICATION
4069Sjkh.de VL
4079Sjkh\\$2
4089Sjkh..
4099SjkhAuthor: Walter F. Tichy,
4109SjkhPurdue University, West Lafayette, IN, 47907.
4119Sjkh.br
41211891SpeterManual Page Revision: \*(Rv; Release Date: \*(Dt.
4139Sjkh.br
41411891SpeterCopyright \(co 1982, 1988, 1989 Walter F. Tichy.
4159Sjkh.br
41611891SpeterCopyright \(co 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.
4179Sjkh.SH SEE ALSO
41811891Speterrcsintro(1), ci(1), co(1), ident(1), rcs(1), rcsclean(1), rcsdiff(1),
41911891Speterrcsmerge(1), rlog(1)
4209Sjkh.br
4219SjkhWalter F. Tichy,
4229Sjkh\*r\*-A System for Version Control,
4239Sjkh.I "Software\*-Practice & Experience"
4249Sjkh.BR 15 ,
4259Sjkh7 (July 1985), 637-654.
426