The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

VCS::PVCS::Project - Standard PVCS Project class for for VCS::PVCS

SYNOPSIS

  use VCS::PVCS::Project;
  $project = new VCS::PVCS::Project("Project Name"); 

  $folds = $project->openFolders("SCRIPTS"); 
  foreach $folder (@$folds){
        $folder->checkout;  # Checkout all files in the folder to the WD
  }

DESCRIPTION

Inherit from VCS::PVCS::* to get all necessary methods to parse master config file, as well as the master pvcsproj.pub to learn about all projects in the PVCSROOT.

Provides methods to operate on an entire project's files all\ at once. You can checkout, checkin, get history, or use the VCS command to perform many different archive operations on all the files in the project.

METHODS

new
  new VCS::PVCS::Project("NAME", {'WKDIR' => $wdir });

Open an project in PVCS. If the project doesn't exist, an attempt is made to create it. If an VCS::PVCS object is not passed in, then the superclass routines from VCS::PVCS are called to parse ISLVINI, PVCSPROJ files, and store global information, relevant to all projects, from MASTER.CFG. Then open and parse project-specific files (pvcsfold.pub) to learn about all folders and documents within the project.

Pass the hashref with WKDIR to specify a working directory for the entire project. This method also creates the projects' control files, project.cfg, and control directory.

Returns a project object.

members
  @members = $project->members("regexp");

Return an array (or ref to array) of blessed Archive objects which match the regexp. If no regexp is passed in, then return all of the archives in the project. These objects can then call the methods in the VCS::PVCS::Archive class.

DESTROY

When the Project object goes out of scope (e.g. when the program finishes), the destroyer checks the list of archive directories which have been added to the project, and saves a new config file if appropriate.

NOTE! YOU SHOULD DISABLE THIS FEATURE IF YOU ARE USING CONDITIONAL CONFIGURATION OPTIONS IN THE PROJECT CONFIG FILES AROUND VCSDIR. THIS FEATURE MAY BE DISABLED BY TURNING ON $PVCSDONTSAVE in VCS::PVCS.pm.

newArchive
  $project->newArchive()

Create a new archive in the project. Normally, this method is called by $Folder->newArchive, but if you, for some reason, dont use PVCS folders, then you'll need to call this directly to create a new archive.

copyProject

Sorry, not copying projects in this release

deleteProject

Sorry, not deleting projects in this release

lockProject

Sorry, not locking projects in this release

get
  $Project->get([get opts]);

Checkout all of the archive members in the project to the the project's working directory, or CWD if WD is not specified in pvcsproj.pub. Use opts to change default actions.

checkout
  Convenience routine calls $Project->get()
co
  Convenience routine calls $Project->get()
put
  $Project->put([put opts]);

Checkin all of the archive members of the project from the projects' WD or CWD. Use opts to change default actions.

checkin
  Convenience routine calls put()
ci
  Convenience routine calls put()
vlog
  $Project->vlog([vlog opts]);

Takes a full vlog on all of the archive members in the project. Use opts to change default actions. Result in $PVCSOUTPUT.

log
  Convenience routine calls vlog()
history
  Convenience routine calls vlog()
lock
  $Project->lock($label|$version,[vcs opts]);

Locks the named revision (or rev spec'd by label) for all archive members in the project. Use opts to change default action.

unlock
  $Project->unlock($label|$version,[vcs opts]);

unlocks the named revision (or rev spec'd by label) for all archive members of the project. Use opts to change default action.

addVersionLabel
  $Project->addVersionLabel($label,[vcs opts]);

Create a new sticky version label for the all of the archive members of the project (optionally with :<rev>). Use opts for additonal params.

deleteVersionLabel
  $Project->deleteVersionLabel($label,[vcs opts]);

Delete a version label from all of the archive members of the project.

replaceVersionLabel
  $Project->replaceVersionLabel($newlabel,$oldlabel,[vcs opts]);

Rename a version label in all of the archive members of the project.

addFloatingVersionLabel
  $Project->addFloatingVersionLabel($label,[vcs opts]);

Create a floating version label for all of the archive members of the project.

transformVersionLabel
  $Project->transformVersionLabel($label,[vcs opts])';

Transform a specified version label to a floating version label for all of the archive members of the project.

deletePromoGroup
  $Project->deletePromoGroup($group,[vcs opts]);

Delete the promotion group from the archive for all archive members in the project.

addPromoGroup
  $Project->deletePromoGroup($group:$rev,[vcs opts])';

Add the archive, or promote it to, the named promotion group, for all of the archive members in the project.

Create a new archive

vcs
  $Project->vcs([opts][files]);

Run vcs in the project's WD, with opts.

getAttributes
  $Project->getAttributes(@_);

Populates and returns the archive object associated with the archive for all archives in the project.

This object is blessed into the VCS::PVCS::Attributes class.

AUTHOR

Bill Middleton, wjm@metronet.com

COPYRIGHT

The PVCS module is Copyright (c) 1998 Bill Middleton. All rights reserved.

You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.

SUPPORT / WARRANTY

The VCS::PVCS modules are free software.

THEY COME WITHOUT WARRANTY OF ANY KIND.

Commercial support agreements for Perl can be arranged via The Perl Clinic. See http://www.perl.co.uk/tpc for more details.

SEE ALSO

perl(1).