The bullshit claims echoed by every mention of "hg-fast-export" on the web: "It works great and it's so easy! All you have to do is this:"
/path/to/fast-export/hg-fast-export.sh -r /path/to/your/mercurial/repository
Uh huh. The reality:
Traceback (most recent call last):
File "C:\DevProj\fast-export\hg-fast-export.py", line 6, in
from mercurial import node
ImportError: No module named mercurial
Wow! If that's a Python program "just working", then Python can properly fuck off. Note that I'm not writing any goddamn Python here, just trying to use some Pythoner asshole's useless script.
So ok, an hour dicking around on StartPage later, and I find some vague mention of solving the problem by (re?)installing a fairly specific version of Python, and a very specific mercurial installer (Yes, I already had Mercurial installed - no idea what version and honestly don't give a fuck). The Mercurial installer, naturally, failed to install. Found another (purely by guessing) that did work.
So try again:
[/path/to/fast-export]/hg-fast-export.sh -r [/path/to/your/mercurial/repository]
Error: No --marks option given
Usage: hg-fast-export.py [options]
Options:
blah blah blah jerk off blah blah blah
Note that not one fucking mention of hg-fast-export anywhere on the goddamn web makes any fucking mention of any "--marks" parameter, let alone that it's required. Let's see what the help screen says:
--mapping=MAPPINGFILE File to read last run's hg-to-git SHA1 mapping
--marks=MARKSFILE File to read git-fast-import's marks from
--heads=HEADSFILE File to read last run's git heads from
Holy fucking useless bullshit, Buttman! So I'm supposed to know and give a fuck what that shit's all about? And naturally, the included readme file makes absolutely no mention of this flag whatsoever. In fact, the example in the readme file doesn't even fucking use it!
Fine, kiss my ass you piece of shit:
[/path]/hg-fast-export.sh -r [/path/repo] --marks=i_dont_give_a_fuck
Error: No --mapping option given
[/path]/hg-fast-export.sh -r [/path/repo] --marks=fuckyou --mapping=fuckyou
Error: No --heads option given
FUCK! The hell with this shit. Not like I don't have better things I should be doing instead.
The fact of the matter is, all VCS conversion tools/processes are worthless garbage (yes, I've tried many others in the past, going in many different "VCS A -> VCS B" directions). There isn't a damn one that actually works worth a shit, let alone without a pile of unnecessary hoops and such bullshit. Speaking of which, you can cram Cygwin up your ass.
A large part of the blame lies with that piece of shit Python. I don't care what good things anyone has to say about Python: When you have to know anything about language X in order to use a tool merely written in language X, then there's something horribly fucking WRONG with language X. Fuck language X.
Fuck Python, fuck Python scripts toys, and fuck the pathetic state of VCS conversion tools.
(Phew. There, I feel better now...)
(PS: Why was I converting a project from Hg to Git? Certainly not because I like Git - because I don't. I'm just tired of TortoiseHg's shittiness. It's allegedly a Tortoise* tool, but the damn thing can't quite seem to figure that out. TortoiseGit, OTOH, irritates me much less.)
Read more