************* BACK AND FORTH PAGING SUBROUTINE ************

PAGEFLOP

If they want to quit, do so
 If They want to quit subsession, Do SO!
  Decrement LOCAL and GLOBAL Page Counters

FORWARD

  Increment LOCAL and GLOBAL Page Counters
   *************** END PAGEFLOP *********************
  ****** CHAPTER INTERNAL SELECTOR ALGORITHM ******

SELECTOR

   Reset Local Page Counter

SELAGAIN

 CHECK IF ONLY A <CR>

WRONGSEL

YOUR SELECTION IS NOT IN THE 0 - #SELIMIT  RANGE  Please Try Again

P0

Project Development|SCCS Topics|8-2.1.0|10,40
   #           Topic
  ---         -------
   1   -   Virtues
   2   -   Version Numbering
   3   -   Basic Commands
   4   -   Keywords
   5   -   The SCCS Process
   6   -   Versions and Branches
   7   -   SCCS Review
   0   -   Return to the Project Development Menu

TOPIC1

Project Development|Virtues|8-2.1.1|11,54
     SCCS is a system for controlling text files that
go through many revisions.


     These files typically include:

             *  program source code,
             *  documentation,
             *  contracts,
             *  sales literature, or
             *  any other changing text files.

P2

Project Development|Virtues|8-2.1.2|9,60
     The virtues of SCCS:

 *  It requires less space than keeping multiple copies.
 *  It is simpler to control than keeping multiple copies.
 *  It keeps a history of file modifications.
 *  It allows you to control access to files.
 *  Anyone can make an SCCS file.
 *  Basic commands are simple.
 *  For more sophisticated needs, each command has many options.

P3

Project Development|Virtues|8-2.1.3|14,54
     SCCS has a facility to reconstruct any previous
version of a file.


     SCCS has a facility to maintain multiple versions
of files for design, production, and testing.


     SCCS gives you the ability to branch for fixing 
previous versions of files.


     SCCS is space efficient.  You can keep 20 versions
of a file in the space it takes to keep 2.

P4

Project Development|Version Numbering|8-2.2.1|11,54
     The update process has a tree-like structure.


     Normally each version of a file is represented 
with two parts (the trunk of the tree):

*  release.level


     A file can have four optional parts (branching 
structure):

*  release.level.branch.sequence

TOPIC3

??? this is very unclear--i don't understand how to use sccs from this

P5

Project Development|Basic Commands|8-2.3.1|13,69
    admin - initiates/administers SCCS process files

      get - retrieves a certain version of encoded SCCS file

    delta - administers change or adds new version into encoded file

      prs - prints an encoded file

sccsdiff - prints the differences between various SCCS file versions

    rmdel - removes a specific delta from the SCCS file

     comb - combines two or more consecutive deltas

P6

Project Development|Basic Commands|8-2.3.2|13,54
Command Line Options for the sccs command include:

???BSD:  these are different for bsd
      -iname        text of initial version
      -tfile        descriptive text
      -rrelease     initial release (with -i)
      -auser        authorize to make deltas
      -euser        remove user authorization
      -fb           allow branching
      -rversion     version to get/create
      -e            for editing
      -p            pipe (to standard output)
      -m            put version on extracted lines
      -k            suppress keyword expansion

P7

Project Development|Basic Commands|8-2.3.3|10,54
     The command to print the status of the file 
s.chpt12 is:

get  -p  -k  s.chpt12  |  diff  -  doc


     The command to determine what was added in version 
1.6 of the file s.chpt12 is:

get -m -p s.chpt12 | grep 1.6

P8

Project Development|Basic Commands|8-2.3.4|18,54
     get -e updates 'p-file': p.chpt12


     P_FILE contains the following information on the
delta in progress:

    *  SID (SCCS id. string) of the retrieved version
    *  the SID that will be given to the new delta when 
       it is created
    *  the login name of the real user executing get


     get locks the source SCCS file, thus it prevents 
editing conflicts.

     When using get, keywords are not expanded.

     get produces a writable file.

P9

???LATER talk about checking in and checking out
Project Development|Basic Commands|8-2.3.5| 15,54
     The file must have been checked out with get -e.


     Delta prompts for comments to be stored with 
the version.


     The available flags for the delta command are:

           -p           print differences
           -s           suppress statistics
           -r<VERSION>  if checked out twice
           -n           keep edited file
           -y<HISTORY>  short comment
           -m<MRS>      if -v flag only
           -g<LIST>     ignored delta list

P10

Project Development|Basic Commands|8-2.3.6| 7,54
     To print information about an SCCS file you can
use the following options with the prs command:

         -r      this release only
         -e      earlier releases also
         -l      later releases also
         -d      output format specification

P11

??? huh?
Project Development|Keywords|8-2.4.1|16,54
     Keywords are useful for keeping the version of an 
update, the date of an update, and the release level. 


     Keywords are typically specified in the file as
character string constants.


     Some of the SCCS keywords are:

         %M%  -  module name
         %R%  -  release
         %I%  -  SID = %R%,%L%,%B%,%S%
??? what does that mean?
         %D%  -  current date (yr/mo/dy)
         %Z%  -  the four characters @(#)
         %W%  -  %Z%%M%<tab> %I%
??? what do they mean?

P12

Project Development|The SCCS Process|8-2.5.1|18,54
     The SCCS process begins when you create an SCCS
file.  The following will create an SCCS file for the
file chap12:

              $admin -ichap12 s.chap12
              no id keywords (cm7)
              rm chap12

     The following will obtain a READ ONLY copy:

              $get s.chpt12 (COPY IF READ-ONLY)
              1.1
              950 lines
              no id keywords (cm7)

     You can find out what an error means with:

              $help cm7

P13

Project Development|The SCCS Process|8-2.5.2|16,54
     If the SCCS file s.chapt7 contains:

char *fid = "%M% - %W% - C.T.I.";

then a get (WITHOUT -e OR -k) produces:

char *fid = "@(#)chapt7 2.5 - 11/13/89 - C.T.I.";


     what searches a file for "@(#)" and prints the 
string following these characters up to a new line, 
*/, or >(.  For example:

$ what chapt7

will produce:  chapt7 2.5 - 11/13/89 - C.T.I.

P14

Project Development|The SCCS Process|8-2.5.4|13,54
     Recover your file to make a new version with:

                 $ get -e s.chpt12
                 1.1
                 950 lines
     
                 ...EDIT...
     
                 $ delta s.chpt12
                 1.2
                 17 inserted
                 9 deleted
                 925 unchanged

P15

Project Development|The SCCS Process|8-2.5.5|13,54
     You can print information about a file with:

$ prs  s.chpt12


     You can obtain a particular version with:

$ get  -r1.4.2.1  s.chpt12


     You can find differences between versions with:

$ sccsdiff  -r1.1  -r1.4.2.1  s.chpt12

P16

Project Development|Versions and Branches|8-2.6.1| 16,40
??? this doesnt make sense
     To create the tree branches:

       1.1 -> 1.2 -> 1.3 -> 2.1 -> 2.2


     Assume the -b flag and enter:

             $ admin -fb s.chpt12
             $ get -e -r2.1 s.chpt12
             $ delta s.chpt12


     This will create 2.1.1.1, a branch


     You can form arbitrary trees.