RCS Keyword Substitution

From The System Administrator Zone

This comes from the co(1) man page. I placed it here after spending a half hour looking for a listing of rcs variables, only to find out that they are called keywords.

Keyword Substitution

Strings of the form $keyword$ and $keyword:...$ embedded in the text are replaced with strings of the form $keyword:value$ where keyword and value are pairs listed below. Keywords can be embedded in literal strings or comments to identify a revision.

Initially, the user enters strings of the form $keyword$. On checkout, co replaces these strings with strings of the form $keyword:value$. If a revision containing strings of the latter form is checked back in, the value fields will be replaced during the next checkout. Thus, the keyword values are automatically updated on checkout. This automatic substitution can be modified by the -k options.


Keywords and their corresponding values

$Author$
The login name of the user who checked in the revision.
$Date$
The date and time the revision was checked in. With -zzone a numeric time zone offset is appended; otherwise, the date is UTC.
$Header$
A standard header containing the full pathname of the RCS file, the revision number, the date and time, the author, the state, and the locker (if locked). With -zzone a numeric time zone offset is appended to the date; otherwise, the date is UTC.
$Id$
Same as $Header$, except that the RCS filename is without a path.
$Locker$
The login name of the user who locked the revision (empty if not locked).
$Log$
The log message supplied during checkin, preceded by a header containing the RCS filename, the revision number, the author, and the date and time. With -zzone a numeric time zone offset is appended; otherwise, the date is UTC. Existing log messages are not replaced. Instead, the new log message is inserted after $Log:...$. This is useful for accumulating a complete change log in a source file.
Each inserted line is prefixed by the string that prefixes the $Log$ line. For example, if the $Log$ line is "// $Log: tan.cc $", RCS prefixes each line of the log with "// ". This is useful for languages with comments that go to the end of the line. The convention for other languages is to use a " * " prefix inside a multiline comment. For example, the initial log comment of a C program conventionally is of the following form:
               /*
                * $Log$
                */
For backwards compatibility with older versions of RCS, if the log prefix is /* or (* surrounded by optional white space, inserted log lines contain a space instead of / or (; however, this usage is obsolescent and should not be relied on.
$Name$
The symbolic name used to check out the revision, if any. For example, co -rJoe generates $Name: Joe$. Plain co generates just $Name: $.
$RCSfile$
The name of the RCS file without a path.
$Revision$
The revision number assigned to the revision.
$Source$
The full pathname of the RCS file.
$State$
The state assigned to the revision with the -s option of rcs(1) or ci(1).

Keyword Escape Sequences

The following characters in keyword values are represented by escape sequences to keep keyword strings wellformed.

              char     escape sequence
              tab      \t
              newline  \n
              space    \040
              $        \044
              \        \\