Subversion 1.5 is Ready

Subversion 1.5 has just been released and has a whole raft of new features that developers have been asking for. To take full advantage of all the new features you’ll need to upgrade both your server and clients, but both will inter-operate so you can upgrade gradually if you wish. Server upgrade does not require a dump and reload, but as usual with any major upgrade you should back up your repositories first. Some of the new features in 1.5 require a repository upgrade—after installing the 1.5 server software use svnadmin upgrade to bring your repositories up to the newest format, Subversion won’t do this automatically.

The killer new feature in Subversion 1.5 is merge tracking. This is a feature that Perforce has had for years and that I always missed in Subversion. It’s a major change and the Subversion developers have been working on it for several years—there’s literally been a design document in the Subversion repository since the 1.0 days.

Usually when creating a release, you’ll create a production release branch of your code. This branch will be where you get your software ready for final release, fix the last few bugs, that sort of thing. You’re also likely to use this branch for production support, fixing production issues when they arise. Using this strategy, detailed in Pragmatic Version Control using Subversion, you will frequently need to merge release branch changes back down to the trunk. Until now, you had to manually track which changes you had already merged, and ask Subversion to only merge new changes. This meant a fair amount of manual bookkeeping, writing down revision numbers, looking at log entries, and so on.

Subversion’s new merge tracking fixes the need to manually figure out which changes need to be merged between branches. Instead you just tell Subversion you want the branch changes merged to the trunk, and it figures out what to merge. You can run the same command every week to merge changes, no revision numbers required. Subversion 1.5 also makes it easier to merge entire branches back down to the trunk, for example when merging an experimental changes branch to the trunk.

For merge tracking to work, you need to upgrade both your server and client to 1.5, and upgrade your repository with svnadmin upgrade. Merge tracking isn’t quite finished in Subversion—1.5.1 will address performance issues and some edge cases such as cyclic merges.

Another great feature in Subversion 1.5 is change list support. As you are working on a change, you can organize your changes into named change lists, and check them in independently. This is really useful in cases where you’re working on a feature but then someone asks you to fix a bug, and you want to do a quick fix on the bug and check it in. You can now just fix the bug, keep the bug changes in a different change list to the feature changes, and then commit the bug fix without committing the unfinished feature. This is a client-only feature which many people did manually previously—I know I’ve deliberately done half-commits so someone else could see my work sooner. Unlike the Perforce version of change lists, no-one else can see your in-progress change lists, they’re stored on the client only.

As usual TortoiseSVN, everyone’s favourite Windows Subversion client, has full support for all the new Subversion features.


mike on June 23rd 2008 in Agile

7 Responses to “Subversion 1.5 is Ready”

  1. The Punch Barrel / Subversion 1.5 is Ready responded on 24 Jun 2008 at 6:23 am #

    [...] Mike Mason » Subversion 1.5 is Ready [...]

  2. Phillip responded on 24 Jul 2008 at 4:31 pm #

    After doing a svnadmin upgrade [repos], we can still update, but we can no longer commit; the error being:

    svn: Commit blocked by pre-commit hook (exit code 1) with output:
    svnlook: Expected FS format ’2′; found format ’3′

    Is there any way to roll back the update, so we can at least keep working without branching? I’ve been googling all around, and there seems to be no mention of undoing an upgrade…

  3. mike responded on 05 Aug 2008 at 2:46 pm #

    Hi Philip, apologies for the delay in responding but I’ve just become a Dad!

    It sounds like your pre-commit hook is running svnlook from 1.4 and it doesn’t work with the new 1.5 format. Make sure all the binaries on the server are 1.5, not a mixture of 1.4 and 1.5. For example, you might have upgraded your “subversion server” package to 1.5 but not upgraded the “subversion client” package. Exact package names will depend on what Linux you’re running.

  4. Naren responded on 03 Oct 2008 at 4:43 am #

    Hi Mike,

    I hope this message finds you well.

    I am in desperate need of assistance and have been trying for some time now with no luck. And it seems you are the only person that maybe able to assist. Every avenue i try, i seem to be hitting brick walls. Please, can you assist.

    We currently have a Solaris v10 setup where we have a server and multiple containers .. Now when we normally install any client s/w, we will install it on the global server and then it will filter through the various containers.

    I need to know if subversion client supports this? If I’d install the client on the main global server, will it prompt me to filter down to the various containers? Will it ask me which containers i’d want to filter down to ?

    We tried to install Subversion client on one of the individual container’s but it refused for us to write to /usr/bin directory due to our setup.

    The containers are sparse.

    Your help will be greatly appreciated.

    Ps. If you could reply as soon as possible I would be very grateful …

    And apologies for any inconvenience caused.

    Thanks Kindly

  5. mike responded on 03 Oct 2008 at 6:31 am #

    Hi Naren,

    Subversion should work just like any other Solaris software. It’s a while since I used Solaris and I haven’t used 10 with its containers. The Subversion site lists two packaging schemes for Subversion, the CollabNet package and the Sunfreeware package. I’ve had luck with Sunfreeware in the past, it might be familiar to you.

    CollabNet Subversion for Solaris:

    Sunfreeware Subversion for Solaris: (Note: this is Subversion 1.4.5, not 1.5.x, but the 1.4 client will work with a 1.5 server).

    Good luck!

  6. Lucifer responded on 21 Jul 2009 at 11:07 am #


    We need to upgrade our SVN from version 1.4.4 to version 1.6

    I thought we could use command line: svnadmin upgrade

    But it does not exist in our version.

    SVN is running on a Windows Server environment

    what should we do?

  7. mike responded on 21 Jul 2009 at 11:26 am #

    First make sure you have a backup of your Subversion repository. Then install the new 1.6 server. I use the CollabNet binaries, they have a nice installer and seem to work well:

    Make sure you install the server and client, not just the client. After that you should have the svnadmin tool and be good to go.

    If you are still having problems, check with whoever originally installed your Subversion server. It sounds like you might be confused between doing a client upgrade and doing a server upgrade.

Trackback URI | Comments RSS

Leave a Reply