Well,
I had to do this, VSS to CVS conversion, so I hacked my way around it. Maybe
if someone else has more time and is more determined to do a good job of it,
they can take what I've done and make it nicer. I did this for myself, not
for general consumption.
Some of this is borrowed from vsstop4, a set of scripts written by James
Strickland to convert from VSS to perforce, a superior CM tool.
Notes:
- This is a brute force method which checks out each revision from vss and
checks it into cvs. It should be no surprise that it takes a lot of time to
run.
- VSS labels are transferred as cvs tags. Label comments are not preserved.
- This does nothing to preserve information about branching and sharing in
VSS. I ran another script to list shared files. I tried to replicate some of
the sharing using alias modules in the cvs modules file.
- Rather than do the conversion directly into my repository, I set up a
local repository. You don't have to do that, but you will need to modify the
*,v files to get the correct owner and date into the history file. You will
probably want to make sure everything works before you do it to a live
repository. I did everything in a local repository and copied it to the
server when it looked good.
scripts involved:
vss2cvs.pl - the main thing. This works by brute force, check every revision
out of vss and check it into cvs.
Usage: vss2cvs <VSSproject> [<workingdir> [<cvsroot>]]
massagecomments.pl - vss2cvs saves who checked in a revision and when by
adding it to the comment in cvs. This script takes that info out of the
comment and puts it into the metadata in the rcs *,v file.
Usage: massagecomments.pl <rcsfile>
fixrepo.cmd - calls massagecomments on all rcs *,v files in all subdirs.
Usage: fixrepo.cmd <directoryInRepository>
listshares.pl - lists shared files in a vss project.
Usage: listshares.pl <VSSproject>
Cheers,
Jerry
vss2cvs.pl
massagecomments.pl
listshares.pl
fixrepo.cmd