RCSFILE(5) File Formats Manual RCSFILE(5)

rcsfileformat of an RCS file

An RCS file is a text file. It consists of four sections, each separated by two empty lines. RCS files should not be edited by hand; the rcs(1) programs should be used instead.

The RCS file begins with admin data. Each entry in this section consists of either one or multiple values. Entries that take one value are specified on one line: The keyword and its corresponding value are separated by a tab character. Entries that take multiple values begin with a keyword on one line; the values are specified on subsequent lines, one per line and prefixed with a tab character. If the list is empty, the semicolon immediately follows the keyword. Entries are terminated with a semicolon. The entries are:

Highest revision number.
Revision number that specifies the default branch (optional).
List of users that are allowed to check in new revisions with ci(1). This keyword is not followed by a tab; instead, the list of users is specified with one username per line. The list is terminated by a single semicolon.
List of symbolic names used as aliases for specific revisions. Each entry consists of a symbolic name followed by a colon and the revision.
List of locked revisions. Each entry consists of a username followed by a colon and the locked revision.
Indicates that locks are strict; if missing, locks are not strict. This entry takes no value and immediately follows the list of locks without a newline.
Contains the comment leader surrounded by at signs.
Indicates the keyword substitution mode. See rcs(1) for the possible keyword substitution modes. If this entry is not given in the admin section, kv must be assumed.

The RCS file continues with a list of deltas. Deltas are separated by empty lines. The list begins with the head and ends with the initial revision. Each entry begins with the revision number, followed by a newline. After that, the structure follows the admin section.

Indicates the date and UTC time the revision was checked in. The date consists of the year, the month, the day of month, the hour, the minute and the second, each separated by dots. The year is specified in either two or four digits. The other values are specified in two digits each.
Author's username. This entry immediately follows the date without a newline.
Contains the state of this delta, which is an arbitrary string. This entry immediately follows the author without a newline.
List of revision numbers that are branches stemming from this delta.
Next revision. Chronologically, this is the revision. For the initial check-in, rev is empty, but the tab character that acts as separator is nonetheless present.

The RCS file continues with the description. It consists of the string desc followed by a newline and then an at sign. The description is an arbitrary string that can span multiple lines. A single at sign on a line terminates the description. At signs anywhere in the description itself are escaped by prefixing them with another at sign.

Finally, the RCS file contains the deltatexts. The list of deltatexts is ordered the same as the list of deltas. Deltatexts are separated by two lines. Each entry begins with the revision number, followed by a newline. The text “log” follows on its own line. The log message follows on another new line; it consists of an at sign, the log message itself (which may span multiple lines), and finally an at sign on its own line. Then the text “text” follows on its own line. The format is the same as for the description and log message. As with the description, at signs anywhere in the log message or in the deltatext itself are escaped by prefixing them with another at sign. The deltatext of the head consists of the full file contents. All subsequent deltatexts contain the differences to the previous deltatext in the format of diff(1) -n.

ci(1), co(1), cvs(1), ident(1), rcs(1), rcsclean(1), rcsdiff(1), rcsmerge(1)

April 24, 2019 OpenBSD 7.5