Mercurial: Initial Impressions

So here at Orbus, I’ve decided to move some things over to Mercurial for a bit to try it out. Generally, the whole user branch thing I talked about way back when we started wasn’t working. Setting up each user branch was a huge pain, and merging large changes back and forth was almost impossible, even with a helper tool like svnmerge. Svn supposedly fixed this with 1.5, but if they did it the same way they did it in svnmerge, I’m not going to bother attempting to use it. Bidirectional merges from multiple branches just doesn’t work with svnmerge, and I don’t recommend attempting it. Mercurial, I’m hoping, will at least partially solve this problem.

So, we’ve been converting things over the past few days, and I have some initial impressions. First, the bad:

  1. Repository cloning on large repositories, even with the addons that allow windows to use hard links, is fairly slow. I wish mercurial allowed lightweight local branches that could be developed on, and then merged back into a working copy, all in the same directory. This is the git model of doing things. I understand why mercurial doesn’t support it, I just kinda wish it did.
  2. I’m sad there’s no rebasing. I would like the ability to do work in a branch, commit, say, 20 changes in that branch, and then rebase it all to one change in the main trunk. Again, I understand why it’s not there, but it’d be nice to have.
  3. I’d like to be able to see who pushed what revisions to an upstream server. Having who made the changes is great, but I’d also like to see who pushed them. I’m not sure this data is available to mercurial though.
  4. All the interfaces need work. I would love graphical tools that could show branching and merging into various files. Not sure what other distributed software does for this, but it seems like a very hard problem.
  5. The internal branching system is extremely confusing, and I’m not sure merging single changes between branches will be any easier with Mercurial or not. Will have to see.

The good:

  1. Mercurial was really easy to set up, even integrating LDAP into the push permissions system. I like it when things are that easy.
  2. It makes collaboration with other programmers easier, just because of the way it works.

In general, I’m currently just using Mercurial like I’m using Subversion. The tiny bonus is now I can grab changes from other programmers, take a look at them and give comments, all without posting to a server, and that’s really nice. Once I get some more experience, I’ll make sure to hand out more impressions.

One Response to “Mercurial: Initial Impressions” »»

Trackbacks/Pingbacks »»>

  1. [...] use them to promote pre-push process. Right now, though, I quickly want to respond to a few of my initial impressions of [...]


Leave a Reply »»