This is a python script which converts a CVS repository to an SVN Repository. It works by: * using the rcsparse/ module to directly read the CVS repository and deduce commits, * creating a bunch of temporary scratchwork on disk, * replaying all of the commits into a new SVN repository. Most of the script was written by Greg Stein (gstein@lyra.org) and Daniel Berlin (dberlin@dberlin.org), with tweaks from Marko Macek (Marko.Macek@gmx.net). ** The script works reasonably well, with two big caveats: - it doesn't do branches or tags very well yet - there may be tiny bugs in the way it deduces CVS commits. That said, the script has been used on straightforward CVS repositories with no real problems. As an example, the whole first year of Subversion's own history was converted from CVS into a 3000+ revision svn repository. It took about 30 minutes. ** To use this script: - Install RCS. cvs2svn uses the "co" command. - Get at least python 2.0. - Make sure you have GNU 'sort' installed, or some other sort program that handles large files other than by reading them entirely into memory. - Install the python swig bindings, so that python can directly invoke libsvn_fs routines. See the INSTALL file in subversion/bindings/swig/. - If you're not running cvs2svn.py from this directory, then make sure to install the rcsparse/ tree somewhere where Python can find it. Note that it's a CVS working copy, so we can update it easily :-). Except for `compat.py', that comes from viewcvs/lib/compat.py. Rcsparse is currently part of ViewCVS, see http://viewcvs.sourceforge.net/. Someday rcsparse will be an independent Python project, and then we can depend on it in a more normal way.