I continued work on hg2mtn (which managed to import the whole onnv-gate repository just fine, stats will come later), and except for one issue, I’m feature complete: while I track renames now, I have to synthesize directory renames. This will work by looking for each rename if the source directory is getting removed and the target directory newly created. If so, assume that a rename from source dir to target dir takes place.
This might give some wrong decisions, eg. in this scenario: a/a is moved to c/a, while the other 100 files (that are sorted behing a/a) in a/ are moved to b/. The proper rename would be from a/ to b/, but a/ to c/ is chosen. I could do majority "votes" and things like that, but they’d quickly get too complicated while still staying a heuristic.
The only issue that happens in that case is that a new file in a/ from some branch gets moved to c/ instead of b/ (where it likely belongs to) – but that’s easy to solve and still better than the current scenario where you’d have to move the file out of the deleted directory before merging to avoid a conflict.
After I implemented that one, I only have to clean up some more (I started already) to make a stable release, yay!