vcp - Copy versions of files between repositories and/or RevML
vcp [vcp_opts] src[:files] [src_opts] [dest:[<location>]] [dest_opts] vcp cvs:/mymodule/... -r 1.1: p4://depot/mymodule vcp p4://depot/mainbranch/...@100-105 revml: vcp help vcp revml: --dtd <foo.dtd> --save_dtd
Alpha code. Please report bugs to revml@perforce.com.
vcp ('version copy') copies versions and version ranges of files from one repository to another, translating as much as possible along the way.
This allows you to copy and translate ranges of revisions of files between different vendors' revision storage systems.
Inputs and output classes currently available are:
Class Source Destination cvs x x p4 x x revml x x
The general syntax of the vcp command line is:
vcp [vcp_opts] <source> [src_opts] <dest> [dest_opts]
where <source> and <dest> are composed of fields separated by delimiters like so:
<source>
<dest>
scheme:user(view):password@server:filespec
where
scheme is a repository type ('p4', 'cvs', 'revml'), or special command ('help', 'save_dtd'). user, view, and password are optional values, one or more of which may be required for repository access. CVS does not use (view). For p4, (view) is the client setting (P4CLIENT or -c option). server is the repository spec, CVSROOT for CVS or P4PORT for p4. filespec is the file specification for the files to move. As much as possible, this spec is similar to the native filespecs used by the repository indicated by the scheme.
Most <source> and <dest> specs will omit one or more of the fields. For instance, Filespecs or passwords are often omitted from the destination, in which case the leading colons for these fields are also optional. If no user, view, or password is supplied, the "@" is optional.
That's a bit confusing, here are some examples of stripped-down specs:
cvs:server:/foo p4:user@server://depot/foo/... p4:user:password@public.perforce.com:1666://depot/foo/...
Options and formats for of individual schemes can be found in the relevant manpages:
VCP::Source::cvs, VCP::Source::p4, VCP::Source::revml, VCP::Dest::cvs, VCP::Dest::p4, VCP::Dest::revml.
At some point, the help command will be extended to be able to display them.
All general options to vcp must precede the first scheme. Scheme-specific options must come after the affected source or destination spec and before the next one.
Enables display of debugging information. A debug spec is part or all of a module name like Source::revml or a perl5 regular expression to match module names. Debug specs are not case insensitively.
Source::revml
The most general, show-me-everything debug option is:
-d ".*"
The quotations are needed to slip the ".*" past most command shells.
Any debug specs that don't match anything during a run are printed out when vcp exits in order to help identify mispelled patterns. vcp will also list all of the internal names that didn't match during a run to give clues as to what specs might be useful.
The special name 'what' is guaranteed to not match anything, so you can do
vcp -d what ...
to see the list of names that might be useful for the arguments '...' .
You may use multiple -d options or provide a comma separated list to enable debugging within that module. Do not start a pattern with a "-".
-d
Debugging messages are emitted to stderr. See "VCPDEBUG" for how to specify debug options in the environment.
These are all equivalent to vcp help.
vcp help
There are two special schemes, "help" and "save_dtd".
Displays the full help text. This will be extended to allow the retrieval of all of the manpages provided with VCP.
This is primarily for vcp maintainers.
Outputs the DTD to stdout if <how> is -, or to a file named like v1_000.pm if <how> looks like a version number, or in a module named after <how> if <how> contains '::'. This file is placed in ./lib/RevML/DTD or ./RevML/DTD or ./, whichever is found first. No directories will be created.
-
The environment is often used to set context for the source and destination by way of variables like P4USER, P4CLIENT, CVSROOT, etc.
There is also one environment variable that is used to enable command line debugging. The VCPDEBUG variable acts just like a leading "-d=$VCPDEBUG" was present on the command line.
VCPDEBUG=main,p4
(see "--debug, -d" for more info). This is useful when VCP is embedded in another application, like a makefile or a test suite.
Barrie Slaymaker <barries@slaysys.com>
This program is licensed under the provisions of the BSD license:
Copyright (c) 2000, 2001, Perforce Software, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Perforce Software, Inc.nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This notice is also included in the LICENSE file accompanying this distribution, which also must be retained in redistributions.
To install VCP, copy and paste the appropriate command in to your terminal.
cpanm
cpanm VCP
CPAN shell
perl -MCPAN -e shell install VCP
For more information on module installation, please visit the detailed CPAN module installation guide.