package VCP ;
=head1 NAME
VCP - Versioned Copy, copying hierarchies of versioned files
=head1 SYNOPSIS
see the vcp command line.
=head1 DESCRIPTION
This module copies hierarchies of versioned files between repositories, and
between repositories and RevML (.revml) files.
Stay tuned for more documentation.
=head1 METHODS
=over
=for test_scripts t/10vcp.t t/50revml.t
=cut
$VERSION = 0.1 ;
use strict ;
use VCP::Logger qw( lg );
require VCP::Source ;
require VCP::Dest ;
use fields (
'PLUGINS', # The VCP::Source to pull data from
) ;
=item new
$ex = VCP->new( $source, $dest ) ;
where
$source is an instance of VCP::Source
$dest is an instance of VCP::Dest
=cut
sub new {
my $class = shift ;
$class = ref $class || $class;
my VCP $self = do {
no strict 'refs' ;
bless [ \%{"$class\::FIELDS"} ], $class;
};
my $w = length $#_;
for ( my $i = 0; $i <= $#_; ++$i ) {
lg sprintf "plugin %${w}d is %s", $i, ref $_[$i];
}
$self->{PLUGINS} = [ @_ ];
unless ( grep $_->is_sort_filter, @{$self->{PLUGINS}} ) {
lg "inserting default ChangeSets filter";
require VCP::Filter::changesets;
splice @{$self->{PLUGINS}}, 1, 0,
VCP::Filter::changesets->new;
}
{
my $dest = $self->{PLUGINS}->[-1];
for ( reverse @{$self->{PLUGINS}}[0..$#{$self->{PLUGINS}} -1] ) {
$_->dest( $dest );
$dest = $_;
}
}
return $self ;
}
=item copy_all
$vcp->copy_all( $header, $footer ) ;
Calls $source->handle_header, $source->copy_revs, and $source->handle_footer.
=cut
sub copy_all {
my VCP $self = shift ;
my ( $header, $footer ) = @_ ;
my VCP::Source $s = $self->{PLUGINS}->[0];
my $ok = eval {
$s->handle_header( $header ) ;
$s->copy_revs() ;
$s->handle_footer( $footer ) ;
1;
};
if ( ! $ok ) {
my $x = $@;
VCP::Logger::_interrupt_progress();
die $x;
}
## Removing this link allows the dest to be cleaned up earlier by perl,
## which keeps VCP::Rev from complaining about undeleted revs.
$s->dest( undef ) ;
return ;
}
=back
=head1 COPYRIGHT
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
L<vcp>.
=head1 AUTHOR
Barrie Slaymaker <barries@slaysys.com>
=cut
1
| # | Change | User | Description | Committed | |
|---|---|---|---|---|---|
| #19 | 4232 | Barrie Slaymaker | - bin/vcp now prints a version info banner | ||
| #18 | 4231 | Barrie Slaymaker | - See if the $Date:$ keyword updates | ||
| #17 | 4230 | Barrie Slaymaker | - VCP.pm now tracks its $CHANGE_ID | ||
| #16 | 4077 | Barrie Slaymaker |
- VCP on Win32 no longer whines about permission denied errors for some disk file cleanup tasks. |
||
| #15 | 4021 | Barrie Slaymaker |
- Remove all phashes and all base & fields pragmas - Work around SWASHGET error |
||
| #14 | 4012 | Barrie Slaymaker | - Remove dependance on pseudohashes (deprecated Perl feature) | ||
| #13 | 3929 | Barrie Slaymaker | - Minor debugging aid | ||
| #12 | 3916 | Barrie Slaymaker | - Reduce memory consumption | ||
| #11 | 3912 | Barrie Slaymaker | - ChangeSets goes on the end of the filters, not the beginning | ||
| #10 | 3858 | Barrie Slaymaker | - Final tweaks for 0.5 release | ||
| #9 | 3855 | Barrie Slaymaker |
- vcp scan, filter, transfer basically functional - Need more work in re: storage format, etc, but functional |
||
| #8 | 3824 | Barrie Slaymaker |
- Better display of errors that occur while a progress bar is displayed |
||
| #7 | 3155 | Barrie Slaymaker |
Convert to logging using VCP::Logger to reduce stdout/err spew. Simplify & speed up debugging quite a bit. Provide more verbose information in logs. Print to STDERR progress reports to keep users from wondering what's going on. Breaks test; halfway through upgrading run3() to an inline function for speed and for VCP specific features. |
||
| #6 | 3120 | Barrie Slaymaker | Move changeset aggregation in to its own filter. | ||
| #5 | 2301 | Barrie Slaymaker | A chain of plugins instead of source & dest | ||
| #4 | 2293 | Barrie Slaymaker | Update CHANGES, TODO, improve .vcp files, add --init-cvs | ||
| #3 | 628 | Barrie Slaymaker | Cleaned up POD in bin/vcp, added BSD-style license. | ||
| #2 | 468 | Barrie Slaymaker |
- VCP::Dest::p4 now does change number aggregation based on the comment field changing or whenever a new revision of a file with unsubmitted changes shows up on the input stream. Since revisions of files are normally sorted in time order, this should work in a number of cases. I'm sure we'll need to generalize it, perhaps with a time thresholding function. - t/90cvs.t now tests cvs->p4 replication. - VCP::Dest::p4 now doesn't try to `p4 submit` when no changes are pending. - VCP::Rev now prevents the same label from being applied twice to a revision. This was occuring because the "r_1"-style label that gets added to a target revision by VCP::Dest::p4 could duplicate a label "r_1" that happened to already be on a revision. - Added t/00rev.t, the beginnings of a test suite for VCP::Rev. - Tweaked bin/gentrevml to comment revisions with their change number instead of using a unique comment for every revision for non-p4 t/test-*-in-0.revml files. This was necessary to test cvs->p4 functionality. |
||
| #1 | 467 | Barrie Slaymaker | Version 0.01, initial checkin in perforce public depot. |