There’s been a lot of talk in the Mac developer community over the last year regarding revision control systems. I just wanted to chime in with my take on the issue. I’ve used subversion for more of my career than anything else, but I’m using mercurial now and really loving it.

Distributed vs. centralized source control

The first choice a developer likely has to make is whether to go distributed or stick with a centralized system. I won’t go into the details of the differences, as others have already done a good job of that. The basic take-away from these is that distributed systems are great. You can work with them offline, which almost all of us eventually have to do. You can branch and merge easily, which is more useful than you can probably imagine until you have the capability. If you’re working with other developers, you can work independently and later merge things together at an appropriate time with much greater ease than centralized systems.

Choosing mercurial

The two most popular distributed revision control systems today seem to be git and mercurial. I’ve used git a good bit, and I just find its interface to be non-intuitive. Every time I want to do something new it takes me way too long to figure out how to do it. That’s not saying git is bad, just that its interface and I don’t mix well together. Mercurial, on the other hand, is very intuitive to me. It provides all the features of git I could want and I can figure out how to use them with ease.

I’ve been using mercurial throughout the development of Pear Note (well, I actually started with subversion and switched over to mercurial a couple months in), and it’s performed perfectly. My advice to all of you is that if you’ve heard about this distributed revision control thing, but tried git and found it confusing, try mercurial. You still have to grasp the basic concepts of distributed version control, but after that you’ll likely find it much more approachable.

Comments are closed.