PVDE5

VDE
Guide to Using
VDE



 p
PreviousZ Contents\ Index



mUse the SHOW REPLACEMENT command (see Section 2.9) to display the Cstatus of a replacement being reviewed. For each replacement, this Gcommand can list the reviewers and whether each reviewer has accepted, *rejected, or not reviewed the replacement.


G

Chapter 5
Project Leader Operations




EThis chapter explains how to perform those source control operations Hnormally performed by release project leaders and by maintainers of the ;various VDE libraries. These operations include performing Equeued replacements, inserting generations into development streams, Dremoving generations from streams, deleting generations, specifying >reviewers for streams and modules, and creating build streams.

EThese operations are typically not performed by most developers. All 6commands here require VSC privileges. Many of the Hcommands documented in this section can have serious adverse effects on a VDE library.a

5.1 Performing Queued Replacements



FIf you are the project leader for a given development stream, you are Gresponsible for performing all replacements queued for that stream. To ?see what replacements are queued for your stream, use the SHOW qREPLACEMENT command (see Section 2.9) with the /STREAM qualifier. The G/STREAM qualifier selects those replacements that are for your stream. FYou might also want to use the /FULL qualifier to display the list of Greviewers for each replacement and their votes to accept or reject it. FHowever, even the brief SHOW REPLACEMENT output summarizes the review Dstatus of a replacement. You should also use the REVIEW REPLACEMENT Dcommand to read the queuing user's information file since that file %might have information meant for you.

FBased on the advice of the reviewers and your own judgement, you must Gdecide whether to perform each such replacement. Once you have decided Bto perform a given replacement, you do so by entering the PERFORM !REPLACEMENT command. For example:

 

"
.VSC„ PERFORM REPLACEMENT SMITH-1 /STREAM=BIRCH


>This command performs the queued replacement specified by the Greplacement name parameter (SMITH--1). This replacement must belong to Fstream BIRCH. All modules included in the replacement are copied from @the source control system's staging area to the appropriate CMS Hlibraries. The new module generations are inserted into the development Fstream for which the replacement was queued and all successor streams Ereachable through change propagation. The queued replacement and the Bassociated module reservations are then deleted from the database.

DThe PERFORM REPLACEMENT command accepts a list of replacement names Gseparated by commas, and you can use the asterisk (*) and percent sign F(%) wildcard characters in the names. The command performs all queued @replacements that match the wildcard patterns and belong to the specified stream or streams.

EThe /STREAM qualifier specifies that replacement should be performed Gonly if they belong to a specified stream. The stream name can contain 4wildcard characters, in which case VSC performs all Ereplacements that match both the specified replacement names and the >specified stream name. If you omit the /STREAM qualifier, VSC Gperforms only those specified replacements that belong to your default stream.

GSince the PERFORM REPLACEMENT command can be time-consuming, you might Ewant to include it in a DCL command file that you run as a batch job.

GThe log messages that the command prints indicate that each module has Dbeen replaced into the appropriate streams. If a module is replaced Binto multiple streams due to change propagation, you will see one ;message per stream. Other messages tell you if VSC created ;fold records. VSC also prints an informational message for Eeach replacement that matches the specified replacement names but is ?not performed because it does not belong to a requested stream.

GIn some unusual circumstances, you might also see a message that tells Hyou that a module generation did not get the same generation expression <(such as 5A1) as VSC expected when the module was reserved. DIn this case, you should notify the developer since he or she might ?have used the expected generation expression as an audit trail identifier in code comments.

=VSC also includes all log messages in a mail message that it Fsends to the developer who queued the reservation. The developer will Htherefore see what happened during the replacement and will be aware of Dany errors that arose. If errors occurred, you should work with the Edeveloper to resolve the errors so that replacement can be performed again.

;The PERFORM REPLACEMENT requires the VSC privilege PERFREP.

tTable 5-1 lists the qualifiers for the PERFORM REPLACEMENT command "and describes their functions.

{                      
Table 5-1 Qualifiers to the PERFORM REPLACEMENT command
 /CONFIRM
! /NOCONFIRM
  N /CONFIRM asks you to confirm that you want each replacement performed. O This qualifier is particularly useful if you use wildcard characters in J the replacement name. /NOCONFIRM performs each replacement without : asking for confirmation. /NOCONFIRM is the default.
 /LOG
 /NOLOG
  H Specify whether informational log messages are printed after the M replacement is performed. /LOG causes such messages to be printed and 3 /NOLOG suppresses them. /LOG is the default.
* /STREAM=stream-name
  M Specifies that only those replacements that belong to certain streams  be performed. TheF stream-name parameter specifies a stream name, I possibly containing the asterisk (*) and percent sign (%) wildcard > characters. VSC performs a given replacement only if it 0 belongs to a stream whose name matches theJ stream-name parameter. If you omit this qualifier, ? VSC performs only those replacements that belong to your  default stream.L

For each replacement that matches a replacement name parameter but . does not belong to a stream matching the< stream-name parameter, VSC prints an J informational message saying that the replacement was not performed.



>Examples


FThis is an example of the output from the PERFORM REPLACEMENT command:

 

"
VSC„ SET STREAM PHONEIX VSC„ PERFORM REPLACEMENT SMITH-1L%VDE-I-REPLACED, generation [FACIL]FOO.MAR;6(6) replaced into stream PHOENIXM%VDE-I-REPLACED, generation [RMS]FUMBLE.B32;2(2) replaced into stream PHOENIX-%VDE-I-REPPERF, replacement SMITH-1 performed>%VDE-I-COMMIT, database transaction has successfully committedVSC„


R

5.2 Inserting Generations



BIn addition to providing automatic change propagation, the source Fcontrol system gives you a manual way to insert a change already made Eto one development stream into another stream. The INSERT GENERATION Acommand makes an existing generation of a module into the latest Fgeneration for a specified development stream. This command is mainly @used to take bug fixes and other changes that have already been Hreplaced into some development stream and insert them into a base level Dor variant stream that needs those changes to build correctly. This :command requires the VSC privilege PERFREP. The following 7example shows how to use the INSERT GENERATION command:

 

"
EVSC„ INSERT GENERATION [FACIL]MOD.TYP/STREAM=PHOENIX P-BUILD "remark"


GThis example inserts the latest generation of module [FACIL]MOD.TYP in Gstream PHOENIX into stream P--BUILD. PHOENIX is thus the source stream Gand P--BUILD is the destination stream for the generation. The command Ealso inserts that generation into the corresponding CMS class if the Fdestination stream maintains a CMS class. The quoted remark string is Goptional; if specified, it should explain the reason for inserting the generation into the stream.

FYou can specify a generation number for the source stream if you want Dto select a generation other than the latest one. Zero and negative @generation numbers are allowed; they specify generation numbers Frelative to the latest generation for the source stream. You can also @use the qualifier /GENERATION=gen-expr to identify the ,generation by its CMS generation expression.

FIf you omit both the /STREAM qualifier and the /GENERATION qualifier, &VSC prompts you for the source stream.

HThe inserted generation's position in the source stream is not affected Gby this command. In the previous example, the selected generation thus Hwinds up being the latest generation for both stream PHOENIX and stream P--BUILD.

qTable 5-2 lists the qualifiers for the INSERT GENERATION command "and describes their functions.

x                             
Table 5-2 Qualifiers to the INSERT GENERATION command
 /CONFIRM
! /NOCONFIRM
  K /CONFIRM asks you to confirm that you want each generation inserted M into the specified destination stream. This qualifier is particularly L useful if you use wildcard characters in the module name. /NOCONFIRM N inserts each generation without asking for confirmation. /NOCONFIRM is  the default.
+ /GENERATION=gen-expr
  H Specifies that the module generation that has the CMS generation  expression given by theI gen-expr parameter be inserted into the specified L destination stream. If this qualifier is omitted, the command selects I for insertion the generation given by the generation number on the N module-name parameter. If both this qualifier and the generation number N are omitted, the command selects the latest generation of the module in : the stream you specified with the /STREAM qualifier.
 /LOG
 /NOLOG
  H Specify whether informational log messages are printed after the M generations are inserted. /LOG causes such messages to be printed and 3 /NOLOG suppresses them. /LOG is the default.
* /STREAM=stream-name
  O Specifies that the generation should be selected from the source stream  given by theM stream-name parameter. This qualifier thus determines E the interpretation of the generation number on the module-name F parameter. This qualifier is ignored if you use the /GENERATION N qualifier to select the module generation. If you omit both the /STREAM C qualifier and the /GENERATION qualifier, VSC prompts you for  the source stream.
Q

5.3 Removing Generations



>Sometimes it is necessary to remove a generation from a given Hdevelopment stream so that the module no longer has a latest generation Cin that stream. For example, sometimes one needs to undo an INSERT HGENERATION command directed to the wrong stream. After you have removed 8a module generation from a stream, the module no longer A"belongs" to that stream and can no longer be fetched, Areserved, or built for the stream. The REMOVE GENERATION command 0removes a generation from a stream. For example:

 

"
0VSC„ REMOVE GENERATION [FACIL]MOD.TYP/STREAM=FOO


@This example removes the latest generation of module MOD.TYP in Hfacility FACIL from stream FOO. Afterwards, no generation of MOD.TYP is Ethe latest generation of the module for stream FOO; the module is no "longer represented in that stream.

>The removed generation remains in the VDE library, and it can Hstill be the latest generation of the module for some other stream. The BREMOVE GENERATION command thus breaks the association between the Cmodule generation and the specified stream but does not delete the generation.

GThe REMOVE GENERATION command accepts a list of module names separated Aby commas, and you can use the asterisk (*) and percent sign (%) Cwildcard characters in the module names. The latest generations of Dthose modules that match the wildcard patterns are removed from the specified stream.

GKeep in mind that the REMOVE GENERATION command may not be the command Gyou actually want to use. It is not very common that you want a module Hto not belong to a given stream at all; it is much more common that you Ewant some other generation of the module to be the latest generation Bfor the stream. Before you use the REMOVE GENERATION command, you Eshould thus make sure that INSERT GENERATION or DELETE GENERATION is not the appropriate command.

9The REMOVE GENERATION command requires the VSC privilege PERFREP.

qTable 5-3 lists the qualifiers for the REMOVE GENERATION command "and describes their functions.

x                      
Table 5-3 Qualifiers to the REMOVE GENERATION command
 /CONFIRM
! /NOCONFIRM
  O /CONFIRM asks you to confirm that you want each generation removed from N the specified stream. This qualifier is particularly useful if you use H wildcard characters in the module names. /NOCONFIRM removes each M generation without asking for confirmation. /NOCONFIRM is the default.
 /LOG
 /NOLOG
  H Specify whether informational log messages are printed after the L generations are removed. /LOG causes such messages to be printed and 3 /NOLOG suppresses them. /LOG is the default.
* /STREAM=stream-name
  M Specifies that the latest generations of the specified modules should . be removed from the stream given by theL stream-name parameter. If this qualifier is omitted, * VSC prompts you for the stream name.
Q

5.4 Deleting Generations



FWhen it is necessary to undo a change to a module, you can delete the Flatest generation of the module in a specified stream with the DELETE <GENERATION command. This command requires the VSC privilege FPERFREP. The following example shows how to use the DELETE GENERATION command:

 

"
0VSC„ DELETE GENERATION [FACIL]MOD.TYP/STREAM=FOO


EThis example deletes the most recent generation of module MOD.TYP in Efacility FACIL from stream FOO. The previous generation then becomes Dthe latest generation for that stream. The command also inserts the Hprevious generation into the CMS class that corresponds to that stream. DThe deleted generation remains in the CMS library until it has been ,deleted from all streams that it belongs to.

GThe DELETE GENERATION command can only delete the latest generation in Ca stream; it cannot delete generations in the middle of a stream's Ggeneration chain. The purpose of the command is only to allow a recent Gbad replacement to be undone when that is necessary. Usually, however, Gdevelopers should fix bad replacements by reserving the module, fixing it, and replacing it again.

GThe DELETE GENERATION command accepts a list of module names separated Aby commas, and you can use the asterisk (*) and percent sign (%) Cwildcard characters in the module names. The latest generations of Dthose modules that match the wildcard patterns are deleted from the VDE library.

qTable 5-4 lists the qualifiers for the DELETE GENERATION command "and describes their functions.

x                      
Table 5-4 Qualifiers to the DELETE GENERATION command
 /CONFIRM
! /NOCONFIRM
  O /CONFIRM asks you to confirm that you want each generation deleted from N the specified stream. This qualifier is particularly useful if you use H wildcard characters in the module names. /NOCONFIRM deletes each M generation without asking for confirmation. /NOCONFIRM is the default.
 /LOG
 /NOLOG
  H Specify whether informational log messages are printed after the L generations are deleted. /LOG causes such messages to be printed and 3 /NOLOG suppresses them. /LOG is the default.
* /STREAM=stream-name
  M Specifies that the latest generations of the specified modules should . be deleted from the stream given by theL stream-name parameter. If this qualifier is omitted, * VSC prompts you for the stream name.
`

5.5 Marking Module Generations Obsolete



CWhen a module has become obsolete, it can be marked as such in the ;VSC database using the MODIFY GENERATION/OBSOLETE command. FThis command will prevent further propogation of the specified module Finto any successor streams. The following sequence shows the commands 7typically used to mark a module generation as obsolete:

 

"
+VSC„ MODIFY MODULE/NOLOG [TAPE]DEVDRV.MAR -'_VSC„  /REMARK="Old tape device driver")VSC„ MODIFY GENERATION [TAPE]DEVDRV.MAR -_VSC„  /NOLOG /OBSOLETE


m

5.6 Specifying Reviewer and Notification Lists



9VSC allows you to specify that certain developers should Greview or be notified of all changes to certain streams or modules. To Dspecify that a certain developer should review all changes replaced Cinto a certain stream, use the /REVIEWER qualifier with the MODIFY STREAM command. For example:

 

"
0VSC„ MODIFY STREAM BIRCH /REVIEWER=(SMITH,SNURD)


<This example causes VSC to record that developers SMITH and ASNURD should review all code changes replaced into stream BIRCH. 6VSC appends these developers to the module's existing Greviewer list. Thereafter, the REPLACE command sends mail notification Fto SMITH and SNURD each time a developer replaces modules into stream GBIRCH, and SMITH and SNURD are automatically recorded as reviewers for Deach such replacement. They are thus able to accept or reject these Greplacements with the ACCEPT and REJECT REPLACEMENT commands. The user Hreplacing modules into the stream can also specify additional reviewers Cwith the /REVIEWER qualifier to the REPLACE command, but he or she 3cannot omit the automatic reviewers for the stream.

FTo remove reviewers from a stream's reviewer list, you should use the @/NOREVIEWER qualifier to the MODIFY STREAM command. For example:

 

"
*VSC„ MODIFY STREAM BIRCH /NOREVIEWER=SNURD


GThis example removes developer SNURD from the reviewer list for stream BBIRCH. If you specify the /NOREVIEWER qualifier without user name 5parameters, VSC removes all reviewers for the stream.

>VSC also allows you to specify that certain developers should Ereview all changes to a given module. The /REVIEWER qualifier to the AMODIFY MODULE command attaches reviewers to modules. For example:

 

"
3VSC„ MODIFY MODULE [BAD]BADMAIN.B32 /REVIEWER=BROWN


=This example causes VSC to make developer BROWN an automatic Ereviewer for all replacements of module BADMAIN.B32 in facility BAD, Hregardless of stream. The /NOREVIEWER qualifier removes reviewers for a module.

EIn addition to specifying reviewers for streams and modules, you can Especify that certain developers be notified of all replacements to a 9certain stream or of a certain module. VSC automatically Gnotifies such developers of replacements for the stream or module, but Gdoes not add them to the reviewer lists. They can therefore not accept Hor reject the replacements. This example shows how to add user BROWN to ;the list of users to notify of all changes to stream BIRCH:

 

"
&VSC„ MODIFY STREAM BIRCH /NOTIFY=BROWN




GEach parameter to the /NOTIFY qualifier can specify the user name of a 8OpenVMS developer already recorded in the VSC database, @an OpenVMS mail address containing one or more node names (such Gas NODE::SMITH), or a logical name bound to a list of users to notify. GIf you specify a logical name, keep in mind that the logical name must Fbe defined both when you specify it and when it is later used to send Hthe notification messages. The logical should thus be a group or system 8logical name, or a mail forwarding alias in the OpenVMS VMSMAIL.DATA database.

GSimilarly, the following example shows how to specify that users SMITH @and SNURD be notified of all changes to module [BAD]BADMAIN.B32:

 

"
9VSC„ MODIFY MODULE [BAD]BADMAIN.B32 /NOTIFY=(SMITH,SNURD)




BTo remove users from a stream's reviewer list, you should use the >/NONOTIFY qualifier to the MODIFY STREAM command. For example:

 

"
(VSC„ MODIFY STREAM BIRCH /NONOTIFY=BROWN


DThis example removes developer BROWN from the notification list for =stream BIRCH. If you specify the /NONOTIFY qualifier without ;parameters, VSC deletes the entire notification list. This >qualifier is used the same way with the MODIFY MODULE command.

>The MODIFY STREAM command requires the VSC privilege CRESTRM; MODIFY MODULE requires CREMOD.




 p
PreviousW NextZ Contents\ Index