Switching to Mercurial
A distributed version control system makes branching and merging significantly easier. In other words, simplifying these two things makes it significantly less time consuming to work on 1.4.1 while also working on 1.5; sharing changes between two separate branches is often a problem.
It took a lot of debate, though not all that recently, for us to finally decide to switch to Mercurial for our version control needs. I’m really enjoying it so far; it’s fast, it’s efficient and it’s easy to grasp. There’s a few issues we’ve run into, but hopefully we can figure out solutions. Right now the main concern is the fact that our binary copy of libpurple in the source code is significantly impacting the size of the repository.
You can now find our Mercurial repositories at hg.adiumx.com. We’ve written up a small amount of documentation so far on acquiring the newest Adium source and on getting Mercurial. The latter is very, very easy on Leopard, and slightly harder on Tiger. Our repositories are, as always , being hosted by our awesome friends at Network Redux on a new server setup we’re getting ready to use.
The great part about using a distributed VCS is that every single person’s copy of the repository is a full-fledged copy of the repository; the only difference between the server’s repository and yours is that the server has scripts set up to trigger events, and it’s a trusted source for nightlies and other fun things. This makes it very easy to continue development during or recover from a significant server outage. Should the worst occur, we could easily restore our server records based on developer repositories, if need be.
To that end, I’m happy to say that our two main repositories, adium (currently 1.4) and adium-1.3 (1.3.x development) are now mirrored hourly at Bitbucket, a service which quite a few of our developers use for their personal source code needs.
Our old SVN access is now read-only; all information on our SVN server is now available through our mercurial repositories, except one or two insignificant, non-working plugins. No future commits will occur in SVN (in fact, trunk and branches/adium-1.3 currently have #errors in them to intentionally prevent use), so you should transition anything that uses them over to Mercurial. Enjoy.