cvscvt is a fast CVS/RCS to git and svn converter.
git init ports.git
cvscvt -e FreeBSD.org -k FreeBSD ports/ | GIT_DIR=ports.git/.git git fast-import
This converts FreeBSD's ports repository into a git repository. For this repository (about 230,000 files, 1,350,000 file revisions grouped into 270,000 change sets, 1,500 tags) the conversion takes about 15 minutes on an AMD Phenom II with 3 GHz and a HDD with 5,400 rpm. On the same machine cvs2git (part of cvs2svn) takes about 6.5 hours.
-e FreeBSD.org instructs cvscvt to append the given domain to the CVS author names to form email addresses. So the author beat becomes beat <beat@FreeBSD.org>.
-k FreeBSD triggers un-expansion of the given additional keyword. E.g. the line $FreeBSD: ports/UPDATING,v 1.1 2004/03/01 22:34:22 kris Exp $ stored in a revision gets converted to $FreeBSD$. All RCS keywords ($Id$, …) get unexpanded by default, which can be disabled with -K.
Documentation of all options is given in the manual page.
You can get the source from the Git repository.
Currently only trunk and its tags are converted. Branches, in particular vendor branches, are not converted, yet.