Apache Software Foundation
[S] Subversion

Apache Subversion 1.14 LTS Release Notes

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

TODO: If making an alpha release before branching 1.14.x, links to files in ViewVC may need to be temporarily pointed at trunk.

What's New in Apache Subversion 1.14

Apache Subversion 1.14 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.13.x is also in 1.14, but 1.14 contains features and bugfixes not present in any earlier release.

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

Compatibility Concerns

Older clients and servers interoperate transparently with 1.14 servers and clients. However, some of the new 1.14 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.14 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.14 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.14 libraries. However, a program written for 1.14 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

Upgrading the Working Copy

Subversion 1.14 uses the same working copy format as Subversion 1.8 through 1.13.

Before using Subversion 1.14 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.14 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.14 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.

New Features

Enhancements and Bugfixes

Command-line client improvements (client)

Server-side improvements

Client- and server-side improvements

API changes, improvements and language bindings (client and server)

Support for Python 3.x

Some optional features of Subversion utilize the Python scripting language.

Subversion's SWIG Python bindings and Subversion's test suite now support Python 3.x (and newer).

TODO: Describe which minor releases of Python 3.x we plan to support through the four-year LTS period of Subversion 1.14. Per recent discussions on the dev@ mailing list, that might be some form of "rolling" support: In each 1.14.x patch release, we would make an effort to support the oldest through newest minor lines of Python 3.x that Python upstream supports at the time of our release. However, we could drop support for the oldest one if we have a compelling reason to do so.

Of course, we welcome contributions that extend Subversion's Python support to include other versions, subject to the project's other needs. See the section Enthusiastic Contributors Welcome below.

Support for Python 2.7 is being phased out

Python is Optional. Read more below.

As of 1 January 2020, Python 2.7 has reached end of life. All users are strongly encouraged to move to Python 3.

As Subversion 1.14 is a Long Term Support (LTS) release with planned support into 2024, well beyond end-of-life for Python 2.7, the core Subversion developers cannot commit to supporting and testing with Python 2.7, or to fixing bugs that affect Python 2.7 only, for the duration of this support period.

This means that although Subversion 1.14.0 still technically works with Python 2.7, any later 1.14.x point release may drop this support if it becomes too difficult to maintain.

If you must continue using Python 2.7, our previous Long Term Support release, Subversion 1.10, is supported until 2022. Python 2.7 support will not be removed from Subversion 1.10.

Of course, we welcome contributions that extend Subversion's Python 2.7 support, subject to the project's other needs. See the section Enthusiastic Contributors Welcome below.

Python is Optional

Subversion does not require Python for its basic operation. Python is only required for building Subversion and for using Subversion's SWIG Python bindings. If you do not do either of these things, then this change does not affect you.

The Python bindings are used by:

  • Third-party programs (e.g., ViewVC)
  • Scripts distributed with Subversion itself in the tools/ subdirectory.
  • Any in-house scripts you may have.

In more detail, Python is required for doing any of the following:

  • Use the SWIG Python bindings
  • Use the ctypes Python bindings
  • Build Subversion on Windows
  • Build Subversion from a tarball on Unix-like systems and run Subversion's test suite
  • Build Subversion from a working copy checked out from Subversion's own repository
  • Build the SWIG Python bindings
  • Build the ctypes Python bindings

Python is not required for doing any of the following:

  • Use the core command-line binaries (svn, svnadmin, svnsync, …)
  • Use Subversion's C libraries
  • Use any of Subversion's other language bindings
  • Build Subversion from a tarball on Unix-like systems without running Subversion's test suite

New Build-Time Dependency: py3c

Subversion's support for Python 3.x SWIG bindings introduces a new optional dependency on the Python 3 Compatibility layer for C extensions (py3c).

You need py3c to build the SWIG Python bindings, regardless of the version of Python. As py3c is a header-only library, it is needed only to build the bindings, not to use them.

The convenience script that downloads Subversion's minimal build-time dependencies, get-deps.sh, has been updated to download py3c. This script is found in the source distribution's root directory. For the full list of Subversion's dependencies, see the INSTALL file in the same directory.

Known issues in the release

There are some known issues in the Subversion 1.14 releases. These may be fixed in later 1.14.x releases.

Python 3 support is incomplete

Some Python scripts that are included in Subversion's release distribution do not support Python 3 yet. For an exhaustive list of all Python scripts and files that use Python, categorized by their Python 3 support status, see the Subversion's Python 3 Support Status wiki page.

Subversion 1.14.x is a Long-Term Support (LTS) Release

1.14 is a Long-Term Support (LTS) release. See Supported Versions and How We Plan Releases.

Enthusiastic Contributors Welcome!

You can contribute to Subversion!

As Subversion is an open source project developed and supported by volunteers, we are always happy to welcome enthusiastic participants to the community.

Whether you'd like to see support for additional versions of Python or have ideas for some big new features, if you're willing to invest the effort, Subversion can be anything you imagine.

Join the conversation by email: For our mailing lists, see https://subversion.apache.org/mailing-lists.html

Or by IRC at irc.freenode.net:

Get the source:

Join us today!