1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
package VCS::Cvs::File;
@ISA = qw(VCS::Cvs VCS::File);
use VCS::Cvs;
use Carp;
use File::Basename;
use strict;
sub new {
my ($class, $url) = @_;
my $self = $class->init($url);
my $path = $self->path;
die "$class->new: $path: $!\n" unless -f $path;
die "$class->new: $path not in a CVS directory: $!\n"
unless -d dirname($path) . '/CVS';
die "$class->new: $path failed to split log\n"
unless $self->_split_log;
$self;
}
# evil assumption - no query strings on URL!
sub versions {
my($self, $lastflag) = @_;
my @rq_version = @_;
my ($header, @log_revs) = $self->_split_log;
my $header_info = $self->_parse_log_header($header);
my $last_rev = $header_info->{'head'};
my ($rev_head, $rev_tail) = ($last_rev =~ /(.*)\.(\d+)$/);
return VCS::Cvs::Version->new("$self->{URL}/$rev_head.$rev_tail")
if defined $lastflag;
map {
VCS::Cvs::Version->new("$self->{URL}/$rev_head.$_")
} (1..$rev_tail);
}
sub tags {
my $self = shift;
my ($header, $log) = $self->_split_log($self->{VERSION});
my $header_info = $self->_parse_log_header($header);
my $tags_hash = {};
my $tag_text = $header_info->{'symbolic names'};
$tag_text =~ s#^\s+##gm;
map {
my ($tag, $rev) = split /:\s*/;
$tags_hash->{$tag}=$rev;
} split /\n/, $tag_text;
return $tags_hash;
}
sub tags_hash {
my $self = shift;
my ($header, $log) = $self->_split_log($self->{VERSION});
my $header_info = $self->_parse_log_header($header);
my $tags_hash = {};
my $tag_text = $header_info->{'symbolic names'};
$tag_text =~ s#^\s+##gm;
map {
my ($tag, $rev) = split /:\s*/;
$tags_hash->{$tag}=$rev;
} split /\n/, $tag_text;
return $tags_hash;
}
sub tags_array {
my $self = shift;
my ($header, $log) = $self->_split_log($self->{VERSION});
my $header_info = $self->_parse_log_header($header);
my $tags_hash = {};
my $tag_text = $header_info->{'symbolic names'};
$tag_text =~ s#^\s+##gm;
my @tag_array;
map {
my ($tag, $rev) = split /:\s*/;
push (@tag_array,$tag);
} split /\n/, $tag_text;
return \@tag_array;
}
1;
|