Table of Contents
Subversion's modular design (covered in the section called “Layered Library Design”) and the availability of language bindings (as described in the section called “Using Languages Other than C and C++”) make Subversion a likely candidate for use as an extension or backend to other pieces of software. In this appendix, we'll introduce you to some of the third-party tools that work with Subversion. We will not cover actual Subversion clients—see Appendix E, Third Party Tools for those.
There are several different converters available to turn your CVS repository into a Subversion repository. We'll mention a few here, but you should also check the list at http://subversion.tigris.org/project_faq.html#cvs2svn to see if any new ones have been added.
cvs2svn.py is a Python script that converts a CVS repository to a Subversion repository. It is under active development. It currently ships with Subversion, though it may become an independent project soon. For now, you should always run the most recent version you can, by checking out this subdirectory of the Subversion repository: http://svn.collab.net/repos/svn/trunk/tools/cvs2svn/. For more information about cvs2svn.py, read the README file in that subdirectory. As of this writing (February 2004), cvs2svn.py is not really "1.0 quality": it has successfully converted many people's repositories (including branches and tags), but for others it has either failed to complete the conversion, or converted the data in an unexpected or subtly wrong way. However, by the time you read this, the situation may have changed; check the README for updates.
Chia-liang Kao has written a converter based on VCP. The converter doesn't seem to have its own name, it's just "the Subversion plugin to VCP", but it can be checked out from http://svn.clkao.org/revml/branches/svn-perl/, with documentation at http://svn.clkao.org/revml/branches/svn-perl/lib/VCP/Dest/svn.pm. It depends on the Subversion Perl bindings as well as VCP. (For more information about VCP, see http://public.perforce.com/public/revml/index.html).
Lev Serebryakov has written a converter called RefineCVS, available from http://lev.serebryakov.spb.ru/refinecvs/. We don't have any direct experience with it.