ASCIIMath creating images

Saturday, December 11, 2010

Learning Mercurial

I have been following a pretty linear progression of revision control systems. Around 1997 (or possibly as early as 1995 in my undergraduate years) I started using RCS; I switched to CVS probably around 1999 or so. Since 2004/2005 I have been using subversion.

I'm now looking to switch to mercurial - it's what all the cool kids are using now and it appears to be then next logical step. But what will I gain from it?

I have been using subversion mostly as a versioned synchronization tool: a central repository providing me with a "ground truth" snapshot with full history. I can't find a specific use case/workflow that fits my situation: "lone developer on multiple machines", but this comes close: CVS like usage.

I'm not 100% sure I fully grasp the distributed idea yet, that every "working" dir is also a repository. I tried cloning a bundle, then pushing changes back into it - that doesn't work. But I can clone the bundle, then clone the clone, and changes can be pushed back to that! So my "svn/cvs-like workflow" is now this:

I create a repository/woking dir local on my home server.
"mkdir TestRepo; cd TestRepo; hg init"
I clone the repo remotely:
"hg clone ssh://"
Now I can edit in there and commit at my heart's content... once happy, I can push the changes back to the server.
"hg push"

And all other copies can get the updates using "hg pull".

So at least I duplicate the features of my ssh+svn setup.  Eventually, I'll learn the more advanced features of Mercurial...