package VCP ; =head1 NAME VCP - Versioned Copy, copying hierarchies of versioned files =head1 SYNOPSIS =head1 DESCRIPTION This module copies hierarchies of versioned files between repositories, and between repositories and RevML (.revml) files. Stay tuned for more documentation. =head1 EXPORTS The following functions may be exported: L</debug>, L</enable_debug>, L</disable_debug>, along with the tags ':all' and ':debug'. Use the latter to head off future namespace pollution in case :all gets expanded in the future.. =head1 METHODS =over =cut use strict ; use File::Spec ; use File::Path ; use VCP::Debug ; use vars qw( $VERSION ) ; $VERSION = 0.1 ; require VCP::Source ; require VCP::Dest ; use fields ( 'SOURCE', # The VCP::Source to pull data from 'DEST', # The RevML::Writer instance ) ; =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 ( $source, $dest ) = @_ ; my VCP $self ; { no strict 'refs' ; $self = bless [ \%{"$class\::FIELDS"} ], $class ; } $self->{SOURCE} = $source ; $self->{DEST} = $dest ; return $self ; } =item dest $dest = $vcp->dest ; Gets the dest object. This object is set by passing it to new(), so there's no need to set it. =cut sub dest { my VCP $self = shift ; return $self->{DEST} ; } =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->source ; $s->dest( $self->dest ) ; $s->handle_header( $header ) ; $s->copy_revs() ; $s->handle_footer( $footer ) ; ## 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 ; } =item source $source = $vcp->source ; Gets the source object. This object is set by passing it to new(), so there's no need to set it. =cut sub source { my VCP $self = shift ; return $self->{SOURCE} ; } =head1 COPYRIGHT Copyright 2000, Perforce Software, Inc. All Rights Reserved. This will be licensed under a suitable license at a future date. Until then, you may only use this for evaluation purposes. Besides which, it's in an early alpha state, so you shouldn't depend on it anyway. =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. |