Migrating from Subversion to Mercurial

I recently moved the bot we use in freenode ##java from svn to hg.  Using hg's built in conversion utilities, this process isn't bad at all.  There are a number of steps to set things up, however, some of which aren't entirely as clear as they probably could be.  It would appear that hg's conversion routines don't like https-based svn repos so I wrote up a quick script to help my brother move a project of his to kenai and thought I'd share it here.  The heavy lifting in this script comes almost verbatim from hg convert page but hopefully this is a bit more accessible.

if [ -z "$1" ] then     echo "usage: $0 "     exit fi

if [ -z "`grep hgext.convert ~/.hgrc`" ] then     echo Enabling the conversion extension     echo "[extensions]" >> ~/.hgrc     echo "hgext.convert=" >> ~/.hgrc fi

URL=$1 DEST=mirror-svn HGDEST=mirror-hg

if [ -d "${DEST}" -o -d "${HGDEST}" ] then     echo "${DEST} or ${HGDEST} already exist. Please try working in another directory"     exit fi

svnadmin create ${DEST} echo '#!/bin/sh' > ${DEST}/hooks/pre-revprop-change chmod +x ${DEST}/hooks/pre-revprop-change svnsync init file://`pwd`/${DEST} ${URL} svnsync sync file://`pwd`/${DEST}

mkdir ${HGDEST} hg init ${HGDEST} hg convert file://`pwd`/${DEST} ${HGDEST}

As you can see, it's pretty straightforward.  I ended up using svnsync to get aroung the hg/https/svn problem.  It also makes the conversion much faster.  Once the script is done you can cd into mirror-hg and hg push it wherever you'd like.  There are some options you can do during the conversion like limiting which revisions get converted and mapping usernames and the like.  I've done nothing of the sort here but those shouldn't be too hard to add.  And if you're really that interested in those options then you should be fully capapable of doing that yourself.  :)

Also note, that if you don't need to use svnsync you can skip directly to the hg convert line (well, and the init right before it...) and hg will pull directly from the repository to do its conversion.

There it is.  It's not fancy or earth shattering but hopefully it'll help save you some heartburn.  As always, feedback is welcome.

As if I need help...

As if I didn't neglect this blog enough as it is, I know have another outlet:  my Sun blog.  That's right.  I'm now a Sun employee and member of the GlassFish webtier team.  You can see a brief run down of what that'll look like at the new blog.  I'll probably keep the non-Sun related things off that of that blog and post them here (because I have a great track record of blogging regularly after all).  I also have a new twitter feed that will hopefully help fix some of my blogging exhaustion. Maybe it's because I rant to my imaginary (what my wife calls my online) friends, but I can never sit down long enough to type up a blog post.  Maybe I just over think my posts.  I don't know.  I find it hard to finish them these days.  They never come out right.  But with twitter, I can blast out the thought and move on.  I've avoided twitter for a while now, but I guess it's better than nothing.  So, anyway, there are now two new venues where you can hang on my every word.  And I know you want to.  There's no shame in that...  ;)

The JasperReports book lives!

Thanks to all those who replied.  The survey convinced the publisher that there was indeed sufficient interest, so we'll keep plugging away on the book.  We're having to do a little restructuring due to some logistic issues on the back end, but we hope to have the book finished by December, to print by January, and on shelves by JavaOne.  Of course, those are "just deadlines" and things like this tend to slip, but we're going to give it our best shot.  Thanks again to all who replied.  Check back here and on Manning's site as the day approaches for updates.