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