There are quite a number of tools to convert a CVS repository to a Git repository out there. However, most of them don’t seem to be able to copy over the branches properly. A work around is to convert it to Mercurial first, then convert it to Git.
In this example I’m using a repository called RedDog.
First, we need to get Mercurial on the system.
yum install mercurial
Next we need to add the convert extension to the .hrc file. This might be a global file, or might be in your home directory, can’t quite remember.
[extensions] hgext.convert=
Check out from CVS and convert to Mercurial.
cvs checkout RedDog hg convert RedDog
This will create a Mercurial repository called RedDog-hg. Now we need to get hold of Fast Export.
git clone git://repo.or.cz/fast-export.git
Once we have the software we can initialise a new Git repository that we’re going to use and then CD into the folder.
git init RedDog-git cd RedDog-git
Run the Fast Export tool, specifying the location of the Mercurial repository.
../fast-export/hg-fast-export.sh -r ../RedDog-hg
This will migrate everything into your new Git repository. If you run an ls -a you should see the .git folder, which you may want to rename to RedDog.git (something.git locations are actually just .git directories).
You may optionally also want to do a check out into that folder.
git checkout HEAD
However, you don’t have to – you can begin using it remotely without doing a local checkout.
Don't have time to check my blog? Get a weekly email with all the new posts. This is my personal blog, so obviously it is 100% spam free.
Tags: centos, cvs, git, mercurial, version control
This entry was posted on Thursday, August 30th, 2012 at 12:00 pm and is filed under Life, Tech. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.