I know that people are waiting for some Git importers. Wouldn’t it be cool if BK had a bk fast-import? Yes it would but there are issues. Writing bk fast-export was relatively easy because BK stores more metadata than Git (renames for example) so in semi-math terms BK is a superset of Git. So bk fast-export is some work but it’s fairly straight foward.
bk fast-import is hard. Git doesn’t have enough info for that. Wayne can maybe add some details, he’s done the most complete importer.
Anyway on to what we have. We’ve got two importers that are very different.
Crappy but mostly works
We have a simple importer written in Little that works for about 2/3rds of the repos we’ve tried. It does not try and create an identical DAG. The default is to find the longest path through the DAG that contains the most tags and then imports each tagged release. This doesn’t get detailed history but it is fast and you get something that you can play with. We’ve made BK fast but we’re also talking to Git and the two systems together use a lot of CPU and I/O to do an import, hence the tag only default.
I’m importing the kernel and there is a steady 40-120MB/sec writes to the disk. Which on my laptop is an Intel SSD. Just the tags have been going for over an hour and we’re about 75% done.
You can tell it to do more and what it does is find the longest path through the DAG that has the tags and then imports all of those csets. That will take longer in a large repo but is the right answer for smaller repos.
Summary easy to use, fast but not a cset for cset importer
Less crappy but hard to use
Wayne wrote an importer in Wayne perl (he likes using all the fancy perl stuff) that tries to be a cset for cset importer. It’s harder to set up and use, Wayne will have to give you instructions, and it is slower because it is getting all the changesets, but if you really want all of your history that’s what you will want to use.
We’ll be making both of these available tomorrow or Monday.