(see RepositoryConversion for other possibilities)

Fast (incremental) cvs->* conversion

If you have the cvsroot locally available (i.e. you can read the rcs,v files), you can use ["corecode"]'s fast repo syncer [http://ww2.fs.ei.tum.de/~corecode/hg/fromcvs fromcvs].

Fromcvs is designed to sync to different target SCM; at the moment there is a hg and git destination available. Fromcvs does convert all CVS branches (including vendor branches) as well.

For fromcvs you'll need the [http://ww2.fs.ei.tum.de/~corecode/hg/rcsparse rcsparse] module, ruby and [http://www.geocities.co.jp/SiliconValley-PaloAlto/3388/rbtree/README.html ruby-rbtree]. A good way to InstallRbtree is to use gem.

To get it going, do something like this:

# install rcsparse
cd rcsparse
ruby extconf.rb
make && make install

# install ruby-rbtree likewise...

# IMPORTANT:  Use a utf8 locale, or mercurial will abort on
# non-ASCII characters, as these are converted to utf8 by fromcvs!
export LANG=en_US.UTF-8
cd fromcvs
hg init /path/to/hgdest
ruby tohg.rb /path/to/cvsroot modulename /path/to/hgdest

fromcvs operates incrementally, which means that you can run it later again to incorporate new changes from CVS.

-- ["corecode"]

A nice [http://wiki.dragonflybsd.org/index.cgi/HowToFromcvs how-to] for fromcvs is available.