README for vcp - Version CoPy vcp (and the Perl module VCP.pm) is a system for copying resources under version control between repositories. CVS, p4 and VSS repositories are currently supported. vcp can filter, rearrange repositories, and alter metadata during a transfer. These capabilities are used to handle conversion details like different branching models and legal character sets between various repositories. VCP Status ---------- This code is in late beta state. It current supports CVS, Perforce's p4, VSS and miscellaneous developer-only sources and destinations. It currently runs on Unix-like and Windows-like platforms. vcp is known to moderately complex repositories back and forth between all sources and destinations like CVS, p4, and VSS and there is a third-party Subversion destination driver available (we'd integrate and support that, but there needs to be a source driver for balance). Please direct all questions and issues to revml@perforce.com if possible, or to barries@perforce.com if privacy is required. Many thanks! VCP does handle branch creation, though not repeated integrations between files (a Perforce p4 feature). VSS Issues ---------- We do expect various issues with VSS source and destination repositories due to the, um, freedom that VSS allows its users. There are ways to "paint yourself in to a corner" in VSS using recommended best practices like sharing and pinning. VSS also has also accumulated a large base of anecdotal evidence (see google) having to do with corruption and we've found that much corruption isn't noticed until VCP is used to try to read every revision in a repository. For best results, run the VSS repair utilities until no errors are reported, upgrade to the most recent VSS and re-run the repair utilities for the new version (just to be sure). COPYRIGHT & LICENSE Development of this utility is partially funded by Perforce. All software so funded is Copyright 2004, Perforce Software, Inc, and licensed according to the file LICENSE distributed with this package. Contributed portions not assigned to Perforce are Copyright to their respective creators. Such contributed code is clearly marked and in the source code. INSTALLATION For end users, the easiest approach is to use one of the prebuilt releases such as "vcp.exe", "vcp-rh8", "vcp-solaris", etc. Developers should see the INSTALL file for more information. REQUIREMENTS If you want to use the p4 I/O features, v99.2 or later is required (vcp uses the filelog -m option). Not sure about cvs or VSS versions. THINGS TO READ The vcp program carries it's own documentation in it. The main program documentation can be read by doing a vcp help or perldoc path/to/vcp . If you are going source spelunking, a reasonable reading list might be: bin/vcp VCP VCP::Plugin VCP::Source VCP::Dest VCP::Rev VCP::Revs VCP::Source::* VCP::Dest::* revml.dtd RevML::Doctype You may browse the source in Perforce's online source repository starting at http://public.perforce.com/public/index.html I'll update this file with better links when I get the project checked in. SUPPORT 1. Please read the documentation. It's not as good as it will be, but it'll keep you from distracting the author(s) with trivial questions when they should be working on debugging and features. 2. Where the documentation is lacking, get us to clarify it. 3. Send all queries, gripes, and kudos to revml@perforce.com . Please feel free to join the list by sending a message to revml-subscribe@perforce.com or by typing & clicking away at http://maillist.perforce.com/mailman/listinfo/revml CONTRIBUTING Lots of work can be done at all levels. We'd love to have you help! Some areas we need help in are: 1) Bug fixes, extensions There are bugs to squash and minor features to add. You'll know them when you trip over them :-). Feel free to brainstorm on-list. The recommended way to submit a patch is to use diff -Naur old_root/ new_root/ and send the patch to the list in the body of the message or as a plain text (ie non-uuencoded) attachment. PLEASE don't cut and paste patches in your GUI, that screws up whitespace and sometimes worse. Please try to patch the most recent version in the repository, but don't feel that you have to. 2) Drivers, drivers, drivers We really need drivers for lots of other RCSs. Most notable are SourceSafe, SCCS, and bitkeeper. No drivers that are fairly functional will be turned down, though you should ask on-list if anyone's working on one so you can combine efforts if possible and avoid duplicated/wasted effort. 3) Major features The most major feature on the TODO list is branching. It's still on the TODO list because it's hard to map between the various branching metaphors, or other metaphors (like bitkeeper's LODs) out there. 4) Other uses for RevML RevML is not just for vcp. It's a farily generic doctype that should be useful for other things. Feel free to find other uses for it. Many thanks, Barrie Slaymaker