1.lf 1 ./rcsfile.5in
2.\" Set p to 1 if your formatter can handle pic output.
3.if t .nr p 1
4.de Id
5.ds Rv \\$3
6.ds Dt \\$4
7..
8.Id $FreeBSD$
9.ds r \s-1RCS\s0
10.if n .ds - \%--
11.if t .ds - \(em
12.TH RCSFILE 5 \*(Dt GNU
13.SH NAME
14rcsfile \- format of RCS file
15.SH DESCRIPTION
16An \*r file's
17contents are described by the grammar
18below.
19.PP
20The text is free format: space, backspace, tab, newline, vertical
21tab, form feed, and carriage return (collectively,
22.IR "white space")
23have no significance except in strings.
24However, white space cannot appear within an id, num, or sym,
25and an \*r file must end with a newline.
26.PP
27Strings are enclosed by
28.BR @ .
29If a string contains a
30.BR @ ,
31it must be doubled;
32otherwise, strings can contain arbitrary binary data.
33.PP
34The meta syntax uses the following conventions: `|' (bar) separates
35alternatives; `{' and `}' enclose optional phrases; `{' and `}*' enclose
36phrases that can be repeated zero or more times;
37`{' and '}+' enclose phrases that must appear at least once and can be
38repeated;
39Terminal symbols are in
40.BR boldface ;
41nonterminal symbols are in
42.IR italics .
43.LP
44.nr w \w'\f3deltatext\fP '
45.nr y \w'\f3newphrase\fP '
46.if \nw<\ny .nr w \ny
47.nr x \w'\f3branches\fP'
48.nr y \w'{ \f3comment\fP'
49.if \nx<\ny .nr x \ny
50.nr y \w'\f3{ branch\fP'
51.if \nx<\ny .nr x \ny
52.ta \nwu +\w'::=  'u +\nxu+\w'  'u
53.fc #
54.nf
55\f2rcstext\fP	::=	\f2admin\fP {\f2delta\fP}* \f2desc\fP {\f2deltatext\fP}*
56.LP
57\f2admin\fP	::=	\f3head\fP	{\f2num\fP}\f3;\fP
58		{ \f3branch\fP	{\f2num\fP}\f3;\fP }
59		\f3access\fP	{\f2id\fP}*\f3;\fP
60		\f3symbols\fP	{\f2sym\fP \f3:\fP \f2num\fP}*\f3;\fP
61		\f3locks\fP	{\f2id\fP \f3:\fP \f2num\fP}*\f3;\fP  {\f3strict  ;\fP}
62		{ \f3comment\fP	{\f2string\fP}\f3;\fP }
63		{ \f3expand\fP	{\f2string\fP}\f3;\fP }
64		{ \f2newphrase\fP }*
65.LP
66\f2delta\fP	::=	\f2num\fP
67		\f3date\fP	\f2num\fP\f3;\fP
68		\f3author\fP	\f2id\fP\f3;\fP
69		\f3state\fP	{\f2id\fP}\f3;\fP
70		\f3branches\fP	{\f2num\fP}*\f3;\fP
71		\f3next\fP	{\f2num\fP}\f3;\fP
72		{ \f2newphrase\fP }*
73.LP
74\f2desc\fP	::=	\f3desc\fP	\f2string\fP
75.LP
76\f2deltatext\fP	::=	\f2num\fP
77		\f3log\fP	\f2string\fP
78		{ \f2newphrase\fP }*
79		\f3text\fP	\f2string\fP
80.LP
81\f2num\fP	::=	{\f2digit\fP | \f3.\fP}+
82.LP
83\f2digit\fP	::=	\f30\fP | \f31\fP | \f32\fP | \f33\fP | \f34\fP | \f35\fP | \f36\fP | \f37\fP | \f38\fP | \f39\fP
84.LP
85\f2id\fP	::=	{\f2num\fP} \f2idchar\fP {\f2idchar\fP | \f2num\fP}*
86.LP
87\f2sym\fP	::=	{\f2digit\fP}* \f2idchar\fP {\f2idchar\fP | \f2digit\fP}*
88.LP
89\f2idchar\fP	::=	any visible graphic character except \f2special\fP
90.LP
91\f2special\fP	::=	\f3$\fP | \f3,\fP | \f3.\fP | \f3:\fP | \f3;\fP | \f3@\fP
92.LP
93\f2string\fP	::=	\f3@\fP{any character, with \f3@\fP doubled}*\f3@\fP
94.LP
95\f2newphrase\fP	::=	\f2id\fP \f2word\fP* \f3;\fP
96.LP
97\f2word\fP	::=	\f2id\fP | \f2num\fP | \f2string\fP | \f3:\fP
98.fi
99.PP
100Identifiers are case sensitive.  Keywords are in lower case only.
101The sets of keywords and identifiers can overlap.
102In most environments \*r uses the \s-1ISO\s0 8859/1 encoding:
103visible graphic characters are codes 041\-176 and 240\-377,
104and white space characters are codes 010\-015 and 040.
105.PP
106Dates, which appear after the
107.B date
108keyword, are of the form
109\f2Y\fP\f3.\fP\f2mm\fP\f3.\fP\f2dd\fP\f3.\fP\f2hh\fP\f3.\fP\f2mm\fP\f3.\fP\f2ss\fP,
110where
111.I Y
112is the year,
113.I mm
114the month (01\-12),
115.I dd
116the day (01\-31),
117.I hh
118the hour (00\-23),
119.I mm
120the minute (00\-59),
121and
122.I ss
123the second (00\-60).
124.I Y
125contains just the last two digits of the year
126for years from 1900 through 1999,
127and all the digits of years thereafter.
128Dates use the Gregorian calendar; times use UTC.
129.PP
130The
131.I newphrase
132productions in the grammar are reserved for future extensions
133to the format of \*r files.
134No
135.I newphrase
136will begin with any keyword already in use.
137.PP
138The
139.I delta
140nodes form a tree.  All nodes whose numbers
141consist of a single pair
142(e.g., 2.3, 2.1, 1.3, etc.)
143are on the trunk, and are linked through the
144.B next
145field in order of decreasing numbers.
146The
147.B head
148field in the
149.I admin
150node points to the head of that sequence (i.e., contains
151the highest pair).
152The
153.B branch
154node in the admin node indicates the default
155branch (or revision) for most \*r operations.
156If empty, the default
157branch is the highest branch on the trunk.
158.PP
159All
160.I delta
161nodes whose numbers consist of
162.RI 2 n
163fields
164.RI ( n \(>=2)
165(e.g., 3.1.1.1, 2.1.2.2, etc.)
166are linked as follows.
167All nodes whose first
168.RI 2 n \-1
169number fields are identical are linked through the
170.B next
171field in order of increasing numbers.
172For each such sequence,
173the
174.I delta
175node whose number is identical to the first
176.RI 2 n \-2
177number fields of the deltas on that sequence is called the branchpoint.
178The
179.B branches
180field of a node contains a list of the
181numbers of the first nodes of all sequences for which it is a branchpoint.
182This list is ordered in increasing numbers.
183.LP
184The following diagram shows an example of an \*r file's organization.
185.if !\np \{\
186.nf
187.vs 12
188.ne 36
189.cs 1 20
190.eo
191
192                           Head
193                             |
194                             |
195                             v                        / \
196                         ---------                   /   \
197   / \          / \      |       |      / \         /     \
198  /   \        /   \     |  2.1  |     /   \       /       \
199 /     \      /     \    |       |    /     \     /         \
200/1.2.1.3\    /1.3.1.1\   |       |   /1.2.2.2\   /1.2.2.1.1.1\
201---------    ---------   ---------   ---------   -------------
202    ^            ^           |           ^             ^
203    |            |           |           |             |
204    |            |           v           |             |
205   / \           |       ---------      / \            |
206  /   \          |       \  1.3  /     /   \           |
207 /     \         ---------\     /     /     \-----------
208/1.2.1.1\                  \   /     /1.2.2.1\
209---------                   \ /      ---------
210    ^                        |           ^
211    |                        |           |
212    |                        v           |
213    |                    ---------       |
214    |                    \  1.2  /       |
215    ----------------------\     /---------
216                           \   /
217                            \ /
218                             |
219                             |
220                             v
221                         ---------
222                         \  1.1  /
223                          \     /
224                           \   /
225                            \ /
226
227.ec
228.cs 1
229.vs
230.fi
231.\}
232.if \np \{\
233.lf 232
234.PS 4.250i 3.812i
235.\" -2.0625 -4.25 1.75 0
236.\" 0.000i 4.250i 3.812i 0.000i
237.nr 00 \n(.u
238.nf
239.nr 0x 1
240\h'3.812i'
241.sp -1
242.lf 242
243\h'2.062i-(\w'Head'u/2u)'\v'0.125i-(0v/2u)+0v+0.22m'Head
244.sp -1
245\h'2.062i'\v'0.250i'\D'l0.000i 0.500i'
246.sp -1
247\h'2.087i'\v'0.650i'\D'l-0.025i 0.100i'
248.sp -1
249\h'2.062i'\v'0.750i'\D'l-0.025i -0.100i'
250.sp -1
251\h'1.688i'\v'1.250i'\D'l0.750i 0.000i'
252.sp -1
253\h'2.438i'\v'1.250i'\D'l0.000i -0.500i'
254.sp -1
255\h'2.438i'\v'0.750i'\D'l-0.750i 0.000i'
256.sp -1
257\h'1.688i'\v'0.750i'\D'l0.000i 0.500i'
258.sp -1
259.lf 244
260\h'2.062i-(\w'2.1'u/2u)'\v'1.000i-(0v/2u)+0v+0.22m'2.1
261.sp -1
262\h'2.062i'\v'1.250i'\D'l0.000i 0.500i'
263.sp -1
264\h'2.087i'\v'1.650i'\D'l-0.025i 0.100i'
265.sp -1
266\h'2.062i'\v'1.750i'\D'l-0.025i -0.100i'
267.sp -1
268.lf 246
269\h'2.062i-(\w'1.3'u/2u)'\v'2.000i-(1v/2u)+0v+0.22m'1.3
270.sp -1
271\h'2.062i'\v'2.250i'\D'l-0.375i -0.500i'
272.sp -1
273\h'1.688i'\v'1.750i'\D'l0.750i 0.000i'
274.sp -1
275\h'2.438i'\v'1.750i'\D'l-0.375i 0.500i'
276.sp -1
277\h'1.875i'\v'2.000i'\D'~-0.500i 0.000i 0.000i -0.500i'
278.sp -1
279\h'1.350i'\v'1.600i'\D'l0.025i -0.100i'
280.sp -1
281\h'1.375i'\v'1.500i'\D'l0.025i 0.100i'
282.sp -1
283.lf 249
284\h'1.375i-(\w'1.3.1.1'u/2u)'\v'1.250i-(1v/2u)+1v+0.22m'1.3.1.1
285.sp -1
286\h'1.375i'\v'1.000i'\D'l-0.375i 0.500i'
287.sp -1
288\h'1.000i'\v'1.500i'\D'l0.750i 0.000i'
289.sp -1
290\h'1.750i'\v'1.500i'\D'l-0.375i -0.500i'
291.sp -1
292\h'2.062i'\v'2.250i'\D'l0.000i 0.500i'
293.sp -1
294\h'2.087i'\v'2.650i'\D'l-0.025i 0.100i'
295.sp -1
296\h'2.062i'\v'2.750i'\D'l-0.025i -0.100i'
297.sp -1
298.lf 252
299\h'2.062i-(\w'1.2'u/2u)'\v'3.000i-(1v/2u)+0v+0.22m'1.2
300.sp -1
301\h'2.062i'\v'3.250i'\D'l-0.375i -0.500i'
302.sp -1
303\h'1.688i'\v'2.750i'\D'l0.750i 0.000i'
304.sp -1
305\h'2.438i'\v'2.750i'\D'l-0.375i 0.500i'
306.sp -1
307\h'1.875i'\v'3.000i'\D'~-0.500i 0.000i -0.500i 0.000i -0.500i 0.000i 0.000i -0.500i'
308.sp -1
309\h'0.350i'\v'2.600i'\D'l0.025i -0.100i'
310.sp -1
311\h'0.375i'\v'2.500i'\D'l0.025i 0.100i'
312.sp -1
313.lf 255
314\h'0.375i-(\w'1.2.1.1'u/2u)'\v'2.250i-(1v/2u)+1v+0.22m'1.2.1.1
315.sp -1
316\h'0.375i'\v'2.000i'\D'l-0.375i 0.500i'
317.sp -1
318\h'0.000i'\v'2.500i'\D'l0.750i 0.000i'
319.sp -1
320\h'0.750i'\v'2.500i'\D'l-0.375i -0.500i'
321.sp -1
322\h'0.375i'\v'2.000i'\D'l0.000i -0.500i'
323.sp -1
324\h'0.350i'\v'1.600i'\D'l0.025i -0.100i'
325.sp -1
326\h'0.375i'\v'1.500i'\D'l0.025i 0.100i'
327.sp -1
328.lf 257
329\h'0.375i-(\w'1.2.1.3'u/2u)'\v'1.250i-(1v/2u)+1v+0.22m'1.2.1.3
330.sp -1
331\h'0.375i'\v'1.000i'\D'l-0.375i 0.500i'
332.sp -1
333\h'0.000i'\v'1.500i'\D'l0.750i 0.000i'
334.sp -1
335\h'0.750i'\v'1.500i'\D'l-0.375i -0.500i'
336.sp -1
337\h'2.250i'\v'3.000i'\D'~0.500i 0.000i 0.000i -0.500i'
338.sp -1
339\h'2.725i'\v'2.600i'\D'l0.025i -0.100i'
340.sp -1
341\h'2.750i'\v'2.500i'\D'l0.025i 0.100i'
342.sp -1
343.lf 261
344\h'2.750i-(\w'1.2.2.1'u/2u)'\v'2.250i-(1v/2u)+1v+0.22m'1.2.2.1
345.sp -1
346\h'2.750i'\v'2.000i'\D'l-0.375i 0.500i'
347.sp -1
348\h'2.375i'\v'2.500i'\D'l0.750i 0.000i'
349.sp -1
350\h'3.125i'\v'2.500i'\D'l-0.375i -0.500i'
351.sp -1
352\h'2.938i'\v'2.250i'\D'~0.500i 0.000i 0.000i -0.500i 0.000i -0.500i'
353.sp -1
354\h'3.413i'\v'1.350i'\D'l0.025i -0.100i'
355.sp -1
356\h'3.438i'\v'1.250i'\D'l0.025i 0.100i'
357.sp -1
358.lf 264
359\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
360.sp -1
361\h'3.438i'\v'0.750i'\D'l-0.375i 0.500i'
362.sp -1
363\h'3.062i'\v'1.250i'\D'l0.750i 0.000i'
364.sp -1
365\h'3.812i'\v'1.250i'\D'l-0.375i -0.500i'
366.sp -1
367\h'2.750i'\v'2.000i'\D'l0.000i -0.500i'
368.sp -1
369\h'2.725i'\v'1.600i'\D'l0.025i -0.100i'
370.sp -1
371\h'2.750i'\v'1.500i'\D'l0.025i 0.100i'
372.sp -1
373.lf 267
374\h'2.750i-(\w'1.2.2.2'u/2u)'\v'1.250i-(1v/2u)+1v+0.22m'1.2.2.2
375.sp -1
376\h'2.750i'\v'1.000i'\D'l-0.375i 0.500i'
377.sp -1
378\h'2.375i'\v'1.500i'\D'l0.750i 0.000i'
379.sp -1
380\h'3.125i'\v'1.500i'\D'l-0.375i -0.500i'
381.sp -1
382\h'2.062i'\v'3.250i'\D'l0.000i 0.500i'
383.sp -1
384\h'2.087i'\v'3.650i'\D'l-0.025i 0.100i'
385.sp -1
386\h'2.062i'\v'3.750i'\D'l-0.025i -0.100i'
387.sp -1
388.lf 270
389\h'2.062i-(\w'1.1'u/2u)'\v'4.000i-(1v/2u)+0v+0.22m'1.1
390.sp -1
391\h'2.062i'\v'4.250i'\D'l-0.375i -0.500i'
392.sp -1
393\h'1.688i'\v'3.750i'\D'l0.750i 0.000i'
394.sp -1
395\h'2.438i'\v'3.750i'\D'l-0.375i 0.500i'
396.sp -1
397.sp 4.250i+1
398.if \n(00 .fi
399.br
400.nr 0x 0
401.lf 271
402.PE
403.lf 272
404.\}
405.SH IDENTIFICATION
406.de VL
407\\$2
408..
409Author: Walter F. Tichy,
410Purdue University, West Lafayette, IN, 47907.
411.br
412Manual Page Revision: \*(Rv; Release Date: \*(Dt.
413.br
414Copyright \(co 1982, 1988, 1989 Walter F. Tichy.
415.br
416Copyright \(co 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.
417.SH SEE ALSO
418rcsintro(1), ci(1), co(1), ident(1), rcs(1), rcsclean(1), rcsdiff(1),
419rcsmerge(1), rlog(1)
420.br
421Walter F. Tichy,
422\*r\*-A System for Version Control,
423.I "Software\*-Practice & Experience"
424.BR 15 ,
4257 (July 1985), 637-654.
426