Archive for March, 2010|Monthly archive page
So I’m trying out Mercurial.
The first Mercurial resource I found particularly helpful was Martin Geisler’s article here: http://mercurial.selenic.com/quickstart/. This is a very short article that outlines the basics in “6 steps”.
The other resource that was really helpful was Joel Spolsky’s excellent Mercurial tutorial here: http://hginit.com/. As usual, Joel’s writing style is funny and informative. His “Subversion Re-education” is particularly enlightening, and I completely agree with his statement that:
…here’s how Subversion works: When you check new code in, everybody else gets it.
[So] Subversion team members often go days or weeks without checking anything in. In Subversion teams, newbies are terrified of checking any code in, for fear of breaking the build…
I have two machines, and I program on both simultaneously. (It takes about 3 minutes to build the application and run all the unit tests, so I will switch over to the other computer and program on it while I’m waiting for the unit test results.)
Even with only two computers and one programmer this “feature” of Subversion has been really affecting and frustrating me lately. I really want a source code repository where I can check-in temporary code to help “snapshot” it, even if it is not completely ready for the main “trunk”. Subversion doesn’t have that without using branches (which are scary in Subversion) – but Mercurial (and any DVCS) does provide this wonderful feature and it’s not scary at all.
Both of these articles have helped changed the way I think about version control, or at least helped to start changing my thinking.
The good folks at FogCreek have also been kind enough to answer a few questions, and the http://Kiln.StackExchange.com website is full of Mercurial questions and answers as well. My first question was asking about how to handle large projects and shared utility libraries:
TortoiseHg now works wonderfully on Vista x64 – it didn’t when I first looked at Mercurial. It’s not quite as “pretty” as TortoiseSVN visually, but it gets the job done and seems more functional.
I have found two plug-ins for Visual Studio 2008 and 2010:
- VisualHG – doesn’t work with 2010 RC1 yet, and uses TortoiseHg as its “back-end”,
- HgSccPackage – At first I didn’t think this was working, but after installing it there is apparently some additional configuration to be done: http://bitbucket.org/zzsergant/hgsccpackage/wiki/configVS
I installed the HgSccPackage, because StackExchange had good things to say about it, and it seems to do the trick nicely. When I add a new class in VS2010 it automatically adds it to the Mercurial repository, just like you’d expect. So far, so good!