blob: 43c0d0c68cde4559b7c070c2bd5e75f0536db91e [file] [log] [blame]
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.