mirror of
https://github.com/frej/fast-export.git
synced 2026-01-15 10:42:04 +01:00
81 lines
2.5 KiB
Plaintext
81 lines
2.5 KiB
Plaintext
hg-fast-export.(sh|py) - mercurial to git converter using git-fast-import
|
|
|
|
Legal
|
|
=====
|
|
|
|
Most hg-* scripts are licensed under the MIT license[0] and were written
|
|
by Rocco Rutte <pdmef@gmx.net> with hints and help from the git list and
|
|
#mercurial on freenode. hg-reset.py is licensed under GPLv2 since it
|
|
copies some code from the mercurial sources.
|
|
|
|
The current maintainer is Frej Drejhammar <frej.drejhammar@gmail.com>.
|
|
|
|
Usage
|
|
=====
|
|
|
|
Using hg-fast-export is quite simple for a mercurial repository <repo>:
|
|
|
|
mkdir repo-git # or whatever
|
|
cd repo-git
|
|
git init
|
|
hg-fast-export.sh -r <repo>
|
|
|
|
Incremental imports to track hg repos is supported, too.
|
|
|
|
Using hg-reset it is quite simple within a git repository that is
|
|
hg-fast-export'ed from mercurial:
|
|
|
|
hg-reset.sh -R <revision>
|
|
|
|
will give hints on which branches need adjustment for starting over
|
|
again.
|
|
|
|
As mercurial appears to be much less picky about the syntax of the
|
|
author information than git, an author mapping file can be given to
|
|
hg-fast-export to fix up malformed author strings. The file is
|
|
specified using the -A option. The file should contain lines of the
|
|
form "FromAuthor=ToAuthor". The example authors.map below will
|
|
translate "User <garbage<user@example.com>" to "User <user@example.com>".
|
|
|
|
-- Start of authors.map --
|
|
User <garbage<user@example.com>=User <user@example.com>
|
|
-- End of authors.map --
|
|
|
|
Notes/Limitations
|
|
=================
|
|
|
|
hg-fast-export supports multiple branches but only named branches with
|
|
exaclty one head each. Otherwise commits to the tip of these heads
|
|
within branch will get flattened into merge commits.
|
|
|
|
As each git-fast-import run creates a new pack file, it may be
|
|
required to repack the repository quite often for incremental imports
|
|
(especially when importing a small number of changesets per
|
|
incremental import).
|
|
|
|
The way the hg API and remote access protocol is designed it is not
|
|
possible to use hg-fast-export on remote repositories
|
|
(http/ssh). First clone the repository, then convert it.
|
|
|
|
Design
|
|
======
|
|
|
|
hg-fast-export.py was designed in a way that doesn't require a 2-pass
|
|
mechanism or any prior repository analysis: if just feeds what it
|
|
finds into git-fast-import. This also implies that it heavily relies
|
|
on strictly linear ordering of changesets from hg, i.e. its
|
|
append-only storage model so that changesets hg-fast-export already
|
|
saw never get modified.
|
|
|
|
Submitting Patches
|
|
==================
|
|
|
|
Please use the issue-tracker at github
|
|
https://github.com/frej/fast-export to report bugs and submit
|
|
patches.
|
|
|
|
Footnotes
|
|
=========
|
|
|
|
[0] http://www.opensource.org/licenses/mit-license.php
|