[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Monotone-devel] hg2mtn 0.0.20070824
From: |
Patrick Georgi |
Subject: |
[Monotone-devel] hg2mtn 0.0.20070824 |
Date: |
Fri, 24 Aug 2007 23:40:28 +0200 |
User-agent: |
KMail/1.9.7 |
Hi,
I hereby do the first public release of hg2mtn, an importer of hg repositories
into monotone. It's licensed under GPL (v2+) as it makes use of other GPL
components.
I first tried to write something general based on an implementation of the
git-fast-import interface for mtn, but that wasn't such a good idea as it
basically results in two lossy steps: whatever-to-git-semantics and
git-semantics-to-mtn, so I wrote a direct hg2mtn importer now.
At this time, it lacks all the usability bits (like getopt parsing, a tarball
release, or sane user feedback).
It requires the automate stuff of tracvc. It's probably easiest to just have
the whole tracvc tree in the PYTHONPATH for now. It also requires an
installation of mercurial (it basically uses its code to read the repo)
The location of the hg repository, the mtn repository and the branch where all
the hg stuff should end up are set in some variables in the source.
I also recommend adding a transaction guard to automate stdio because mtn
commits every single put_file, which leads to a massive slowdown (at least on
some filesystems - on ZFS it's 4 minutes instead of 20 now)
For now, it stops execution after 50 commits, you can restart and it will skip
the existing revisions (that's partly a work around for the transaction
guard - it really requires an "automate commit" command, so that at certain
points the database state can be frozen, as otherwise all work is lost on
ctrl-c).
Export to mercurial shouldn't be too hard (the import keeps the hg revision as
cert to every mtn revision), but that's beyond the scope of my work for now.
Also missing (but on my TODO):
- handling of hg tags
- handling of whatever rename facility they have
Some hg repos seem to contain merges that are invalid on monotone (revival of
files in a merge that were killed on one side) - hg2mtn fails with an
monotone invariant there.
As it's one of my first large python project "from scratch", it's probably
full of no-nos of python design. Patches welcome and accepted!
Regards,
Patrick Georgi
hg2mtn.py
Description: application/python
- [Monotone-devel] hg2mtn 0.0.20070824,
Patrick Georgi <=