DFFilesdocumentationReleaseas[Indigo]Documentation>DFFiles.tiogaLasteditedDougWyattonJuly1,1983AbstractThisdocumentationdescribesthesoftwarethathandlesDFfiles.OfparticularinterestaretheprogramsBringOver,SModelandVerifyDF.TableofContentsIntroduction2SimpleDFFileFormat2IndividualCommandsBringOver3SModel7VerifyDF11DFDisk12RemoteDeleteAll12ReleaseTool13OtherInformation13CedarReleaseProcedures13CompleteSyntaxDescriptionofDFFiles17SemanticsofDFFiles17XEROXXeroxCorporationPaloAltoResearchCenter3333CoyoteHillRoadPaloAlto,California94304DRAFTForInternalXeroxUseOnlyDRAFTp ^{ q YorY-q V6 rV6 q RrR %]'-0{58;= DC Q@   "m%Zs Kwt H( u>H(t EUu>Et C2 Q @u6@t ><u6><t ;u6;t 9Fu69Ft 6u66t 4P u64Pt 1 u=1t /Z u=/Zt ,  #-u=,t *d%iu=*dv "Cr!-"C%p !- $'.9!-$),^!-M$' .w WCY ',014.CTVm$"$' .w CY ',014.`TVm$:DFFiles2IntroductionTheprogramsdescribedbelowcompriseageneralpackageforfilemanagementwithexplicitversioncontrol.EachprogramtakessomenumberofDFfiles,whicharelistsoffilenames,oneperline,specifyingaremotehostanddirectorywherethefileisnormallystored,followedbythefile'screationdate.(Incertainsituationssomeofthisinformationcanbeomitted.)TheDFfilessystemwasinitiallyusedbypeoplerunningMesaonpublicDoradoswhowantedtoguaranteetheyhadthecorrectversionoffilestheyneededandasaneasywaytosavechangedversionsoffilewithoutunnecessarycopying.ItisnowbeingusedtopartiallyautomatetheCedarandMesagroupreleaseprocessaswell.EricSchmidtwasprimarilyresponsiblefortheprogramsandtheinitialversionsofthisdocumentation.Ofthecommandsdescribedinthisdocument,thesethreearemostheavilyused:BringOver-willinsurethatthefileslistedinaDFfileareretrievedfromtheirremotefileservers,possiblyoverwritingdifferentversionsalreadyonthelocaldisk.SModel-onceBringOverhasbeenrunandafewfileshavebeenchanged(possiblybyeditingthem),SModelwillstorethenewestversionsontheremotefileserversandproduceanewDFfilecontainingreferencestothenewestversions.VerifyDfisappliedtoaCedar.BcdfileandaDFfileandverifiesthatallfilesneededtore-buildthat.BcdarelistedintheDF.Thisdocumentisintendedasthedefinitivedocumentationforthecommandsandproceduresdescribedhere.ThedocumentandthesoftwarewerewrittenbyEricSchmidt;subsequentupdateshavebeenmadebyRussAtkinsonandDougWyatt.Youmightalsoread"CedarReleases:PoliciesandProcedures"byRoyLevin,storedon[Indigo]Documentation>ReleaseProcedures.Pressand.Bravo,forinformationonuseofDFfilesintheCedarreleaseprocess.SimpleDFFileFormatAsimpleDFfileiscomposedofsomecontrollinesandlinesoftheform:Directory[host]Forexample,Directory[Indigo]Cedar>pl.mesa!132-Oct-8015:43:09PDTspecifiesaspecificversionnumberforthefileserver,andalsoliststhefile'screate-date.NotethatafilecannothavethenameDirectory,andupper-andlower-casedifferencesareignored.BlanklinesareOKandlinesaretreatedascommentsiftheybeginwith"//"or"--".TheformatofDFfilesissimilartothatproducedbytheLocal-ListorRemote-Listsub-commandsintheFileTool.YoumaymakeitalmostidenticalbysettingtheoptionsintheFileToolsothatonlythefilenameandfilecreatedatesarelisted.ExampleDFFile:Anexamplefilemightbenamed"Poplar.DF"andcontain:--FilePoplar.DF,created5-Oct-8019:48:32Directory[Indigo]Cedar>poplar.bcd!163-Oct-8013:26:28x&grHDgs ^ t [ #t#$)/Z14L <?D Y^ &D(5*.w25I8D:5 @CF XX nV\!&(*,v2R6<>@DM V  N " *3,. T5 l#%A)/]3;5v9?BG R3?N!#U&?)K.02m4Z7Z:-;>DC P Is 1!t# $'+.06B<^>CE O? s/ %(I.U 57:N@pC5E M8 K ]Bm&* -/3D8y HtKHKH P#?&(),U.16:H=B:D F B$4)+ -m0y DtDD`#&A)!*t-=0S37H<BD B4;#!(m*s,1y38s;*@ADG% A1 g "}y >tR>>s"%j(+)_+.f1'58:=BDL =|L : rE $ .'0d29<^ Cd 8*'"&)+- 026? =BF2 7D x 4 V%+. 7e:=BG 3"4,n/.36- =?BLDF 1{  s .,fXt * yh=n"&),/13x (bt(b9(b #'*u1z % x #lt#l9#l-28E {",$' +.g1J4!69 AEHe I Uwx7IJItI I#o'* 1P 8L:  q)o# $+G,/369; S ]%6 #d)+. 46o >a G  Q"o(*.r057o9?rA<DG/  U68y t  ?!  &)ky % "x t 9 o . 4 ]TVm$"x t 9 o . 4 TVm$DFFiles3checkpoint.bcd!324-Sep-8011:14:26AFiles.bcd!52-Oct-8017:17:32overviewdefs.bcd!62-Oct-8017:16:16coredefs.bcd!72-Oct-8017:16:20filepageusedefs.bcd!52-Oct-8017:17:28filepageusedefs.mesa!126-Oct-7912:45:39filesystemdefs.bcd!52-Oct-8017:17:31filesystemdefs.mesa!122-Oct-7913:21:59BringOverIfthenameofyourfileis"Poplar.DF",youtypeBringOverPoplar.DFtotheExecutive.BringOverworksasfollows:ItreadstheDFfileonelineatatime.Ittakestheremotefilename,stripsoffthedirectoryinformationandlookstoseeifitisonthelocaldisk.Oneofthreethingscanhappen:(1)Ifthefileisnotonthelocaldisk,BringOverwilltrytoretrieveit.(2)Ifthefileisonthelocaldisk,BringOverlooksattheversiononthelocaldisk.Ifthecreate-dateonthelocalfilediffersfromthethecreatedatelistedintheDFfile,BringOverwilltrytoretrievetheremoteversion.(3)Ifthecreate-dateisomittedfromtheDFfile,BringOverwillALWAYStrytoretrievethefile.IfyouomittheIFSversionnumber(e.g."!3"),BringOverwillenumeratealltheversionsofthatparticularfilelookingforonewiththecorrectcreatetime.IftherearenoversionsofthefileyoulistintheDFfileontheremotehostinthedirectoryyouspecify,BringOverwillgiveyouawarningmessage.Iftherearefileswiththesamenameandnoneofthecreate-datesavaliablematchthatlistedintheDFfile,BringOverwillgiveyouawarningandoffertoretrievethelatestversion.AfterrunningBringOveryoucanbesurethefileslistedintheDFfileareonyourlocaldisk,andthattheircreate-datesagreewiththecreatedateslistedintheDFfile,orBringOverwillhaveprintedouterrormessages.NormallyBringOverwilllisteachfiletoberetrievedandwillaskforconfirmation.(Youmayreply"y"orCRtoconfirm,"n"toskipretrievalofthisfile,"q"toquittheBringOverprogramaltogether,and"a"toretrievethisfileandtransfersubsequentfileswithoutfurtherconfirmation.)BringOverwilltransferallthefileswithoutconfirmationifyouprovidethe/aswitch:BringOver.~/aPoplar.DFBringOvercanreadaremoteDFfileaseasilyasalocalone:BringOver.~[Indigo]Poplar.DFreadsPoplar.DFfromtheremotefileserverasspecified.(Ifthehostfilesystemis"Indigo",the"[Indigo]"canbeomitted.)Asfilesarebroughtover,aproperty(calledtheRemoteFileNameproperty)isaddedtotheirleaderpagerecordingwheretheremotecopycanbefound.ThesepropertiescanbeprintedoutbytheDFDiskprogram(seebelow.)x&grHDgto_/.q_/4o\ .\4oZ8.Z84oW .W4oUA.UA4oR.qR4oPJ.PJ4oM.qM4s Jt G0 n FV "%u Dt B:  ?)0 #%'*-1./35%8:?AE > q< q"#%'W(* , .e15a8_:=AD+ ;W f #*-V/}1,6+ 9 6:/ '+,.357;(>@CB 7y\ #@'C*I-/247R> @BD 5  3VW  5#%(+H2z43V53Vt:3V:p3V<)=BE7 0 "'%i)03j:n<?=DF /3 ."6&*.046~8=?BDGQ - _^ "k$+-39<?BDB +(= #'P* -/@1 9*>CE *=  F"N#w(+{.057;y ' ? #&"),.s03e58):3=r@DF & I D"\%)+~-03k5E<>B/G $s ^ ! W! "$*J,/14" = @C}F P W^"$N&),.C153:h@ F  >+!l (+116 ?F F4@ #e$'|,.0u  Tt  /Is!"&(5)_,u  t  h"&( /247:x?.@G/ l x  #R m$y'+() t12790=K>B.FH J0b !#(, 36*85=#?ADB {HTVm$DFFiles4Commentsmaybeindicatedbylinesbeginningwith//or--,asinthePoplar.DFexampleabove.Inaddition,BringOverwillprintcommentsattheendofthefileafterthelastlinelistingfileswhenitisrun.Thiswaydistributorsofsoftwarecanprintoutusefulreminderstotheirusers.InsteadofgivingcreatedatesIfthecreatedateentryisa"~="ratherthananormaldate,BringOverwillretrievethefileonlyiftheversionontheremoteserverisdifferentthantheversiononthelocaldisk.Ifthefileisnotonthelocaldisk,itwillberetrieved.Forexample,Foo.Mesa~=Ifthecreatedateentryisa">"ratherthananormaldate,BringOverwillretrievethefileonlyiftheversionontheremoteserverisnewer(ormorerecent)thantheversiononthelocaldisk.Ifthefileisnotonthelocaldisk,itwillberetrieved.Forexample,Foo.Mesa>willretrievefromtheremoteserveronlyifthereisanewerversionontheremoteserver.IndirectUseofOtherDFFilesTherearetwocommon,distinctusesofoneormoreDFfilesbyanother.Thefirstissyntacticinclusion,similartomacro-expansion,whereaDFfilereferencesanotherandallprogramstreattheseDFfilesasiftheywereasingleDFfilewiththetextoftheinnerDFfilesubstitutedintheouteroneatthepointofreference.Theseconduseisasan"Importer"ofanothersystem,package,orsetoffilescontrolledbysomeoneelse.ByanalogywiththeseconceptsinMesa,thereareExportsaswell.TheDFfilesyntaxallowsbothformsofuse,whichareindicatedbydifferentkeywordsbeforethenameanddateofthenestedDFfile.SyntacticInclusionAlineoftheformInclude[host]file.DFOfwillcauseBringOvertoinvokeitselfonfile.DFatthepointitencounterstheIncludestatement.IftheincludedfileitselfhasanIncludestatement,thenBringOverwillagaininvokeitselfontheinnerDFfile,andsoon,inarecursivefashion.Furthermore,theDFfileisretrievedusingtheusualBringOverrulesbeforetherecursivecall.ExamplesofInclude:Include[Indigo]CompilerSources.DFOf2-Oct-8115:43:09PDTInclude[Indigo]CompilerObjects.DFOf>(TheOfkeywordisoptional,andtheIncludestatementmaybesplitonmultiplelines.)ExportsandImportsDFfilesusersareencouragedtouseasingleDFfileforpackagestheymaintain.Some,butusuallynotall,ofthefilesanimplementorneedsarealsoneededbyusers,orclients,ofthepackage.Filesthatareusefultobothusersandimplementorsaresaidtobeexported.ThesefilesareindicatedbybeinglistedbelowastatementsimilartotheDirectorystatement:Exports[host]x&grHDgt _/!K'*,.02H46p=ABG ]?#P$'c*(+.\0469;@BFH# [ ^xP R!$V'*4.L46q9x Xlmt UB k Z5#@&c',D/6S8=@TBEG/ S"%(,.14M89y;>-?ACFI Q 24$ r Oy+Oy L   !G-"M%&+/58=@BEG/ KV&R!n#'F+/1v6A8L:=ACREH# I ag SUE #& G4+G4 D ] #+$()*.357<x Ai t > !x a" $&Y),V/3169BdDG : M^Q!7#%( +.30 79J;?JACE 9% ! )*/4:\<*>Q@C 7} 5Qf# (*S.U1x417}57}t9Q7}97}: 5 7 "%l)n+139'?9C|E 3[ ay 0 t , y/Hx *Bt*B*Bx*B*Bt*B S*B ' Q 9 "'j)+g/0` 7Tx9'::'t>'?'EG/ &-xv&&tE&&$'.1"49*p@DQF $x ^bT 't),V.0"59;?F2 ";l U+x Uh Ut= Ux tx(5)Ut*G*/5x _t__x(_)3_t*&_ x =]tP Ux!'!t&&,:/>1/4369;y t F nS ] o!%r'*U,2G5N;?BpG  / <$ .! #W&*,02f68; ADsG; i !$&(y*+(t/047:.@ BE P #Xx P Pt$ P$ Px t 0 TVm$DFFiles5Directory[host]BringOvernormallyexaminesallthefilesinaDFfile(i.e.itassumesyouareanimplementor.)Ifyouareauser,youcangetonlythosemarkedExportsbygivingBringOverthe/pswitch:BringOver/pPoplar.DFUsersoftenneedtospecifythe/pand/aswitches.ThecorrectwaytoinvokeBringOverisBringOver.~/a/pPoplar.DF(Notethespacebeforethe/aandbetween/aand/p.)WhenaDFfileneedstorefertootherDFfilesasauser,itmayhaveanImportsstatementImports[host]file.dfOfwhichcausesBringOverto(1)retrievefile.dftothelocaldiskifnecessaryand(2)examineallfilesmarkedExportsinfile.dfandretrievethemifnecessary.Ofcoursefile.dfmayhaveIncludeorImportsstatements,sothisisarecursivealgorithm.SometimestheExportsfilesaretoofewortoomanyfilesandtheuserofapackagewouldliketolistthefileshe/sheneedsfromtheimportedDFfile.AppendingaUsingclausetotheImportsstatement,analogoustotheoneintheMesalanguage,givestheuserexplicitcontroloverwhichfileshe/sheneeds:Imports[host]Package.DFOfUsing[listoffiles,separatedbycommas](TheOfclausecanbeomitted.)UseoftheUsingclauseisstronglyrecommended,butisnotrequired.ExamplesofImports:Imports[Indigo]Pilot>PilotMesaFriends.DFImports[Indigo]CoPilot>CoPilot.DFOf24-Sep-8111:14:26PDTUsing[CPSwapDefs.Bcd,CPSwap2.Bcd]AswiththeIncludeclause,theImportsstatement(andUsingclause)mayspanmultiplelines.IntheCoPilot.DFexampleabove,CPSwapDefs.BcdandCPSwap2.BcdcanappearanywhereinCoPilot.DF.(ItdoesnotmatterwhethertheyareExportsornotwhenaUsingclauseisusedtoaccessthem.)ThefilesreferredtobyanImportsstatementmaythemselvesbeexportedtothenextouterDFfilebyprecedingthewordImportsbythewordExports.Thisisusefulwhenusersofapackageyoumaintainneedtohavefilesfromsomeotherpackageinorderto(e.g.)compiletheirsystem.Youcanimportandexportthesefilestoassureyouruserswillhavethem.UsingClauseSemanticsSince,ingeneral,CoPilot.DF(intheexampleabove)mayhaveinternalstructure(i.e.itreferencesotherDFfileswithIncludeandImportslists),CPSwapDefs.BcdandCPSwap2.BcdmaybedefinedinsomeoftheDFfilesreferencedbyCoPilot.DF.Toavoidanexplosioninsearchtime,theserestrictionsapplywhenusingUsinglistsonaDFfilewithinternalstructure:x&grHDgto_/]2 ^#%u x \t\9\oZ8]2K"Y Wvsd #%b&)+.8/479; EUF V ? irF`x#V$Vt)V)V+/;58S:Nu St Q U`]X"#*)-14k6:ALu N Tt L& ;@y1$&z)1 I.""P$')w*-/H2L5x7I8ItDF C xC C tC jC i!f$&M -9/H37:x=C >aC tBC CsC xDzC DC t Ad c >x`>G>t>> ]# $'Q+(."03R6X89T>BEGQ =A PB)#&)a0x1=A2=At5=A6P=A9;x==A>l=AtC=AC=A ;MG$'*S-C2 69=@E4x 9t9%9x 9!9t"9#n9xo6te66!$# 4'x =4']4'yP4'4't4';4'D5 1 rx11t1b1K (+],/> //+x//h//tu//x ,t,%,'x *8t*8%*8x'*8)*8t)*8**80d5xo'te'' %A xw%A%AtT%A%Ax%%A%At"9%A"%A(ox+%A,%At/%A00%A4'7+:f? " , ! ,0 9GBE$G SCx,SStASS=x#&S$St'S)"S,=-15x8:;AC  ?"d$&a* +/$4Q7<?BZF ;a!=#'/x  \t e  6 &*u-r05;w>%?u E  mQxbt6xhtR"y -V0 8;=BDLG  ]  #:%s)D+F13A7;> E o xK o^ ot@ o o2 &#A(W TVm$DFFiles6(1)Ausinglistfile(e.g.CPSwapDefs.Bcd)mayberetrievedfromaDFfileincludedbyanimportedDFfile(e.g.includedbyCoPilot.DF).(Inotherwords,includedDFfilesaretreatedasiftheyweremacro-substitutedinlineinthetopDFfile.)(2)AusinglistfilemayberetrievedfromaDFfileimported(withoutaUsinglist)byanimportedDFfile(e.g.,importedwithoutaUsinglistbyCoPilot.DF)aslongasthefileisexportedintheinnerDFfile.(I.e.,importsaresignificantonelevelbelowthetopDFfile,CoPilot.DF.)(3)AusinglistfilemayberetrievedfromaDFfileimportedwithaUsinglistbyanimportedDFfile(e.g.importedwithaUsinglistbyCoPilot.DF)aslongastheusinglistfilebeingretrievedalsoappearsontheinnerusinglist.(I.e.,multiple,nestedUsinglistsmustintersect.)UsefulModesAoption(/v)willrunBringOverinverifymode,whereitwillverifythatthefileslistedintheDFfilearepresentontheremoteservers.(Nofilesareretrievedinthismode.)Ifthefileislistedcorrectlyandalocalcopyexists,BringOverwilladdtheRemoteFileNamepropertytotheleaderpage.NoteforlargeDFfilestheverifyoptiontakesafewminutes.BringOverwillinformtheuseriftherearenewerversionsoffilesontheremotefileservers,andwillmakeanewDFfile(onafilecalled"NewDFFile.DF")listingthenewerversionsoffileslistedintheoriginalDFfile.IfanyfileswerelistedintheDFfilewithouttheirIFSversionnumbers(e.g.!5),BringOverwillmakeanewDFfilewiththoseversionnumbersfilledin(alsoon"NewDFFile.DF").Anoption(/o)willinstructBringOvertoonlyBringOverthefile(s)listedafterthe/o.Forexample,BringOver/ox.mesafiles.dfwillexamineonlythefile"x.mesa"infiles.df,evenifotherfilesshouldbebroughtover.Ifno"."isgiven,BringOverwillappend".Mesa",sothisisequivalenttotheprecedingexample:BringOver/oxfiles.dfMorethanonefilecanbelistedafter/o,inwhichcasethelastDFfileonthecommandlineissearched.FiveoptionsareavailabletoreducethenumberoffilesthatareretrievedwhenBringOverisrun./bcausesBringOvertoretrieveonlythosefilesthatare"derived"fromsourcefiles,i.e.filesthatendin".Bcd",".Signals",".Boot",and".Press"./scausesBringOvertoretrieveonlynon-derivedfiles,i.e.allfilesthatdonotendin".Bcd",".Signals",".Boot",and".Press"./rcausesBringOvertoretrievefilesthatareindirectoriesmarkedReadOnlyintheDFfileandtoretrievefilesthatareimportedfromotherDFfiles./wistheinverseof/r:onlyfilesthatarenotmarkedReadOnlyorimportedareretrieved.Finally,/ucausesBringOvertoretrieveafileifaversionisalreadyonthelocaldiskandtheversionlistedintheDFfilediffersfromtheversiononthelocaldisk.The/foptioncausesBringOvertoignorelocalfileswhenitdecidestoretrieveaversionofafile,thus/f"forcesretrieval"offilesonthelocaldisk.OtherinformationaboutBringOverWhenthefilenameonalineinaDFfileisprecededbyatilde("~"),BringOverwillretrievetheindicatedversionifitisnotpresentonthedisk.Ifthereisalreadyaversiononthedisk,thenitwillnotbeoverwritten,regardlessofitscreatedate.BringOverlistensforControl-DEL.Whentyped,BringOverwillabortitself.BringOvercanhandleDFfileswithfewerthan500files.Shouldyouneedtosupplyaconnectnameandpassword,BringOverwillpromptyouforthem.Whenx&grHDgt _'&(L&)+19458:W?AC ]X %(?+06H8<>tC1DF [ # %(  Y]>X#u&'*g,28x9;Y]:NY]t="Y]=Y]?AC WTO^ x!W"Wt%W&?W(5*L 2>47=9;>?EfG/ VLKU 'A)-21?368;` SGl#&( *-25x7S82St; S;nS=@?3AG Qx@*C FX `l"!$& 179=;?CGR D U2{ "&$*14F8;9>4?C"Ew C qRU#%(2+,/14;679= Ab"$Y&+.136696<@VBDG% ?'| \#&=-%035=8[;=@D >0$* ; ?|(!#&-U/37?:{<?BQu 9t 6 .W> 2!&*1+/O2L68>B1CEH# 4 \F"#&e' .0.28u 2Tt 0 J "$(+n-0+2469A?B7C +  o8 "()),/2+8;BDG *:= "%(+%159w<?(B-EG ( #%)02<7?:\ BE`G & [  $*,349?AF %D  Bx7%D5%Dt"%D"%D$=&)+r./47:a<BE # fI#%(+:-x2#3#t9@#9#;ACq !c-#$=&(,)h.C/4692<?BUD N D.N %u'{)-!  #'(*-/445:<@BCF + L _ l"x  U*t 0 ""%m'-/@038J?.BG/ 3 x"$(*q. /4e5:s<>BJEF ? aR  S #  h$(/f25 I/A. I$':) ^f!$'-47;<$>AEw tTVm$DFFiles7aCRfortheconnectnameandaCRfortheconnectpasswordaretyped,BringOverwillaskifyouwanttouseadifferentloginnameoraborttheprogram.BringOvercanbegivenalistofDFfilesonthecommandline.Itwillbehaveasifeachfilehadbeengivenseparately.BringOvercanbeusedtoretrievefilesthatarenotlistedinDFfilesbyputtingthemonthecommandlineBringOver[Ivy]User.CM!3[Indigo]Lister>Lister.Bcdwillretrievethosetwofiles.Ifafileendsin".DF",BringOverwillretrievethecontentsaswell.IftheversionofafileonthelocaldiskisnewerthantheoneBringOverisretrieving,BringOverwillfirstrenamethelocalversionbyappending"$$"tothefilenameandthenretrievethelocalfile.Ifthefileendsin".Bcd",BringOverdoesnotbothertorenamethefile.SummaryofoptionstoBringOver:/aTransferfileswithoutrequestingconfirmation./bRetrieveonly"derived"files./fRetrievefilestothelocaldiskevenifcreatetimeoflocalcopyagreeswiththecreatetimeoftheremotecopy./oTransferonlythefollowingfiles(extensiondefaultsto".Mesa").ThelastfileinthelististheDFfile./pTransferonlythosefilesmarkedExportsorPublic./rTransferonlythosefilesmarkedReadOnlyorimportedfromotherDFfiles./sTransferonlythosefilesthatarenot"derived"./uTransferonlythosefilesthatarealreadyonthelocaldisk,butthelocalversiondiffersfromtheremoteversion(updatemode)./vVerifymode;NofilesaretransferredbutcheckstheDFfileforaccuracy./wTransferonlythosefilesnotmarkedReadOnlyandnotimportedfromotherDFfiles.SModelTheSModelcommand(SModelstandsfor"SimpleModeller")canbeusedtostorebacknewversionsoffilesyou'vechangedsinceyoulastrantheBringOvercommandtofetchfilesundercontrolofaDFfile.Forexample,ifyourDFfileiscalled"Poplar.DF"andyou'vealreadyrunthe"BringOver"command,thecommandSModelPoplar.DFwillexecuteasfollows:ThefileslistedinPoplar.DFarecheckedonthelocaldisk.IfanyhavedifferentcreatedatesSModelwillstorethemontheremoteserversspecifiedinPoplar.DF.ThenSModelcopiestheDFfiletooneendingin"$"(e.g.Poplar.DF$),andproducesanewPoplar.DFfilewiththenewcreatedatesandremotefilesystemversionnumbers(e.g.!4).IfafileonthelocaldiskislistedwithoutanycreatedateintheDFfile,SModelwillfillinthecreatedatefromtheversiononthelocaldiskandthenstorethefileoutontheremotedirectory.IfthefileislistedintheDFfilefollowedbya">"or"~=",thisfileisignoredandwillnotbetransferred.IftheDFfilecontainsareferencetoitself(e.g.System.DFlists"System.DF"asoneofthefilesyouwant),thenSModelwillalsostoreanewversionoftheDFfileontheremoteserver.SinceSModelhastowriteoutanewDFfilebeforeitcanstoretheDFfile,SModelcannotputtheIFSversionnumber(e.g.!5)ontheDFfilenameinthecaseofself-referencingDFfiles.However,BringOverwillx&grHDgt _/ 0 -"n$'@,q249A@BE]F ] Il<x!<$'; [ 4' J #%'.Q13b6:@C. UCu R)Zt PL 6' <#x%&)0y3$8$:?A M  Jb *#*$(,.y1679| @F L* W $()),9147<?BeEG/ J U? "z&(-x/x G3 B t CCSAM $ AATn @ @ ec" #'?(,/158|<?BVFi>a ~!$"' /a2U6<>Av !u t  h`;!#o*,a1359<>&@C _ o> "$x)-3_5 <@9E`  bI x$"= *-g3[47>y@D+F  x/@$*3-6  w *M$&*-/147T<?=AmC$E  Mjk!$'+-s/2H4I6;E ACeEH# F D.<8b!#(b+-m.369E;=  &!%9(U/2e :<?AYCF $/jkL #(*-/2;4V6;@Dc | c ["$T' *-/28 <?]AD =A(!N"%X(D)3649@-F TVm$DFFiles8alwaysgetthecorrectversionoftheDFfilesinceitwillusethecreate-dateoftheDFfileinstead.SModelwillpausebeforestoringeachfileandaskifitshouldgoahead.Youmayrespondwith"y","n","q",or"a"."y"meansgoaheadandstoreit,"n"meansdonotstorethisfileandkeeprunning,"q"meansdonotstorethisfileandstoprunningimmediately,and"a"islike"y"exceptsubsequentquestionswillnotbeasked,andthe"y"answerwillbeassumed.Youcangivethe"/a"optiononthecommandlinetoSModel,e.g.SModel/aPoplar.DFandallquestionswillautomaticallybeanswered"y".ReadOnlyfilesWhenyoudon'twantanyofthefilesinadirectorytobechangedbySModel,regardlessofanychangesyoumaymake,youcanindicatethefilesinthedirectoryareread-onlybyprecedingtheDirectorykeywordwithReadOnly.Forexample:ReadOnlyDirectory[Indigo]System>indicatesthefileslistedbelowshouldNEVERbestoredbackonSystem>.MaintainingConsistencyItisimportanttorememberthatSModelNEVERenumeratestheremotefilesystem,soSModelmaynotdetectthatcertainfileslistedinaDFfilearenotpresentonremoteservers.AcommonmistakeistoassumethatifyourunSModelonaDFfilesuccessfully,andthensimplychangeaDirectoryintheDFfile,thenallthefileswillbetransferred(again)tothenewdirectory.ThisisWRONG!AfterSModelhasbeenrunthefirsttimethecreatedateslistedintheDFfilewillagreewiththedatesofthefilesonthelocaldisk.SinceSModelchecksthecreatedateslistedintheDFfile,onthesecondinvocationSModelwillnotdetectthatanyfilesneedbetransferredEVENthoughtheDirectoryhasbeenchanged.Toresolvetheseproblems,SModelwilltakea/voption(/vstandsforverify.)Ifgiventhis/voption,SModelwillnotonlyapplythealgorithmdescribedabovetostorefiles,butifitdecidesafiledoesnotneedtobestored,itwilllookontheremotefileserverandcheckthatinfactthefiledoesnotneedtobestored.Ifthefileisnotontheremotedirectory,ortheversionlistedintheDFfileisnotontheremotedirectory,thenSModelwillstorethefile.InthiswaySModel/vwilltrytoforcetheremotedirectorytoagreewiththeDFfile.IncludeandImportsSModelwillinvokeitselfrecursivelyonDFfilesthatarespecifiedinIncludestatements(andnon-ReadOnlyDFfilesprecededby@.)SModelwillNOTinvokeitselfonDFfileslistedinImportsstatements(oronDFfileslistedinReadOnlydirectoriesprecededby@.)IftheIncludeorImportsstatementisnotfollowedbyanOfclause,SModelwillinsertsuchaclauseinitsoutputDFfilewithreplacedbythecreatedateofthefileonthelocaldisk.PreReleaseOptionIfthe/poptionisgiven,SModelwillstoreallfileslistedintheDFfileonaPreReleasedirectory.ThenameofthePreReleasedirectoryisformedbyinserting"Pre"infrontofthedirectoryspecifiedintheReleaseAsclause.If(anyof)thenormalworkingdirectoriesintheDFfiledonotmatchthecorrespondingPreReleasedirectories,thecopyoftheDFfileonthelocaldiskisnotrewrittenbySModel/p.Ifthex&grHDgt _/QS  k"%`(*),/I1 8:^<?HA \%&"$x'<)+,1 37;>+CzF [  ; "$(=),025s8;|=@D Ye I!$")m 14|78;Y>Bf W%G `"'*B,4258?;.=@E(G/ VM6u St Q  S !'x MXt J ,| "#)z+-2d4T9 @!ADb H ?%:!$&)O/O18):S@xCfHDzHt G4xG4G4tG4dG4x DtBDD B={!B=!B=t%cB=&*B='T+w.0 x >  t ; ^  \%z#L;$4;t';(P;.1H58N=>DG 9 P=!J#&(|-P/V3 7} s3!#n&J).W0147 >AE 5x55t5!5_.!#&0)+- 49:=? Fu 4.z l4. 4.t 4.4.k5 #Q%(+._2v69;> @C&E 2 dT!%a).A259<@8ADCF 0 O !q"A$) +.15U7j z>0?C0tB60B0Gx /8t/8/8 , L"%&(,/\35;<@PBD +9S~#)-/26=8:;v@VACG )n Mr{!%(,..257R:BDG '   $ +,/D479<>ABEG/ &  ^ #&)l+O.06/8':=!>BtD $xl0x !)it c "%2(/+.17x9:gt?2?F^ 3x 3 3t,3L3 $5)tz,23-3t/)3/337&9@;>BxD\3D3t  tb x t&&& ,24  x txMtx ?!$M*,x.!/Ay0J0t45L98>zA<EHe i"t'),T0V3[57t9;>CAx  t  i t{!H$&)r-.1368y9(:t@@F $ p  )%',02G57~9?E|G/x }t[ } }YKV""'Q -/]13698:d>a@  p!$&)+l.13$5;=BEG/ XTVm$DFFiles9workingdirectoriesmatchthePreReleasedirectories,then/pisequivalentto/v.Forexample,considerFoo.df,shownbelow:--Foo.dfExports[Ivy]Release>ReleaseAs[Indigo]Top>Foo.df1-Jul-8311:49:33PDTExports[Ivy]Defs>ReleaseAs[Indigo]Foo>Foo.bcd!21-Jul-8311:44:10PDTFoo.mesa!21-Jul-8311:43:20PDTDirectory[Ivy]Impl>ReleaseAs[Indigo]Foo>FooImpl.bcd!51-Jul-8311:47:46PDTFooImpl.mesa!51-Jul-8311:46:16PDTExecutingSModel/pFoo.dfwillcreatethefollowingnewDFfile:--Foo.dfExports[Indigo]Top>ReleaseAs[Indigo]Top>Foo.df1-Jul-8315:41:11PDTExports[Indigo]Foo>ReleaseAs[Indigo]Foo>Foo.bcd!11-Jul-8311:44:10PDTFoo.mesa!11-Jul-8311:43:20PDTDirectory[Indigo]Foo>ReleaseAs[Indigo]Foo>FooImpl.bcd!11-Jul-8311:47:46PDTFooImpl.mesa!11-Jul-8311:46:16PDTandstoreitandtherestofthefileson[Indigo].However,theversionofFoo.dfonthelocaldiskwillnotbechanged.OtherOptions1.The"/n"optioninstructsSModeltodoeverythingitwouldnormallydoBUTitnevertransfersanyfiles.Forexample,SModel/nPoplar.DF2.Ifyougivethe"/s"optiontoSModel,itwillstoreontotheremoteserver(s)allthefilesyou'velistedintheDFfile,exceptthosemarkedReadOnly,whetherornotlocalcreatedatesmatchtheonesintheDFfile.Forexample,SModel/sPoplar.DF3.Ifthe/roptionisgiven,thenSModelwillstorefilesitdecidesshouldbestoredbytheabovealgorithmevenifthedirectorytheyarestoredontoinmarkedReadOnly.GettingStartedwithSModelNewusersareoftenconfusedabouttherelationshipoftheentriesinaDFfiletothelocalandremotedirectories,andwhatSModelwilldoincertaincases.TheeasiestwaytounderstanditisthatSModelassumes1)thattheDFfilewasanaccuratedescriptionoftheremotedirectoryatsomepointinthepastand2)fileswithdifferingcreatedatesthatitfindsonthelocaldiskarethe"Truth"andthatitshouldtransferanyfilesthataredifferent.However,assumption#1allowsSModeltoassumethatfileswiththesamecreatedateintheDFfileandonthelocaldiskALSOexistontheremoteserver.ThisassumptionisoftennottruewhenanewDFfileisbeingcreated.Togetstarted,thereareatleastthesethingsyoucando:1.MakeaDFfileofjustfilenames(nocreatedates)andrunSModelonit.Thefileswillbetransferredx&grHDgt _/C u #{ *-/1 79l \ h!u Z95 Xm#s+]V$K+3y UBm )Z]S$K+3y]Q $K+3y PL"+ ]N $K+3y]L $K+3yt JuXJ0J@tJJ!Z%]'-03Gu H5 F_m&/A]D$K+3y Cm&/A]Ai$K+3y]? $K+3y >(0]AE ' b_x e'!c't&L''0',.O048";?BDEzG/ & w8u #t !( _  ?2>"Q$(%*,605^75;?=!?gCOy t  c` #I$x)*t/x 2t  ; k" *T,.v2458[:<|>B+D <  T!"'\+.257 >@ADc -fdI$ +-V/4F: ;?!BDWF  ^Qr&!$%)_+l-146k8>%@CE F  "&l -0j49;@CqFt  },`v!^$G&~),/4&79>@B <TVm$6 <@:CG & K9?{" # V /  E#&G)2,v. 1:57(9o;>2@xC##D!#t ! DFFiles10andthecreatedateswillbefilledin.2.UseVerifyDF(seebelow)toautomaticallygenerateaDFfile,edittheDFfileasyouneedto,andusethe/soptiontostoreallthefilesoutontoremoteservers.3.Ifyouhaveacompleteconsistentworldoutonremoteservers,simplyretrieveallthosefilesontothelocaldiskandmakeaDFfilewithalltheirfilenamesbutnocreatedates.RunSModelwiththe/noptiontogettheDFfilefilledinwithallthecreatedates.(/nwillnotneedlesslymakeextracopiesofthefilesonyourremotedirectories).Ifyouaremaintainingasystemforothers,youmayneedtohaveentriesintheDFfilethatareReadOnly(suchasforDefs>,etc.)Fillinginallthecreatedatesbyhandispainful,soyoumaycombinethe/rand/noptionstofillinallthecreatedatesintheDFfilebutnottransferanyofthefiles!Forexample,SModel/r/nFoo.DFwillfillinallthecreatedatesforfilesinFoo.DFbutnonewillbestored.CameFromhandlingSModelnormallychangesentrieslikeDirectory[host2]CameFrom[host1]intolineslikeDirectory[host1]ReleaseAs[host2]andchangesImportslikeImports[host1]file.DFOfCameFrom[host2]intoImports[host1]file.DFOfsincetheCameFromisinsertedbytheReleaseTool.IfyouwanttopreventSModelfrommakingthesechanges,giveSModelthe/foption.OtherInformationaboutSModelSModellistensforControl-DEL.Whentyped,SModelwillabortitself.SModelhandlesConnectusernamesandpasswordsexactlyasBringOverdoes(seeabove).Ifafileistransferred,theRemoteFileNameproperty(seeabove)isaddedtotheleaderpageofthefileonthelocaldisktorecordwherearemotecopycanbefound.SummaryofoptionstoSModel:/aStorefileswithoutaskingtheuserforconfirmation./cTrytowriteDFfilesthatarecompatiblewithAltoDFsoftware.(Nowarningsaregivenifthisisimpossible.)/fDonotswitchCameFromclausestoReleaseAsclausesanddonotdeleteCameFromclausesfromImports./nDoeverythingitwouldnormallydoBUTnevertransferanyfiles.x&QgrG~gt _/ :+ \ a &Y+-"/25[7:a<>AYDF [  ay.!#&+i X t  E$-&(-D2*6;=~ADG/ V IM%F w"~%,.049y<AEG UBD5!#&*.~036 <@:CG S K9?{" Q V /  E#&G)2,v. 1:57(9o;>2@xC#QD!Qt Ox ` +"L$&(r,02#57)@C M N V1$!%)*-,/2&47"<0>@BF L)u It G2 l\H!s#!(a*.T12x Ct @x >t>9>x>>t%>&> ; x 9"t9"99"x9"9"t%<9"%9" 6 x6T6t6G6x 4+t4+%4+x!$4+"D4+t#64+#4+xo1t11 /4x ,t,%,x!$,"D,t#6,#, *= Ux*=*=t*=*=@1!&*, .2 38=A'F (q^x %F wLt !F "'#,O.2 |# #*.0^7:=  s  yA> t$%*-Y13K7u9);?CDG% Y R4$m'*J,;x   Bt o]i # &(B r". #C *V-s039s7tD7E7 x7  t  / Iw%H'N*.366#TVm$035 ,x,xBW &(,2k5 8<}B D|G*9 ((8*"%'*2+-G.48:;=5AD'< ~ s #t I~%)k,*.1Z49M;=@4C?DfG EDFFiles11/pStorefilesonthePreReleasedirectoryderivedfromReleaseAsclauses./rIgnoretheReadOnlyattributewhendecidingtostorefiles./sStoreallthefilesintheDFfile,evenifthecreatedatesarecorrect./tDonotinvokeSModelrecursivelyoninner,includedDFfiles.OnlyexaminethetopDFfilegiven./vVerifymode:Checkeveryentrytoseeifitiscorrect.Fileswillbestoredontoremotedirectoriesifnecessary.VerifyDFVerifyDFattemptstoanswerthequestion:DoesthisDFfilehaveentriesforallthefilesIneedtorebuildthisprogram?VerifyDFwillanalyzea.Bcdfileandcomparethefilesrecordedinthe.BcdwithentriesinaDFfile.Ifafileenteredinthe.BcdisnotintheDFfile,VerifyDFwillgiveawarningmessageabouttheomittedfile(s).TotheSimpleExecutive,type>VerifyDFDFFile.DFPackage.BcdwhereDFFile.DFissupposedtobeacompletedescriptionofallthesourcefilesthatwerecompiledandboundtoproduce"Package.Bcd",andalltheobjectfilesproducedwhilebuilding"Package.Bcd".VerifyDFwillanalyze"Package.Bcd"andgivewarningmessagesaboutthosefilesneededtobuildPackage.BcdnotlistedinDFFile.DF.IfPackage.BcdwasproducedbytheBinder,VerifyDFwillcomplainifthe.Configfileorifanyoftheimplementationmoduleslistedinthe.Configarenotalsolistedin"DFFile.DF".IfPackage.BcdwasproducedbytheCompiler,VerifyDFwillcomplainifthe.MesasourcefileoranyoftheDefinitionsFiles(.Bcd's)itdependsonarenotlisted.(Alistoffilesomittediswrittentothescreenandtoafile"MissingEntries.DFFile.DF$".Similarly,.Mesa,.Bcd,and.Configfilesthatarenotactuallyrequiredtobuild"Package.Bcd"arelisted.)OnceithasanalyzedPackage.Bcd,VerifyDFwillthenanalyzeany.Bcd'sneededbyPackage.Bcd(describedabove).Thisanalysiswillcontinueuntilall.Bcd'sthatarereferencedintheclosureofthedependenciesamong.Bcd'sareanalyzed.IftheDFfileisomitted,VerifyDFwillputalistofthetop-leveldependenciesonto"MissingEntries.DF$",whichcanthenbegivenamoresuitablenameandVerifyDFcanbeinvokedagain.ThisisasimplewaytobootstrapacompleteDFfileforapackage.VerifyDFwilllookonremotefileserversforthecorrectversionofaBcdfileandwillusetheLeafprotocoltoreaditpagebypage,sotheBcdsdonotnecessarilyhavetobeonthelocaldiskforVerifyDFtodoitsjob.OtherInformationaboutVerifyDF:TheDFfilethatdescribesapackagemayoptionallyhaveentriesprecededbya"+".IfVerifyDFisinvokedwithouta.BcdfileitwilllookinsidetheDFfileandassumethatanyfilenameprecededbya"+"isatop-levelBcdandproceedtoanalyzeitandallitsdependencies,asdescribedabove.Morethanone.Bcdmaybeprecededbya"+"sign.Forexample,ifDFFile.DFhadanentryoftheform+Package.BcdthenVerifyDFDFFile.DFwillanalyze"Package.Bcd"andallitsdependencies.TheDFfile(s)involveddonotneedtobeonthelocaldisk.Forexample,ifDFFile.DFwerestoredx&QgrG~gt _/_/o]c "(-x0_/1_/t7_/8(_/ ]A]A5x]A]At]A]A#'E,.1 [S[So_Z"E%(L), 035 YeYeBW &(,2k5 8<}B D|GW9 UU8*"%'*2+-G.48:;=5ADT( ~ s Pt MI~%)k,*.1Z49M;=@4C?DfG KE  %&),-.4m69?\ACXFt J<p2ozM!#&)A*-I/ 1~46=E@CDB HC% F s u C]c t A$w" "=(@ /m1B3M5:2=;@%C ?| !K "$&)>-h0g6:^? =jT{ "$(+-37;>DE <.  #8$ -%06o8;H@eF :jK!@# %x /g48:s<AD=F 8 j   "%]+-06<?EG/ 78nX %(-/469;@ZByDF 5s(:v 0!# %x8 >CXF 3Yo#%)M 24 1n }@> '^*X-35:A?XA / Ip!-&*>,?0S335 /@EdG/ . kE + G &k!P#$&(V*0 8p;y )J$ '*03w5r:?ZBCE* (U r# "# %MU}F$&)c.346'9;>zAGCF_ $3G-`I!%')e 0,3_468;>KA&CP "  {x = wLt  p!M$a *.?28:;@AAH# G.:dJ"&(q*-f047:V<@FiHe  I  "')+-/ 8:@E   $+'*0f19;=A?BEW } u Et   v!P  rd'!"$&)f,03g9I:B Ek TVm$88iw(. !Wx@$.&)7, 2469x;?D r5 =!#'*-#0 248:N?BF a4DFFiles12on[Indigo]Top>,VerifyDF[Indigo]Top>DFFile.DFisequivalenttoretrievingDFFile.DFandinvokingVerifyDFonthelocalcopy.VerifyDFhastwooptions:Whengiven/f,VerifyDFwillwriteoutasingleDFfilecontaining(1)thecontentsofthetop-levelDFfile,and(2)theentriesthistop-levelDFfilereferstousingImportsandIncludestatements.Thus/f"flattens"thetop-levelDFfile.(ThisisusefulforgeneratingDFfilestoinputtoadhocDFparsers,suchastheCedarcross-referenceprogram,etc.)Whengiven/a,VerifyDFwillretrieveanyDFfilesreferencedbytheDFfilebeingverifiedwithoutaskingforconfirmation.If/aisnotgiven,thentheuserwillbeaskedtorespondwitheither"y","n","a","l",or"q"."y"meansretrievetheDFfile,"n"meansskiptheDffile,"a"islike"y"butsubsequentDFfilesareretrievedasif"y"hadbeentyped,"l"meansusethecopyoftheDffileonthelocaldiskinplaceoftheversionlistedintheDFfile,and"q"meansstoprunningimmediately.VerifyDFlistensforControl-DEL.Whentyped,VerifyDFwillabortitself.SummaryofoptionstoVerifyDF:/aRetrieveDFfilestothelocaldiskwithoutconfirmation../fWriteoutasingleDFfilecontainingallthepartsincludedandimportedbythetop-levelDFfile.SummaryofcommandlinesforPilotVerifyDF:VerifyDFDFFile.DFPackage.Bcd--analyzePackage.BcdVerifyDFDFFile.DF--analyzefilesprecededby"+"VerifyDFPackage.Bcd--analyzePackage.BcdandconstructaDFfileDFDiskDFDiskwillproduceafile"Disk.DF"thatdescribesanentirePilotvolume.ItlistsmostofthefilesonthePilotvolume(exceptfilesendingin$andafewkindsoflogfiles).IfpresenttheRemoteFileNamepropertyisusedtogivearemotehostanddirectorywherethefilemaybefound.Notereadingleaderpagesisslow,evenonaDorado,soexpectDFDisktotakeabouttwominutes.DFDiskismostusefulwhenusedtoprintouttheRemoteFileNamepropertyandwhentryingtosaveallthefilesonyourClientvolumebeforeyoure-initializethevolume.DFDisklistensforControl-DEL.Whentyped,DFDiskwillabortitself.RemoteDeleteAllRemoteDeleteAllshouldbeusedtocleanupoldfilesfromreleasedirectories.Itchoosesasacandidatefordeletionanyfilethatisontheremotedirectorybutisnotlisted(withthesamecreate-date)inasetofDFfiles.Todothis,ittakesadirectorynameandalistofDFfilesandthenenumeratestheremotedirectory.Twolistsarewritteninfilesonthelocaldisk:alistoffilesthatwillnotbedeletedandalistofcandidatesfordeletion.Itthenliststhecandidatefilesontheterminalandtheuserisgivenachancetotype"y"todeleteit,"n"or"CR"toskipit(notdeleteit),and"q"toquit.Forexample,x&QgrG~gt _' u \Et Z/ X  !%#)/1407w W+L U8qrS"%=&b*H,/3 58 :e?AC ST1GN! &)},/1x5S6St:S;WSx=S> StB}SCS Q4 ( I"&2)+B/c1 8j:=?C^yEQEQGt PB88iw(. MWx@$.&)7, 2469x;?D L5 =!#'*-#0 248:N?BF Jxa4~!&)M+.1q58;/=[@+BD?F H: n\$-%'S),04Y6:={?CCEGr G)>k^rG !$h)W-'.14479<A8DX E C+Y $(6.u1!4x ? Bt x #N4!$]*1.K0368<@uEl ! #y =$)+.2c5 +E&K U!$')r 4:<=@DF  ;)/kw#&} -0 9g #'D,/<2s t j2N#~%'*.,2 :";@B8CY  *xR&#),"-037D9=" DFHGr  "=$(Y+ ,,.c025~8/;N BD t ic !#&M),.0K147:S<>C|F-GQ  Hz!$*H-*/%1y69;>@5CD % @V!"%&)-0257-:= TVm$SZ #E%(O)+^-T357<=DFFiles13RemoteDeleteAll[Ivy]B>[Ivy]B>B.DF!5[Ivy]B>C.DF!6wouldoffertodeleteallfileson[Ivy]B>thatarenotenteredinthesamenameandcreatedateasthoselistedin[Ivy]B>B.DF!5and[Ivy]B>C.DF!6.ShouldafilelistedinaDFfilebelistedwithoutacreatedate(suchaswith~=or>),thennoversionsofthatfilewillbedeleted.Theusermayalsoenter"a"whenaskedwhethertodeletethisfile.Whengiven"a,"RemoteDeleteAllwillaskifyouaresureyouwanttogoaheadandthendeletetheremainingcandidatefileswithoutpausingforconfirmationforeachfile.ReleaseToolTheReleaseToolshouldberunonlybyaReleaseMaster.Contactmeformoreinformation.OtherInformationYoucanfindallthecommandsinCedar.Bcdformon[Indigo]DFFiles>.AllprogramswillrunintheCedarViewersandCedarUserExecworld.YoumayretrievethenewestreleasedversionsoftheseCedarDFprogramsbyrunningBringOver/p[Indigo]Top>DFFiles.DFfollowedbyRunBringOver.BcdtoloadinthenewversionofBringOver.Also,youmayfindnewer,experimentalversionson[Indigo]Top>DFFiles.DF.Usetheseatyourownrisk!Alloftheseprogramslistenforcontrol-DEL.Whentyped,theywillabortthemselves.Shouldyouneedtosupplyaconnectnameandpassword,anyoftheseprogramswillpromptyouforthem.WhenaCRfortheconnectnameandaCRfortheconnectpasswordaretyped,theseprogramswillaskwhetheryouwouldliketologinusingdifferentlogincredentialsoraborttheprogram.Ifyougetamessagethatbeginswith"Schmidt'sDebugging:"youmaysafelyignoreit--thesemessagesareusuallyduetocertainobjectsinmemorynotbeingfreedproperly.CedarReleaseProcedures[ThefollowingsectionisaneditedversionofasetofmessageswrittenbyRoyLevinandsenttoCedarimplementorsinSeptember1981.AlthoughtheproceduresdescribedbelowarerequiredofCedarimplementors,manyoftheextensionsaddedtoDFfileswillbehelpfulfornon-Cedarusersaswell.AlthoughitrepresentsarestrictiononDFfileusage,Irecommendnon-Cedarusersfollowthisstyleasmuchaspossible.]BackgroundReleasinglargesystemsisatrickybusiness.SDDhasknownthisforalongtimeandhasdevelopedelaboratereleaseprocedurestocopewiththematter.We'reonlyjustdiscoveringhowmessedupthingscanget.However,sincewehavemanyfewerhumancyclestoexpendonthisproblemthanSDDdoes,itisimperativethatwedevisenatural,easy-to-use,andefficient(ofpeopletime)proceduresforourreleasesofCedar.ReleaseProceduresx&QgrG~gu _< %#4Qt \(Nigbv %(*-t2w436:+=@DG [ U!.35 7;j=>>A?CE Yr"$)"$N&Uy){Yr*9Yrt+nYr,Yr02s5A7:V UP G9!d#x'*x-14u;ArD S? ds PZ t M    "#(.T3v58; s I t Fn }gS9#M&n)+>@F D 0 & BL ^!1&}(6+/2b8u:qu ?t =Uu : t 8_ Xm& 5 k` "')$CBF 4=  1 ? >{ &q*.14s8 /G4o!%g(0.1I36<?DGR -J_ G#t&('N),.l39z;?C| + O4# &,Z/ 68u<>t )} h\ ' 0%259=@0C ' ?X| *%( +/ks $ t !8 %6;)W$%&)*05Y7R:J>3@CEw   a&)O 06;4=CEw   L "&Q(*-0279@D}FJ Bj  !$6&*+3h:G=BDG  q x L t C\&),?0357,:]=@jB VU T 9#L%*.14z ;>ClEv  t2V"a&(*.0k5<7?9?]BF  j 7" *P-/259=q DG `x  TVm$TVm$xddt"d#d%L'*@02:3Y589<~>!C"G/ MA@ >"x%3&0t+,-/t Aa`Y 8#I%/) 058V:R<?BE W Xu E  TVm$4>@5CD # @V!"%&)-0257-:=u !$ %#4Qt (NiDFFiles14The[Indigo]directorywillbeusedexclusivelyforCedarreleases;thatis,afilewillappearonthisdirectoryifandonlyifitisapartofa(reasonablycurrent)Cedarrelease.Therewillbea"releasemaster"(initiallyLevin)whoisresponsibleforinsuringthisinvariant.Onlythereleasemasterwillbepermittedtocreateordeletefilesonthereleasedirectory.Inthefuture,weexpecttousesystemmodellingfacilitiestodescribeandissuereleases.Untilthenecessarysoftwareisinservice,wewilluseDFfilesandanumberofmanually-executedconventionstoachieveasimilareffect.TheproceduresIwilldescribehavethevirtuethat:(1)theyplaceonlyaslightadditionalburdenontheindividualimplementor,(2)theyenablethereleasemastertoinsurethereleaseinvariantwithoutbuildingthereleasefilesfromtheoriginalsources,and(3)theyareamenabletosubstantialautomation.Thesoftwareneededtoperformthisautomationisnearlycomplete.SincetheDFfileisthesoledescriptivemechanismpresentlyatourdisposal,wewilluseitinastylizedwayasa"poorman'ssystemmodel".CedarimplementorswillobservethefollowingconventionsinproducingcomponentsforreleaseaspartoftheCedarsystem:(1)EachcomponentwillbedescribedbyaDFfile,whichmay,inturnrefertootherDFfiles.(Indeed,cross-referenceisencouraged,aswillbeobviousshortly.)(2)ADFfileshouldmention(directlyorindirectly)everyfileneededtobuildandusethecomponentitdescribes.Thisrequirementdoesnotapplytothestandardconstructionprograms(PGS,Compiler,Binder,TableCompiler,Packager,MakeBoot)exceptintheDFfilesthatdefinethem,butsuchprogramsmaybementionedifcircumstancesseemtowarrant.Thus,itshouldbepossibletobuildthecomponentbystartingwitha"baredisk"(i.e.,onewithnothingbutthestandardconstructionprogramsandBringOver),and,byapplyingBringOvertotheDFfile,acquireallthepiecesnecessarytobuildthecomponent.(3)Allfilesthatformanintrinsicpartofthiscomponent(e.g.,the.mesaand.configfilesandtheirderived.bcds)shouldappearintheDFfileunderDirectoryheadingsthatareNOTReadOnly.ThisappliesalsotomiscellaneouscommandfilesusefulinbuildingthecomponentaswellastheDFfileforthecomponentitself.AllotherfilesmentionedintheDFfileshouldappearunderReadOnlyDirectoryheadings.Thus,aReadOnlyDirectoryheadingsays,ineffect,"thefollowingfilesare'imported'fromothercomponents",andanon-ReadOnlyDirectoryheadingsays,"thefollowingfilescompriseapartofthiscomponent".(4)Itisperfectlypermissabletomentionasupersetofthefilesactuallyneededtobuildthecomponent.Forexample,insteadofpainstakinglydiscoveringallofthePilotpublicdefinitionsfilesneededbyyourprogram,youcouldsimplyincludeImports[Indigo]Pilot>PilotMesaPublic.dfOf~=intheDFfile.ThereareseveralconvenientDFfilesofthissortavailable,e.g.,[Indigo]Pilot>PilotMesaPublic.dfPilotMesaFriends.dfComSoftPublic.df[Indigo]Tajo>TajoPublic.dfTajoFriends.dfandothersmayappearsoon.(5)The"endresult"ofbuildingacomponentisusuallyasingleBCDthatimplementsthex&QgrG~gt _' !$ +.(2N7:<=@;BG ] \q=!#h$ +1#59:>AAC1DY [   $' ,/2 59k;@jDG Z18 #' W usn#) /I1%69=#CdG/ Vm{Tv"$'),-24@P G Tgh "#&i+.1U5C8;>ADE R Xe  (M*i-m148<>BE  Q2~">%e)+06I9:;>ArG Oq  !'%',/ 68A'?CFJ E' $&G(*0 C q!'2)6 046;=ADzG/ Abp x '*-1|3L5; C| ?zw &i,38f:3<?\BhEV >%a!(n) 26!7=ACG  *;* "(d)/]1Q37SpyBuild>ReleaseAs[Indigo]Spy>ThereleaseautomationsoftwareusesthisinformationtomovethefilesunderthisheadingtotheindicatedplaceonthereleasedirectoryandtoupdateDFfiles(includingothersthatreferencetheoriginaldirectorywithReadOnly)accordingly.TheReleaseAsclauseisonlyappropriatefornon-ReadOnlyDirectoryheadings,andallDFfilesinvolvedinareleasemusthaveReleaseAsclausesinalloftheirnon-ReadOnlyDirectoryheadings.(7)ItishighlydesirabletohaveasingleDFfileidentifywhichofthefilesthatcompriseareleasecomponentareofinteresttotheclientofthecomponentandwhichfilesareofinteresttotheimplementor.SeveralsyntacticchangestoDFfilesandtheBringOvercommandlinetogetherprovidethefacilitiestodothis.Theyarebestexplainedbyanexample.ConsiderthefollowingfragmentofaDFfilefortheSpy:--Spy.dfExports[Ivy]SpyBuild>ReleaseAs[Indigo]Top>Spy.bcdSpyNub.bcdSpyClient.bcdDirectory[Ivy]SpyBuild>ReleaseAs[Indigo]Spy>Spy.dfSpyImplA.bcdSpyImplA.mesa...Imports[Indigo]CoPilot>CoPilot.dfOfNowsupposethatauseroftheSpywantstoretrievethepublicfilesoftheSpy.Theusertypes:BringOver/p[Ivy]SpyBuild>Spy.dfThe/pmeans"exportsonly"andwillcauseSpy.bcd,SpyNub.bcd,andSpyClient.bcdtoberetrieved(assumingtheyaren'talreadyonthelocaldisk).ThesearetheonlyfileswhoseDirectoryheadingsincludeExports.SinceCoPilot.dfisimportedbutnotexported,neitheritnoranyofitscontentsx&QgrG~gt _/ r ,& *1Y5t8:6=@ADaF ] u#)+-078<}>DuG/ [d  $S%'+ 24?59;@>v?B Db Z9!a!9 (+".47p:7@H# L*S,!"% , 4d68=} D+G J[- x%)J&=Jt+RJ,J1 27; A!xoHtHHx%H&Ht+H+H C. }!$& .`0 36a9`=t@'EpG/ B>@K;%').03 :0>YA-G/ @;x@@t!@"@ +x/@/@t5@6@:b<&? GR >xo>m>t>>!$`&5(+v0237;Kx>v>?t>tD>E> =H\LKx =H =Hyt$=H%i=H :S1g5!$"K&4(+"054@58S;=> CE  9%rOS%!%'k)148<>|@YE]G/ 7~ ) &`(F+ ..13:A=D+ 5@ y!9$'=*5024;A C| 4/Cmayo1xo/9t/9/9x"/9#/9t)G/9)/91,12,1*C 12*C1' 12'xo%Lt%L%Lx#%L$%Lt*Q%L*%L1"12"1 V 12 V1 121` xotx)+t+, PHA Z#&(-0 4E738;K uoft $jJr!%#'O, 47 @`AC }#1 #F&*.13{69x= }> }tC }D } x  t:   "-#),A.49;=@iB4D  vTVm$thersmayappearsoon.(5)The"endresult"ofbuildingacomponentisusuallyasingleBCDthatimplementsthecomponent.Youshoulduseaprogram,namedVerifyDF,whichtakesaBCDandaDFfileanddetermineswhetherornotthelattermentionsallthefilesnecessarytobuildtheformer.Forthepurposesofcheckingthecompletenessofareleasecomponent,itisusefultohaveaDFfileindicatetheBCD(s)namedwithinitthatrepresent(s)the"endresDFFiles16areretrieved.SupposeinsteadthattheimplementorwantstomakeachangetotheSpy.Hetypes:BringOver[Ivy]SpyBuild>Spy.dfSinceno/pappears,allfilesinSpy.dfwillberetrieved(unless,ofcourse,theyarealreadypresentincorrectversionsonthelocaldisk).ThisincludesCoPilot.dfand,sinceitscontentsareimported,BringOverwillrecuronthecontentsofthisDFfile.However(thenestedinstanceof)BringOverwillretrieveonlythefilesinCoPilot.dfthatappearunderExportsheadings.Thus,theimplementoroftheSpywillgetalloftheSpy'sfiles,butonlytheexportedportionsofCoPilot(whichisappropriatesincetheSpyisaclientofCoPilot).Tosummarize:ExportsinplaceofaDirectoryheadingidentifiesfilesthatareofinteresttotheclient,i.e.,thosefilesthatwillberetrievedbyBringOver/p.ImportscausesBringOvertomodifyitsbehaviorwhenrecurringtoretrieveonlyfilesidentifiedasExports.If/pisomitted,allfilesareretrieved,exceptthat,onceBringOverenters"exportsonly"mode,allnestedretrievalsofDFfileswillbeexportsonly,regardlessofthesubsequentappearanceofIncludestatementsinnestedDFfiles.Thishasthenatural,intuitivebehavior.(8)Aseachimplementorcompletesacomponentneededforanupcomingrelease,he/shesendsamessagetothereleasemastercontainingthenameoftheDFfilethatdefinesthecomponent.Theimplementorthenmustleavethecomponent'sconstituentfilesundisturbeduntilthereleasemasternotifieshim/herthatthefileshavebeensafelymovedtothereleasedirectory.ThefollowingsummaryofqualifiersthatappearinDFfilesmaybehelpful:QualifierInterpretedbyIgnoredby----------------------------------------------ReadOnlySModel,VerifyDF,ReleaseToolBringOverExportsBringOverSModel,VerifyDF,ReleaseToolImportsBringOverSModel,VerifyDF,ReleaseToolIncludeBringOver,VerifyDF,ReleaseTool,SModelReleaseAsReleaseToolBringOver,VerifyDF,SModelGuidelinesforDateSpecificationsWithinaDFfilethatisintendedtoconformtotheguidelinesforrelease:(a)filesthatareanintrinsicpartofthecomponentdefinedbytheDFfile(i.e.,thoseappearingundernon-ReadOnlyDirectoryheadings)shouldspecifyexplicitdates,(b)fileswhichthecomponentimports(i.e.,thoseappearingunderReadOnlyDirectoryheadingsorthoseimportedDFfiles)shouldspecify"#"(orequivalently"~=").However,thereisanimportantexceptionto(b).Itoccasionallyhappensthatasinglepersonisconcurrentlydevelopingboththeimplementationofaninterfaceandaclientofthesameinterface.(Example:acollectionofBCDmanipulationfacilitiesisimportedbyboththecompilerandthebinder.EdSatterthwaiteistheimplementoroftheBCDfacilitiesaswellasthesetwoillustriousclients.WhendevelopinganewversionoftheBCDstuff,Edfrequentlyandrapidlyswitchesbetweenhisrolesasimplementor-of-BCD-packageandimplementor-of-client-of-BCD-package.)Insuchsituations,specifying"#"intheclient'sDFfilewillcausethewrongthingtohappen;itwastoaccommodatethissituationthatthe">"formofdatespecificationwasoriginallyaddedtoDFfiles.Implementorswhofindthemselvesinthispredicamentshoulduse">"insteadof"#"wherenecessary.ItshouldalsobeunderstoodthatwhentheReleaseToolisconstructingtheDFfilestobestoredonthex&QgrG~gt _/ [3 $8()-|.3N47\:=DuoYet Vemj `$'i)\/$45:=?D UBZ5:$'5, 3,6:9;@CD Sp&A#%(+*.46;A@B QJ;Fu $'\+x/Q0Qt4Q5Q;R?Aj PLBC- w$U'*-06<)> C^H# N  W#_%&+- x5N6Nt;N;jN<@fB.xCfNDzNt L &;1 "')h+0.269<?AG KVxKV)KVtKVwKV 9'(-/59l?ASFu I xNI5ItI(I !'?)+.? 4N8;>E H | %d&)Y,.0l58c >@.Bf F` xF`F`twF`F`!1"'/)-035r:}? Cd{ #N$}+0z24;%@DHe B=  %(+-/2l47 F @ a!I )N 0V3D :>9@E >3!"g%).*/286 :  #c'),#/24 8 8 .(8 - 5 515x 3t3" 13x 1kt1k11k7g= x /t/1/7g= x .t.  # +x ,ut,u 1,u 8?x )& G t %H V%') 0j2 #[P^!#&-c2479"specificationsbyexplicitdates.Thisisimportantforarelease,sinceitisintendedtobeasnapshotofthestateofthefilesatsomeinstantoftime,andtheloosebindingimpliedby"#"and">"isinappropriate.Duringthedevelopmentprocess,however,these"dynamicallybound"datespecificationsareveryuseful,anditisunreasonableandunnecessarytoexpectpeopletoperformthemanualtranslationtospecificdateswhenreleasetimearrives.How,then,doesthistransformationofdatesfitinwiththeongoingdevelopmentprocess?Whenanimplementorfindsitnecessarytochangeacomponentfollowingarelease,he/shehasthechoiceofstartingfromtheDFfileonthereleasedirectoryorfromtheoneusedtobuildthecomponentinpreparationfortherelease.(Ofcourse,thelattermayvalidlydisappearaftertherelease;onlytheDFfileonthereleasedirectoryisguaranteedtoberetained.)Intheformercase,themaintainerwillhavetoeditthereleasedDFfiletomakeitconvenientforsubsequentdevelopment,e.g.,byadjustingDirectoryheadingstoreferenceworkingdirectoriesandbyreplacingspecificdateswith"#"or">".Inthelattercase,theDFfileisalready(still)suitablefordevelopmentwork.Ifaparticularcomponentisfrequentlychangedandusuallybythesameperson,thelatterapproachwilllikelybefollowed.Ifthecomponentisinfrequentlymodifiedorifmanydifferentpeoplehaveoccasiontochangeit,theformerapproachwillbelesserror-prone.Thechoiceshouldbemadeonapackage-by-packagebasis.CompleteSyntaxDescriptionofDFFilesDirectory[host]Exports[host]ReadOnly[host]AnyoftheabovecanbefollowedbyReleaseAs[host]orCameFrom[host].Exports,ReadOnly,andDirectorycanbecombinedononeline.(PublicisasynonymforExports.)filenameMultiplelinesconsistingoffilenamesand(optionally)createdatesmayfollowExports,ReadOnly,andDirectoryheadings.filenamemaybeprecededby"+","@",and/or{PublicOnly}.Thefilenamemayhaveadirectorypath(butnohost),ashortfilename,possiblyfollowedbyaversionnumber.Thecanhavetheusualform,"~=","#",">",orbeomitted.Include[host]file.df!versionOfTheIncludestatementmaybefollowedbyaReleaseAs[host]orCameFrom[host]statement.TheOfisoptional.Imports[host]file.df!versionOfUsing[listoffilenames,separatedbycommas]TheImportscanbeprecededbyExports,theOfandUsing[]canbeomitted,andtheUsingclausemaybeprecededbyaCameFromstatement.SemanticsofDFFilesAllDFprogramsinthissetuseaconsistentviewofwhatalineinaDFfilemeans.Insummary,hereisalistofwaystospecifyfilesinaDFfile:filename!versAnyfileontheremotedirectorywithcreatetime.Ifnecessary,DfprogramslikeBringOverwillenumeratetheremoteserverlookingforsuchafile.Theversionnumbervers(ifpresent)isusedasahint.filename!vers>x&QgrG~gt _/] rJ#I&z)+ 35:>AC- ] 6 lV7x 2"/#e)#*-T02V479a=ACNF [ I'!$o% /836[ >C Z9 n  &$(p+w/235C =@G G X<f! ')z.d15:(=M V V^ "&6( )- /5 =MCkG To ;Yo$B%,3%4y9>=@CgG R){>#)+/|2 48P:-=@G Q W "%<(+0s69` 'r) 0 9;=xCfMDzMt L*OI #G%'-26O9f<>iACE J '{Y #%G -l13%4D :nAB H_5#%)/2<57>}@Bg G4 I %/),2I38:!C !$x >t>y9>t>>y>_>t<>x =t=y0=t==y=U=t3=x ;t;y|;t;A;y;;t;o8M\'#x%|8&z8t+8y,Q8t.8/8y/80w8t2T83c8x5858t;8y8?8y?8@u8tBR8C8xD8D8tH8xo6tV636x66t66!#)+.1x2)636t6m66679>xA6B6tE6F 6| 5xB5| 5x5to2( "(+ 38 <?sxD2D2tH2xo0tV00x00t E0! 0y'0(0t-0.003D9;?CGo/8x /8/8t/8r/8y/8/8t /8"/8#'(<.14 69:>RDBo-!*b7#Zy&@-&-t*-+9--7026:r?&BEGo+x )t)y)tP))yc))t)y)x!)"8)y#*)#)to'xD''t''O P"=')x*'+'t1'y1't4U'4'y5h'6't7'9''x:';'tA'yBW'tD'E'yE'F}'tHZ'o% xY%y%yk%%t% %!'x #t#y%#t##y#K#t(#y#x!O#"o#y#b#$#x"Cy"C"C %',toxIt_!x#$t(`)?x+,y-.dt22x45t89:=?DwG0xo!te!!}r"Z$Vx%!&s!t,!-!s t  >*F %:(t*,-.1h34?692>Q@ Ft  X x "p| ` m`t j  #'y+ +t.0+1 8 :$@1B >nHz!&(,>-}038y=>>>t@>AJ>BH# |  m  GTVm$|nbefollowedbyReleaseAs[host]orCameFrom[host].Exports,ReadOnly,andDirectorycanbecombinedononeline.(PublicisasynonymforExports.)filenameMultiplelinesconsistingoffilenamesand(DFFiles18filename!vers#filename!vers~=Thehighestversion(!H).If~=or#isgiven,aprogramlikeBringOverwillretrievefilenamefromtheremotedirectoryifitscreatetimediffersfromthatofthefileonthelocaldisk.Theversionnumbervers(ifpresent)isusedasahint.>islike~=exceptthatthefilewillberetrievedonlyifitscreatetimeisnewer.filename!versWhennodateispresent,andaversion#isgiven,thenthisreferstothefilefilenameontheremoteserverwithversionnumber!vers.filenameWhennodateandnoversionnumberispresent,thenitistreatedlike~=.(ExceptbySModel,whichfillsinthelocalcreatetime.)ThecasesforDFfilesthatareincludedorimportedareexactlyanalogous.Forexample,Directory[Indigo]Top>Spy.Bcd!21-Jan-8211:11:11Referstoafilecreatedon1Jan82.Version#isahint.Spy.Bcd!3~=Referstothehighestversiononthedirectory.Theversion#isignored.Spy.Bcd!4Referstoversion4.Spy.BcdReferstothehighestversiononthedirectory.x&QgrG~g| _* m_* \ m\t Z4z]"%$&'+,25g<:?yDZ4DZ4t X<!%>(-035e7:}<?1BF VlyV*VtIVV ^!$&'+g,-03|7:<??AC U>(+| R t PH $|&O'+.1D568y;FPH;PHt@PHAbPHBD NyBNNt N| L&t I%&+/0269}<AD  Hgt E 7t"$y*l,1\ C x @t@9@o>/>y1;`9 8"+#_%(+-"/0s1to9"/9"y16`Q#%y' -0}568bto4,y11`to/6y1,`Q#%y' ^TVm${>#)+/|2 48P:-=@G =@ W "%<(+0s69 .IPQY hc l u e _o$t+$y,Q$t.$/$y/$0w$t2T$3c$x5$5$t;$y$?$y?$@u$tBR$C$xD$D$tH$xo#tV#3#x##t##!#)+.1x2)#3#t6m#6#79>xA#B#tE#F #| !#xB!#| !#x!#to( j/,˞ DFFiles.tioga 1-Jul-83 16:49:50x tytPyctyx!"8y#*#toxDt