Version control tool Apache Subversion is now available in v1.11, which should improve tree conflict resolution, allow the saving of the client certificate password, and offer users commit checkpointing as well as better shelving to try.
Even though Git is the version control tool of choice for many, Subversion and others are still very much alive as this update of the Apache project shows. Subversion 1.11 is the first version since the project team decided on regular releases every six months in order to get new features out there quicker.
At least three new features can actually be found in the update, but since most noteworthy additions such as checkpointing are still experimental, users might want to take a step back and try them first, before getting too excited. The aforementioned commit checkpointing offers a way of saving snapshots of yet to be committed changes, that can be later used to restore previous versions of a change to the working copy. However it can’t yet be used to roll back to an exact working copy state after a messy update.
Checkpointing is part of the shelving feature, which is supposed to help pack changes into the working copy metadata and revert them from the working tree if needed. This could be useful if you’re working on a feature but have to temporarily switch to another task and don’t want to create a branch for the unfinished bits. Shelving was introduced in Subversion 1.10, but received so many changes since April, that it has become incompatible with the shelves created in that version. To recover them, users have to either use a 1.10 client for unshelving (= merge packed away changes into the working tree) or find the patch file and apply it with svn patch. Differences in the shelving commands can be found in the documentation.
In Subversion 1.11, shelving doesn’t rely on patches as a storage mechanism any longer, which means – among others – that handling binary data and end-of-line characters is now possible. Other improvements include that shelving and unshelving warn and refuse to run if they detect states like copies or moves they can’t handle, and a more robust mechanism similar to merging that is used when changes to the working copy are made during unshelving.
Another experimental feature is a command to write a view spec that describes the current shape of the working copy, e.g. “whether each subtree is at a limited depth, excluded, switched to a different URL, or updated to a different revision number, compared with its parent directory”.
Some of the stable improvements of the release are some additions to the interactive conflict resolver, which should help automatically solving conflicts stemming from moved files and directories.
On top of that, developers will find tools/dev/unix-build/Makefile.svn working better, the diff option pretty_print_mergeinfo exposed in APIs, and a tool to edit multiple log messages. A complete list of changes can be found in the release notes.
The release notes state that even though the new release cycle comes with shorter support periods, Subversion 1.9 and 1.10 are still looked after, and can even be regarded as long-term support releases (LTS). 1.14 should become the next LTS version of the tool and is supposed to be released in 2020 – two years after v1.10, which was introduced in April 2018.