Monday, December 22, 2008

Convert Subversion Repositories to Mercurial

Finally found some time to migrate some projects from SVN to Hg. The enterprise SVN became so cumbersome and slow as people keep throwing all junks into it, which you have no control of.
  • The 1st recipe was trying to convert directly using Hg in Working With Subversion Repositories
    hg convert --config convert.hg.tagsbranch=0
    But there seemed a bug in Hg when the SVN requires HTTP authorization - even the user and password were correct it still could not pass through:

    initializing destination project1 repository
    http authorization required
    realm: crowd
    user: marshal
    real URL is
    http authorization required
    realm: crowd
    user: marshal
    http authorization required
    realm: crowd
    user: marshal
    abort: HTTP Error 401: Authorization Required

  • Now veer to the Python tool for Hg, which requires Python 2.5+ (already included on Ubuntu 8.1+) & SVN.Do the following:
    # svn not installed by default
    sudo apt-get install subversion
    # easy_install not included in Python package by default
    sudo apt-get install python-setuptools
    # download & install hgsvn
    sudo easy_install hgsvn
    Best match: hgsvn 0.1.6
    Processing hgsvn-0.1.6-py2.5.egg
    Moving hgsvn-0.1.6-py2.5.egg to /usr/lib/python2.5/site-packages
    Adding hgsvn 0.1.6 to easy-install.pth file
    Installing hgimportsvn script to /usr/bin
    Installing hgpullsvn script to /usr/bin

    Installed /usr/lib/python2.5/site-packages/hgsvn-0.1.6-py2.5.egg
    Processing dependencies for hgsvn
    Finished processing dependencies for hgsvn

  • The real staff:
    * svn 'info' '--xml' ''
    Password for 'marshal':

    Then the program froze after you typed the password. (Well, it happened to me).
    So I have to manually run:
    svn info
    And key in the user name/password there, it passed.
  • Import SVN project again:
    This will import SVN's project1 into current directory and no authorization required any more.
    cd project1
    pulls all SVN history. Then the daily use of mercurial starts...


m. utku karataƟ said...

Just when "hg convert" bailed on me big time :) Thanks a lot for this!

Peibol said...

Thanks a lot, very helpful