=Subversion 1.7 Support ==Introduction Collabnet has recently officially released it's new Subversion client in version 1.7. Sadly, our integrated subversion clients we use in the IDE (both javahl and svnkit) support 1.6 working copies at max. Coming across a 1.7 working copy results in exception and the client refuses to talk and work with such a working copy. To fully support the 1.7 subversion we need to upgrade our clients. Unfortunately, svnkit has not yet released a compatible version (they're planning it for the end of November 2011 as stated on [http://svnkit.com/download.php download page]) and javahl (along with the svnClientAdapter) are not fully tested. To sum up, we are not able to deliver a compatible bundled svn client for the 7.1 release. The schedule is the next release (7.2?). ==Work-around Although neither of our bundled clients is compatible with 1.7 working copies, don't fall into despair, there's still a work-around and you can use a (now obsolete in the IDE) commandline client. You just need to know how to activate it and make it a default used subversion client. To achieve this, run the IDE with: -J-DsvnClientAdapterFactory=commandline Add this option to ''netbeans_default_options'' in ''INSTALL_FOLDER/etc/netbeans.conf''. From this moment, the IDE will use the commandline client (svn executable) instead of the javahl or svnkit.<br/> '''Warning:''' not all features will work with the commandline client since it was made obsolete in 7.0 and later features in the IDE are not supported. ===Easier way The work-around does it's work but it's difficult to set up and not every user knows about it. We need to automatize the process and switch to the commandline client automatically (do the whole thing while the IDE's running, without a restart at best). ====Solutions # '''Opening a project from SVN 1.7 working copy with a 1.6 client.''' A user opens his project from a 1.7 WC and runs ''Subversion -> Update'' from it's context menu. The 1.6 client refuses to talk to the WC and throws an error. But instead of simply reporting the error, we parse the exception, realize that the problem is 1.7 WC and display a dialog offering an option to automatically switch to a commandline client. If he accepts, we switch to the client on run and store a flag that will enforce the commandline upon the next startup. From now on the IDE will use the commandline client until... # '''Overriding the cmd client.''' User wants to switch back to his 1.6 client. Maybe he's changed his mind and now wants to return to his 1.6 old working copies because he was not happy with 1.7 features. If he previously switched to the commandline client with the previous automatic process, he now needs to manually run the IDE with ''-J-DsvnClientAdapterFactory=javahl''. If he does so, the flag instructing us to use the commandline client '''will be cleared''' and no more have an effect on the IDE's behavior. The process is not irreversible, if he opens a 1.7 WC sometimes in future, the dialog offering the fallback will be displayed again. # '''Svnkit and Javahl are upgraded to 1.7.''' When this happens, the flag will be cleared and the IDE will work normally, that is javahl will be the primary client, next svnkit and at last the commandline as a fallback. ====Status Implemented in NetBeans 7.1 [[image: svn17warning.png]] ==Upgrade * Javahl status: '''upgraded''' * Svnkit status: '''upgraded''' * Upgrade of old working copies: '''implemented'''