





Functions of RCS (Revision Control System)

     RCS manages software libraries.  It  greatly  increases
programmer  productivity  by  providing	 the following func-
tions.

1.   RCS stores	and retrieves multiple revisions of  program
     and  other	 text.	 Thus,	one can	maintain one or	more
     releases while developing	the  next  release,  with  a
     minimum  of  space	 overhead. Changes no longer destroy
     the original -- previous revisions	remain accessible.

     a.	  Maintains each module	as a tree of revisions.

     b.	  Project  libraries  can  be  organized  centrally,
	  decentralized, or any	way you	like.

     c.	  RCS works for	any type of text: programs, documen-
	  tation,  memos,  papers,  graphics,  VLSI layouts,
	  form letters,	etc.

2.   RCS maintains a complete history of changes.  Thus, one
     can  find	out  what  happened  to	 a module easily and
     quickly, without having to	compare	source	listings  or
     having to track down colleagues.

     a.	  RCS performs automatic record	keeping.

     b.	  RCS logs all changes automatically.

     c.	  RCS guarantees project continuity.

3.   RCS manages multiple lines	of development.

4.   RCS can merge multiple  lines  of	development.   Thus,
     when several parallel lines of development	must be	con-
     solidated into one	line,  the  merging  of	 changes  is
     automatic.

5.   RCS flags coding conflicts.  If two or  more  lines  of
     development  modify  the  same section of code, RCS can
     alert programmers about overlapping changes.

6.   RCS resolves access conflicts.  When two or  more	pro-
     grammers  wish  to	modify the same	revision, RCS alerts
     the programmers and makes sure  that  one	modification
     won't wipe	out the	other one.

7.   RCS provides high-level retrieval functions.  Revisions
     can  be  retrieved	 according  to	ranges	of  revision
     numbers, symbolic names, dates, authors, and states.

8.   RCS provides release and configuration control.   Revi-
     sions  can	be marked as released, stable, experimental,



		       August 2, 1991





			   - 2 -


     etc.  Configurations of modules can be described simply
     and directly.

9.   RCS performs automatic identification of  modules	with
     name,  revision  number,  creation	 time,	author,	etc.
     Thus, it is always	possible to  determine	which  revi-
     sions of which modules make up a given configuration.

10.  Provides high-level management visibility.	 Thus, it is
     easy to track the status of a software project.

     a.	  RCS provides a complete change history.

     b.	  RCS records who did what when	to which revision of
	  which	module.

11.  RCS is fully compatible with existing software develop-
     ment tools.  RCS is unobtrusive --	its interface to the
     file system is such that  all  your  existing  software
     tools can be used as before.

12.  RCS' basic	user  interface	 is  extremely	simple.	 The
     novice  need  to  learn  only  two	 commands.  Its	more
     sophisticated features have been tuned towards advanced
     software  development  environments and the experienced
     software professional.

13.  RCS simplifies software distribution if customers main-
     tain  sources  with  RCS  also.  This technique assures
     proper identification of versions	and  configurations,
     and tracking of customer modifications. Customer modif-
     ications  can  be	merged	into  distributed   versions
     locally or	by the development group.

14.  RCS needs little extra space for  the  revisions  (only
     the   differences).    If	intermediate  revisions	 are
     deleted, the corresponding	differences  are  compressed
     into the shortest possible	form.

15.  RCS is implemented	with reverse deltas. This means	that
     the  latest revision, which is the	one that is accessed
     most often, is stored intact.  All	 others	 are  regen-
     erated  from  the latest one by applying reverse deltas
     (backward differences). This  results  in	fast  access
     time for the revision needed most often.












		       August 2, 1991


