svn merge sucks

I’m actually typing this while waiting for svn to merge a branch back to the trunk of rosegarden source tree…

Anyway, a while ago, I watched this talk by Linus at Google about his own Version Control System, git. I’ll skip the comments about his attitude and mention a few points I felt like commenting about.

  1. When Linus says that KDE should have split its repository into multiple ones, I don’t see how that would make things any easier for devs. KDE has a base dependency, namely the KDE libs. How would you split KDE’s code into several repository while avoiding the problem of keeping them in sync ? Doesn’t that break the whole idea of a version control system ? “Hey, I need to backtrack kmail’s code to a week ago to check for a regression, now what version of kdelibs do I need to get it to compile, mhhh, let’s see…”. Yeah, that’s bright.
  2. I wish Linus would show a basic workflow of how git works
  3. And to the point of this post : Linus really does have a point when he says that a version control system really must make merging an easy operation. Yeah, even if branching is cheap (and remembering having to lock a cvs repository for hours just to make a tag or a branch, I can appreciate how important that is), if merging is a headache, it does defeat the whole purpose of it. That is, branches will still be seen as something you use only when you really have no other choice. And merging in svn really is a headache, simply having to find the version number of the branch’s origin is dull enough, but merge tracking is way too error-prone. Fortunately it should be part of the next version of svn, but I’m not sure leaving it out was the right decision. Then again they had to cut the feature list somewhere…

3 thoughts on “svn merge sucks”

  1. I remember being surprised when I first discovered that Subversion didn’t support merge tracking. It did make me wonder what the point of it was. The stated aim for Subversion had been to “fix” CVS, but leaving aside the big obvious stuff like being unable to rename things, the lack of merge tracking is the single biggest problem with CVS, and it wasn’t fixed. (My earliest exposure to commercial VCS systems was to ClearCase, and that handles merging with a nice graphical visualiser, although it’s not a particularly nice system to use otherwise. I always thought merging was just part of what a VCS system should do for you.)

    But I can’t really complain — the Subversion project still did a good job at something that’s not easy to get right. After all, there still isn’t any better competition, in the sense of a free-software VCS system that handles merging properly using a central repository (I don’t care what anyone says, there are plenty of times when a central repository is exactly what a project needs). Subversion is better enough to be a useful tool in spite of its flaws; I started out thinking it was a waste of time, and in day-to-day use it just about won me over.


Leave a Reply

Your email address will not be published. Required fields are marked *