After running into multiple problems while trying to setup cvs2svn conversion scripts to test on my local windows machine I decided to create a guide to help anyone who is going down this path.

Step 1. Download/Extract Scripts
First you will need to get the actual scripts that do the conversion process.

Download the cvs2svn scripts: http://cvs2svn.tigris.org/

Extract the cvs2svn directory to wherever you want it. e.g C:\cvs2svn-2.3.0

Step 2. Download/Install Python

The cvs2svn scripts are written in Python so you will need to install Python to run them.

Download Python (check which version is required by cvs2svn, at time of writing v3 wasn't supported):
http://www.python.org/download/windows/

Install Python.

Add the Python root directory to your PATH (e.g C:\Python27). Then open command prompt and make sure it is working by typing 'python'

Step 3. Download/Extract Unix Utils

The cvs2svn scripts require the Unix sort tool to run, the easiest way to get around this on Windows, is to use the unxutils tools.

Download GNU sort for windows: http://sourceforge.net/projects/unxutils/

Extract the utils e.g to C:\unix-utils\

Step 4. Download/Install Subversion

There are a number of Subversion packages for Windows, I used Slik SVN.

Download Subversion: http://subversion.apache.org/packages.html

Install Subversion.

Note for Slik SVN: Make sure you select custom setup and select SvnServe (this installs the svn server).

When install has finished open command prompt and make sure svn is working by typing 'svn'

Step 5. Do the CVS to SVN conversion

Create a new directory for your svn repo e.g C:\svn-repo

To create the SVN repository go to the command line and type ‘svnadmin create c:\svn-repo\repo’

Finally to run the conversion scripts go to the wbin dirctory of the GNU utils (e.g C:\unix-utils\usr\local\wbin) and type 'python C:\cvs2svn-2.3.0\cvs2svn -s c:\svn-repo\repo --existing-svnrepos c:\data\cvs_repo\repo\TestApp'

Note: If you get the error ‘ERROR: Command failed with return code 1: "sort -T cvs2svn-tmp cvs2svn-tmp\revs-summary.txt"’ this is because you did not run the script inside the GNU utils wbin directory.

Next you will need to start-up svnserve so you can connect to your new repository. You can setup svnserve to run as a windows service but for the sack of simplicity for this tutorial we will just run it as a deamon. To run svn server as a daemon type 'svnserve -d'into the command prompt.

Step 6. Accessing your new SVN repository

Install the Subclipse plugin for your version of Eclipse http://subclipse.tigris.org/

Connect to the repo e.g. svn://localhost/svn-repo/repo

Note: On Windows Vista/7 if you get the error ‘No connection could be made because the target machine actively refused it’ when trying to connect to your Subversion repository you need to start svnserve with the parameter --listen-host 0.0.0.0 this has something to do with IPv6.

How can I convert project foo so that trunk/tags/branches are inside of foo?

This is useful when you want to create an SVN repository that has multiple projects inside it.

If foo is the project that you want to convert, then run cvs2svn like this:

Python C:\cvs2svn-2.3.0\cvs2svn -s c:\svn-repo\repo --existing-svnrepos --trunk=foo/trunk --branches=foo/branches --tags=foo/tags c:\data\cvs_repo\repo\foo'