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.