Path: utzoo!attcan!uunet!lll-winken!lll-lcc!ames!pasteur!ucbvax!decwrl!labrea!sri-unix!garth!smryan From: smryan@garth.UUCP (Steven Ryan) Newsgroups: comp.software-eng Subject: Re: Paradigms for source control Summary: CDC Update and Modify. Message-ID: <664@garth.UUCP> Date: 19 May 88 02:32:11 GMT References: <5291@cup.portal.com> <2846@mmintl.UUCP> <5504@cup.portal.com> Reply-To: smryan@garth.UUCP (S M Ryan) Organization: INTERGRAPH (APD) -- Palo Alto, CA Lines: 51 Posted: Wed May 18 19:32:11 1988 Gee, I never thought anybody outside of CDC knew of MODIFY (NOS), UPDATE (NOS/BE, NOS, VSOS), and now SCU (NOS/VE). All of the source code is stored in what is called a program (or source) library (called the PL). The program library is divided into decks (as in punched cards) which are divided into individual lines. A deck can be module, data structure, or whatever conceptual chunk you wish to use. Each deck has a unique name. MODIFY maintains last modification date for each deck. A line is a line of source text, an identifier, and a modification history. UPDATE line identifiers are unique across the PL. MODIFY identifiers are only unique within the deck. Lines in the original deck have identifiers like deckname.1, deckname.2, ... Lines subsequently inserted have identifiers like id.1, id.2, ... A line can be deactivated (deleted), activated, deactivated, et cetera, an arbritrary number of times as the result of a series idents (changes). The modification history attached to each line refers to successive activations/deactivations and which ident did it. Only lines which are currently activated are listed. All the deleted lines are still there, though, which is useful in the whoops! mode of programming. Once a group of idents is permanently added to the PL and the system built, if you discover, whoops! ident F7B022 just broke the entire vectoriser, you just do a *YANK F7B022 to magically erase F7B022 from the system. Actually, it goes through the modification history and adds an activation to lines deleted by F7B022 and deactivation to lines inserted. As long as subsequent idents do not refer to the same lines, in principle, F7B022 can be *YANKed and *UNYANKed as many times as necessary to get it right. Programmers have to handcode the changes line by line, not very pleasant, unless SCOOP is working. But having all the line changes in an ident has the advantage of making the changes very visible, simplifying the code reviews. Idents contain both editting commands and comments which have the programmers name, other identification, and explanation of the change and its reason all in one bundle. Far from making collisions in the source more burdensome, it usually makes them less so. Two separate programmers can modify the same deck without error as long as they modify distinct lines. Generally safe. The project leader is suppose to review all idents for interferences but this includes interferences which might be on separate decks. All idents for a PL are collected and applied in mass for each build cycle. At this point, if two idents affect the same line, MODIFY/UPDATE squeals loudly, and the project adjusts for the unexpected overlap. This does happen, but usually like once a year and takes a five-minute change. Hafa an godne daege. sm ryan ps. Control Data/ETA has no access to this network that I know of. For this reason, you may never get response from CDC on this or any other subject.