Overall conversion process ========================== 1. Fetch CVS repository: $ rsync -azH --delete anoncvs.postgresql.org::pgsql-cvs cvsroot/ You MUST install this at /cvsroot, or at least make a symlink from there, so that $Header$ keywords will match PG CVS history as closely as possible. 2. You need a version of CVS that will honor the $PostgreSQL$ RCS keywords. Stock versions of cvs 1.11.x will *not*. The CVS repository is set up for the BSD patch, which honors tag=PostgreSQL=CVSHeader in /cvsroot/CVSROOT/options. If you have a recent 1.12.x cvs release, you'll need to add this to /cvsroot/CVSROOT/config: LocalKeyword=PostgreSQL=CVSHeader Test that it is working by checking out a recent release tag and diffing against the corresponding release tarball, for example cvs -Q -d /cvsroot co -d cvsout -r REL8_4_4 pgsql find cvsout -name CVS -type d | xargs rm -rf tar xfj postgresql-8.4.4.tar.bz2 diff -r cvsout postgresql-8.4.4 3. Run the repository.fixups script. 4. Run cvs2git trunk r5270: cvs2git --options cvs2git.options (cvs2git-example.options is an unmodified copy of the upstream example config file at the version cvs2git.options is based on, for comparison.) 5. Convert to a git repository with git fast-import, for example mkdir git && cd git && git init . cat ../cvs2svn-tmp/git-blob.dat ../cvs2svn-tmp/git-dump.dat | git fast-import git reset --hard cd .. rm -rf cvs2svn-tmp