home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / tools / project / pscm.man < prev    next >
Text File  |  1992-07-30  |  62KB  |  1,356 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.              ======================================================
  11.  
  12.  
  13.  
  14.  
  15.                            Project Source Code Manager
  16.  
  17.                                    Version 1.3
  18.  
  19.                                   July 31, 1992
  20.  
  21.  
  22.  
  23.  
  24.                            ---------------------------
  25.  
  26.  
  27.  
  28.  
  29.                              Copyright (c) 1990-1992
  30.  
  31.                                 J. Bart Henthorn
  32.  
  33.                                All Rights Reserved
  34.  
  35.  
  36.  
  37.  
  38.              ======================================================
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.         The programs described in this documentation are the  copyrighted
  55.         works of J. Bart Henthorn.  They are expressly distributed  under
  56.         the ShareWare concept.  They are not free.  You must license them
  57.         if you use them beyond the initial trial period.
  58.  
  59.         PSCM -- The Project Source Code Manager           July 31st, 1992
  60.  
  61.         Introduction to PSCM.............................................1
  62.  
  63.         Installing PSCM..................................................2
  64.  
  65.         The PSCM Configuration File......................................2
  66.  
  67.         The Project Source Files.........................................3
  68.  
  69.         The Project Database File........................................3
  70.  
  71.         The Item File System.............................................4
  72.  
  73.         The CHECKIN Program..............................................5
  74.              Adding New Files to a Project Database......................5
  75.              Updating Files in the Project Database......................5
  76.              Adding Comments to the Project Database File................6
  77.              Entering Comments...........................................6
  78.              Saving a Set of Files in the Database.......................7
  79.              Viewing Differences in the Source Files.....................8
  80.              Undoing A Previous CHECKIN..................................8
  81.  
  82.         Special Macros in Source Files...................................10
  83.              The Revision Comments Macro.................................11
  84.  
  85.         The CHECKOUT Program.............................................12
  86.              Retrieving for Editing or Making............................12
  87.              Listing the Files in the Project Database...................13
  88.              Listing Comments in the Project Database....................13
  89.              Listing or Retrieving File Sets.............................14
  90.  
  91.         Using PSCM with Make Programs....................................15
  92.              Step 1:  Pre- and Post-Processing...........................15
  93.              Step 2:  Templates..........................................16
  94.              Enhancements................................................16
  95.  
  96.         PSCM is ShareWare................................................18
  97.  
  98.         Revision History.................................................19
  99.              Bugs Fixed and Enhancements Added to Version 1.3............20
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.         Table of Contents                                      PSCM v1.3
  117.  
  118.         PSCM -- The Project Source Code Manager           July 31st, 1992
  119.  
  120.                        PSCM - Project Source Code Manager                       PSCM - Project Source Code Manager                       __________________________________                       __________________________________
  121.  
  122.         PSCM consists of two main programs:  CHECKIN and CHECKOUT.  These
  123.         two  programs  control  a  project  database  that  contains  the
  124.         complete source code and support files for a project.  The  basic
  125.         function  of PSCM is to maintain and archive various versions  of
  126.         the  project source code as it evolves.  At any point in time  it
  127.         should  be possible to retrieve the full set of files  needed  to
  128.         create the project at any point in time.
  129.  
  130.         PSCM  manages  the  different revisions by  assigning  a  Version
  131.         Number  to each different version of the files.  This number  has
  132.         three parts as follows:
  133.  
  134.              M.N.R  where:
  135.  
  136.              M    The major version number.  This number may range from 0
  137.                   to 32767.
  138.              N    The minor version number.  This number may range from 0
  139.                   to 32767.
  140.              R    The  revision number.  This number may range from 0  to
  141.                   32767  and is used to indicate  intermediate  revisions
  142.                   between releases.
  143.  
  144.         When a project's files are identified by only the major and minor
  145.         version  numbers, this is referred to as a "Version."   When  the
  146.         revision number is included, this is called an "Instance."   When
  147.         a  set of files is retrieved for a particular Version,  the  most
  148.         recent  Instance of all files is retrieved.  It is also  possible
  149.         to retrieve a specific revision of a file.
  150.  
  151.         The  database  maintains  an internal  directory  of  files  that
  152.         constitute a project set.  This directory contains a list of  all
  153.         source  code  files as well as any comments or  set  descriptions
  154.         that have been entered.  Once an item has been added to a project
  155.         database  it  is not possible to remove it  (with  one  exception
  156.         described later).  It is for this reason that you should be  sure
  157.         about your actions when you add an item to a database.
  158.  
  159.         PSCM  stores only the latest instance of a file in the  database.
  160.         Prior  instances  are  stored  as  "Difference  Scripts."   These
  161.         scripts  are  generated  and  used  by  the  three  PSCM  support
  162.         programs:  DIFS, MRGS, and SHOWDIFS.  DIFS compares two files and
  163.         produces a script file that describes how they differ.  MRGS uses
  164.         a  script file and the later version source file to  produce  the
  165.         earlier version source file.  SHOWDIFS uses a script file and the
  166.         later version source file to display the differences between  the
  167.         later and earlier versions.
  168.  
  169.         PSCM also allows the inclusion of comments in the database  file.
  170.         When  one or more files have been changed, and new  Instances  of
  171.         the  files are added to the database, an optional comment may  be
  172.         saved.   Along with the comment is a list of the  files  modified
  173.         and their revision level and file date and time.  These  comments
  174.  
  175.         PSCM v1.3                                                 page 1
  176.  
  177.         PSCM -- The Project Source Code Manager           July 31st, 1992
  178.  
  179.         may be either listed one at a time or all comments at once.   The
  180.         same  comment is entered for all files updated during  that  run.
  181.         This  saves you from having to reenter the same information  over
  182.         and over again.  It is also possible to feed the comment from  an
  183.         ASCII file by using the redirection features of DOS.
  184.  
  185.         During  development it may be desirable to take a  "Snapshot"  of
  186.         the  current revision level of all files in the  database.   PSCM
  187.         allows  this function through the use of "Sets."  When a  Set  is
  188.         created a record is made of all source files at their most recent
  189.         Instance.  This is stored along with a comment which can be  used
  190.         to  describe  the Set.  At any point in time it  is  possible  to
  191.         recreate  the  exact  state of these  files  using  the  CHECKOUT
  192.         program's Set command.  It is also possible to generate a list of
  193.         all Sets in the database.
  194.  
  195.         PSCM also supports a limited "Undo" function.  Since we humans do
  196.         occasionally  make  mistakes, PSCM saves  information  about  the
  197.         items  changed  during an update.  This information is  only  one
  198.         level  deep;  you  can only undo the most recent  update  to  the
  199.         project  database.  The undo is a one-way undo.  This means  that
  200.         you cannot undo an undone database.  Once you undo a database the
  201.         necessary information is removed.
  202.  
  203.         Installing PSCM        Installing PSCM        _______________        _______________
  204.  
  205.         PSCM  version  1.3  contains  six  program  files   (CHECKIN.EXE,
  206.         CHECKOUT.EXE,  DIFS.EXE, MRGS.EXE, SHOWDIFS.EXE, and  ISIZE.EXE).
  207.         These  files  should be placed in a directory  along  your  PATH.
  208.         This  will  make them accessible from anywhere  on  your  system.
  209.         There is also a standard configuration file named PSCM.CFG.  This
  210.         file  is a normal ASCII text file (see description  below).   You
  211.         should edit this file to suit your system and then put it in  the
  212.         same directory with the CHECKOUT.EXE program file.
  213.  
  214.         The PSCM Configuration File        The PSCM Configuration File        ___________________________        ___________________________
  215.  
  216.         PSCM  uses a configuration file to store some  basic  information
  217.         used  when expanding some of the special macro strings  described
  218.         later.   The configuration file is an eight line text file.   The
  219.         first line in the file is called the "System" line.  The text  of
  220.         the first line is used when expanding the System Name macro.  The
  221.         remaining  seven  lines are called "User Parameters."   They  are
  222.         used when expanding the seven User macros.  Each of the lines  in
  223.         the configuration file is limited to a maximum of 63  characters.
  224.         PSCM  will truncate an entry at the 63rd character when using  it
  225.         to expand a macro.
  226.  
  227.         When  the CHECKOUT program begins execution, it attempts to  open
  228.         the  configuration file "PSCM.CFG" in the current directory.   If
  229.         it  cannot  find the file in the current directory, and  you  are
  230.         using  DOS  version  3.0 or later, it will attempt  to  load  the
  231.         configuration file from the directory where the CHECKOUT  program
  232.         was  loaded.   This allows you to have  a  default  configuration
  233.  
  234.         page 2                                                 PSCM v1.3
  235.  
  236.         PSCM -- The Project Source Code Manager           July 31st, 1992
  237.  
  238.         stored in the same directory as the CHECKOUT.EXE file and to have
  239.         a project specific configuration in the working directory.
  240.  
  241.         For  example, suppose you keep a stock configuration file in  the
  242.         directory where you keep your program files.  This file has  User
  243.         Parameter  #1  set to your standard copyright  message.   If  you
  244.         wanted to change the copyright message for a special project  you
  245.         could  simply copy the stock PSCM.CFG file to the same  directory
  246.         with your source files and then edit User Parameter #1.
  247.  
  248.         The Project Source Files        The Project Source Files        ________________________        ________________________
  249.  
  250.         A Project's source files are plain ASCII text files that  contain
  251.         the source code for a project.  The source files may also include
  252.         the various support files used to create and maintain the project
  253.         such  as  a  make file and batch files.  For  example,  the  PSCM
  254.         project has several 'C' code source files, a couple of 'C' header
  255.         files, a make file and a few batch files.  Taken together,  these
  256.         files  are all that is necessary to recreate the  entire  project
  257.         from scratch.
  258.  
  259.         -----------------------------------------------------------------
  260.         NOTE      PSCM  can  only work with plain ASCII text  files.   It        NOTE
  261.                   will  not  handle word processor files  properly.   The
  262.                   various control codes in most word processor files will
  263.                   corrupt the PSCM database file.
  264.         -----------------------------------------------------------------
  265.  
  266.         The Project Database File        The Project Database File        _________________________        _________________________
  267.  
  268.         The  Project Database file is used to hold all information  about
  269.         the project's source files.  There is no requirement on the  name
  270.         of the file, however the convention is to name it the same as the
  271.         project with no extension.  For example, my project file for PSCM
  272.         is  named "PSCM".  The project database file need not even be  in
  273.         the same directory as the rest of the project files.  This allows
  274.         you  to  place the project file on another drive  or  in  another
  275.         directory for that added "Peace of Mind."
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.         PSCM v1.3                                                 page 3
  294.  
  295.         PSCM -- The Project Source Code Manager           July 31st, 1992
  296.  
  297.         The Item File System (IFS)        The Item File System (IFS)        __________________________        __________________________
  298.  
  299.         PSCM  project files use a database manager called the "Item  File
  300.         System."   This  DBMS  allows records in the database  to  be  of
  301.         varying lengths.  It is also very fast because it uses a  hashing
  302.         algorithm  to  store the records.  When a project file  is  first
  303.         created  (by  the  CHECKIN program) it is given  a  default  size
  304.         (called a "Modulo") of 47.  As the project database file grows it
  305.         may  be necessary to resize the file to improve retrieval  speed.
  306.         The  ISIZE program is used to resize the project  database  file.
  307.         Use the following command:
  308.  
  309.              ISIZE -r PROJECT
  310.  
  311.         The ISIZE program will inspect the project database file and then
  312.         create a new file with a new size and copy all items from the old
  313.         file  to  the  new file.  It will then delete the  old  file  and
  314.         rename the new file to the old file name.
  315.  
  316.         -----------------------------------------------------------------
  317.         NOTE      The  old file will only be deleted if the new  file  is        NOTE
  318.                   created correctly.  If the ISIZE program encounters any
  319.                   errors the old file will be left intact.
  320.         -----------------------------------------------------------------
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.         page 4                                                 PSCM v1.3
  353.  
  354.         PSCM -- The Project Source Code Manager           July 31st, 1992
  355.  
  356.         The CHECKIN Program        The CHECKIN Program        ___________________        ___________________
  357.  
  358.         The CHECKIN program is used to add project files to the  database
  359.         and  to  create new Versions or Instances of files.   CHECKIN  is
  360.         also  used  to add comments to the database,  to  create  project
  361.         Sets, and to undo a previous CHECKIN command.
  362.  
  363.         -----------------------------------------------------------------
  364.         NOTE      None of the CHECKIN command forms discussed will  alter        NOTE
  365.                   the  source  files.  They are left on disk  exactly  as
  366.                   before CHECKIN was run.
  367.         -----------------------------------------------------------------
  368.  
  369.         Adding New Files to a Project Database        Adding New Files to a Project Database
  370.  
  371.         When  adding  one or more new files to the project  database,  or
  372.         when  creating a new Version level, the Version numbers  must  be
  373.         specified via a command line switch as follows:
  374.  
  375.              CHECKIN -vM.N PROJECT FILE1 FILE2 ... FILEn
  376.  
  377.         The  '-v' switch is used to specify the major and  minor  version
  378.         numbers.  As with most CHECKIN commands you can use wildcards  to
  379.         specify  the files.  However, you cannot specify files  that  are
  380.         not in the current directory; all files specified must be in  the
  381.         current directory.
  382.  
  383.         Note that the revision number is not specified, it is set to 0 by
  384.         the  program.   If  a  copy of the file  already  exists  at  the
  385.         specified Version level, a warning message will be displayed  and
  386.         the  file  will be skipped.  This feature is  particularly  handy
  387.         when adding new files to an existing project database.
  388.  
  389.         For example, assume you have created three new source files,  two
  390.         with the extension ".C" and one with the extension ".H".  You can
  391.         easily  add these to the project database by using  wildcards  to
  392.         specify all .C and .H files (e.g. "*.C *.H").  Only the new files
  393.         will be added to the database; any files already existing in  the
  394.         project database will be skipped.
  395.  
  396.         Updating Files in the Project Database        Updating Files in the Project Database
  397.  
  398.         To  create  a  new Instance of an existing  file,  the  following
  399.         command line is used:
  400.  
  401.              CHECKIN -i PROJECT FILE1 FILE2 ... FILEn
  402.                   -or-
  403.              CHECKIN -i PROJECT
  404.                   -or-
  405.              CHECKIN -iM.N PROJECT FILE1 FILE2 ... FILEn
  406.                   -or-
  407.              CHECKIN -iM.N PROJECT
  408.  
  409.  
  410.  
  411.         PSCM v1.3                                                 page 5
  412.  
  413.         PSCM -- The Project Source Code Manager           July 31st, 1992
  414.  
  415.         When no file names are specified on the CHECKIN command line, all
  416.         source files that have been modified since they were last checked
  417.         in are updated.  This is a shorthand way of updating all modified
  418.         files.  You can also use wildcards to specify the files that will
  419.         be updated.
  420.  
  421.         The  first command form is used to create new Instances  for  the
  422.         specified  files  at the most recent Version level.   The  second
  423.         command  is the same except that all modified files in  the  most
  424.         recent  Version are updated to a new Instance.  These  two  forms
  425.         are the most common used in project management.
  426.  
  427.         The third and fourth commands are similar to the first two except
  428.         a  specific Version level is updated instead of the most  recent.
  429.         These two command forms are used when a previous CHECKOUT was run
  430.         to retrieve a Version other than the most recent.
  431.  
  432.         Adding Comments to the Project Database File        Adding Comments to the Project Database File
  433.  
  434.         The  '-i' switch discussed above is used to create new  Instances
  435.         of source files.  But it is also possible to add a comment record
  436.         at the same time.  The following commands behave the same  except
  437.         that they also allow an optional comment record to be created and
  438.         saved  with the files.  The comment record contains one  or  more
  439.         lines  of  text and a list of the files updated.   The  following
  440.         command forms are used to create comment records:
  441.  
  442.              CHECKIN -c PROJECT FILE1 FILE2 ... FILEn
  443.                   -or-
  444.              CHECKIN -c PROJECT
  445.                   -or-
  446.              CHECKIN -cM.N PROJECT FILE1 FILE2 ... FILEn
  447.                   -or-
  448.              CHECKIN -cM.N PROJECT
  449.  
  450.         The  same comment is saved with every file updated.  This  allows
  451.         you  to  easily apply the same comments to  every  file  modified
  452.         since  the last update.  If you need to save a  specific  comment
  453.         with  a small subset of files you should run CHECKIN and  specify
  454.         those  files  that will receive the different comment.   You  can
  455.         then  use  the  second command form shown above to  pick  up  the
  456.         remaining files and give them a global comment.
  457.  
  458.         If  you  do  not specify a comment (by  entering  Control+Z  "^Z"
  459.         without  any text) then no comment will be saved with  the  files
  460.         but  they  will still be updated in the project  database.   This
  461.         allows you to always use the "-c" switch to update files and only
  462.         enter comments when you truly need to comment on the update.
  463.  
  464.         Entering Comments        Entering Comments
  465.  
  466.         CHECKIN reads comments, one line at a time, from STDIN.  You  can
  467.         edit the current line only;  once you press <Enter> at the end of
  468.         the  line you cannot edit that line any more.  When you are  done
  469.  
  470.         page 6                                                 PSCM v1.3
  471.  
  472.         PSCM -- The Project Source Code Manager           July 31st, 1992
  473.  
  474.         entering  the comment, enter a Control+Z "^Z", either  using  the
  475.         <Ctrl>+<Z>  keys or by pressing the <F6> function key,  and  then
  476.         press  <Enter>.  This ends the current comment.  Note that  there
  477.         is  no limit to the number of lines in a comment, but there is  a
  478.         limit  to  the width of a comment line.  No comment  line  should
  479.         extend past column 80, but you may find that output formatting is
  480.         easier if you limit comment lines to something less than this.
  481.  
  482.         Because  CHECKIN can read the comments from an ASCII  file  using
  483.         redirection, you may find it easier to enter your comments into a
  484.         text  file and then redirect them into CHECKIN from  the  command
  485.         line.  For example, assume that you have saved all your  comments
  486.         in  a  text file called "COMMENTS".  You can update  the  project
  487.         database and save the contents of the COMMENTS file as the update
  488.         comment using the following command:
  489.  
  490.              CHECKIN -c PROJECT < COMMENTS
  491.  
  492.         -----------------------------------------------------------------
  493.         NOTE      It  is generally NOT a good idea to enter  source  file        NOTE
  494.                   comment  symbols  in  a  revision  comment.   In   some
  495.                   languages, most notably 'C', the comment symbols in the
  496.                   expanded comment macro could cause compilation errors.
  497.         -----------------------------------------------------------------
  498.  
  499.         Saving a Set of Files in the Database        Saving a Set of Files in the Database
  500.  
  501.         During the development process it may be useful to save a  record
  502.         of the current revision level of all files in the database.  This
  503.         record is called a "Set."  It is commonly used as a place  marker
  504.         to indicate where specific versions of the project were generated
  505.         and released.  For example, if you are in the habit of  releasing
  506.         preliminary  versions  to  a  small group  of  testers,  the  Set
  507.         function can be used to regenerate the source code used for  each
  508.         tester's version of the program.  This allows you to forge  ahead
  509.         making fixes and enhancements to the project, yet still pull  the
  510.         "release" version to check on specific bug reports.
  511.  
  512.         The command used to generate a Set is:
  513.  
  514.              CHECKIN -s PROJECT
  515.                   -or-
  516.              CHECKIN -sM.N PROJECT
  517.  
  518.         Note that no file names are specified on the command line.   This
  519.         is  because  the Set command generates and saves a  list  of  all
  520.         files  in the database.  The first command form will  generate  a
  521.         set for the most recent Version, while the second form is used to
  522.         create a set for a specified version.
  523.  
  524.         Note  that  you must also enter a "Set Comment."  If you  do  not
  525.         enter a comment (or enter a blank comment) then the set will  not
  526.         be created.
  527.  
  528.  
  529.         PSCM v1.3                                                 page 7
  530.  
  531.         PSCM -- The Project Source Code Manager           July 31st, 1992
  532.  
  533.         Viewing Differences in the Source Files        Viewing Differences in the Source Files
  534.  
  535.         After  making  changes in the source files, and  before  checking
  536.         them into the project database, you can view the changes you have
  537.         made.   The  "-d" command switch is used to compare  the  current
  538.         versions  of  the  source  files on disk  with  the  most  recent
  539.         Instances saved in the project database.
  540.  
  541.              CHECKIN -d[M.N] PROJ [FILE1 FILE2 ... FILEn]
  542.  
  543.         If you do not specify a version ("M.N" in the above command spec)
  544.         then  the most recent version will be used, otherwise  the  files
  545.         from  the  specified  version will be compared.  If  you  do  not
  546.         specify any files then every file in the project database will be
  547.         compared.   If files are specified then only those files will  be
  548.         compared.
  549.  
  550.         This  command  compares the source files found on disk  with  the
  551.         most  recent Instances at the specified (or most recent)  Version
  552.         in the project database.  It does not alter the project  database                                  _______________________________________
  553.         file.   The differences will be written to a file with  the  same        ____
  554.         base  name as the source file but with the extension "__D".   For
  555.         example,  assume you have modified the source file "FILE1.C"  and
  556.         then enter the following command:
  557.  
  558.              CHECKIN -d PROJ FILE1.C
  559.  
  560.         The  differences between the on-disk version and  the  checked-in
  561.         version will be written to a file named "FILE1.__D".
  562.  
  563.         The following is an example of the difference file format:
  564.  
  565.              < = Version on disk; > = Version checked in
  566.  
  567.              <     DESC desc1;
  568.              ----------------------------------------
  569.              >     DESC desc1, desc2;
  570.  
  571.              <     run_showdifs(difscript, filename, difoutname);
  572.              ----------------------------------------
  573.              >     run_showdifs(filename, difscript, difoutname);
  574.  
  575.         -----------------------------------------------------------------
  576.         NOTE      No check is made for source files that already have  an        NOTE
  577.                   extension of "__D".  This situation could cause  severe
  578.                   problems including the possible loss of the source file
  579.                   on disk.
  580.         -----------------------------------------------------------------
  581.  
  582.         Undoing A Previous CHECKIN        Undoing A Previous CHECKIN
  583.  
  584.         From  time to time you may find it necessary to "undo"  the  most
  585.         recent  CHECKIN  command  on a project  database.   This  usually
  586.         happens because you have accidentally added the wrong files to  a
  587.  
  588.         page 8                                                 PSCM v1.3
  589.  
  590.         PSCM -- The Project Source Code Manager           July 31st, 1992
  591.  
  592.         project  file or because you entered a wrong  comment.   Whatever
  593.         the  reason it would be nice if you could "take that back."   The
  594.         CHECKIN program allows a limited form of this.  The "-u"  command
  595.         switch  will undo the changes made to a project database  by  the
  596.         most recent CHECKIN run.
  597.  
  598.         When  CHECKIN makes modifications to a project database it  saves
  599.         information in the database about what items were added and which
  600.         items  were changed and how they were changed.  This  information
  601.         is  used  to restore the database to it original  condition.   To
  602.         undo a previous CHECKIN run use the command:
  603.  
  604.              CHECKIN -u PROJ
  605.  
  606.         CHECKIN will first inspect the project database file (PROJ in the
  607.         above  example)  and determine if the  necessary  information  is
  608.         present.  If it is not possible to undo the database then CHECKIN
  609.         will  print an error message to this effect and exit.   The  undo
  610.         information  is deleted at the beginning of a  modification  run.
  611.         This  means that once you begin an update (using the "-v",  "-i",
  612.         "-c",  or  "-s"  command switches) you can  no  longer  undo  the
  613.         previous  modification.   This  is true even  if  you  abort  the
  614.         current run by pressing Control+C or Control+Break.
  615.  
  616.         If  the  necessary information is present in  the  database  then
  617.         CHECKIN will prompt you to verify that you truly wish to undo the
  618.         modifications made by the previous CHECKIN.  Press "Y" or "y"  to
  619.         continue with the undo process.  Any other key will cause CHECKIN
  620.         to abort the undo leaving the undo information intact.
  621.  
  622.         As  each  file  is restored to its previous  version  a  progress
  623.         message will display indicating which file is being affected  and
  624.         what   version  is  involved.   Note  that  the   Control+C   and
  625.         Control+Break keys are ignored during an undo process.  When  the
  626.         undo is complete the undo information is deleted from the project
  627.         database.
  628.  
  629.         -----------------------------------------------------------------
  630.         NOTE      Undo does not alter any source files on disk.  It  only        NOTE           ______________
  631.                   modifies the contents of the project database file.
  632.         -----------------------------------------------------------------
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647.         PSCM v1.3                                                 page 9
  648.  
  649.         PSCM -- The Project Source Code Manager           July 31st, 1992
  650.  
  651.         Special Macros in Source Files        Special Macros in Source Files        ______________________________        ______________________________
  652.  
  653.         When files are retrieved for editing (see the description of  the
  654.         CHECKOUT program below), certain special "Macro" strings are left
  655.         in  the  unexpanded form.  When files are  retrieved  for  making
  656.         (i.e.  compiling,  assembling, etc.) these Macros  are  expanded.
  657.         The Macros can be used to specify version numbers, file dates and
  658.         times, file names, etc.
  659.  
  660.         The  Macros  are  used to place  information  about  the  system,
  661.         project,  or  file  in the text of the file.  When  the  file  is
  662.         retrieved   for  making,  the  Macros  are  replaced   with   the
  663.         information  specified.   There are two types of  date  and  time
  664.         macros.   One form is used to place the current SYSTEM  date  and
  665.         time in the file.  This is the system date and time when the file
  666.         is  retrieved.  The other form is used to place the  FILE's  date
  667.         and  time  in the text.  This is the date and time  of  the  last
  668.         modification to the file.
  669.  
  670.                   General Macros
  671.                   -------------------------------------------------------
  672.              @#D  System Date in the form mm/dd/yy
  673.              @#T  System Time in the form hh:mm:ss
  674.              @#P  Project name
  675.              @#c  Revision history comments
  676.  
  677.                   Configuration File Macros
  678.                   -------------------------------------------------------
  679.              @#S  System name from the PSCM config file
  680.              @#1  User parameter 1 from the PSCM config file
  681.              @#2  User parameter 2 from the PSCM config file
  682.              @#3  User parameter 3 from the PSCM config file
  683.              @#4  User parameter 4 from the PSCM config file
  684.              @#5  User parameter 5 from the PSCM config file
  685.              @#6  User parameter 6 from the PSCM config file
  686.              @#7  User parameter 7 from the PSCM config file
  687.  
  688.                   Version and Revision Macros
  689.                   -------------------------------------------------------
  690.              @#v  Version number in the form M.N
  691.              @#r  Revision number in the form M.N.R
  692.              @#M  Major version number
  693.              @#N  Minor version number
  694.              @#R  Revision number
  695.  
  696.                   Source File Modification Information Macros
  697.                   -------------------------------------------------------
  698.              @#d  File date in the form mm/dd/yy
  699.              @#t  File time in the form hh:mm:ss
  700.              @#f  File name and extension in the form filename.ext
  701.              @#F  File name part only (no extension)
  702.  
  703.  
  704.  
  705.  
  706.         page 10                                                 PSCM v1.3
  707.  
  708.         PSCM -- The Project Source Code Manager           July 31st, 1992
  709.  
  710.         The Revision Comments Macro        The Revision Comments Macro
  711.  
  712.         The '@#c' macro is slightly different than all the others.   When
  713.         it  is processed, it puts the revision history comments  for  the
  714.         source file in the text.  The part of the line already printed is
  715.         put  at the beginning of each line before it is inserted  in  the
  716.         text.  For example, if the lines:
  717.  
  718.              /*
  719.               * @#c */
  720.  
  721.         are in the source text, they will be expanded to look like:
  722.  
  723.              /*
  724.               *
  725.               * Revision M.N.R entered at HH:MM:SS on MM/DD/YY
  726.               * Comment line 1
  727.               *
  728.               * Revision M.N.R entered at HH:MM:SS on MM/DD/YY
  729.               * Comment line 1
  730.               * Comment line 2
  731.               *
  732.               *  */
  733.  
  734.         Only  those  comments entered when a file was  updated  and  then
  735.         checked  in using the CHECKIN option '-c' will be printed.   Even
  736.         though the comment may have been entered when more than one  file
  737.         was updated, the comment text will be printed if the current file
  738.         was included in the update.
  739.  
  740.         The  comment  text is placed in the text file starting  with  the
  741.         most  recent revision and proceeding to the oldest.  When a  file
  742.         is  extracted at a specific revision, only those  comments  which
  743.         were  entered before or at the revision are placed in  the  file.
  744.         If no comments are found, the '@#c' macro is simply discarded.
  745.  
  746.         -----------------------------------------------------------------
  747.         NOTE      It  is generally NOT a good idea to enter  source  file        NOTE
  748.                   comment  symbols  in  a  revision  comment.   In   some
  749.                   languages, most notably 'C', the comment symbols in the
  750.                   expanded comment macro could cause compilation errors.
  751.         -----------------------------------------------------------------
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.         PSCM v1.3                                                 page 11
  766.  
  767.         PSCM -- The Project Source Code Manager           July 31st, 1992
  768.  
  769.         The CHECKOUT Program        The CHECKOUT Program        ____________________        ____________________
  770.  
  771.         The  CHECKOUT  program is used to retrieve files  from  the  most
  772.         recent or a specified Version level.  The files can be  retrieved
  773.         for one of two purposes:  Editing or Making.
  774.  
  775.         Retrieving for Editing or Making        Retrieving for Editing or Making
  776.  
  777.         When files are retrieved for editing, all special Macros are left
  778.         in  their  unexpanded form and the file is written to disk  as  a
  779.         modifiable  file.   When  files are  retrieved  for  making,  the
  780.         special  Macros are replaced by the appropriate  information  and
  781.         the file is marked read-only.  This prevents modification of  the
  782.         file.
  783.  
  784.         When  a  file is retrieved (either for editing or making)  it  is
  785.         actually retrieved only if the file on disk is different than the
  786.         retrieved  version  or  the last version was  retrieved  for  the
  787.         opposite  purpose.   For  example, if a  file  is  retrieved  for
  788.         editing  and  the  version  on disk  is  different  (i.e.  has  a
  789.         different  date and time stamp) then the file will be written  to
  790.         disk.  If the file is the same but was last retrieved for editing
  791.         and  is now being retrieved for making, the file will be  written
  792.         to disk.  Note that when a file is checked in (using the  CHECKIN
  793.         program) the file on disk is assumed to be retrieved for editing.
  794.  
  795.         -----------------------------------------------------------------
  796.         NOTE      This behavior can sometimes cause problems.  Make  sure        NOTE
  797.                   that you really want CHECKOUT to overwrite ALL POSSIBLE
  798.                   files  first.   Because  of  the  way  DOS   overwrites
  799.                   existing  files it will not be possible to  retrieve  a
  800.                   new,  and  as yet not checked-in, version of  a  source
  801.                   file once CHECKOUT has overwritten it.
  802.         -----------------------------------------------------------------
  803.  
  804.         The command line for CHECKOUT is as follows:
  805.  
  806.              CHECKOUT -e[M.N[.R]] PROJECT [FILE1 FILE2 ... FILEn]
  807.                   -or-
  808.              CHECKOUT -m[M.N[.R]] PROJECT [FILE1 FILE2 ... FILEn]
  809.  
  810.         The '-e' switch is used to retrieve files for editing.  The  '-m'
  811.         switch is used to retrieve files for making.  Only one is allowed
  812.         on the command line.
  813.  
  814.         When  the  Version level is omitted, the most recent  version  is
  815.         retrieved.   If the Revision number is omitted, the  most  recent
  816.         Instance  is retrieved.  Note that you must specify a Version  in
  817.         order to specify a Revision.
  818.  
  819.         If  you  do not specify any file names on the command  line,  all
  820.         files  which  are  different than the version  on  disk  will  be
  821.         retrieved.   If one or more files are named in the command,  only
  822.         those  files  will  be  retrieved.  Note  that  a  file  will  be
  823.  
  824.         page 12                                                 PSCM v1.3
  825.  
  826.         PSCM -- The Project Source Code Manager           July 31st, 1992
  827.  
  828.         retrieved  only  if  the  version on disk  is  different  (has  a
  829.         different  time and date) or was last retrieved for the  opposite
  830.         purpose (editing versus making.)
  831.  
  832.         You  can  use wild cards to specify files for  extracting.   This
  833.         allows you to easily specify that all files of a specific type be
  834.         extracted  in one command.  You might use this in a MAKE  control
  835.         file to extract all inclusion files before actually beginning the
  836.         compilation of the source files.
  837.  
  838.         Listing the Files in the Project Database        Listing the Files in the Project Database
  839.  
  840.         The CHECKOUT program is also used to list files in a specific  or
  841.         the latest version.  The listing shows each file's name, time and
  842.         date,  and full version and revision number.  The command  is  as
  843.         follows:
  844.  
  845.              CHECKOUT -l[M.N[.R]] PROJECT [FILE1 FILE2 ... FILEn]
  846.  
  847.         Note  that the command switch is a lower case ell, not the  digit
  848.         one.   As  with  the other forms of  the  CHECKOUT  command,  the
  849.         version and revision numbers and the file names are optional.
  850.  
  851.         Listing Comments in the Project Database        Listing Comments in the Project Database
  852.  
  853.         CHECKOUT  can  also  list  the  comment  records  stored  in  the
  854.         database.  When new Instances of files are created using the '-c'
  855.         switch  in the CHECKIN program, a comment record is  saved  along
  856.         with  a list of the files that were updated.  CHECKOUT  can  list
  857.         either  a specified comment record, all comment records, or  only
  858.         comments for a specific file or files.  The commands used are  as
  859.         follows:
  860.  
  861.              CHECKOUT -c[M.N] PROJECT
  862.                   -or-
  863.              CHECKOUT -cM.N.R PROJECT
  864.                   -or-
  865.              CHECKOUT -c[M.N] PROJECT FILE1 FILE2 ... FILEn
  866.                   -or-
  867.              CHECKOUT -cM.N.R PROJECT FILE1 FILE2 ... FILEn
  868.  
  869.         The first command form is used to list all comment records.  If a
  870.         Version  is specified then all comments for that version will  be
  871.         listed.   Otherwise  all  comments for  the  latest  version  are
  872.         listed.
  873.  
  874.         The  second  command  form is used to  list  a  specific  comment
  875.         record.  As with source files, all comment records are assigned a
  876.         Revision  number.   This revision number is not  related  to  the
  877.         revision numbers of the other files in the database, it is simply
  878.         used to track sequential comments.
  879.  
  880.         The  third  and  fourth command forms are  used  to  display  the
  881.         comments for specific source files.  The former method lists  all
  882.  
  883.         PSCM v1.3                                                 page 13
  884.  
  885.         PSCM -- The Project Source Code Manager           July 31st, 1992
  886.  
  887.         comments  entered  when the specified files  were  updated.   The
  888.         latter form lists only those comments entered up to and including
  889.         the  Revision of the source file specified.  Both forms list  the
  890.         comments  one  source file at a time.  This means that  a  single
  891.         comment may be repeated many times, once for each file listed.
  892.  
  893.         The  output  from the Comment command is sent  to  STDOUT.   This
  894.         means  that  it may be redirected to a file or piped  to  another
  895.         program if desired.
  896.  
  897.         Listing or Retrieving File Sets        Listing or Retrieving File Sets
  898.  
  899.         The CHECKOUT program is also used to list or retrieve Sets  saved
  900.         in  the  project  database using the CHECKIN  program.   The  Set
  901.         command forms are as follows:
  902.  
  903.              CHECKOUT -s[M.N] PROJECT
  904.                   -or-
  905.              CHECKOUT -sM.N.R PROJECT
  906.                   -or-
  907.              CHECKOUT -rM.N.R PROJECT
  908.  
  909.         The  first  form is used to list all Sets saved  in  the  project
  910.         database file.  If a Version is specified then only Sets for that
  911.         version are listed.  If the Version is omitted, then the Sets for
  912.         the  most  recent Version are listed.  The listing  includes  the
  913.         comment  saved when the Set was created along with a list of  all
  914.         files  and  their  revisions that were saved  in  the  Set.   The
  915.         listing  is sent to STDOUT so it may be redirected to a  file  or
  916.         piped to another program.
  917.  
  918.         To  retrieve the files from a specific Set, the second and  third
  919.         command  forms are used.  An exact Version and Instance  must  be
  920.         specified.   Note that the Revision numbers of the Sets  are  not
  921.         related  to  the  Revision  numbers for  files.   All  files  are
  922.         retrieved  at their extant Version and Instance when the Set  was
  923.         created.
  924.  
  925.         When the '-s' switch is used, the files are retrieved for Making,
  926.         so  all special macros are expanded and the files are  marked  as
  927.         read-only  to prevent modification.  If the '-r' switch is  used,
  928.         then  the files are retrieved for Editing.  All macros  are  left
  929.         unexpanded  and  the files are made modifiable.  Once a  Set  has
  930.         been  retrieved, the files may be used to rebuild the project  or
  931.         simply viewed or printed as desired.
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.         page 14                                                 PSCM v1.3
  943.  
  944.         PSCM -- The Project Source Code Manager           July 31st, 1992
  945.  
  946.         Using PSCM with Make Programs        Using PSCM with Make Programs        _____________________________        _____________________________
  947.  
  948.         PSCM  was  designed  expressly  for use  with  the  various  MAKE
  949.         programs  and  utilities  available both  through  ShareWare  and
  950.         commercially.  In fact, with a little thought you will find  that
  951.         PSCM ceases to be of any concern.  You just MAKE your project the
  952.         way  you  always do and PSCM handles  the  modifications  without
  953.         trouble.
  954.  
  955.         When files are retrieved from a project database (by the CHECKOUT
  956.         program) they are given the proper time and date so MAKE can make
  957.         the right decisions about what should be rebuilt.  PSCM will only
  958.         store  or  retrieve  files that are  different  thus  easing  the
  959.         control issues.
  960.  
  961.         Step 1:  Pre- and Post-Processing        Step 1:  Pre- and Post-Processing
  962.  
  963.         There are just a few things that you need to do to integrate PSCM
  964.         into  your  development environment.  The first  is  to  identify
  965.         where  the  "PRE"  and "POST" processing is  done  in  your  make
  966.         process.   Most  MAKE programs have readily  identifiable  stages
  967.         where  PSCM can be added.  For example, I use NDMAKE version  4.5
  968.         (a  very  good MAKE utility if you can still find  it).   NDMAKE,
  969.         just like Unix make, makes the first target found in the  control
  970.         file.   Most  control files wind up with a  primary  target  that
  971.         looks like the following:
  972.  
  973.              build:  prog1.exe prog2.exe prog3.exe
  974.  
  975.         Since  "build" is a dummy target (it never exists so must  always
  976.         be  remade),  NDMAKE  proceeds  down  the  list  of   dependents,
  977.         rebuilding  whatever is necessary to update them.  The effect  of
  978.         this is to rebuild all of the program files in the project.  This
  979.         is an excellent candidate for inclusion of PSCM.  We can add  two
  980.         new  dummy targets to handle the pre- and post-processing  needed
  981.         by PSCM.
  982.  
  983.         The  preprocessing stage consists of checking in any  updated  or
  984.         modified  files,  and then checking out any files  that  are  not
  985.         direct  targets  (i.e. header and inclusion files).   If  we  are
  986.         using 'C' we might rewrite our make control file as follows:
  987.  
  988.              build:  PREP prog1.exe prog2.exe prog3.exe FINI
  989.  
  990.              PREP:
  991.                   CHECKIN -C PROJ
  992.                   CHECKOUT -M PROJ *.H
  993.  
  994.              FINI:
  995.                   CHECKOUT -E PROJ
  996.  
  997.         The PREP dummy target will always cause the CHECKIN and  CHECKOUT
  998.         commands  to  execute.  The CHECKIN command causes  all  modified
  999.         files to be updated in the PROJ project database and prompts  for
  1000.  
  1001.         PSCM v1.3                                                 page 15
  1002.  
  1003.         PSCM -- The Project Source Code Manager           July 31st, 1992
  1004.  
  1005.         a  comment  describing  the  modifications  made.   The  CHECKOUT
  1006.         command  then  extracts  for "making"  all  the  dependent  files
  1007.         (header  files) that will not be directly compiled.  This is  all
  1008.         the preparation we need in order to begin compiling.
  1009.  
  1010.         The  FINI dummy target runs CHECKOUT one more time to  make  sure
  1011.         that  all our source code files are extracted for editing.   Keep
  1012.         in  mind that when a file is extracted for making all the  macros
  1013.         are  expanded and the file is marked read-only.  If  errors  were
  1014.         encountered  during  the make we want the source files  ready  to
  1015.         modify without any hassle.
  1016.  
  1017.         Step 2:  Templates        Step 2:  Templates
  1018.  
  1019.         Most  (recent)  MAKE programs use a special  construct  called  a
  1020.         "Template."   A  template tells the MAKE program how to  build  a
  1021.         target file from a source file without having to exactly  specify
  1022.         the file name, only the extensions of the two.
  1023.  
  1024.         For example, NDMAKE uses the following template to tell it how to
  1025.         create a .OBJ file from a .C source file:
  1026.  
  1027.              #    C -> OBJ
  1028.              .c.obj:
  1029.                   ${CC} ${CFLAGS} -c $<
  1030.  
  1031.         The  "${CC} ${CFLAGS} -c" are the command and options  needed  to
  1032.         run  the  'C'  compiler.  During the make  process  the  "$<"  is
  1033.         replaced  with  the  name of each .C source  file  that  must  be
  1034.         recompiled.   This  can also be used by CHECKOUT to  extract  the
  1035.         source file from the project database just before it is compiled.
  1036.         (Remember that our post-processing will extract it for editing at
  1037.         the  end  of  the  make run so we only need  to  extract  it  for
  1038.         making.)
  1039.  
  1040.         We  can change this template to include the CHECKOUT  command  as
  1041.         follows:
  1042.  
  1043.              #    C -> OBJ
  1044.              .c.obj:
  1045.                   CHECKOUT -m PROJ $<
  1046.                   ${CC} ${CFLAGS} -c $<
  1047.  
  1048.         This  simple  addition will now cause the compiler to  work  with
  1049.         source code files that have expanded macros.
  1050.  
  1051.         Enhancements        Enhancements
  1052.  
  1053.         What we have just shown is the minimum needed to use PSCM with  a
  1054.         MAKE program.  There are a few enhancements we can use to improve
  1055.         PSCM's integration into our work methods.
  1056.  
  1057.  
  1058.  
  1059.  
  1060.         page 16                                                 PSCM v1.3
  1061.  
  1062.         PSCM -- The Project Source Code Manager           July 31st, 1992
  1063.  
  1064.         Most (if not all) MAKE programs allow the use of macros.  In  the
  1065.         examples shown above the "${CC}" and "${CFLAGS}" are just macros.
  1066.         We  can also use macros to further enhance our use of  PSCM.   By
  1067.         changing  the  references  to "PROJ" in  the  above  examples  to
  1068.         "${PROJ}"  and  then setting the PROJ macro to the  name  of  our
  1069.         project database we make the changes universal.  All that we have
  1070.         to do to include PSCM in a different make control file is to copy
  1071.         the  modified control lines to the new file and add the PREP  and
  1072.         FINI  dummy  targets to the list of dependents  for  the  primary
  1073.         target.
  1074.  
  1075.         Most  MAKE programs also have an initialization file.  This  file
  1076.         is read when the program starts.  It contains standard macros and
  1077.         templates  used during the make process.  It may be possible  for
  1078.         you  to  modify the initialization file to include  the  CHECKOUT
  1079.         command.   Note  that this usually requires decision  making  and
  1080.         branching  capabilities too since we don't want the make to  fail
  1081.         just because we don't happen to have a project file.  However, it
  1082.         is  okay  to specify a non-existent source file on  the  CHECKOUT
  1083.         command line; CHECKOUT will simply checkout nothing.
  1084.  
  1085.         You  can  also  use  the CHECKIN  feature  that  allows  entering
  1086.         comments  from  ASCII  text files.   Simply  change  the  CHECKIN
  1087.         command  in  the  PREP dummy target to  include  redirecting  the
  1088.         contents of the comment file into CHECKIN.  For example:
  1089.  
  1090.              CHECKIN -c ${PROJ} < COMMENTS
  1091.  
  1092.         This  allows you to keep a running COMMENTS file  that  describes
  1093.         each  change as you make it.  You could also use a custom  editor
  1094.         macro  that  extracts this information from the source  code  and
  1095.         copies it to this file.  Either way it helps to further  automate
  1096.         the make process.
  1097.  
  1098.         You should make sure to truncate the comments file to zero length
  1099.         after  it  has been used by CHECKIN.  Note that this is  not  the
  1100.         same  as deleting the file.  If the file does not  exist  CHECKIN
  1101.         will not execute because DOS will fail to open the input file.
  1102.  
  1103.         The  quickest way to truncate a file to zero length is  with  the
  1104.         following DOS command:
  1105.  
  1106.              IF 1 == 0 ECHO>COMMENTS
  1107.  
  1108.         Since  "1" never equals "0" (at least we hope not) then the  ECHO
  1109.         command  will never execute.  But DOS will truncate the  COMMENTS
  1110.         file before it determines that it should skip the ECHO.
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.         PSCM v1.3                                                 page 17
  1120.  
  1121.         PSCM -- The Project Source Code Manager           July 31st, 1992
  1122.  
  1123.         PSCM is ShareWare        PSCM is ShareWare        _________________        _________________
  1124.  
  1125.         I  have  been a software developer for many years.   During  that
  1126.         time I have acquired and used many very good programs through the
  1127.         "ShareWare" system.  ShareWare allows you to try a program before
  1128.         buying  it.   It does not mean the program is free, nor  does  it
  1129.         mean that it is a limited version of a commercial program.
  1130.  
  1131.         I wrote PSCM as an answer to my needs in software development.  I
  1132.         first came across the idea of source code and revision management
  1133.         when  I  ported some code from DOS to Unix.  The SCCS  system  on
  1134.         Unix  was very neat, but horribly cryptic and cumbersome.   Since
  1135.         then I have hunted for a good source code manager, but everything
  1136.         is  either priced way out of my range or just wasn't designed  to
  1137.         work with a MAKE program.
  1138.  
  1139.         If you try PSCM and you like it and intend to use it, a  donation
  1140.         of $25 is suggested.  Educational institutions may register  PSCM
  1141.         for  $15.  With a donation of $40 I will send the latest  version
  1142.         of PSCM, laser printed docs, and a BIG thank you.  If you need  a
  1143.         bunch of copies, contact me and we can work something out.
  1144.  
  1145.         To  register your copy, print out and complete  the  registration
  1146.         form (REGISTER.FRM) and mail it to:
  1147.  
  1148.              J. Bart Henthorn
  1149.              10607 E. Lowry Pl.
  1150.              Aurora, CO  80010-4035
  1151.  
  1152.         Please make payments by personal check or money order.  I  cannot
  1153.         accept  credit  card orders and it is never a good idea  to  send
  1154.         cash through the mail.
  1155.  
  1156.         If  you have questions or comments about PSCM you can contact  me
  1157.         by fax at (303) 341-7336.
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.         page 18                                                 PSCM v1.3
  1179.  
  1180.         PSCM -- The Project Source Code Manager           July 31st, 1992
  1181.  
  1182.         Revision History        Revision History        ________________        ________________
  1183.  
  1184.         Date      Vers      Comments
  1185.         11/15/90  1.0       Initial  Release: CHECKIN.EXE,  CHECKOUT.EXE,
  1186.                               DIFS.EXE, MRGS.EXE, ISIZE.EXE
  1187.  
  1188.         11/18/90  1.1       Enhancements and Bug Fixes:
  1189.                             Added support for Comments and Sets.
  1190.                             Fixed   bug  regarding  file   selection   in
  1191.                               CHECKOUT.EXE
  1192.  
  1193.         11/18/90  1.1a      Fixed bug that caused wrong time/date  stamps
  1194.                               on  files listed in a Set.  The files  were
  1195.                               retrieved  with the proper time  and  date,
  1196.                               just the listing in the Set was wrong.
  1197.                             Added  mode  to  allow  extracting  Sets  for
  1198.                               Editing as well as Making.
  1199.  
  1200.         12/03/90  1.2       New Version 1.2:
  1201.                             Added support for revision comments placed in
  1202.                               files extracted for making.
  1203.  
  1204.         07/31/92  1.3       New Version 1.3:
  1205.                             Added undo capability.
  1206.                             Added comment listing for single files.
  1207.                             Added listing of differences.
  1208.                             Added SHOWDIFS.EXE program.
  1209.                             Trap and handle Control+C and Control+Break.
  1210.                             Prevent accidental overwrite of source file.
  1211.                             Fixed various bugs.
  1212.                             (Please see following page for details.)
  1213.  
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.         PSCM v1.3                                                 page 19
  1238.  
  1239.         PSCM -- The Project Source Code Manager           July 31st, 1992
  1240.  
  1241.                 Bugs Fixed and Enhancements Added to Version 1.3                Bugs Fixed and Enhancements Added to Version 1.3                ________________________________________________                ________________________________________________
  1242.  
  1243.         1.   There was an obscure little bug that doesn't show up  often,
  1244.              but when it does it is a booger to find.  The PSCM.CFG  file
  1245.              can  hold  seven strings that are expanded  as  macros  when
  1246.              files  are extracted from a project file.  If one  of  these
  1247.              strings  is exactly the right length the  Microsoft  fgets()
  1248.              function reads the carriage return (CR) but not the linefeed
  1249.              (LF).   On the next call it reads the LF and sets  the  next
  1250.              string  to an empty string and moves the  remaining  strings
  1251.              down one line.  This bug is now fixed in 1.3.
  1252.  
  1253.         2.   I've  done  it, and I'm sure you've done it too;  forget  to
  1254.              include  the project file name when trying to add new  files
  1255.              to an existing project file.  Prior versions promptly  wrote
  1256.              over the first source file name, creating a new project file
  1257.              with that name.  For example:
  1258.  
  1259.                   CHECKIN -V0.0 FOO.C BAR.C
  1260.  
  1261.              When what you meant was:
  1262.  
  1263.                   CHECKIN -V0.0 PROJ FOO.C BAR.C
  1264.  
  1265.              This little finger faux pas means that your brand new  FOO.C
  1266.              module gets overwritten with a brand new project file  named
  1267.              FOO.C.  This bug has been fixed in version 1.3.  CHECKIN now
  1268.              reports  that  the file FOO.C already exists and  is  not  a
  1269.              project file.
  1270.  
  1271.         3.   CHECKIN, CHECKOUT, MRGS, DIFS and SHOWDIFS are now protected
  1272.              against  use of the Control+C or Control+Break keys.   Prior
  1273.              versions  could do everything from quietly die (at the  mild
  1274.              end)  to completely trash your Project file (at  the  severe
  1275.              end).   This behavior has now been fixed.   CHECKOUT,  MRGS,
  1276.              DIFS  and  SHOWDIFS  will now  happily  ignore  these  keys.
  1277.              CHECKIN will behave slightly different.
  1278.  
  1279.              If you press either Control+C or Control+Break while CHECKIN
  1280.              is  running or when you are entering a comment, the  Project
  1281.              file will be politely shut down.  If changes have been  made
  1282.              to  the  Project  file they will be  undone  before  CHECKIN
  1283.              quits.
  1284.  
  1285.              IMPORTANT:   Using  Control+C or Control+Break  to  abort  a             IMPORTANT
  1286.              CHECKIN  run  also deletes any "Undo" information  that  was
  1287.              saved  in the Project file before the run was  begun.   (See
  1288.              next  section  for more on Undo.)  This means  that  if  you
  1289.              start  a  CHECKIN  run and then abort it,  you  cannot  then
  1290.              further undo the Project file.
  1291.  
  1292.         4.   CHECKIN  now supports an "Undo" command.  This is  a  single
  1293.              level, one-time only undo.  The most recent changes  wrought
  1294.              by  CHECKIN will be reversed.  No source files on  disk  are
  1295.  
  1296.         page 20                                                 PSCM v1.3
  1297.  
  1298.         PSCM -- The Project Source Code Manager           July 31st, 1992
  1299.  
  1300.              modified;  the Project file is the only file  altered.   You
  1301.              may only perform an undo once.  CHECKIN will print an  error
  1302.              message if there is no undo information in the Project file.
  1303.  
  1304.              To  undo  the previous CHECKIN session,  use  the  following
  1305.              command:
  1306.  
  1307.                   CHECKIN -U PROJ
  1308.  
  1309.              Each file will be listed as it is removed or reverted.
  1310.  
  1311.              IMPORTANT:  This is an all or nothing proposition.  You  can
  1312.              not undo only certain files from the previous CHECKIN.   All
  1313.              modifications made during the previous run will be undone.
  1314.  
  1315.         5.   The  CHECKOUT  List command (-L) will now display  an  extra
  1316.              line if undo information is present in the Project file.
  1317.  
  1318.         6.   The  CHECKOUT  Comment  command (-C) has  been  enhanced  to
  1319.              permit specifying which files should be listed.  The display
  1320.              format changes when files are included on the command  line.
  1321.              If no files are specified then the output format is the same
  1322.              as  in version 1.2.  If you do specify file names they  will
  1323.              be   listed  one  at  a  time  with  all  related   comments
  1324.              immediately  following each individual name.  The  following
  1325.              is an example of the new report format:
  1326.  
  1327.                   === DIFS.C =========================================
  1328.                   Revision: 1.3.1 entered at 22:54:32 on 07/27/92
  1329.                   Added Control-C handler to DIFS and MRGS
  1330.                   ====================================================
  1331.  
  1332.                   === MRGS.C =========================================
  1333.                   Revision: 1.3.1 entered at 22:55:20 on 07/27/92
  1334.                   Added Control-C handler to DIFS and MRGS
  1335.                   ====================================================
  1336.  
  1337.         7.   It  is sometimes helpful to see how a source file  has  been
  1338.              modified  before it is checked in to the  project  database.
  1339.              The  CHECKIN  command now provides a new  switch  "-D"  that
  1340.              performs  this  function.  Before checking in  the  modified
  1341.              source  files you can run "CHECKIN -D PROJ" to create a  set
  1342.              of  difference files.  Each file has the same base  name  as
  1343.              the source file but with the extension "__D".  The following
  1344.              is an example of the difference file format:
  1345.  
  1346.                   < = Version on disk; > = Version checked in
  1347.  
  1348.                   <     DESC desc1;
  1349.                   ----------------------------------------
  1350.                   >     DESC desc1, desc2;
  1351.  
  1352.  
  1353.  
  1354.  
  1355.         PSCM v1.3                                                 page 21
  1356.