Subversion 1.11 is the first of the new 6-month regular releases with an emphasis on introducing new features more quickly and a shorter support period. For those requiring stability we have Long-Term Support releases; this is not one of those. For details see How We Plan Releases.
Changes I was involved with are:
- Improved Shelving (experimental)
- Commit checkpointing (experimental)
- Viewspec output command (experimental)
- Additions to svn info –show-item (‘schedule’ and ‘depth’)
Most interesting from my point of view is the already considerable enhancement of shelving compared with 1.10. No longer do we store the shelf as a patch file, but as complete before-and-after content, and we apply it in the same way ‘svn update’ or ‘svn merge’ would, except without (yet) any conflict handling.
The 1.11 version of shelving also adds a limited form of checkpointing, in the form of multiple versions of a shelf. It is analogous to how we might manually save “my-change-1.patch” and then a later version as “my-change-2.patch”. Shelving in Svn-1.11 summarizes the changes and gives an overview.
I should point out that while shelving is enhanced, it still has a substantial gap: it lacks support for copies and moves, and mkdir and rmdir. To fill this gap I am working now to put in place consistent internal APIs through which to push and pull changes into and out of the working copy storage layer. With those in place, an implementation of shelving that supports the full range of WC operations should be as simple as a glue layer that plugs a “pull from WC” API into a “push to shelf” API, and vice-versa.
The other notable improvement listed in the 1.11 release notes is one that Stefan Sperling has been devoting a lot of effort to:
That one is all about offering the user some sensible and useful options when tree conflicts occur.
Now I’ve got this release out the door I am looking forward to continuing development.