On Mon, Aug 25, 2008 at 7:35 PM, Brian Downing <bdowning@xxxxxxxxx> wrote: > On Sun, Aug 24, 2008 at 12:18:50PM +0300, Felipe Contreras wrote: >> I developed a script that converts a monotone repository into a git >> one (exact clone), I want to contribute it so everybody can use it. >> >> This is the gist of the script: >> >> mtn update --revision #{@id} --reallyquiet >> git ls-files --modified --others --exclude-standard -z | git >> update-index --add --remove -z --stdin >> git write-tree >> git write-raw < /tmp/commit.txt >> git update-ref refs/mtn/#{@id} #{@git_id} >> >> branches.each do |e| >> git update-ref refs/heads/#{e} #{@git_id} >> end > > You definitely want to use fast-import, but you probably want to do > something a lot closer to fast-export for monotone (read: use its > automate stdio interface and avoid expensive calls). > > Here's a simple monotone to git converter I wrote. You'll need the > Monotone::AutomateStdio perl module to use it (which I think I got it > from monotone's net.venge.monotone.contrib.lib.automate-stdio branch). > It is very fast; it can convert the OpenEmbedded repo in something like > 5-10 minutes on my machine. Interesting, how many commits? > Note that for monotone export to go fast you absolutely /must/ avoid the > get_manifest operation. In my converter I use the revision information > directly. Getting the renames right with this is a little tricky; IIRC, > the ordering that works is: > > * Rename all renamed files, innermost files first, to temporary names. > * Delete all deleted files, innermost first. > * Rename all temporary names to permanent names, outermost first. > * Add all new/modified files. > > Conveniently, all of the above can be done by directly emitting > fast-import commands, so you don't have to keep track of trees directly. > (With one exception, which I'll elaborate on in a different email.) I guess I haven't stumbled upon that problem yet =/ Best regards. -- Felipe Contreras -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html