Converting a Repository from CVS to Subversion
Perhaps the most important way to familiarize CVS users with
Subversion is to let them continue to work on their projects
using the new system. And while that can be somewhat
accomplished using a flat import into a Subversion repository of
an exported CVS repository, the more thorough solution involves
transferring not just the latest snapshot of their data, but all
the history behind it as well, from one system to another. This
is an extremely difficult problem to solve that involves
deducing changesets in the absence of atomicity, and translating
between the systems' completely orthogonal branching policies,
among other complications. Still, there are a handful of tools
claiming to at least partially support the ability to convert
existing CVS repositories into Subversion ones.
One such tool is cvs2svn
(
https://cvs2svn.tigris.org/), a Python script
originally created by members of Subversion's own development
community. Others include Lev Serebryakov's RefineCVS
(
https://lev.serebryakov.spb.ru/refinecvs/).
These tools have various levels of completeness, and may make
entirely different decisions about how to handle your CVS
repository history. Whichever tool you decide to use, be sure
to perform as much verification as you can stand on the
conversion results—after all, you've worked hard to build
that history!
For an updated collection of links to known converter tools,
visit the Links page of the Subversion website
(
https://subversion.tigris.org/project_links.html).