How to fix Subversion merge

Having done quite a bit of branching in centralized and distributed source control systems, I’m intimately aware of the additional (and I would say, unnecessary) pain centralized source control systems like Subversion and TFS bring to more powerful branching strategies used in teams today. Release branching, branch-per-feature and the like are very powerful tools of delivering software effectively, if you know how to properly set these things up.

However, merging has always been the linchpin in the branching story. Branching is easy, but because merging is the last step in a branching workflow, it’s the merging that determines the difficulty in branching. And merging in SVN, especially across branches, has always been….challenging. Along those lines, I saw an interesting proposal to fix Subversion merge.

An interesting approach, but I have a couple of other approaches that, in the long run, have a much better, brighter upside:




And migrate your SVN repository into Git or migrate into Hg.

There, now your Subversion merge problems are fixed!

About Jimmy Bogard

I'm a technical architect with Headspring in Austin, TX. I focus on DDD, distributed systems, and any other acronym-centric design/architecture/methodology. I created AutoMapper and am a co-author of the ASP.NET MVC in Action books.
This entry was posted in git, Mercurial. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Guest

    Not constructive :-(

    • Anonymous

      Disagree – having used SVN for years, the best way to fix it is to get off of it.

      • Guest

        If you think so…
        If it’s that easy, then it’s probably best to also switch to linux/mac instead of windows and php/ruby/whatever instead of .net at the same time.

        • Anonymous

          No, it’s not easy. You have to learn a new tool. But our company switched 100% of our repositories we use for our clients from SVN to Hg, because of the benefits distributed source control brought us. Not for fun or to learn a new tool, but because distributed source control tools are superior to their centralized counterparts.

          I understand the blog is glib, but migration to DVCS *really is* the solution to the pains centralized version control. Everything else is patching what is at its base a less effective model.

          • Ole

            Nice comment – and thanks for the word ‘glib’.

        • That’s a strawman. Like Jimmy says, it will require learning a new tool, but that’s not NEARLY as difficult as rewriting your application’s functionality in an entirely new environment.

          • Guest

            Sorry for my comments. They were not about the problem of learning a new tool, but about the fact that no everyone is free to simply switch to a DVCS (same as for other dev tools) for whatever reasons.
            For these people, an improved SVN merge command would be great. Therefore, simply suggesting to switch to a DVCS is not constructive.

            Hope this explains what I meant.

  • Siderite Zackwehdex

    I agree that all my enthusiasm for when I’ve read the title of your post went away in smoke when I’ve seen the content. And that is before I’ve even considered if you are right or wrong.

    • Anonymous

      Yeah, just being a little facetious. In my experience, DVCS really is the ultimate solution, it’s something worth seriously considering.

    • Anonymous

      @google-732e54551890b24885c33786b86f52ba:disqus  The fact that you were enthusiastic about seeing a headline, “How to fix Subversion merge” does support Jimmy’s point. :)

  • Slo

    I agree with Jimmy 100%. We switched recently to Mercurial, and all our problems with releases and hotfixes and merging them to the dev branch are gone. We used SVN for a while, but this is a new world. The cost of switching is really minor. If you use TortoiseHg it is even easier. None of us had experience with any distributed VCS, and now everybody is happily branching and merging.  I think we needed a week to get really comfortable. Great post.

  • Ole

    The title suggested an interesting solution, but provided none for me…