VCS::PVCS::Attributes - Attributes class for for VCS::PVCS


VCS_PVCS documentation Contained in the VCS_PVCS distribution.

Index


Code Index:

NAME

Top

VCS::PVCS::Attributes - Attributes class for for VCS::PVCS

SYNOPSIS

Top

  use VCS::PVCS::Project;

  $proj = new VCS::PVCS::Project("ProjectName");

  $members = $proj->members(".*");

  foreach $f (@$members){
    $attrs = $f->getAttributes();
    print $attrs->Archive; # Archive name
    print $attrs->Workfile; # Workfile name
    print $attrs->Owner; # Owner of archive
    print $attrs->Archive_created; # Date archive created
    print $attrs->Last_trunk_rev; # Most recent trunk rev
    print $attrs->Locks; # current locks on all versions
    print $attrs->Groups; # current groups assoc with this archive
    print $attrs->Rev_count; # number of revisions
    print $attrs->Attributes; # attributes
    print $attrs->Version_labels; # version labels on this archive
    print $attrs->Description;  # checkin description
    print $attrs->history;      # history and comments

  }

DESCRIPTION

Top

This class is intended for use as an companion to the VCS::PVCS::* classes. The Archive objects inherits Attribute methods, and augment them.

METHODS

Top

getAttributes
  print $attrs->getAttributes(1);

repopulate the attibutes object

Archive
  print $attrs->Archive; # Archive name

Workfile
  print $attrs->Workfile; # Workfile name

Owner
  print $attrs->Owner; # Owner of archive

Archive_created
  print $attrs->Archive_created; # Date archive created

Last_trunk_rev
  print $attrs->Last_trunk_rev; # Most recent trunk rev

Locks
  print $attrs->Locks; # current locks on all versions

Groups
  print $attrs->Groups; # current groups assoc with this archive

Rev_count
  print $attrs->Rev_count; # number of revisions

Attributes
  print $attrs->Attributes; # attributes

Version_labels
  print $attrs->Version_labels; # version labels on this archive

Description
  print $attrs->Description;  # checkin description

history
  print $attrs->history;      # history and comments

COPYRIGHT

Top

AUTHOR

Top

Bill Middleton, wjm@metronet.com

SUPPORT / WARRANTY

Top

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

Top

VCS::PVCS::Project


VCS_PVCS documentation Contained in the VCS_PVCS distribution.

# Attributes.pm - attribute class for Perl PVCS module
#
# Copyright (c) 1998  Bill Middleton
#
#


package VCS::PVCS::Attributes;
use strict;
use Carp;
require Exporter;
use VCS::PVCS;
use vars qw($VERSION %EXPORT_TAGS @EXPORT_OK @ISA $AUTOLOAD);
$VERSION = "0.01";
@ISA = qw(Exporter );

sub getAttributes{
my($self) = shift;
my($arpath) = $self->archive();
my($attrs) = {};
my($force) = shift;

($^O ne "MSWin32") and translatePath2Unix(\$arpath);

if((ref($self->{'Attributes'}) !~ /VCS::PVCS::Attributes/) or $force){
    VCS::PVCS::Commands::vlog("-I -Q", $arpath);
}
else{
    return $self->{'Attributes'};
}

if($PVCSERR){
    warn $PVCSOUTPUT;
    $PVCSOUTPUT = "";
    return undef;
}

my(@log)= split(/-----------------------------------/,$PVCSOUTPUT);

$log[0] =~ m/Archive:\s*(.*)[\r?\n]Workfile:\s*(.*)[\r?\n]Archive created:\s*(.*)[\r?\n]Owner:\s*(.*)[\r?\n]Last trunk rev:\s*(.*)[\r?\n]Locks:\s*(.*)[\r?\n]Groups:\s*(.*)[\r?\n]Rev count:\s*(.*)[\r?\n]Attributes:\s*(.*)[\r?\n]Version labels:\s*(.*)[\r?\n]Description:\s*(.*)[\r?\n]/s;

$attrs = {
"Archive" => $1,
"Workfile" => $2,
"Archive_created" => $3,
"Owner" => $4, 
"Last_trunk_rev" => $5,
"Locks" => $6,
"Groups" => $7,
"Rev_count" => $8,
"Attributes" => $9,
"Version_labels" => $10,
"Description" => $11
};

#for($i=1;$i<$#log;$i++){
#$log[$i] =~ m/Rev\s+(\d+\.\d+)[\r?\n]Checked in:\s+(.*)[\r?\n]Last modified:\s+(.*)[\r?\n]Author id:\s+(.*)\s+lines deleted\/added\/moved:\s+(\d+\/\d+\/\d+)\s*[\r?\n](.*)/s;
#print "$1 $2 $3 $4 $5 $6\n"
#}

$attrs->{'History'} = join('-' x 35,@log[1 .. $#log]);

bless($attrs,"VCS::PVCS::Attributes");
$self->{'Attributes'} = $attrs;
$PVCSOUTPUT = "";
return $attrs;
}

sub AUTOLOAD{
my($self) = shift;
return undef unless ref($self);
my($method) = $AUTOLOAD;

$method =~ s/.*:://;

if(defined $self->{$method}){
    return $self->{$method};
}

}

1;
__END__