Channels ▼

Open Source

What's New in Subversion 1.7

The Apache Subversion project expects to soon announce the general availability of the eighth major release of its ubiquitous open source version control system. Subversion 1.7.0 will be the first release from the project since its celebrated move into the Apache Software Foundation’s famous family of mission-critical software projects. Now, after baking for a couple of years, the oven timer is finally ringing. So just what’s being served here?


The single largest feature in the 1.7 release isn't even really a feature in and of itself, but is instead a major plumbing overhaul. Subversion ships as a collection of well-defined libraries and APIs, with tooling (such as the "svn" command-line client) to make it all usable. The oldest of those libraries is the so-called working copy (WC) library, which is responsible for tracking enough client-side information about your version-controlled files so that Subversion can easily detect, examine, revert, and publish the changes you make to those files. As Subversion's data model and feature set matured over the past decade, this library grew in a somewhat piecemeal fashion, eventually evolving into a messy chunk of code that was hard to maintain and even harder to cleanly enhance.

Subversion 1.7 delivers a completely redesigned working copy library, universally referred to as "WC-NG." This work is the single defining feature of the release. As is often the case with such code overhauls, the new library implementation flies somewhat under the radar from the user's perspective. But while the original intent was to deliver a new foundation for future improvement, Subversion's developers — and by extension, its users — are already reaping a harvest of immediate, tangible benefits from this work.

The biggest benefit that WC-NG brings is enhanced performance. The original WC library distributed the working copy's administrative metadata throughout the directory hierarchy. Because of this, most Subversion operations had to walk the entire directory tree — often, multiple times — just to gather the required information about, and apply changes to, the working copy. WC-NG instead centralizes all this information in a single database, so most of those slow directory walks have been completely eliminated. On operating systems with less-than-stellar filesystem performance (such as Microsoft Windows), the difference is notable, with some users reporting that their most common operations are faster by an order of magnitude!

Besides the improvements in speed, WC-NG has already allowed the Subversion developers to fix a large number of known defects. There are far too many to list here, but there is one that certainly deserves a mention due to its commonness: case-only renames. Prior to 1.7, Subversion failed when users on case-insensitive platforms (such as, again, Windows) tried to rename a file in such a way that the old name and new name differed only in the letter casing, e.g., from "myfile" to "MyFile." This ancient bug is now fixed — and a slew of additional bugs along with it!

The benefits don't stop with the core Subversion distribution. Providers of third-party Subversion clients and IDE integrations (AnkhSVN, Subclipse, TortoiseSVN, etc.) report that WC-NG's capabilities are already enabling the addition of new features to those tools. It might have been a thankless plumbing overhaul, but it would appear that WC-NG's new pipes terminate at a virtual Fountain of Youth for the Subversion project.

Revised HTTP Protocol

Another important-yet-mostly-invisible enhancement made in Subversion 1.7 is best described not so much by what the software now does, but by what it no longer tries to do. You see, Subversion was born back in a time when the Web-based Distributed Authoring and Versioning (WebDAV) protocol was relatively new. As new protocols tend to do, WebDAV — specifically, the Delta-V extension thereof — made big promises. The possibilities of a standards-driven version control protocol were mind-boggling: can you imagine using your Subversion client to communicate with a ClearCase VOB server? So Subversion set off into the exciting frontier of WebDAV/Delta-V, using the Apache HTTP Server and its reference implementation of WebDAV as the primary building blocks of the first Subversion server.

Unfortunately, Delta-V failed to catch on. Subversion's client/server communication was, as a result, unnecessarily chatty and abstract. So the Subversion developers officially gave up on the dream of interconnectivity and decided to put its HTTP communication protocol on a strict diet. Subversion 1.7 delivers more streamlined communication between Subversion clients and servers while still preserving compatibility across all released Subversion versions to date. Subversion 1.7 also preserves the parts of its WebDAV/Delta-V implementation, which remain beneficial to users — such as the so-called "autoversioning" support, which allows Subversion repositories to be mounted as fully operational remote WebDAV filesystem shares.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.