Apache Software Foundation
[S] Subversion

Apache Subversion 1.11 Release Notes

This is work in progress. Subversion 1.11 has not been released yet.

What's New in Apache Subversion 1.11

Apache Subversion 1.11 is a superset of all previous Subversion releases, and is as of the time of its release considered the current "best" release. Any feature or bugfix in 1.0.x through 1.10.x is also in 1.11, but 1.11 contains features and bugfixes not present in any earlier release. The new features will eventually be documented in a 1.11 version of the free Subversion book (svnbook.red-bean.com).

This page describes only major changes. For a complete list of changes, see the 1.11 section of the CHANGES file.

Compatibility Concerns

Older clients and servers interoperate transparently with 1.11 servers and clients. However, some of the new 1.11 features may not be available unless both client and server are the latest version. There are also cases where a new feature will work but will run less efficiently if the client is new and the server old.

There is no need to dump and reload your repositories. Subversion 1.11 servers can read and write to repositories created by earlier versions. To upgrade an existing server installation, just install the newest libraries and binaries on top of the older ones.

Subversion 1.11 maintains API/ABI compatibility with earlier releases, by only adding new functions, never removing old ones. A program written to any previous 1.x API can both compile and run using 1.11 libraries. However, a program written for 1.11 cannot necessarily compile or run against older libraries.

There may be limited cases where the behavior of old APIs has been slightly modified from previous releases. These are cases where edge cases of the functionality has been deemed buggy, and therefore improved or removed. Please consult the API errata for more detailed information on what these APIs are and what impact these changes may have.

New Feature Compatibility Table

New Feature Minimum Client1 Minimum Server Minimum Repository Notes
Shelving (experimental) 1.11 any any Shelving in 1.11 is incompatible with shelves created by 1.10.
Checkpointing (experimental) 1.11 any any

Upgrading the Working Copy

Subversion 1.11 uses the same working copy format as Subversion 1.8 through 1.10.

Before using Subversion 1.11 with an existing Subversion 1.7 or older working copy, users will be required to run the svn upgrade command to upgrade working copy metadata to the new format. This command may take a while in some cases, and for some users, it may be more practical to simply checkout a new working copy.

Note: Subversion 1.11 cannot upgrade working copies that a 1.6 client would have refused to operate upon before an svn cleanup was run (with a 1.6 client). In other words, before upgrading to 1.8 or newer, a 1.6 or older client must be used to run svn cleanup on all 1.6 or older working copies that require cleanup. Likewise, Subversion 1.11 cannot upgrade corrupt working copies. Unfixable problems can arise from missing or corrupt meta-data inside .svn directories. Such damage to the working copy is permanent, and cannot be fixed even if svn cleanup is run prior to the upgrade.

If your working copy does not upgrade cleanly, please check out a new one.

Miscellaneous Compatibility Notes

There are some additional specific areas where changes made in this release might necessitate further adjustment by administrators or users. We'll cover those in this section.

SHA-1 checksums will no longer be published for released artifacts (subversion-1.11.x.tar.* and subversion-1.11.x.zip)

The release artifacts—subversion-1.11.x.tar.bz2, subversion-1.11.x.tar.gz, and subversion-1.11.x.zip—are no longer accompanied by *.sha1 files containing SHA-1 checksums, nor will SHA-1 checksums be advertised on the download page or in release announcements. PGP digital signatures and SHA-512 checksums will continue to be provided.

We consider the SHA-1 cryptographic hash function too weak for our needs.

New Features

Checkpointing (experimental)

Checkpointing (issue #3626) is the ability to save a snapshot of an uncommitted change in the WC from time to time, and later restore the working copy to one of those previous snapshots.

WARNING: The checkpointing feature is designated "EXPERIMENTAL" in 1.11. It is being released in an early form while development continues. It is expected to change significantly during and after the 1.11.x series. There is no promise of backward compatibility while it remains experimental.

The implementation is based on letting a shelf contain multiple versions. Therefore, see also Shelving.

The main checkpointing operations are, as listed in the Wiki page:

Save a checkpoint svn shelf-save foo copy the local changes into a new version of shelf 'foo'
doesn't revert the changes from the WC
svn shelve foo move the local changes into a new version of shelf 'foo'
and revert the changes from the WC
Restore / roll back svn unshelve foo 3 unshelve version 3 of shelf 'foo'
and delete any newer versions
Review checkpoints svn shelf-log foo list all the versions of shelf 'foo'
svn shelf-diff foo 3 show version 3 as a diff

Enhancements and Bugfixes

Command-line client improvements (client)

Improved Shelving (experimental)

Shelving (issue #3625), first introduced in Subversion 1.10, is improved in 1.11 to handle more kinds of changes more robustly.

WARNING: The shelving feature is designated "EXPERIMENTAL" in 1.11. It is being released in an early form while development continues. It is expected to change significantly during and after the 1.11.x series. There is no promise of backward compatibility while it remains experimental.

Shelving in 1.11 is incompatible with shelves created by 1.10.

The main improvements and changes are:

  • checkpointing support: a shelf stores multiple versions of a change and allows unshelving an older version
  • 'binary' files (and property values) are fully supported
  • patch files are no longer used as the storage mechanism; limitations and bugs due to patch file format are gone, such as handling svn:mergeinfo properties, binary data, and end-of-line characters
  • shelving to a given shelf name saves a new version of the changes each time, and the older versions can be retrieved—see the checkpointing feature
  • shelving and unshelving both warn and refuse to run if they detect states that they cannot handle (e.g. copies or moves)
  • unshelving applies the changes to the WC using a mechanism similar to merging, so that changes can be more robustly applied when the WC has been modified (e.g. updated) since the shelf was saved

The kinds of change you can shelve are committable changes to files and properties, except the following kinds which are not yet supported:

  • copies and moves
  • mkdir and rmdir

Shelving commands (see their help for details):

  • svn shelf-diff
  • svn shelf-drop
  • svn shelf-list, shelves
  • svn shelf-list-by-paths
  • svn shelf-log
  • svn shelf-save
  • svn shelve
  • svn unshelve

Experimental commands are listed in the help with an 'x-' prefix (for example, x-shelve) and can be used with or without the prefix.

A migration guide for users of the Subversion 1.10 shelving commands:

Subversion 1.10 command Subversion 1.11 equivalent
svn shelve [--keep-local] SHELF [PATH...] works similarly; saves a new version each time it is used
svn unshelve [SHELF] svn unshelve --drop [SHELF]
svn unshelve --keep-shelved [SHELF] svn unshelve [SHELF]
svn shelve --delete SHELF svn shelf-drop SHELF
svn shelves or svn shelve --list svn shelves or svn shelf-list

Further information can be found in the Subversion Wiki under Shelving and Checkpointing.

Improvements to the interactive conflict resolver

See in particular issue #4694 "Unresolvable tree conflict when cherrypicking a file-edit after file was moved on source branch" and issue #4766 "resolver adds unrelated moves to move target list".

Viewspec output command (experimental)

An experimental 'svn info --viewspec' command outputs a view spec describing the current WC shape, in the format used by the old script tools/client-side/svn-viewspec.py. See issue #4753 "SVN viewspec feature".

Additions to svn info --show-item

Add 'schedule' and 'depth' items to 'svn info --show-item' (r1827032).

Allow the client cert password to be saved

Allow the client cert password to be saved (r1836762).

Server-side improvements

svnadmin dump shouldn't canonicalize svn:date (issue #4767)

svnadmin dump no longer attempts to canonicalize the svn:date revision property value in its output. The dump output will now contain the value exactly as it exists in the repository.

Client- and server-side improvements

Known issues in the release

There are no known issues specific to this release at the moment.

Subversion 1.11.x is a Regular Release

1.11 is a regular release, not a Long-Term Support release. This release does not change the status of existing LTS releases (1.9 and 1.10). See How We Plan Releases.

Therefore, if you are running into an issue with the old stable version which has already been fixed in the latest version, we might ask you to upgrade to that version to resolve the issue.