


RCSFILE(5)                FILE FORMATS                 RCSFILE(5)



NAME
     rcsfile - format of RCS file

DESCRIPTION
     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 boldface; nonterminal symbols are in _i_t_a_l_i_c_s.

     _r_c_s_t_e_x_t    ::=  _a_d_m_i_n {_d_e_l_t_a}* _d_e_s_c {_d_e_l_t_a_t_e_x_t}*

     _a_d_m_i_n      ::=  head       {_n_u_m};
                     { branch   {_n_u_m}; }
                     access     {_i_d}*;
                     symbols    {_i_d : _n_u_m}*;
                     locks      {_i_d : _n_u_m}*;  {strict  ;}
                     { comment  {_s_t_r_i_n_g}; }
                     { expand   {_s_t_r_i_n_g}; }
                     { _n_e_w_p_h_r_a_s_e }*

     _d_e_l_t_a      ::=  _n_u_m
                     date       _n_u_m;
                     author     _i_d;
                     state      {_i_d};
                     branches   {_n_u_m}*;
                     next       {_n_u_m};
                     { _n_e_w_p_h_r_a_s_e }*

     _d_e_s_c       ::=  desc       _s_t_r_i_n_g

     _d_e_l_t_a_t_e_x_t  ::=  _n_u_m
                     log        _s_t_r_i_n_g
                     { _n_e_w_p_h_r_a_s_e }*
                     text       _s_t_r_i_n_g

     _n_u_m        ::=  {_d_i_g_i_t{.}}+

     _d_i_g_i_t      ::=  0 | 1 | ... | 9

     _i_d         ::=  _l_e_t_t_e_r{_i_d_c_h_a_r}*





GNU                  Last change: 1990/08/22                    1






RCSFILE(5)                FILE FORMATS                 RCSFILE(5)



     _l_e_t_t_e_r     ::=  any letter

     _i_d_c_h_a_r     ::=  any visible graphic character except _s_p_e_c_i_a_l

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

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

     _n_e_w_p_h_r_a_s_e  ::=  _i_d _w_o_r_d* ;

     _w_o_r_d       ::=  _i_d | _n_u_m | _s_t_r_i_n_g | :

     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  con-
     sist of a single pair (e.g., 2.3, 2.1, 1.3, etc.) are on the
     trunk, and are linked through the next  field  in  order  of
     decreasing numbers.  The head field in the _a_d_m_i_n node points
     to the head of that sequence  (i.e.,  contains  the  highest
     pair).   The  branch  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)
     (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  next  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
     branches  field  of a node contains a list of the numbers of
     the first nodes of all sequences for which  it  is  a  bran-
     chpoint.  This list is ordered in increasing numbers.











GNU                  Last change: 1990/08/22                    2






RCSFILE(5)                FILE FORMATS                 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

IDENTIFICATION
     Author: Walter F. Tichy, Purdue University, West  Lafayette,
     IN, 47907.
     Revision Number: 5.0; Release Date: 1990/08/22.
     Copyright 8c9 1982, 1988, 1989 by Walter F. Tichy.
     Copyright 8c9 1990 by Paul Eggert.

SEE ALSO
     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 15, 7 (July 1985), 637-654.




GNU                  Last change: 1990/08/22                    3



