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 an SVN dumpfile, * loading the dumpfile into an 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) and Karl Fogel (kfogel@collab.net). The script works reasonably well, with two big caveats: - it doesn't do branches or tags 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. The RCS home page is http://www.cs.purdue.edu/homes/trinkle/RCS/. - 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. - 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.