I have just read Joel’s blogpost concerning distributed version control systems and can’t understand the main idea. He says that SVN thinks in terms of versions while Mercurial thinks in terms of changes. And, according to Joel, it solves merging problems.
I heard this idea several times and still haven’t conceived it. As I know, SVN’s merging mechanism is based on changes (diffs) too. So what is the difference? I have no experience with distributed version control systems but I actively use SVN branching/merging and had no serious problems with it. Of course there are merging conflicts sometimes (when one piece of code was changed in both branches). But I see no way how this problem can be solved automatically by some kind of control version system.
The thing you are talking about with SVN is that some kind of tree conflicts couldn’t be handled by Subversion and the merge will fail. In comparsion to git, hg and bzr it is true git, hg or bzr can handle these situations SVN at the moment doesn’t. I recommend to read about the bachelor study which has been made and of course in the mean time some of these problems have been solved.