Author image Barrie Slaymaker


VCP::Source::revml - Outputs versioned files to a revml file


   vcp revml[:<source>]
   vcp revml[:<source>] --dtd <dtd>

Where <source> is a filename for input; or missing or '-' for STDIN.

To compile a DTD in to a perl module:

   revml: --dtd <dtd> --save-doctype


This reads a revml file and reconstitutes every revision of every file fond therein on the disk and then submits them to the destination.

This can require a huge amount of disk space, but it works. Disk usage can be optimised later by only reconstituting the files two revisions at a time (the previous revision is needed to generate the current one) as the revs are submitted to the destination after they are sorted (by the dest).

When that happens, we need to bear in mind that the revml file will be in the default sort order defined by VCP::Dest and this may be changed by other destinations, particularly the change set oriented ones like p4. As an example, imagine the following process:

   cvs -> vcp -> foo.revml -> vcp -> p4

There is some chance that VCP::Dest::p4 will want to reorder the revisions in foo.revml in order to attemp change set aggregation. This means that it may ask for the revs in a different order than they are found in the file. Since the default sort order *should* put the foo.revml file in (roughly) change set order. This is a bad example, I guess, but hey, just watch out when optimizing for disk space.



Creates a new instance. The only parameter is '-dtd', which overrides the default DTD found by searching for modules matching RevML::DTD:v*.pm.

Attempts to open the input file if one is specified.

If the option '--save-doctype' is passed, then no copying of resources is done (queue_all returns nothing to copy) and the doctype is saved as a .pm file. See RevML::Doctype for details.


Copyright 2000, Perforce Software, Inc. All Rights Reserved.

This module and the VCP package are licensed according to the terms given in the file LICENSE accompanying this distribution, a copy of which is included in vcp.


Barrie Slaymaker <>