Subversion 1.1 can best be summarized as: (1) an optional new non-database repository back-end, and (2) a whole slew of client-side improvements. Details are given below.
Note that Subversion 1.1 is a superset of all the Subversion 1.0.x releases. The 1.0.x releases contain nothing but critical bugfixes backported from the 1.1 development line. Subversion 1.1 introduces new features and fixes many smaller bugs.
Subversion's compatibility and version-numbering policy is documented here. Here's a quick summary:
Database schema: if upgrading to Subversion 1.1, there is no need to dump and load your repository. There will be no changes requiring dump/load before Subversion 2.0.
Client/server compatibility: a 1.X client and 1.Y server are always interoperable. However, the latest features or bugfixes may not be available unless both client and server are the latest version.
API/ABI compatibility: the 1.1 release only adds new functions; thus a 1.0 program can both compile against and use 1.1 libraries at run-time, but a 1.1 program cannot use 1.0 libraries.
It's now possible to create repositories that don't use a BerkeleyDB database. Instead, these new repositories store data in the ordinary filesystem. Because Subversion developers often refer to the repository as "The Filesystem", we have adopted the rather confusing habit of referring to these new repositories as "fsfs" repositories... that is, a Filesystem implementation that uses the OS filesystem to store data.
Note that the data files created by fsfs repositories are still in a binary format, and are not human editable!
Why would someone choose an fsfs repository over BerkeleyDB? The immediate and obvious advantages are the ability to access a repository over a network filesystem, and no more database "wedges" needing recovery. You can read the full list of advantages/disadvantages at http://svn.apache.org/repos/asf/subversion/trunk/notes/fsfs
To create an fsfs repository, simply run 'svnadmin create --fs-type fsfs'. Or, if BerkeleyDB wasn't detected at compile time, 'svnadmin create' will default to type fsfs.
This feature allows unix users to place symlinks under version control. (Note: this is not about creating links inside a repository that point to other parts of the repository!)
When a user adds a unix symlink to version control and commits, the repository stores the object as a file with the "svn:special" property attached. When the client sees this property during checkouts and updates, the repository file is translated back into a symlink within the working copy. On win32 systems, the client does no translation, and the user sees just an ordinary file. (But a win32 user can hand-edit the contents of this file, which will still have an affect of changing the symlink on a unix system.)
Subversion makes a lot of noise about the way branches (copies) of files and directories maintain historical connections to their source, but in Subversion 1.0 only 'svn log' actually follows that history, not 'svn diff', 'svn merge', 'svn list', or 'svn cat'.
This problem (issue 1093) is now fixed in Subversion 1.1. All client subcommands now transparently trace backwards through renames when examining older versions of files and directories.
In the 1.0 command line client, users had to escape URLs manually. The client only accepted "legally correct" URLs, such as
svn checkout http://host/path%20with%20space/project/espa%C3%B1a
The 1.1 command line client now knows how to do what web-browsers have been doing for long time: it auto-escapes characters like spaces and other upper-ASCII i18n characters.
svn checkout "http://host/path with space/project/españa"
The definition of an Internationalized URI (IRI) is still a work in progress; see the draft spec.
Subversion 1.1 is now using gettext() to display translated error, informational, and help messages to the user. We currently have translations for German, Spanish, Polish, Swedish, Norwegian Bokmal, Traditional Chinese, Japanese, and Brazilian Portuguese, and we're looking for volunteers to write translations for other languages. To localize your Subversion client, just set your LANG environment variable:
$ export LANG=de_DE $ svn help cat cat: Ausgabe des Inhaltes der angegebenen Dateien oder URLs Aufruf: cat ZIEL... [...]
Faster checkout, update, status, and blame commands.
There have been historical problems with permissions when multiple users share a working copy. We believe these problems to be fixed now, see issue #1509.
The previous store-auth-creds runtime variable still works, but many users were unhappy with it. It disables all credentials caching on local disk: passwords, usernames, server certs. This new runtime variable only disables password caching, so that server certificates can still be remembered.
More than 40 "small" bugs fixed. See the CHANGES file for details.
A number of new 1.1 functions have been introduced, with the "2" suffix, and the older versions are now marked deprecated (and will be removed in Subversion 2.0). For example, a new svn_wc_diff2() function has superseded svn_wc_diff(). See the CHANGES file for details.
There has been extensive work on the python, perl, and java bindings. More coverage, more functionality, and they're now fully integrated into the main Subversion build system (just run 'make swig-py' or 'make swig-pl' or 'make javahl').
See our roadmap for what the future looks like.
If you're looking for testimonials on Subversion, see our new testimonials page.
As usual, you can find links to other Subversion-related sites, projects, and essays on our links page.