Commit Graph

34 Commits

Author SHA1 Message Date
Felipe Zimmerle
cdfdae36c8 hg2git: Replaces space with "_" in branches name
Since space doesn't conform to GIT branches name standards,
it should be replaced or with another character.

Signed-off-by: Felipe Zimmerle <felipe.zimmerle@indt.org.br>
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2008-05-30 13:41:56 +02:00
Rocco Rutte
8551771d2b hg2git.py: Allow consumers to modify keys of dicts returned by load_cache()
By default, the key is not changed. This will allow us for fixing up the
off-by-one issue with marks restored using load_cache().

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-10-22 09:50:52 +02:00
Rocco Rutte
3d1f111d30 hg2git.py: Use git-rev-parse to get SHA1s instead of reading files below refs/ directly
This should now also properly support packed refs.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-10-22 09:48:48 +02:00
Rocco Rutte
fb5cd150a6 hg2git.py: Map 'HEAD', 'default' and '' hg branches to 'master' in git
Also add a note where HEAD is comming from.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-10-22 09:44:12 +02:00
Rocco Rutte
5cc155e367 hg-reset.py: Print details for changed branches only
It doesn't make sense to suggest resetting branch HEADs to their current
value.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-19 09:27:37 +00:00
Rocco Rutte
7044bdd4d1 Add hg2git.py with library routines
Unfortunately, I can't do 'import hg-fast-export' from python itself, so
we need to move some common methods into 'hg2git.py' which is to be used
as a library for common hg->git routines.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-19 08:45:42 +00:00
Rocco Rutte
c84790da82 Use MIT license, adjust hg2git script names to match fast-export repo style
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-14 10:29:24 +00:00
Rocco Rutte
f9879136a9 hg2git.py: Only print verification message for branches we have
It's pointless for many branches to print the validation message for the
first revision already; the same counts for incremental runs.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-14 10:13:27 +00:00
Rocco Rutte
287365c160 hg2git.py: Add simple delta revision feed
Now we have three methods of feeding out changes
  1) full for first revision or
  2) thorough delta for merges (compare checksums with all parents) or
  3) simple delta else (only got with manifest)

This requires some cleanup so that we have only place where we actually
call the appropriate dumping method.

The export_file_contents() method now also sorts its file list before
writing out anything as this seems to speed up hg data retrival a bit.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-14 10:02:15 +00:00
Rocco Rutte
af2237607c hg2git.py: Create only leightweight tags
The annotated tag with commit message summary was primarily only for
debugging.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-14 08:34:18 +00:00
Rocco Rutte
d988112549 hg2git.py: add -f/--force option to bypass validation checks
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-13 16:43:20 +00:00
Rocco Rutte
ad283a91ca hg2git.py: Bail out for certain errors
New is that we also check for multiple tips having the same branch name,
i.e. no unnamed heads.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-13 16:31:57 +00:00
Rocco Rutte
d9bb3271a4 Add a note about hg's unnamed branches and multiple heads
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-13 15:27:29 +00:00
Rocco Rutte
5732cd0313 hg2git.py: For the first revision, feed out full manifest
For the mutt and hg repos, it didn't make a difference, but attempting
to run the conversion on the opensolaris repo looks like this is needed.

When we attempt to export some commit, special-case the revision number
0 and export all files the manifest has while labeling this a "full
revision export". Otherwise we do what we did before labeling this a
"delta revision export".

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-13 10:59:22 +00:00
Rocco Rutte
191928202b hg2git.py: Don't complain die for non-existent heads
Previously, when no head was present under .git/refs/heads, we simply
died as we couldn't open the file. Now, simply return None in case we
cannot read from it.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-12 11:13:48 +00:00
Rocco Rutte
cedbd0fb86 hg2git.py: Remove leading/trailing spaces from authormap
The current regex may leave us with keys/values having trailing/leading
spaces in all flavours which will break lookup. Solution: strip() key
and value.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-12 10:45:32 +00:00
Rocco Rutte
59a481a2b0 hg2git.py: Allow for spaces in authorfile
By allowing spaces in keys we allow for (re-)mapping complete lines
like "Joe User <joe@host>" to be mapped to something else.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-12 10:26:46 +00:00
Rocco Rutte
230a320c84 Basic support for an author map
As git-(cvs|svn)import support it, make futrue git-hgimport :) support it, too.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-12 08:54:30 +00:00
Rocco Rutte
20b4ca920b hg2git.py: Fix typo saving status to headsfile instead of statusfile
This broke incremental imports as hg2git.sh wrapper overwrites headsfile
with current values after the import is done.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-12 08:13:40 +00:00
Rocco Rutte
80f028a16c hg2git.py: Display our max revision as progress, not tip
Displaying tip doesn't make sense when we have some max given with -m/--max.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-12 08:12:08 +00:00
Rocco Rutte
469d4f3305 hg2git.py: Disable parsing Signef-off-by lines and add -s to enable
IMHO it's highly unusual to have these lines in hg projects but who
knows. As it's slow to parse these types of lines (with regex), it's
disabled by default and the 'author' command of git-fast-import isn't
used at all.

It can be enabled by giving the -s switch to hg2git.sh.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-12 08:00:18 +00:00
Rocco Rutte
045eea436c Basic support for command line options in hg2git.py
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-12 07:33:40 +00:00
Rocco Rutte
af3810ae2f Only attempt to verify heads hg has, too
In the git repo there may be any number branches that are not hg
imported branches, so it doesn't make sense to print warnings when a
non-hg head isn't at what it was last time.

Now we get a list of branchtags hg has and only verify these.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-10 14:28:45 +00:00
Rocco Rutte
796fa5f4cb hg2git.py: Add support for extracting authorship from Signed-off-by lines
Unfortunately, it's not configurable yet (read: cannot be disabled) as
it may take some time to match against regex all the time (especially
from some initial import).

This also enables cleaning up usernames by stripping silly leading and
trailing chars like '"' (which is the only one supported ATM).

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-09 12:07:08 +00:00
Rocco Rutte
3198560016 hg2git.py: Add support for user-defined hg author -> git author mapping
The mapping is a python dictionary given to the hg2git() function. This
isn't extremely useful as there's no option passing from hg2git.sh to
hg2git.py (yet).

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-09 11:09:57 +00:00
Rocco Rutte
85f0d9c881 hg2git.py: Refactor main code into hg2git() function
Now this can even be used as a module from other python scripts by
simply calling the hg2git() function.

Except some config values nobody really ever wants to change, it's even
save to run several hg2git() functions in parallel as no global vars or
the like are used by intention (but it makes the code uglier).

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-08 11:21:21 +00:00
Rocco Rutte
dbac8741df Don't use checkpoint
As git-fast-import already generates at least one pack per run, don't
even further split these up on a (default) 1k changeset boundary. Also
rework the documentation on that one a little.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-08 09:37:23 +00:00
Rocco Rutte
c002051c82 Distinct between added, changed and removed files for UI output
To git-fast-import(1) we feed in changed and added files completely, so
thers's no real difference except UI output (potentially for debugging).

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-07 11:38:56 +00:00
Rocco Rutte
799a4d8682 Only attempt to export tags in our input range
This prints much less noise and potentially makes git-fast-import(1)
less confused.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-07 11:33:03 +00:00
Rocco Rutte
2b319f9de4 Don't restore checkpoint count from cache
It doesn't make sense as each run of git-fast-import starts a new pack
anyways.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-07 11:06:34 +00:00
Rocco Rutte
8d433b85c2 Speedup: Use manifest and compare checksums to detect changes
Instead of feeding in everything or only something and getting merges
wrong, build up a list of changed (incl. added) and deleted files by

  1) comparing manifest (deleted, added)
  2) comparing checksums if file is present in parent and child (change)

The hg-crew and mutt imports now go in <15 minutes and md5 sums match.

Thanks to Theodore Tso for the hint.

While at it, fix a regression that upon incremental import start we
always merged a branch plus initializing it. A single test showed that
the new detection get starting off from a merge commit right, too.

Signed-off-by: Rocco Rutte <pdmef@gmx.net>
2007-03-07 01:52:58 +00:00
Rocco Rutte
9ebd965f72 Link and not merge first branch of incremental import 2007-03-06 22:11:10 +00:00
Rocco Rutte
b702707afc Provide two versions of getting changes per manifest
As suggested on #mercurial, filectxs() may be faster
than calling filectx() per file.
2007-03-06 19:51:36 +00:00
Rocco Rutte
9832035614 Initial import
This is the initial import of 'hg2git' being a converter which feeds a
hg repository into git-fast-import(1).
2007-03-06 17:00:25 +00:00