When explaining distributed version control a lot of people start by saying there's no central repository, it's peer to peer. This throws off a lot of people because they want a central repository. It's the explanation that's wrong. You can have a central repository, and most people do. The difference is that it's a matter of convention, it's not dictated by the software. And you can also have multiple repositories.
For me, the advantages would be having the complete history locally, even when I'm off-line, and being able to easily branch and merge locally.
Here are the steps I used to convert jSuneido from Subversion to Mercurial. (I haven't converted C Suneido yet, but that shouldn't be too hard, just more history so it'll be slower.)
Download and install Mercurial on OS X from mercurial.selenic.com
Convert the existing SourceForge Subversion repository to a local Mercurial repository:
hg convert http://suneido.svn.sourceforge.net/svnroot/suneido/jsuneido
Ideally you wouldn't convert directly across the network. Instead you'd clone your Subversion repository to your local machine and convert from there. That's primarily so if you have to tweak your conversion and re-run it, you're not dealing with the network delays multiple times.
I was lucky since my Subversion history did not have anything tricky like branches to deal with. And cloning the Subversion repository looked painful. I figured I could probably get away with doing the convert directly. It ended up taking a couple of hours to run.
One nice thing about convert is that you can run it again to pick up incremental changes. (I had to do this once because I had forgotten to send my latest change to Subversion.)
Enable Mercurial for the Suneido SourceForge project. Add a second repository for jsuneido. See sourceforge.net/apps/trac/sourceforge/wiki/Mercurial
Push the local Mercurial repository to SourceForge.
hg push ssh://amckinlay@suneido.hg.sourceforge.net/hgroot/suneido/jsuneido
I could have also done this with TortoiseHg (but don't look for a "Push" menu option, it's under Synchronize)
I can now browse the repository on SourceForge.
I found the series of three blog posts starting with From Subversion to Mercurial. Part 1, Setting the Stage quite helpful.
Next I have to figure out the Eclipse plugin for Mercurial. I hope it's less hassle than the Subversion one!
No comments:
Post a Comment