ࡱ; 4  !"#$%&'()*+,-./01236789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry  !r\V)䰱 PresentationStarImpress 5.0WTSfxDocumentInfo  Sean McCune 01? Sean McCune 01 c Sean McCune 01 RevML and vcp =Revision Markup Language and and Repository Migration Engine. Info 0 Info 1 Info 2 Info 3 1JM8F<44Standard LIBIMBEDDED LIBIMBEDDED TASK,0,1,H 1,0,100,1,SBX sb Z Standard StarBASICSBX ARSBX AR SBX AR2c%bqqOh+'0P h t #XOutdevItemPool 1   )     &'()*+,-./06789:;UVWXYZ[\]c !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstt      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefd0pc'@qXX' ,@X'.@2XXX' @X'@Pfeil PfeilddXXXS'c@(PfeilddXX'.@^,XXX'"@,XX'@XX'@X@X@X@9X@WX@uX@X@X'(@XXX' @a̙ Trkis 7kkkkXX X2XDXV' @22dd22 Farbverlauf 18JJJJ(22ddXX6X^'(@MX'4@ BMvv(@@SD@x^SI 0 s\ z 46ZBn8x)1̔.<觔B+̄ ޢ40:prf |q]~+H~|WFMbP@aoCē[ȡz6~U{߃X00@\X11@zX22@X33@X44@X55@X66@XII @*JJ j@ R((, 39/) z XXXX&X.X6X>XFKK@XX(L@XMM@XNN@(XOO@JXPP@lXQQ@XRR@XSS@XTT@XUU@XVV@7XXWW@[XXX@{XYY@XZZ@X[[@X\\@X]]@X^^ @3__ @I`` @_aa @ubb @cc @dd @ee @ @\@/''XXX X&X,X2X8)@'''''' XX X&X,X8XDXJXP**F@XXXX X&X,77F@mXXXX X&X,HH @ +'+'' ' +'XXX X,X2X8X>XPX\Xhff(@ /JJKKJJKKJJKKQQVVJJKKJJKKJJKKJJJJKKJJKK JJ KK QQVV JJKKJJXX X2XPXbXtXXXXXXX8p)W8Vt4Pp+n (Fd ; Y w  ' = S i   + m   = [ y _ /Oq>]|4J`v D P1:/EditEngineItemPool 6f)0XD (@ ;StarBats!"KStarBats!"-StarBats!"KStarBats!r7StarBats!"KStarBats!r-StarBats!"K StarBats!"K StarBats!r-  StarBatsX!"-StarBatsX!"-XXGXXXX+XdXXXXH@'J@> dddddXdddddddXdddddPdxddPdxdddYdddxdddxYPdddYP ddd YPdddYPdddYPdddYP8ddd8YPXdddXdddXYPxdddxYPdddY ddPdx!ddPd"ddPd #( ddPd$H ddPd%hddPd&ddPd8'ddPdX(ddPdx*uddduYXX!X4XGXZXmXXXXXXX X#X<XUXnXXXXXXXXX+X>XQXdXwA' @z?ddddddddddddd,ddd dddXXX&X2X>XJXVXb1'@?dX+'(@?XXX'@@X!':@L@!XXX&'D@@(Times New RomanArialStandardXX(' @ @ANd 4d d d {d d d  hd d d d Od d XXX"X,X6X@XJXTX^XhXrX|X?(@AdX'@A( XX'@A,X'@A,X'@B(5XX'@?B,X'@cB(XX%'@BdXS'@BX"'@BX'@BX@CX@"CX{( @Revision Markup Language and and Repository Migration Engine.RevML and vcpDrMdE6JoeMn01)01lg01 aODrLy LAYER_LAYOUTDrLy LAYER_BCKGRNDDrLy LAYER_BACKGRNDOBJDrLyLAYER_CONTROLSDrLy!LAYER_MEASURELINESDrMP'JoeMtRDrML DrOb<SVDr& 1%DrOb<SVDr&B$i%DrOb<SVDr& ,17JDrOb<SVDr&B,$i7JDrXX(Technical Reportgg rTechnical Report~LT~GliederungDrMP`JoeM`mRDrML DrObSVDr&_mR3Technical Report~LT~Hintergrund_mRDrObSVDr&w?R: &Technical Report~LT~Hintergrundobjekte~w?R_xV4B1JTechnical Report~LT~Titel <( (@'' 0,w?RRDrObSVDr& qe{J4 Technical Report~LT~Gliederung 1a qe{JB xV4B1 %Click to edit the outline text format Technical Report~LT~Gliederung 1<( (@'Second Outline Level Technical Report~LT~Gliederung 2<( (@'Third Outline Level Technical Report~LT~Gliederung 3<( (@'Fourth Outline Level Technical Report~LT~Gliederung 4<( (@'Fifth Outline Level Technical Report~LT~Gliederung 5<( (@'Sixth Outline Level Technical Report~LT~Gliederung 6<( (@'Seventh Outline Level Technical Report~LT~Gliederung 7<( (@'Eighth Outline Level Technical Report~LT~Gliederung 8<( (@'Ninth Outline Level Technical Report~LT~Gliederung 9<(  (@' DrObSVDr& qe-Technical Report~LT~Titel qe|xV4B1g#Click to edit the title text formatTechnical Report~LT~Titel<( ( @'DrXX(Technical Reportgg jTechnical Report~LT~GliederungDrMP.JoeMRtDrML DrObSVDr&?% CL3-Technical Report~LT~Titel?% CL3pxV4B1[Click to move the slideTechnical Report~LT~Titel<( ( @'DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcyxV4B1dClick to edit the notes formatTechnical Report~LT~Notizen<( ( @'DrXX(Technical Reportgg bTechnical Report~LT~GliederungDrPgcJoeMtRDrML8DrMD,DrXX" Handzettelgg RTechnical Report~LT~GliederungDrPg"JoeM`mRDrML8DrMD,DrOb7SVDr& qe-Technical Report~LT~Titel qexV4B1HRevML and vcp:Revision Markup Language and Repository Migration EngineTechnical Report~LT~Titel<( ( @'ABDrObSVDr&JK#ePHeading1JK#ePxV4B1_$Barrie Slaymaker, Slaymaker Systems Heading1<( (@'+'$$Heading1<( (@'+'Sean McCune, Red Hand Software Heading1<( (@'+'Heading1<( (@'+'&Greg Kroah-Hartman, Asterix ConsultingHeading1<( (@'+'&&Heading1<( (@'+'Heading1<( (@'DrXXTitlegg Z Technical Report~LT~GliederungDrPg/JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXXTitlegg bTechnical Report~LT~GliederungDrPg1JoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qeexV4B1P IntroductionTechnical Report~LT~Titel<( ( @'DrObESVDr& qe|J4 Technical Report~LT~Gliederung 1 qe|JxV4B1UMigrating document revisions from one repository to another (CVS -> Perforce, etc.). Technical Report~LT~Gliederung 1<( (@'@Dealing with existing projects in various types of repositories. Technical Report~LT~Gliederung 1<( (@')A defined revision markup language (DTD). Technical Report~LT~Gliederung 1<( (@'DrXX$ Introductiongg ^ Technical Report~LT~GliederungDrPg6JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX$ Introductiongg bTechnical Report~LT~GliederungDrPgFJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qedxV4B1O DefinitionsTechnical Report~LT~Titel<( ( @'DrObSVDr& qeL4 Technical Report~LT~Gliederung 1 qeLlxV4B1ISource Technical Report~LT~Gliederung 1<( (@'-The source repository you are migrating from. Technical Report~LT~Gliederung 2g*<( (@'- Destination Technical Report~LT~Gliederung 1<( (@'0The destination repository you are migrating to. Technical Report~LT~Gliederung 2g*<( (@'0RevML Technical Report~LT~Gliederung 1<( (@'=RevML is a markup language for describing document revisions. Technical Report~LT~Gliederung 2g*<( (@'=vcp Technical Report~LT~Gliederung 1<( (@'-The main script which performs the migration. Technical Report~LT~Gliederung 2g*<( (@'-DrXX# Definitionsgg ^ Technical Report~LT~GliederungDrPg5JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX# Definitionsgg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qefxV4B1Q What vcp DoesTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1\ qe|J=xV4B1$HAllows migration of a range of revisions from one repository to another. Technical Report~LT~Gliederung 1<( (@'NAllows single documents or entire repositories to migrate to new repositories. Technical Report~LT~Gliederung 1<( (@'Allows for incremental migration. New revisions from a source repository can migrate to an already existing destination repository containing previously migrated revisions. Technical Report~LT~Gliederung 1<( (@'DrXX% What vcp Doesgg ^ Technical Report~LT~GliederungDrPg7JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX% What vcp Doesgg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qejxV4B1UWhat vcp Does NotTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1; qe|JxV4B1vcp does not eliminate the need for the applications to handle both the source and destination repositories. You need CVS to migrate from CVS. Technical Report~LT~Gliederung 1<( (@'However, vcp handles RevML repositories all by itself. So you can migrate and distribute a repository as RevML. Then anyone armed with vcp can migrate from RevML to their favorite tool without needing the original RCS. Technical Report~LT~Gliederung 1<( (@'DrXX)What vcp Does Notgg ^ Technical Report~LT~GliederungDrPg;JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3 DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX)What vcp Does Notgg bTechnical Report~LT~GliederungDrPg(JoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qesxV4B1^Real World Scenario : perlTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1^ qe|J?xV4B1&LCurrently, the perl source is kept in a p4 repository. Perl is open-source. Technical Report~LT~Gliederung 1<( (@'Many open-source developers who might otherwise contribute to perl are only familiar with CVS and are not wont to change or learn something else. Technical Report~LT~Gliederung 1<( (@'zSome open-source developers are religiously dedicated to CVS on philosophical grounds and will only use open source tools. Technical Report~LT~Gliederung 1<( (@'DrXX+Real World Scenariogg b Technical Report~LT~GliederungDrPg=JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3 DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX+Real World Scenariogg bTechnical Report~LT~GliederungDrPgDJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qesxV4B1^Real World Scenario : perlTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1z qe|J[xV4B1D_Using vcp and RevML would allow those who choose to use CVS to participate in perl development. Technical Report~LT~Gliederung 1<( (@'XAnd it still allows the master perl repository to be a fire-walled, ssh'd p4 repository. Technical Report~LT~Gliederung 1<( (@'DrXX3Real World Scenario (cont.)gg b Technical Report~LT~GliederungDrPgEJoeMRtDrML8DrMD,DrOb<SVDr&?% CL3 DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX3Real World Scenario (cont.)gg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qeixV4B1TPerforce and vcpTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1> qe|JxV4B1 kCurrently, vcp handles Perforce and CVS as source and destination repositories. For CVS destinations, vcp can cook up it's own workspace. But for p4 destinations, it needs to actively use a client directory set up in a client's view. For a p4 source, vcp prints files to stdout to avoid actively using the client's directory, but it does use the client's view. Technical Report~LT~Gliederung 1g*<( (@'* kkkkkkkkkDrXX(Perforce and vcpgg ^ Technical Report~LT~GliederungDrPg:JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX(Perforce and vcpgg bTechnical Report~LT~GliederungDrPgkJoeM`mRDrML8DrMD,DrObSVDr& pqe-Technical Report~LT~Titel pqexV4B1u)Perforce and vcp : Environment VariablesTechnical Report~LT~Titel<( ( @'DrObBSVDr& qe|J4 Technical Report~LT~Gliederung 1 qe|JxV4B1hThe environment variables CVSROOT, P4PORT, P4USER, and P4CLIENT are used to identify these workspaces. Technical Report~LT~Gliederung 1<( (@'In reality, vcp actually ignores the P4* variables, but the p4 command picks them up, so these must be set for sourcing from or sinking to p4 repositories. Technical Report~LT~Gliederung 1<( (@'DrXX@(Perforce and vcp : Environment Variablesgg Z Technical Report~LT~GliederungDrPgRJoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX@(Perforce and vcp : Environment Variablesgg bTechnical Report~LT~GliederungDrPg#JoeM`mRDrML8DrMD,DrObSVDr& pqe-Technical Report~LT~Titel pqexV4B1kPerforce and vcp : LimitationsTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1L qe|J-xV4B1This use of environment variables prevents migration from one p4 repository to another p4 repository without migrating to an intervening revml repository first and resetting the variables... for now. We will add command line options for p4 source and destination repository commands to overcome this later. There might also be an option added to have vcp create a new 'vcp' user, and 'vcp' client combination but that will depend on user feedback. Technical Report~LT~Gliederung 1g*<( (@'*DrXX6Perforce and vcp : Limitationsgg Z Technical Report~LT~GliederungDrPgHJoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX6Perforce and vcp : Limitationsgg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qemxV4B1XPlug-in ArchitectureTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1+ qe|J xV4B1Vcp can be extended to handle other repositories through the use of plug-in perl modules. Currently source plug-in modules for p4 and revml, and destination plug-in modules for p4, revml, and CVS are implemented. To implement another repository as a source or destination, all that is necessary is to implement the module, appropriately name it, and store it in the appropriate source or destination subdirectory. Technical Report~LT~Gliederung 1g*<( (@'*DrXX,Plug-in Architecturegg b Technical Report~LT~GliederungDrPg>JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX,Plug-in Architecturegg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qelxV4B1WModules and ObjectsTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1 qe|JxV4B1vcp : The main script. Technical Report~LT~Gliederung 1<( (@'vcp is not a module or object, its the main script that is executed by the user. It just did not warrant its own section in this document. It parses the command line options, loads the appropriate source and destination modules and uses a VCP object to do the migration. Technical Report~LT~Gliederung 2g*<( (@' VCP : Implements the VCP object. Technical Report~LT~Gliederung 1<( (@'eThe VCP object directs the actual migration of revisions from the source to destination repositories. Technical Report~LT~Gliederung 2g*<( (@'eDrXX+Modules and Objectsgg ^ Technical Report~LT~GliederungDrPg=JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX+Modules and Objectsgg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qelxV4B1WModules and ObjectsTechnical Report~LT~Titel<( ( @'DrObSVDr& tqe`N4 Technical Report~LT~Gliederung 19 tqe`NxV4B1 VCP::Debug Technical Report~LT~Gliederung 1<( (@'@This module implements various debugging facilities used by vcp. Technical Report~LT~Gliederung 2g*<( (@'@VCP::Rev Technical Report~LT~Gliederung 1<( (@'=The VCP::Rev object encapsulates vcp's concept of a revision. Technical Report~LT~Gliederung 2g*<( (@'= VCP::Plugin Technical Report~LT~Gliederung 1<( (@'VCP::Plugin is a base class for VCP::Source and VCP::Dest objects. It encapsulates behavior common to both source and destination repositories. Technical Report~LT~Gliederung 2g*<( (@'DrXX-Modules and Objects 2gg ^ Technical Report~LT~GliederungDrPg?JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX-Modules and Objects 2gg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qelxV4B1WModules and ObjectsTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 12 qe|JxV4B1 VCP::Source Technical Report~LT~Gliederung 1<( (@'KVCP::Source is a VCP::Plugin object which represents the source repository. Technical Report~LT~Gliederung 2g*<( (@'KVCP::Source::p4 Technical Report~LT~Gliederung 1<( (@'VVCP::Source::p4 is a VCP::Source object that represents a Perforce source repository. Technical Report~LT~Gliederung 2g*<( (@'VVCP::Source::revml Technical Report~LT~Gliederung 1<( (@'VVCP::Source::revml is a VCP::Source object that represents a RevML source repository. Technical Report~LT~Gliederung 2g*<( (@'UDrXX-Modules and Objects 3gg ^ Technical Report~LT~GliederungDrPg?JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX-Modules and Objects 3gg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr&_e - Technical Report~LT~Titel_e lxV4B1WModules and ObjectsTechnical Report~LT~Titel<( ( @'DrObSVDr&  qeIN4 Technical Report~LT~Gliederung 1,  qeIN xV4B1 VCP::Dest Technical Report~LT~Gliederung 1<( (@'LVCP::Dest is a VCP::Plugin object which represents destination repositories. Technical Report~LT~Gliederung 2g*<( (@'L VCP::Dest::p4 Technical Report~LT~Gliederung 1<( (@'WVCP::Dest::p4 is a VCP::Dest object which represents a Perforce destination repository. Technical Report~LT~Gliederung 2g*<( (@'WVCP::Dest::revml Technical Report~LT~Gliederung 1<( (@'WVCP::Dest::revml is a VCP::Dest object which represents a RevML destination repository. Technical Report~LT~Gliederung 2g*<( (@'WVCP::Dest::cvs Technical Report~LT~Gliederung 1<( (@'SVCP::Dest::cvs is a VCP::Dest object which represents a CVS destination repository. Technical Report~LT~Gliederung 2g*<( (@'SDrXX-Modules and Objects 4gg Z Technical Report~LT~GliederungDrPg?JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX-Modules and Objects 4gg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qelxV4B1WModules and ObjectsTechnical Report~LT~Titel<( ( @'DrObSVDr& qeL4 Technical Report~LT~Gliederung 1' qeLxV4B1 RevML::Writer Technical Report~LT~Gliederung 1<( (@'JThe RevML::Writer object is an XML::AutoWriter that can write RevML files. Technical Report~LT~Gliederung 2g*<( (@'JRevML::Doctype Technical Report~LT~Gliederung 1<( (@'?RevML::Doctype is an XML::Doctype object that loads its DTD structure from a module in the RevML::Doctype package. It searches for a module of the form RevML::Doctype::va_b.pm, where a_b constitute a revision number of the DTD to be used. This is the module that RevML::Doctype will load to obtain the DTD structure. Technical Report~LT~Gliederung 2g*<( (@'?DrXX-Modules and Objects 5gg ^ Technical Report~LT~GliederungDrPg?JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX-Modules and Objects 5gg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& pqe-Technical Report~LT~Titel pqeuxV4B1`Modules and ObjectsTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1( qe|J xV4B1RevML::Doctype::v0_26.pm Technical Report~LT~Gliederung 1<( (@'ARevML::Doctype::v0_26.pm is version 0.26 of the RevML DTD in the form of perl structure blessed into an object. This is used instead of parsing an actual DTD file in order to save time. Parsing a DTD at each invocation would be annoyingly slow. This module is generated automagically by vcp using command line options. Technical Report~LT~Gliederung 2g*<( (@'DrXX-Modules and Objects 6gg Z Technical Report~LT~GliederungDrPg?JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3!DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX-Modules and Objects 6gg bTechnical Report~LT~GliederungDrPgUJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qeixV4B1TObject HierarchyTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1 qe|JvxV4B1S!RevML::Writer-> XML::AutoWriter Technical Report~LT~Gliederung 1<( (@' ! RevML::Doctype-> XML::Doctype Technical Report~LT~Gliederung 1<( (@' -VCP::Source::p4 ->VCP::Source->VCP::Plugin Technical Report~LT~Gliederung 1<( (@' - 0VCP::Source::revml -> VCP::Source ->VCP::Plugin Technical Report~LT~Gliederung 1<( (@' 0"#/VCP::Source::cvs ->VCP::Source-> VCP::Plugin Technical Report~LT~Gliederung 1<( (@' /  !,VCP::Dest::p4 ->VCP::Dest -> VCP::Plugin Technical Report~LT~Gliederung 1<( (@' ,-VCP::Dest::revml ->VCP::Dest ->VCP::Plugin Technical Report~LT~Gliederung 1<( (@' - .VCP::Dest::cvs -> VCP::Dest -> VCP::Plugin Technical Report~LT~Gliederung 1<( (@' . DrXX(Object Hierarchygg ^ Technical Report~LT~GliederungDrPg:JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3#DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX(Object Hierarchygg bTechnical Report~LT~GliederungDrPg]JoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qeoxV4B1ZCommand Line StructureTechnical Report~LT~Titel<( ( @'DrOb]SVDr& qe|J4 Technical Report~LT~Gliederung 1 qe|JxV4B1Evcp [vcp_opts] src[:files] [src_opts] [dest:[]] [dest_opts] Technical Report~LT~Gliederung 1<( (@',vcp p4://depot/mainbranch/...@100-105 revml: Technical Report~LT~Gliederung 1<( (@'vcp help Technical Report~LT~Gliederung 1<( (@'+vcp revml: --dtd --save-doctype Technical Report~LT~Gliederung 1<( (@'DrXX.Command Line Structuregg ^ Technical Report~LT~GliederungDrPg@JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3%DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX.Command Line Structuregg bTechnical Report~LT~GliederungDrPg(JoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qenxV4B1YCommand Line ExamplesTechnical Report~LT~Titel<( ( @'DrOb*SVDr& qe|J4 Technical Report~LT~Gliederung 1 qe|JxV4B1:vcp revml: --dtd /usr/local/vcp/revml.dtd --save-doctype Technical Report~LT~Gliederung 1<( (@' ::vcp p4://depot/projectA/thisfile.c revml:thatfile.revml Technical Report~LT~Gliederung 1<( (@' :)vcp revml:projectA/thatfile.revml p4: Technical Report~LT~Gliederung 1<( (@' )DrXX-Command Line Examplesgg ^ Technical Report~LT~GliederungDrPg?JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3'DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXX-Command Line Examplesgg bTechnical Report~LT~GliederungDrPgqJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qerxV4B1]CFD : Call For DevelopersTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1 qe|JxV4B1/We are actively seeking developers and testers. Technical Report~LT~Gliederung 1<( (@'UA few perl modules must be ported to Win32 so that vcp itself can be ported to Win32. Technical Report~LT~Gliederung 1<( (@'#vcp itself must be ported to Win32. Technical Report~LT~Gliederung 1<( (@'>SourceSafe source and destination modules must be implemented. Technical Report~LT~Gliederung 1<( (@'Other RCS' as needed/desired. Technical Report~LT~Gliederung 1<( (@'Testing and documentation. Technical Report~LT~Gliederung 1<( (@'DrXXCFDgg ^ Technical Report~LT~GliederungDrPg-JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3)DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXXCFDgg bTechnical Report~LT~GliederungDrPgJoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qerxV4B1]CFD : How To Get InvolvedTechnical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 14 qe|JxV4B1&Contact myself and/or Barrie Slaymaker Technical Report~LT~Gliederung 1<( (@'"Sean McCune Technical Report~LT~Gliederung 2<( (@'&Barrie Slaymaker Technical Report~LT~Gliederung 2<( (@'{A web-ified version of this slideshow will exist soon at http://www.sean-mccune.com/vcptalk and perhaps on Perforce's site. Technical Report~LT~Gliederung 1<( (@'DrXXCFD 2gg b Technical Report~LT~GliederungDrPg/JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3+DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXXCFD 2gg bTechnical Report~LT~GliederungDrPg`JoeM`mRDrML8DrMD,DrObSVDr& qe-Technical Report~LT~Titel qerxV4B1]Thanks for not snoring...Technical Report~LT~Titel<( ( @'DrObSVDr& qe|J4 Technical Report~LT~Gliederung 1 qe|JxxV4B1c (too loudly) Technical Report~LT~Gliederung 1<( (@'+'DrXXThanksgg b Technical Report~LT~GliederungDrPg0JoeMRtDrML8DrMD,DrOb<SVDr&?% CL3-DrObSVDr& 27fEc/Technical Report~LT~Notizen 27fEcmxV4B1XClick to add notesTechnical Report~LT~Notizen<( ( @'DrXXThanksgg bTechnical Report~LT~GliederungDrXX\Generic PrinterSGENPRT PostScriptYVT$mRVT$md,,lprdefault_queueSGENPRTPageSize:Letter DrVwP SVDr SVDr:SVDr{{SVDrALayout:SVDr{{SVDr#SVDr SVDr# SVDr0 SVDr1 SVDr3 SVDr4SVDr@SVDr SVDrD SVDrP SVDrQ DrHL DrHL DrHL WTTitleRoot Entry!r\V)䰱CompObjEOle persist elements" SfxDocumentInfo uStarBASIC BasicManager24SfxWindowsSfxStyleSheets[StandardjSummaryInformation( StarDrawDocument3$5