This post is from the CollabNet VersionOne blog and has not been updated since the original publish date.
Considerations when upgrading to Subversion 1.5
One of the most common questions that occurs whenever a new release of Subversion (or any product) comes out, has to do with the considerations you need to take into account before upgrading. I will try to cover some of those in this post.
Subversion’s compatibility guidelines guarantee that any 1.x client can talk to any 1.x server. So you do not have to upgrade the client and server at the same time. The 1.5 client can talk to 1.0-1.4 servers and any 1.0-1.4 clients can talk to a 1.5 server.
Those same guidelines say that you never have to reload a repository when upgrading the server. You can upgrade your server from 1.0-1.4 to 1.5 and you do not need to do anything to your repositories. The new server will silently make any updates that are needed, when they are needed. In the case of 1.5, a new SQLite database file will be added to the repository to store indexes that speed up the new merge tracking function. Even though you do not have to reload your repository, there are often small efficiencies you can gain by doing a dump/load of your repository. In the case of this release, there is a new storage mechanism for fsfs repositories. Instead of storing all of the revisions in a single folder, we now "shard" the repository by creating a sub-directory for each 1000 revisions. This does not improve performance of Subversion, but it might improve performance of things like backup utilities or other tools you use to work with the file system on the server. In this case, you do not have to dump/load to get this feature, there is a Python script you can run that will do the sharding for you. This script will run relatively quickly, certainly orders of magnitude faster than a dump/load.
Some features of Subversion 1.5 will require that you have a 1.5 server and a 1.5 client to enjoy the full benefits of the feature. For example, the merge tracking feature requires that both the client and server are running 1.5. If one of them is running a lower version than you get the merge functionality that existed in that version of Subversion. If you want to take advantage of merge tracking you really need to update your server and all of the clients that are doing merges. Doing a merge with an old client will work, but will not set any of the merge tracking information when the change is committed. This simply means that someone using a 1.5 client later will attempt to merge the same info again and get conflicts. The svn merge –record-only command can be used to fix this after the fact.
When using the new sparse-checkouts functionality it really helps to have a 1.5 server. The feature will work with an older server, but in most cases the server will still send the extra information (file contents) to the client and the client has to discard what it does not want.
There is an important client-side compatibility feature to take into account. Some of the new features of 1.5 such as sparse-checkouts and changelists necessitate a new client working copy format number. So this means as soon as you perform an operation that needs to re-write your working copy (checkout/update/switch/commit/propset etc.) then the internal format of the working copy will be upgraded to the new format for Subversion 1.5. Once this happens, you will no longer be able to use a 1.4 client with that same working copy. The same sort of change occurred with the 1.3 to 1.4 upgrade process. We know that this really impacted many users that were stuck using an older client, so we are including a Python script that you can run to downgrade a working copy back to the 1.4 format. We will distribute this as an EXE for Windows users. Just to make this perfectly clear, you can have a 1.4 client and 1.5 client on the same system. You just need to be careful to not mix their usage on the same working copy. Also, pure-read operations like (status/info/ls) do not update the working copy. So simply viewing a working copy with a new version of TortoiseSVN or SCPlugin installed does not modify the working copy format. Conversely, however, an old version of one of these tools will not be able to read a 1.5 working copy.
Hopefully this answers the questions about upgrading to Subversion 1.5. It is going to be a great release and I certainly hope people choose to upgrade when it comes out. If you have additional questions that I did not cover, please post them in the comments or on the Subversion Users forum on openCollabNet.