Next Subversion release — what to expect in release 1.10 — this March

Jacek Materna
5 min readJan 22, 2018

--

I originally forecasted 1.10 would be released Fall 2017 but due to good feedback it’s been pushed to March 2018 to get those comments in. That being said SVN’s shelving feature did make it into NextGen SVN which you can try free on our site right now whether on CLI or TortoiseSVN.

While NextGen SVN is well under way, the community development team has been busy working on the next release — “1.10” aimed at a March timeframe. While the GA release is still many weeks away, the software has entered a critical phase — late-stage testing — which means that it’s ready for external testing with a larger user base!

I recently caught up with our very own Julian Foad who is the community release manager for 1.10 and he’s shared some updated insights on the upcoming effort.

In short, three major areas have been the focus, all of which give strong benefits to enterprise software teams:

Faster commits for Cloud

Better merging UX

Local operations — Shelving implementation (merged from NextGen branch)

Faster commits — Large file performance — Subversion has long been a go to version control technology for versioning large binary files. As I wrote in a previous article, teams working with digital content such as Game studios typically see a dizzying amount of large files in their projects. A key objective for managing large files must always be performance. Any improvement to this feature has immediate impact for users.

The point of a version control system is to support team based software development workflows and removing the concept of a working copy is synonymous to “doing all operations remotely” — there is no local file on your computer, all operations happen on the server. This model does not make any sense in a collaboration environment because enterprise repos are big, all commits usually have more than one file and commits in certain cases could be GB+ in size.

But… what if there was a way to improve the performance but retain this secure and reliable workflow? That’s exactly what one developer did with his patch to introduce LZ4 compression to the backend. Zlib (DEFLATE) is an old algorithm — LZ4 allows extremely fast performance using the latest CPU advances.

With LZ4, users can expect up to 300% increases in commit performance when 1.10 rolls out! That’s a big deal for enterprise software development teams.

The community development team is very happy to see that 1.10 will bring faster performance for large binary files. This is another great add for the Subversion user base in the enterprise — building complex projects that span source code and large binary assets alike.

Faster HTTP(S) — Next on the list for performance is a little upgrade to the popular HTTP(S) transport. The svn client will be able compress data over http(s) endpoints when possible when interacting with a recent Mod_Dav module version. A developer submitted a patch to include this negotiation capability — win.

Overall this is a great addition to the Subversion user base already in the Cloud. HTTP(S) now gets closer to SVN+SSH performance while retaining the infrastructure simplicity inherent in HTTP(S) (notably on the security side).

Will your favorite Subversion desktop app take advantage? Yes, the desktop apps that use the Subversion native API will immediately be able to negotiate “faster” HTTP performance with the server side with no changes. Check out TortoiseSVN on NextGen SVN to realize Shelving on Windows today.

Better Merging User Experience — Merging in Subversion has been a long standing pain. Ask any enterprise software team about what is most painful with Subversion and you’ll get the answer “merging” 9/10 times. Why is it so painful? Well for one, complex/modern merging was never a first class citizen case for Subversion. Further, it has not been significantly touched since version 1.5 (other than the reintegrate changes in 1.8). Alas, Subversion users can rejoice as 1.10 take a big chunk of this problem away with a revised conflict resolution module to better automate the process of merging. While a single step, it is an important one — expect more improvements to merging in the future.

This feature takes a very large step towards moving the pain of merging away from the user. Only under dire-straights should Subversion have the user take action — what is a computer’s value if its cannot automate things for you?!

“It is encouraging to see members of the community devoted to improving the user experience. Stefan Sperling has brought a user-focused approach to conflict resolution, teaching Subversion to dig deep in the repository history to present a really informative view of what changes led to a conflict, and providing the easiest and most likely options to resolve it.” Julian Foad

Shelving gets mainlined from NextGen SVN Branch — While developing one change, you need to stop and work on an urgent fix or you want to commit a quick and easy change or try a different approach in the same code. You need to store the unfinished work and return to it later. Tis is table-stakes in terms of modern developer needs.

The solution in 1.10 is one-click patch management on top of ‘svn diff’ and ‘svn patch’.

  • similar to “git stash” — familiar
  • backward-compatible extension to WC format — (old clients still work, just not seeing the shelved changes) — low risk
  • supports exactly the same kinds of change as ‘svn patch’ and ‘svn diff’ — continuity

‘svn diff’ and ‘svn patch’ have historically been incomplete with various well known omissions (for example: binary content, copies, moves, directories) and various minor differences and ways of going wrong (for example, they use incompatible formats for mergeinfo but support other properties). Developing a ‘shelving’ feature based on diff and patch will force us to adopt the mindset that diff and patch must interoperate reliably, and so fix those deficiencies. The result will be that using ‘svn diff’ and ‘svn patch’ manually will then be a reliable solution on its own for those who have reason to continue using it. The additional ‘shelving’ user interface will remain an added convenience — Julian Foad

Stay tuned for more updates by following me or get on Twitter to keep up to date on 1.10 and 1.11 developments.

Happy SVN-ing!

--

--