MPW 3.0A2 Release Notes

July 14, 1988

This release note pertains to the folowing MPW products:

¢ MPW Development Environment ¢ MPW Pascal


¢ MPW Assembler

MPW C++ has its own separate release note. This release note, the MPW 3.0 ERS’s, and other tool-specific release notes are the documentation for this release. Differences between the ERS, previous 3.0 development releases, and this release are documented below. If no release note exists for something that has an ERS, assume that the piece has been implemented as documented in the ERS.

MPW 3.0A2 highlights include a symbolic debugger, project management system, and new C compiler. All of the C pieces of MPW, were compiled with this new C. Since MPW 2.0, the C header files have three important changes: every function has a function prototype, the capitalization for routines that pass strings and points has changed, and the definition of Str255 has changed. The capitalization and Str255 changes will require changes to your C source. See the section below titled “Interfaces.” .

Another change in MPW 3.0A2 may require a change to your Makefiles. The Pascal compiler no longer uses the Load/Dump mechanism. Instead, the compiled object code for each unit is saved in the unit’s resource fork. Therefore, dependency rules (in Makefiles) upon Pascal dump files are obsolete: See the section below © titled “Pascal.”

The A2 C compiler now has function prototype checking turned on. Furthermore, the C compiler is very strict about type compatibility. Be forewarned...

¢ Installation from floppies - MPW 3.0 now includes an installer disk for installing MPW from a set of floppy disks. Here are the steps for automatically installing MPW on your disk: 1) drag the “Installation Folder” onto the hard disk where you want MPW installed 2) launch the MPW Shell found in the “Installation Folder’

Apple Computer, Inc. Confidential Page 1

Reporting Bugs

Getting the Latest Stuff

Folder Reorganization

(the one you just dragged onto your hard disk)

3) the installation script will run and will prompt you to insert a disk in the internal drive. You can insert the MPW disks in any order and it won’t hurt to insert a disk more than once.

4) once the installation is complete, throw away the | “Installation Folder,” and launch the newly installed shell.

For those not using the installer script, you will notice that the configuration of MPW on the floppies has changed. The files on the disks are in folders that represent their final destination when moved to a hard disk. Pascal, for example, used to be found at the root level of the Pascal disk. Now, however, Pascal will be found in a “Tools” folder on the Pascal disk. This means that there will be duplicate folders across the set of floppies and you won’t be able to drag the contents of each floppy onto a hard disk without some conflict.

¢ Installation from Spuds/Taters - simply drag the MPW and SADE folders onto your hard disk.

Please report any bugs you find to the BRC. Please use the latest version of “Outside Bug Reporter,” found on the Spuds/Taters server. After completing the bug report, copy the report into the folder “Put New Bugs Here” which is found on:

Zone: EtherKnott

Server: BRC Central

Volume: Bug Jungle

As bugs are reported and fixed in A2, newer pre-beta versions of

MPW will be placed on: Zone: Development Tools Server: AlmostMPW

Volume: AlmostMPW

Note: this software is for Apple internal use only. Use Backup to find out which pieces are new.

Examples - In order to reduce the propagation of example folders within the MPW folder, all of the example folders have been placed inside a single folder: Examples. This folder contains AExamples, CExamples, CPlusExamples, Examples, LL1Examples, and PExamples.

Interfaces- In order to reduce the propagation of interface folders within the MPW folder, all of the interface folders have been placed

Apple Computer, Inc. Confidential Page 2

we ;

( APW Shell

inside a single folder: Interfaces. This folder contains the folders:

Alncludes, CIncludes, PInterfaces, RIncludes, and AStructMacs. The ns

various interfaces Shell variables are, of course, set up correctly by the Startup script. If you have any hardcoded paths in scripts, how- ever, they will have to be changed.

Libraries- In order to reduce the propagation of library folders within the MPW folder, all of the library folders have been placed inside a single folder: Libraries. This folder contains the folders: CLibraries, Libraries, and PLibraries. The various libraries Shell variables are, of course, set up correctly by the Startup script. If you have any hard- coded paths in scripts, however, they will have to be changed.

Debuggers & ResEdit- Since MacsBug, SADE, and ResEdit are now separate products from MPW,, their folders are no longer found in the MPW folder. In fact, the Debuggers and Applications folders no longer exist. The SADE, MacsBug, and ResEdit folders can be placed anywhere on your hard disk.

Release Notes

The Shell enhancements are documented fully in the Maintosh Programmer’s Workshop 3.0 Shell ERS. |

3.0 A2 Enhancements Included:

The Shell variable {MPW} is now (ShellDirectory) rather than (Boot}MPW.. This makes it easier to run MPW froma non-boot volume.

Tools are now opened read-only. They may be run in a shared environment (e.g. from a file server). ,

The Startup script will now execute any file in the shell directory named “UserStartup®=” (in addition to UserStartup).

The Files command has an extra option -h. This option is for not printing the di- rectory headers when multiple directories are listed. This allows the output of files to be used in pipe without worrying about a directory listed twice (with the -r option) or worrying about blank lines or the directory name.

The MoveWindow command has a new option -i. This option is for ignoring errors on the position of the window. This allows windows to be moved completely off screen. Once a windows is moved off the screen, it can only be moved, closed, or zoomed through commands.

Pre 3.0 A2 Enhancements Included:

Directory Path Numeric Variables

Apple Computer, Inc. Confidential Page 3

Ye ee es

oe we te ce St ce ee ee



Background operation of Tools

Request -q

Close -c

FAccess - Selection information

Read only check box in open dialog

Current window size and position information (SizeWindow, MoveWindow)

RotateWindows Command

Format Command

New shell variables: (Font), {(FontSize}, (Tab), {AutoIndent}, (SearchWrap}, {SearchBackward}, (SearchType]

The tab limit has been increased to 80.

The line length limit has been increased to 256.

Horizontal scrolling goes faster.

Option-Enter will invoke Commando.

TileWindows and StackWindows have options for windows and area for tile/stack.

The Date command has -n and -c options for date arithmetic.

Opening zoomed windows will zoom to current screen.

Locked and read-only will open without the dialog box. An icon in the bottom of the window will display the locked or read-only status.

Selecting text by matching delimiters has changed: You may abort by pressing cmd-., and if a matching delimiter is not found, the current delimiter will be selected.

ZoomWindow without any options will toggle the window size just like clicking in the Zoom box.

& (Option-W) will direct both stdout and stderr to the same place.

Evaluate supports decimal, hexadecimal, octal, and binary radices.

New windows will be opened according to rectangle {NewWindowSize).

Zooming will be done according to rectangle {ZoomWindowSize}.

The TileWindows and StackWindows menu commands may be customized with {TileOptions} and (StackOptions} variables.

New Position command. we 8

New Flush command. This command will clear any tools that are in the cache.

See the Shell ERS for more specific information.

Read the Projector ERS, release note, and manual pages for complete details on how to use the new project management system. Projector, by the way, is actually part of the MPW Shell.

Note: if you used projector in 3.0A1, you will need to convert your project. Be sure to read the “Converting Your Projects” document.

¢ The 3.0 Pascal compiler no longer supports the ‘{SLOAD}’ facility.

Instead, the compiler automatically builds a ‘pre-compiled’ version of the symbol table for each unit and puts this into the resource fork of the file containing the unit. On subsequent compilations, the compiler will load this resource instead of compiling the unit. The compiler will not use the resource if the modification date of the file is later than the date stored when the resource was created, or if

Apple Computer, Inc. Confidential Page 4

; d {

C Compiler

compile time options that were in effect when the resource was created have changed in such a manner as to invalidate the resource. The ‘{$LOAD})’ syntax is still supported, but ignored —- if compiler progress information is requested, the compiler will state that the use ui the feature is ‘obsolete but harmless’ .

Some users will have included dependencies for ‘{SLOAD}’ files in their makefiles. These can now be removed, but they are harmless since they simply restate what the compiler does automatically.

There are three new command-line options that help support the new feature :

-NoLoad _ don't use or create any symbol table resources -Clean erase all symbol table resources -Rebuild rebuild all symbol table resources ¢ The following items have not yet been implemented or are under construction: - Global Data > 32k is not supported. - Forward references for records and objects must still be resolved within a single TYPE block. - The 'nolines’, 'novars' and 'notypes’ options for SADE do not work. e Chars can be used where strings used to be required (e.g. someString := CHR(S0D); )

e Assignment compatibility for pointers is strictly enforced. ¢ Type checking for function prototype arguments is strictly enforced.

For example: extern pascal short GetCtlValue (ControlHandle theControl); Handle h; /* not a ControlHandie */ short val;

val = GetCtlValue(h); /* will generate a comp:-er error */ val = GetCtlValue ((ControlHandle)h) ; [ocoK, *7 ¢ Some of the compiler options are different than the Greenhills compiler. See the “C Manual Page” (in the Release Notes folder) for a complete list of the C compiler options. The C compiler’s Commando dialog now shows all of the compiler’s available op- tions. : ¢ The volatile keyword has been implemented as meaning “not register.” ¢ For 3.0, the C compiler’s calling conventions are the same as the Greenhills compiler with four exceptions: 1) the underlying mechanism for functions that return structures or unions is incompatible between the two compilers (i.e.

Apple Computer, Inc. Confidential Page 5


Linker Tools

mixing object code in this case will break).

2) unlike the Greenhills compiler, no global variables are ever generated by functions returning structures or by switch statements.

3) functions that return results that are smaller than a longword return the smallest possible result in DO (instead of extending the result to a long).

4) the C compiler now considers D2 to be a scratch register.

¢ If at all possible, recompile all C source with this compiler to avoid mixing pre-3.0 object code with 3.0 object code.

e If your C source is using pre-3.0 C header files, be sure to convert your C source with the CCvt script. There is more information about the changed interfaces below.

¢ Here is a list of known bugs or features under construction: - The 'U' and 'F' constant type modifiers are not completely implemented. - The 'nolines’, 'novars' and 'notypes' options for SADE do not work. - SADE output is limited by static internal buffer size.

‘The major change to the interfaces for MPW 3.0 was to change

capitalization conventions in CIncludes for those functions which use Points or strings. This was a major change which was specified in the MPW 3.0 ERS. Functions calling glue to convert C strings to Pascal strings or dereference Points are now spelled with all lower case. The inline versions of those function calls, which do no conversion, are now spelled with mixed case spelling to match “Inside Mac”. In order .

_ to easily convert source code to these new conventions, we have

written a script, CCvt (in MPW:Scripts), which calls the Canon tool to change the sources. CCvt first duplicates the original sourceasa backup procedure. It then uses two canon dictionaries located in the Tools folder, CCvtUMx.dict and CCvtMxL.dict, to first change mixed case spellings to all lower case and then to change all upper case spellings to mixed case conventions. ClInterface.o and other libraries changed so the linker would find the glue necessary for these lower case C functions.

| See the Interfaces release note and the Pre-A2 Interfaces note for much

more information.

See the Linker Tools release notes.

_Apple Computer, Inc. Confidential Page 6


Choose Tool


Make |

Also see the Libraries release notes.

¢ In the C library’s printf formatting string, the meaning of %p has changed. Before this release, it meant read/print a pascal-style string. In order to conform to the ANSI spec, howevz, %p is now used to print the value of a pointer. %P is used to read/print pascal- style strings.

e The library Stubs.o is new. MPW tools can save about 4300 bytes each by linking with this library BEFORE linking with Runtime.o or CRuntime.o; standalone applications should not link with this


Pascal bugs fixed:

e Error message for set range checking is no longer garbled.

¢ IOResult no longer reports error -1025 (an AppleTalk error number) when string overflow is detected, and when READ expects an integer, but gets no numeric value. JOResult now reports error 34 in these circumstances.

Pascal changes: e Added support for error manager in startup sequence.

C and Integrated Environment changes: :

¢ Added support for error manager in startup sequence.

e F_GSELINFO and F_SSELINFO now supported in all languages.

¢ mktemp() is now implemented. To support mktemp(), we also have getpid() and access(). These functions will all be documented once it is clear how they fit into the ANSI environment.

Choose is anew MPW tool that allows you to mount servers and select LaserWriters from the MPW environment. See the ERS for more information. Choose now works with AppleShare version 1.1 and 2.x. Choose no longer complains about “no bridge found” if you happen to be in a zone-less network.

Commando has a simple built-in editor that allows controls to be moved around and resized and labels and help messages to be edited. See the Commando release note.

Changes have been made to the way variables (macros) are treated:

¢ Exported shell variables are automatically expanded by Make so that variables such as {AIncludes}, {MPW}, etc. can be used to express file names. Recently, however, {Status} was made an

Apple Computer, Inc. Confidential Page 7

Print Tool


DeRez Types.r SysTypes.r

exported variable, which had the unfortunate side effect that if {status} was referenced in Make build rules it would get emitted as "0" (the value of status at the time of running Make). The 3.0 version of Make will still automatically define exported variables for use in dependency lines, but will now not expand exported variable references when they appear in build rules.

| © Variable references in variable definitions were previously required

to refer to already-defined variables, since the variable references were expanded at definition time. Variable references in variable definitions are now not expanded until the time of use, which allows some new behaviors which were not permitted before. (All old makefiles will continue to behave as they used to.) Now variable definitions can refer to dynamically defined variables such as {targ} which don't take on values until build rule expansion time, allowing some clever effects not possible previously.

None of these changes should change the behavior of any currently working make files, although how errors are reported for bad variable definitions has of necessity changed.

Although there is no ERS for the print tool, there is a new print

| option:

-ps filename This option allows one to include a file of postscript commands to be sent to the laserwriter prior to printing the file. See print’s commando help message for more information.

e All features have been implemented as documented in the Rez Tools ERS (you will need WriteNow to open the ERS).

¢ In Types.r, the following type declarations have changed:

‘cicn’, ‘ppat’, ‘crsr' - redefined to use labels (not ePanees since

D1) ‘SIZE - now supports MultiFinder and Switcher | - two new flags have been added

¢ In SysTypes.r, the following type declarations have changed:

‘scrn' - flags were in the wrong order 'FONT', '"FOND' _ -redefined to use labels ‘snd ' - newly added - added synth values ‘vers’ - newly added KSWP' - added more specific bit information

¢ A new resource template, Pict.r, allows you to DeRez PICT’s (both types 1 & 2)

Apple Computer, Inc. Confidential Page 8

X Ete gus






MPW 3.0 includes a parser generator tool (similar to YACC) called LL1Generator. See the ERS and the LLIExamples folder inside the Examples folder.

See the DumpFile ERS.

Changes in this release from previous releases:

¢ The -c option has been renamed -w (for width).

e A-g nn option has been added to permit groupings other than the default.

e Several changes have been made to CreateMake and to its Commando window. To the existing options for program type: Application, Tool, and DA, has been added a fourth option: CR, which is an abbreviation for Stand-Alone Code Resource. If CR is specified, the parameters -m mainEntryPoint and -rt resourceType are mandatory. The commands -c creator and -t type (meaning file type) are optional for CR and -c creator is optional for Application.

¢ Further changes are that the makefiles produced by CreateMake now contain lines of the form:

<all source files> <all object files>


¢The diagnostics for calls of CreateMake with improper parameters have been improved. | ¢ CreateMake does not yet support a 68881 code generation option.

setVersion now supports the ‘vers’ resource as documented in TechNote #189. See the new manual page in the release notes.

Apple Computer, Inc. Confidential Page 9

? A ta,

Which ERS To Use


Projector Alpha 2 Release Notes

Authors: Jeff Parrish Bob Etheredge Peter Potrebic John Dance

Date: July 6,1988

What is Projector, and how the heck do | use it

Projector is a collection of built-in MPW commands and windows that | help programmers (both individuals and teams) control and account for changes to all the files (documentation, source, applications, etc.) associat- ed with a software project.

The exact definition of the built-in MPW commands and windows is specified in the July 6, 1988 Projector ERS. This ERS is a complete, accu- rate description of Projector, it is not just a list of the differences since the Alpha 1 ERS so throw away any old copies you might have lying around. In addition, the ERS describes the Projector model for controlling project files, and details many of the issues related to that model.

The Projector team strongly suggests that before you use Projector, you at at least read the ERS overview and section dealing with the components of a Project.

The Projector team, as well as other members of the Development Sys- tems Group, have been using Projector for several months. Projector has been used both as a network based project control system shared between several people, and as a local HD based system used by single individuals.

Performance will continue to be one of our highest priorities between alpha 2 and beta (assuming no one finds the bug we left in). Significant performance enhancements have already been added between the alpha 1 and alpha 2 releases. Performance has remained essentially constant be- tween alpha 1 and alpha 2 in spite of the fact that the data compaction that = added for alpha 2 requires a considerable amount of processing and V/O.

The sections below represent the accumulated wisdom of Projector’s ini- tial users; what they found to be particularly useful, and what they could easily do without. Since the Projector team would definitely like to im- prove Projector (and this list), please let us know what you think we can improve, as well as what we are doing night. If there is something you don’t like about Projector (I know it’s hard to imagine), please help us out by taking a minute to think of how it could be improved.

Comments and questions can be directed to: Jeff Parrish x2395, Bob Etheredge x6250, or Peter Potrebic x6494.

Page 1

Important Update Info

Modifying Read—Only Files

What’s new since Alpha 1

The Alpha 2 Projector is incompatible with Alpha 1 projects. The “Convert” folder (which can be found on the AlmostMPW server in the Development Tools zone, in the AlmostMPW volume) contains the scripts and tools needed to make your existing projects compatible with the new Projector (and save loads of disk space). The details of how to convert your projects are in the release note titled “Converting your projects”.

Projector now saves “TEXT” files in compressed form.

A “Touch Mod Date” check box was added to the “Check In” and “Check Out” windows. The default for the “Check In” window is to leave the revision’s modification date untouched. The default for the “Check Out” window is to touch the revision’s modification date.

The “-touch” and “-noTouch” options were also added to the “CheckIn’”’ and “CheckOut” commands respectively.

The new Projector command “ModifyReadOnly”, was added to allow users to modify files that were checked out as read-only. The primary use of this command is to allow users who don’t have access to a project (e.g. working at home), to edit the read—only files that were previously checked out. Once this command has been run on a file, the user may treat the file as though it were checked out for modification—with one exception: you

{| will not be able to check a modified read—only file into a project if some-

one else happened to have created a revision more recent than the revision you modified. The syntax is:

ModifyReadOnly file.

The Shell now displays all the appropriate Projector icons in its editing windows. The Shell used to display only the “read-only” and “‘locked”’ icons for the files that belonged to Projector.

A “-cancel” option was added to the CheckIn command to correspond to the “Cancel Checkout” button in the “Check In” window.

Projector will automatically continue to try to open a project if the project is Currently being accessed by someone else. A “command-.” will discon- tinue the automatic retry.

Several changes have been made to the Projector windows to help differ- entiate their various states. For example, the window titles change to indi- cate when the window is displaying information.

A logging mechanism has been added to Projector to keep track of all the commands which delete information from a project. The “-log”’ option to the ProjectInfo command can be used to list a project’s log.

The new options, “-newer’” and “-update”, have been added to the CheckOut command. The “-newer” option will check out all read—only files that you either don’t currently have or are newer than your existing files. The “-update” option will check out only the read-only files that are newer than your existing files.

A “-m” option has been added to the ProjectInfo command and can be used to list information about all the revisions that are checked out for modification.

Page 2


_ ‘Jseful Scripts

Canceling Checkouts

Two new scripts/commands have been added to make manipulating ‘ckid’ resources a little bit easier: “OrphanFile” and “‘TransferCkid”. It is impor- tant to keep in mind that you will only need these scripts under exception- al circumstances. For example, if you duplicate a file that has been checked out from a project, you will end up with two files that both think they sil been checked out. OrphanFile can be used to clean up the dupli- cate file.

An example of when you would use TransferCkid, would be if you were using Projector to maintain the history of a file where each revision was generated from scratch (e.g. most object files, Microsoft Word documents, etc.). Since the new revision would not have a ‘ckid’ resource, you would have to check out the latest revision of the file for modification, use

| TransferCkid to move the ‘ckid’ resource from the checked out revision to

the generated file (to make Projector think that the generated file was checked out for modification), and then delete the revision you checked out. What you are then left with, is a new revision of the file that can be checked back into the project.

Two other utility scripts, CheckOutActive and CheckInActive, have been supplied in an example project in the MPW Examples folder. To access these scripts, execute the following commands:

MountProject “{MPW)Examples:Projector” CheckOutDir ProjectorjUtilities “{MPW}Scripts:” CheckOutDir Projector/Commands “{MPW)Scripts:”

and then use the “Check Out’ window to look at the scripts in the example projects and decide which ones to check out. Both CheckOutActive and CheckInActive are intended to be used as user-defined menu items. An example of how you might set up your menus would be to execute the fol- lowing commands:

AddMenu Project ‘(-! AddMenu Project ‘Check Out Active’ ‘CheckOutActive’ AddMenu Project ‘Check In Active’ ‘CheckInActive’

Special features that make life wonderful.

Holding the option key down while you choose the “Check Out” button in the CheckOut window will open any TEXT files after they are checked out.

Be sure to add a comment (or task) when you check a file out from the CheckOut window. It gives other people the opportunity to find out what changes you are currently making to the file.

If you check a file out by mistake, you can easily cancel the check out by selecting the “Cancel Checkout” (of course) button in the CheckIn win- dow.

If you check out a file for modification and then lose it (delete it, send it to your aunt Millie, etc.), you can cancel/delete the checkout by using the - checkout option to the DeleteRevisions command. Think three or four times about this before you actually do it though. If you cancel/delete the checkout and then find the file, Projector will disavow any knowledge of

Page 3

CheckOutDir Short Cuts

Adding To A Symbolic Name

the file or any of its IM force.

If you find yourself working on a shared file, but doing something a little (or a lot) off the beaten path, create a branch! You can create a branch ei- ther when you check a file out, or when you check a file in. To create a branch when you check the file out, simply check the “branch” check box before you check the file out. To create a branch when you check in the file, select the “Revision...” button in the CheckIn window and then check the “Create a Branch” checkbox. Branches allow you to work on a tangent to the main development effort without affecting anybody else. For exam- ple, if you wanted to add and test out a new source file, you might check _ the makefile on a branch in order to add the dependencies on e new file.

The CheckOutDir command gives you the ability to have Projector auto- matically direct files checked out from a project to any directory you choose. If your directory structure (and names) match your project struc- ture (and names), you can use the following handy CheckOutDir com- mand to automatically map all your projects to their corresponding direc- tories: |

CheckOutdir -r -project TheRootProject/ TheRootDir

The “Select Newer’ button in the CheckOut window is a great way of en- suring that you have the latest copies of all the files in a project.

Changing the current project (whether by using the Check In or Check Out windows, or by using the Project command) will cause the check out di- rectory to be displayed in the Check In window. In the case of the Check In window, this means that changing the current project will automatical- ly adjust the list of files displayed according to the CheckOutDir you have set for that project.

To add or delete a specific revision from an existing symbolic name, you can get the current definition of the name (the -s option is helpful in that each component of the name is listed on a separate line), and then edit the specific entries you’re interested in. Note: symbolic names are tied to projects, not revisions. For example, the following three commands:

NameRevisions george file.c,3 file.h,5 NameRevisions george file.c,1 NameRevisions -s george

will print out NameRevisions george -project MyProject -user Me ad file.c,1l

not NameRevisions george -project MyProject -user Me d

file.c,1 a file.h,5

To delete symbolic names, use the DeleteNames command.

| Special features that make life not so wonderful.

Think twice before you use the DeleteNames command with the -public

Page 4

option. Once you have deleted a public name, it is gone for good—like to- tally. If this happens to you, you can use the -log option to the ProjectInfo command to find out what the name was, and then manually recreate it.

The NameRevisions command with the -public option is also dangerous (for the same reason as above) because it will replace any previous defini- tion for the same name.

There is no automatic merge for revisions. To merge two revisions, you can check the revisions out to two different directories and then compare and merge them the same as you would any two files today.

If you delete a project without deleting all the files checked out from it, the files will continue to think that they belong to the project long after the project is gone. A symptom of this is having files in the “Check In” win- dow listed with an icon showing a document with a question mark (this will also occur if the project isn’t mounted). Files in this state cannot be checked into any projects. A file with such an icon does not necessarily mean that its associated project has been deleted. To find out if it has, click the big question mark button to switch the window to an information view, and then select the file in question. If the project listed for that file does not exist, your file has been orphaned. If the project listed for that file currently exists, make sure that the “current project” in the Check In win- dow is the project listed for the file. If the file still shows the same icon, you probably deleted the original project and then created a new one with the same name.

If you find out that you either deleted a project or deleted a project and then created a new one with the same name, you will need to disassociate the file from the original project by using the “OrphanFile”’ script. Caution: make sure that you only orphan the files associated with a deleted project.

Page 5

Projector Conversion Tool Converting your projects

| ( The following describes the process of converting projects created with the old Projector (MPW 3.0 Alphal) into projects compatible with the new Projector (MPW 3.0 Alpha2). This conversion is necessary because the internal format of the project changed to sup- port deltas and the logging mechanism.

Please read this entire document before proceeding with the conversion.

Steps to take:

1. Please read this entire document before proceeding with the conversion.

2. Make a backup of your projects.

3. All modifiable files must be checked in and all read-only copies must be deleted. Before conversion takes place the tool makes sure that no files are checked out for

~ modification and conversion will terminate if any files are checked out.

Execute the following command (in the Alphal Shell) on each project tree: projectinfo -project Project -m -r -revisions

This command will list all revisions that are checked out for modification. The files must be checked in before continuing.

Deleting all checked out files is necessary because the format of the ckid resource a changed, there by invalidating files checked out using the Alphal Projector. The { script “FindOldFiles” (in the “Convert “folder) will recursively search directories and list Delete commands for all files that have a ckid resource.

4. Make a copy of the “Convert” folder on a local hard disk. This disk will be the destination disk - the new projects will be created within the “Convert” folder. You will need enough space on this disk to accommodate the new projects. Previous conversion have reduced the size of projects from 2 to 5 fold de- pending on several parameters. Remember that only TEXT files are compressed projects with non-TEXT files will not shrink as much as projects with only TEXT files.

5. Manually save all public names This needs to be done because the conversion tool ignores names.

NameRevisions -project Project -r -public >> savedNamesFile

Execute the above command on every project tree. This will save the definition of all public names. The names will be restored after the new projects are created.

6. Set the current directory to “Convert” on the destination disk.

7. The {User} variable must be set and exported, preferably to someone’s name.

Peter J. Potrebic Friday, July 8, 1988

Projector Conversion Too! 8. Convert old projects by running the following command:

projectCvt Projects...

The list of projects should contain the full HFS pathname of all your old root projects. The conversion process will convert each of the project trees and when it finishes the new project trees will be inside the “Convert” folder. ,

The first part of the conversion process is the validation stage where all the projects are inspected to make sure that no file is checked out for modification. Depending on the number and size of the projects this stage could take a few minutes. Please wait until this stage is over (the conversion tool will print out an. appropriate message) before leaving the machine because conversion will terminate if any files are checked out.

9. After the conversion has successfully completed replace the old projects with the new projects Copy the projects out of the “Convert” folder to replace the old projects.

10. Mount all the new projects and execute the file savedNamesFile in order to restore the public names.

Caveats and Notes:

1. Think about what Shell you a running. In order to checkin files into your existing projects you must run the old Shell (pre Alpha2). The conversion process needs to be run in the new Shell.

2. The conversion process adjusts your Mac’s clock so don’t be alarmed if you noticed the time changing wildly. The script will restore the proper ttme when completed. Unfortunately, if the script terminates because of some error (e.g. out of disk space) the proper time will not be restored. |

3. Be patient - the conversion process is slow. As a rough guideline it took 7.5 hours to convert a 25 megabyte project tree on a local disk.

4. We recommend that the conversion place place locally rather than over the network. Check to make sure that all files are checked in before copying the project off the server. In this way people can easily check in the appropriate files. Then make sure to change the access privileges so that people can’t inadvertently modify the old project because these changes won't be reflexed in the new project.

Peter J. Potrebic Friday, July 8, 1988

Macintosh Programmer's Workshop Project Management System ERS “Projector”

Bob Etheredge, Jeff Parrish, Peter Potrebic July 6, 1988

a Nee Swe 7 a

Changes (4/14/88):


Added the modifyReadOnly command Updated the window pictures and descriptions

Described the logging mechanism

Changes (4/14/88):

ObsoleteRevisions has been removed from the “will be done for MPW 3.0”.

Added Task and Comment fields to the 'ckid' resource and changed it to lower case. The user can now add Task and Comment information to a file without requiring the file's project to be currently mounted.

Removed the Projectinfo window as a separate entity, by integrating its functionality into both the CheckIn and CheckOut windows. To get project information, just press the Question Mark button in the CheckIn or CheckOut windows.

Replaced the {Project} variable with the Project command.

The project option, used in most of the command examples has been renamed from -p to -project.

References to the “Log” file have been removed.

The new option in the CheckIn command has been renamed from -n to -new.

Changes (1/25/88):



The resource forks of all files are saved on a per revision basis. Previously, the resource fork of text files was not saved.

Updated the screen shots of the three projector windows (The “Project Info” window has not been updated). The pictures are of the windows as they exist in MPW 3.0 D3. In some places the descriptions of the windows refer to not yet implemented features.

MergeRevisions has been removed from the “will be done for MPW 3.0” to the wish list appendix.

( | Table of Contents

a Die OP CONES os dae aiceiscean tail lave sianaw steamed vatlueas eeaea uemameacedeentateateeusuadcised 3 PMITOGCUCIION vss csicsscaecoucivetsdenveseas woman nc eieamaameaawanaaaunseewiecaeebe nee ossaeeuah eases 2 PUIpOSE OF This DOCUMENT tasccissa.ceeveaids aousaeielninnrdccisaceesdedsaestavssediniass v7) Product Definition ................06. ji Po usacaNealqediiasband ceeaseeiceeseocaeecas es ps lard Ware Compan Di lity iwcosscccsssresiscvesisncnadvas iow ssdecmsvasteneseresetahensis 2 SOLtWare “COMPAt DIY saiisiedecisrs vet sea tana vcancatanrsanmdateleacsutaceeetdeacseaes 2 SY NtaX: NOON sic ccvardianete senmasdeuncawacincatsns cataweioncsgnimateaiedewianssenues 2 OV EV VO We acest ee orcs aaa oaln soe wet ouside tise teeter seas 2 POAtUIeS ohoccnecaecrs ie vc cutiea wouatocher ecm sastcdaenuusnacenencaseseanaaetseeeseuncee: 3 EMILANONS vodelictdu sds since vase toueseewncindcditesicwuiiehasetoundedeinadeeratahaiepiea ae 4 SINS PLOICCION case cceecacustdati ac tnariat anche setunasiede panes mmenauaada tua eanenereseeueaecns: 4 ; COMPONENTS OF a PrO jE! onc hac wiaeswscierscecendaias ciatasssaseessassadeantaussccsee pans 4 - EO) OCC areas sas asa letecscactee teas cuctamaa nica aaesaonsacnonwsnouee veces 4 BCS fords ocala nana aaa et vleanae een inueds naan Sie ee tan wane red eaea tos: 7 REVISIONS 0.2 s:cis. cic iatc tenis na touts daw ue g a sause aaaaatae Maus Wad or tw eataeeanteouees: 7 MSO IN AICS io cseuceicie arsstten bonewae eee wiemua breil datichidesenosa Waasuseeeaesseaetnes 9 SVMDONC NAMeS cise tiinias sea Vanas cdancduean sesed taaneenndaweenaeuee uses 9 WW OFKINE OM A PIOJCCE so vinchotcsaasawtea'etienccen atewawenemncectereeeal ca oaters tela eacines 11 PYOJeCh CTEAUON 25 cacs senaneehadscseenseadersaecieds sanceteck nee elekaedaiaeess 11 ESOCAUING: (PROJE CS cas naetsceccietenes moi laccsuncadvebaieteaasseeagescandeaseies 13 Checkout and Checkin uci, cosh sc gadeaseucares ies sausectsbokenmiwatoatswcuees 13 BANS AN oso 2 Seasti oyna saneiog ate ounce at ees adc ineee 17 or MiersIng Branches pose) 5e. date al wine winter ecion emia totasmetcoeulae 18 ( Project. Acminis tration sisecce acy scscoaincsavssnssinesoguteneiseinensbieawecestovatecs’ 18 oe Moving & Renaming Projects............cccccecssceeceesseeeeeeeeeeeessaeeeens 18 Project. InfOrmation sch scdaig occeecastacuswhcwedasd aden euebslade. awe senecaastaasatoessase 18 PRO DC IG Isard cesane siti curate niiee ave cioats Gea e testa y caaat vaca een Alomar cane alae 22 CKIG RESO UIC 6 cadavers sacs oande ceca aeieuedes Goo aiec datums nes etncsuehenteues 22 TNE: PYO\CCt DITECtOly sc sides cotadewcedaeianssasiawontieaaetestanssaimedsdrarecseayecntess 23 CylOsSary Of J] CMS chica vous saieennsieiebincdessenstaevonesdwnneunancunese es idickews 24 Wish—List for Future Releases ..............ccceccecscccccccceeescceeeesscseeeecsseeeees 26 Naming REVISIONS ssavevuacetuerncaoectiea te wines eecsseaor sends exolacdeetuesans 26 PICLOTENCES cs 2ocascescnusuts nenanaehened hoauactienasiwes venhesnce aie aleiaee 26 POGIUIONGL . “WINGO WS xiccdnctassucscuieigideautaiuboersdantdetestiwesieeinsasietes 26 © Project Path, Names cis sci. sosriescenece ce cinaueaneetcevtendeaueeeestinaneadeceses 27 IWhET EIN BIANCNES ich sniccscavsaiauetdnvacabaawdta sacsanincsenatacaancleaeun: 27 Pate Te COmm ands sactesoucasiwiaies cag ante cs sta ccnaatvedsaeacedewn mongoose cadeeatenasietaer: 28

Projector ERS


Purpose of this Document

This document describes the Macintosh Programmer’s Workshop (MPW) Project Management System named “Projector”.

Product Definition

Projector is a collection of built-in MPW commands and windows that help programmers (both individuals and teams) control and account for changes to ail the files (documentation, source, applications, etc.) associated with a software project. Projector can be used to coordinate changes among a team of programmers, and to maintain a history of project revisions.

Hardware Compatibility

Projector will run on the same machines that are supported by MPW 3.0, i.e. the Macintosh II, the Macintosh SE and the Macintosh Plus.

Software Compatibility

Projector requires the presence of the Macintosh Programmer’ s Workshop 3.0. It will not run outside MPW either as a Macintosh application or desk accessory.

Syntax Notation

The Projector ERS uses the same notation as used by the MPW 2.0 Reference manual (the description can be found on page viii of the Preface). A glossary term appears in boldface only the first time it is mentioned.

There are two types of special paragraphs in this document:

0s _— Paragraphs marked with a pointing finger explain design decisions or contain a more in depth explanation for a point discussed in the text.

ie Paragraphs marked with a stop sign raises an issue that has not been resolved. The Authors would appreciate extra thought