Author image Barrie Slaymaker


VCP::Rev - VCP's concept of a revision





Creates an instance, see subclasses for options.

   my VCP::Rev $rev = VCP::Rev->new(
      name => 'foo',
      time => $commit_time,
   ) ;

Returns TRUE if this is a base revision. This is the case if no action is defined. A base revision is a revision that is being transferred merely to check it's contents against the destination repository's contents. It's usually a digest and the actual bosy of the revision is 'backfilled' from the destination repository and checked against the digest. This cuts down on transfer size, since the full body of the file never need be sent with incremental updates.

See "backfill" in VCP::Dest as well.

work_path, dest_work_path

These set/get the name of the working file for sources and destinations, respectively. These files are automatically cleaned up when all VCP::Rev instances that refer to them are DESTROYED or have their work_path or dest_work_path set to other files or undef.

   $r->labels( @labels ) ;
   @labels = $r->labels ;

Sets/gets labels associated with a revision. If a label is applied multiple times, it will only be returned once. This feature means that the automatic label generation code for r_... revision and ch_... change labels won't add additional copies of labels that were already applied to this revision in the source repository.

Returns labels in an unpredictible order, which happens to be sorted for now. This sorting is purely for logging purposes and may disappear at any moment.

  $r->add_label( $label ) ;
  $r->add_label( @labels ) ;

Marks one or more labels as being associated with this revision of a file.


This class uses the fields pragma, so you'll need to use base and possibly fields in any subclasses.


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 <>