

RCSFILE(5)                 Unix Programmer's Manual                 RCSFILE(5)


NNNAAAMMMEEE
     rcsfile - format of RCS file

DDDEEESSSCCCRRRIIIPPPTTTIIIOOONNN
     An RCS file's contents are described by the grammar below.  The  text  is
     free format: space, backspace, tab, newline, vertical tab, form feed, and
     carriage return (collectively, _w_h_i_t_e _s_p_a_c_e) have no  significance  except
     in  strings.   Strings  are  enclosed by @@@.  If a string contains a @@@, it
     must be doubled; otherwise, strings may contain arbitrary binary data.

     The meta syntax uses  the  following  conventions:  `|'  (bar)  separates
     alternatives;  `{' and `}' enclose optional phrases; `{' and `}*' enclose
     phrases that may be repeated zero or more times;  `{'  and  '}+'  enclose
     phrases  that  must  appear  at  least once and may be repeated; Terminal
     symbols are in bbbooollldddfffaaaccceee; nonterminal symbols are in _i_t_a_l_i_c_s.

     rcstext          ::=  admin {delta}* desc {deltatext}*

     admin            ::=  head            {num};
                           { branch        {num}; }
                           access          {id}*;
                           symbols         {id : num}*;
                           locks           {id : num}*;  {strict  ;}
                           { comment       {string}; }
                           { expand        {string}; }
                           { newphrase }*

     delta            ::=  num
                           date            num;
                           author          id;
                           state           {id};
                           branches        {num}*;
                           next            {num};
                           { newphrase }*

     desc             ::=  desc            string

     deltatext        ::=  num
                           log             string
                           { newphrase }*
                           text            string

     num              ::=  {digit{.}}+

     digit            ::=  0 | 1 | ... | 9

     id               ::=  letter{idchar}*

     letter           ::=  any letter

     idchar           ::=  any visible graphic character except special

     special          ::=  $ | , | . | : | ; | @





                                    \*(Dt                                    1



RCSFILE(5)                 Unix Programmer's Manual                 RCSFILE(5)


     string           ::=  @{any character, with @ doubled}*@

     newphrase        ::=  id word* ;

     word             ::=  id | num | string | :

     Identifiers are case sensitive.  Keywords are in lower  case  only.   The
     sets  of  keywords and identifiers may overlap.  In most environments RCS
     uses the ISO 8859/1 encoding:  letters are octal codes 101-132,  141-172,
     300-326,  330-366  and  370-377,  visible  graphic  characters  are codes
     041-176 and 240-377, and white space characters  are  codes  010-015  and
     040.

     The  _n_e_w_p_h_r_a_s_e  productions  in  the  grammar  are  reserved  for  future
     extensions  to the format of RCS files.  No _n_e_w_p_h_r_a_s_e will begin with any
     keyword already in use.

     The _d_e_l_t_a nodes form a tree.  All nodes whose numbers consist of a single
     pair  (e.g.,  2.3,  2.1,  1.3,  etc.)   are  on the trunk, and are linked
     through the nnneeexxxttt field in order of decreasing numbers.  The hhheeeaaaddd field in
     the  _a_d_m_i_n  node  points to the head of that sequence (i.e., contains the
     highest pair).  The bbbrrraaannnccchhh node in the admin node indicates  the  default
     branch  (or  revision)  for  most  RCS operations.  If empty, the default
     branch is the highest branch on the trunk.

     All _d_e_l_t_a nodes  whose  numbers  consist  of  2_n  fields  (_n\(=_2)  (e.g.,
     3.1.1.1,  2.1.2.2,  etc.)   are linked as follows.  All nodes whose first
     2_n-1 number fields are identical are linked through  the  nnneeexxxttt  field  in
     order  of  increasing  numbers.   For  each such sequence, the _d_e_l_t_a node
     whose number is identical to the first 2_n-2 number fields of  the  deltas
     on that sequence is called the branchpoint.  The bbbrrraaannnccchhheeesss field of a node
     contains a list of the numbers of the first nodes of  all  sequences  for
     which it is a branchpoint.  This list is ordered in increasing numbers.

























                                    \*(Dt                                    2



RCSFILE(5)                 Unix Programmer's Manual                 RCSFILE(5)


     Example:

                                Head
                                  |
                                  |
                                  v                        / \
                              ---------                   /   \
        / \          / \      |       |      / \         /     \
       /   \        /   \     |  2.1  |     /   \       /       \
      /     \      /     \    |       |    /     \     /         \
     /1.2.1.3\    /1.3.1.1\   |       |   /1.2.2.2\   /1.2.2.1.1.1\
     ---------    ---------   ---------   ---------   -------------
         ^            ^           |           ^             ^
         |            |           |           |             |
         |            |           v           |             |
        / \           |       ---------      / \            |
       /   \          |       \  1.3  /     /   \           |
      /     \         ---------\     /     /     -----------
     /1.2.1.1\                  \   /     /1.2.2.1\
     ---------                   \ /      ---------
         ^                        |           ^
         |                        |           |
         |                        v           |
         |                    ---------       |
         |                    \  1.2  /       |
         ----------------------\     /---------
                                \   /
                                 \ /
                                  |
                                  |
                                  v
                              ---------
                              \  1.1  /
                               \     /
                                \   /
                                 \ /

                                Fig. 1: A revision tree

IIIDDDEEENNNTTTIIIFFFIIICCCAAATTTIIIOOONNN
     Author: Walter F. Tichy, Purdue University, West Lafayette, IN, 47907.
     Revision Number: 5.0; Release Date: 1990/08/22.
     Copyright (c) 1982, 1988, 1989 by Walter F. Tichy.
     Copyright (c) 1990 by Paul Eggert.

SSSEEEEEE AAALLLSSSOOO
     ci(1), co(1), ident(1), rcs(1), rcsdiff(1), rcsmerge(1), rlog(1),
     Walter F. Tichy, RCS--A System for Version Control, _S_o_f_t_w_a_r_e--_P_r_a_c_t_i_c_e  &
     _E_x_p_e_r_i_e_n_c_e 111555, 7 (July 1985), 637-654.









                                    \*(Dt                                    3

