Differences between revisions 37 and 54 (spanning 17 versions)
Revision 37 as of 2007-07-20 03:45:24
Size: 3559
Editor: c-98-202-21-76
Comment:
Revision 54 as of 2008-06-11 15:02:47
Size: 4888
Comment: Had we seen this comment before, it would have saved days of lost effort.
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#pragma section-numbers 2
= Converting Repositories =

Your first option should probably be the ConvertExtension bundled with Mercurial. It supports branches, incremental imports, and a few other nice features, and is maintained by the Mercurial authors. It currently only understands CVS, subversion, Darcs and git.

Otherwise, the following tools may be useful.
Line 5: Line 12:
Tools for Arch conversion can be found at ArchConversion. The ConvertExtension supports GNU Arch since (df659eb23360, 0.9.5+)

Other t
ools for Arch conversion can be found at ArchConversion.
Line 11: Line 20:
== Bitkeeper == == ClearCase ==
Line 13: Line 22:
Because of the threatening behavior of Bitmover, no Bitkeeper conversion tools have been made publically available.
See GenericConversion for details on building your own repository conversion tool.
 * ClearCaseConversion - some ideas
Line 20: Line 28:
 * ["convert-repo"] - the development version of Mercurial includes a CVS converter  * ["ConvertExtension"] - the convert extension supports CVS
Line 23: Line 31:
 * [http://hg.beekhof.net/hg/cvs-import hg-cvs-import] (need info)  * [http://hg.beekhof.net/hg/cvs-import hg-cvs-import] - InstructionsforHgcvsimport

'''Note''': If ["ConvertExtension"] fails to import your repository, try using [http://cvs2svn.tigris.org/ cvs2svn] to convert first to Subversion, and then import from Subversion. The cvs2svn converter correctly handles a number of cases that the direct cvsps-based converter gets confused on.

You can also convert from Mercurial to CVS:

 * CvscommitExtension - (need info)
Line 27: Line 41:
A sample Darcs conversion script is available in the contrib/ directory of the Mercurial source. The ConvertExtension supports Darcs.
Line 29: Line 43:
For a more accurate conversion, which preserves Darcs information on renames and some information on tags, use ["Tailor"]. An older sample Darcs conversion script is available in the contrib/ directory of the Mercurial source.

Also see ["Tailor"].
Line 35: Line 51:
== SVN == == Subversion ==

The ConvertExtension included in Mercurial 0.9.5 can import Subversion trees. It uses the Subversion API, so it can speak any Subversion repository access protocol.

Examples and details about Subversion interoperability can be found in WorkingWithSubversion.
Line 42: Line 62:
 * http://ajayu.memi.umss.edu.bo/viborita/weblog/svn2hg.py-convertir-repositorio-subversion-mercurial - simple script that downloads every rev info from svn server. Works on subdirectories of the repo. Handles branches, tags, etc. inefficiently (does not tell hg that they are different from any other diff). Requires pysvn, mercurial source. Use the download link, not copy&paste.  * http://ajayu.memi.umss.edu.bo/viborita/weblog/svn2hg.py-convertir-repositorio-subversion-mercurial - simple script that downloads every rev info from svn server. Works on subdirectories of the repo. Handles branches, tags, etc. inefficiently (does not tell hg that they are different from any other diff). Requires pysvn, Mercurial source. Use the download link, not copy&paste.
Line 58: Line 78:
== Bitkeeper ==

Because of the threatening behavior of Larry McVoldemort of Bitmover, no Bitkeeper conversion tools have been made publically available. See GenericConversion for details on building your own repository conversion tool.

== TeamWare ==

Very experimental conversion script available if you can find nothing better:

[http://blogs.sun.com/jglick/entry/teamware_to_mercurial_history_conversions]
Line 62: Line 92:
----
CategoryConversion

Converting Repositories

Your first option should probably be the ConvertExtension bundled with Mercurial. It supports branches, incremental imports, and a few other nice features, and is maintained by the Mercurial authors. It currently only understands CVS, subversion, Darcs and git.

Otherwise, the following tools may be useful.

TableOfContents

1. Arch / TLA / Baz 1.5

The ConvertExtension supports GNU Arch since (df659eb23360, 0.9.5+)

Other tools for Arch conversion can be found at ArchConversion.

2. Bazaar?

  • ["Tailor"] - a generic conversion tool.

3. ClearCase

4. CVS

Multiple convertors exist for converting from CVS to Mercurial:

Note: If ["ConvertExtension"] fails to import your repository, try using [http://cvs2svn.tigris.org/ cvs2svn] to convert first to Subversion, and then import from Subversion. The cvs2svn converter correctly handles a number of cases that the direct cvsps-based converter gets confused on.

You can also convert from Mercurial to CVS:

5. Darcs

The ConvertExtension supports Darcs.

An older sample Darcs conversion script is available in the contrib/ directory of the Mercurial source.

Also see ["Tailor"].

6. Git

See GitConversion (incremental).

7. Subversion

The ConvertExtension included in Mercurial 0.9.5 can import Subversion trees. It uses the Subversion API, so it can speak any Subversion repository access protocol.

Examples and details about Subversion interoperability can be found in WorkingWithSubversion.

Converters that work on local repositories or data (faster, if this is an option for you):

Converters that work on remote repositories:

Syncing tools:

  • [http://cheeseshop.python.org/pypi/hgsvn hgsvn] allows you to work on SVN checkouts using Mercurial (mirroring all SVN history in a local Mercurial repository on which you can also do local development). It is useful for managing private branches, submitting patches to project maintainers, have fast local operations instead of slow remote "svn up/log/blame", etc. Also useful as "one-shot" conversion tool if you just remove all the svn directories ("find . -name '.svn' |xargs rm -r") afterwards.

  • SubversionToMercurialSync (like hgsvn, but more primitive)

8. Perforce

[http://hg.omnifarious.org/~hopper/p4_to_hg p4_to_hg]

This utility can actually keep two repositories in sync.

Currently, it's slapped together and built to serve my particular needs, but it could probably be modified into something more general. It currently makes no attempt to do anything with Perforce's ability to track branches or the movement of changesets from branch to branch. -- EricHopper 2005-09-27 06:31:03

9. Bitkeeper

Because of the threatening behavior of Larry McVoldemort of Bitmover, no Bitkeeper conversion tools have been made publically available. See GenericConversion for details on building your own repository conversion tool.

10. TeamWare

Very experimental conversion script available if you can find nothing better:

[http://blogs.sun.com/jglick/entry/teamware_to_mercurial_history_conversions]

11. Other systems

["Tailor"] is a conversion tool that can do simple conversions from a variety of systems. See GenericConversion for details on building your own repository conversion tool.


CategoryConversion

RepositoryConversion (last edited 2020-07-05 13:34:51 by MarcinKasperski)