Converting from other SCM formats to Mercurial

See http://www.darcs.net/DarcsWiki/Tailor for a tool that handles several popular formats.

Example Tailor conversion from CVS

Things to know:

 mkdir /path/to/hg/repo
 cd /path/to/hg/repo
 tailor.py -D -v --source-kind cvs --target-kind hg --bootstrap --repository $REP --module MODULENAME -r INITIAL
 tailor.py -D -v

When this is done, you should have a working Mercurial repository that matches the trunk of the CVS archive you have been using. The --repository option gets passed to CVS via the -d option, so anything that works for $CVSROOT will for for --repository.

Be aware that the last stage of this script will take a long time to run. Also, local access to the CVS repository instead of remote access may make it significantly faster.

==== Tailor 1.0

Hopefully latest tailor is much more easy to understand. See http://nautilus.homeip.net/~lele/projects/tailor/README.html#config-file-format where the second example shows a configuration sample involving CVS and Mercurial respectively as source and target backends. See also http://www.darcs.net/DarcsWiki/Tailor/VersionOne for a trace back of the changes.

From Arch 1.x/baz 1.5 to Mercurial

SamTardieu wrote a script to convert from Arch 1.0 archive format and I enhanced it to write full changelog instead of just the summary. You can find it on http://archives.keltia.net/hg/hg-convert. You need baz 1.5 because the option to get the full changelog is different in 1.4 and more important, the format of the changelog is different. -- OllivierRobert

Other options

Also take a look at contrib/convert-repo. This is an extensible framework for converting between repository types that is currently used for git to Mercurial conversion.

/hg.py there seems to not use hg addremove/ -- DanConnolly /it seems to now as of 2005.8.17/ -- MichaelKJohnson