#subversion #fail

So, if you're updating to subversion 1.7, and you are using an eclipse svn client, BEWARE.

Last week I updated svn on my unix box to version 1.7.** You know, Subversion is used on a large scale on our planet, so one would assume that backward compatibility with older svn clients would be a priority. After all, these are smart people writing subversion. Alas, my repository became incompatible with my subversion 1.6 client after touching my repo with 1.7. Ensue my pain.

At first it was not obvious what had happened, a few days had gone by before I was back in eclipse and it took me a minute to pinpoint the fact that I could not reach this one particular repository. The error message did not say anything about not recognizing the server side format; instead it complained that a directory did not exist, in spite of the fact that it actually did exist. Huh? Eventually it became clear that my subclipse 1.6.x client was the problem.

Well, the new subclipse 1.8.x supports svn 1.7, so no problem, I just need to go update the plugin in eclipse.

So I go to the expected place in eclipse to update: Help > Install new software... > Work with: and picked "Subclipse 1.6.x Update Site" from the list and.... oh, wait.... but I want 1.8.x, not 1.6.x. But isn't 1.8 and upgrade of 1.6? Whoa, hang on, they didn't name their plugin "Subclipse Update Site". They named it "Subclipse 1.x.x Update Site". WTF? I never really recognized this downside of having separate plugins for each version of subclipse. #subclipse #fail

Ok, fine, I'll just install the 1.8 plugin and it will do "the right thing". After all, it wouldn't seem right to uninstall 1.6 and lose all my repository setups.... Nope. You can't install both. Ok, I'll buy that. You must uninstall 1.6 first. And you have to Google around enough to have faith that it won't wreck or lose your existing list of repositories in the SVN perspective/view. Cross fingers.

So let's uninstall 1.6.x plugin.

So... do you know how to uninstall a plugin from eclipse? Same screen you use to do installs, right? Wrong. Instead, you go to the next obvious place: Help > About Eclipse Wat? #eclipse #fail

Yeah that's right. Under Help > About Eclipse because it is the intuitive place to fucking look, don't ya know. And then you click the Button "Installation Details". And then in the "Installation History" tab select all the subversion things from tigris.org and click "Uninstall...". Done with uninstall of 1.6.x subversion plugin. Now you can return to the "Install new software" place and install Subclipse 1.8.x. It installs fine. And my old repository meta data was intact! Yay!

But wait.

Turns out Subclipse 1.8.x only ships with JavaHL and no SVNKit any more***. If you use svn over ssh, well, you're screwed. Well, not entirely, but get set for another round of pain. You'll see this sort of thing:

svn: Unable to connect to a repository at URL 'svn+ssh://hostname/opt/svnrepo'
svn: Can't create tunnel: The system cannot find the file specified.

Using JavaHL to do svn over ssh means you have to hook up an external executable to handle the SSH stuff. Something like good old PuTTY. Or better yet (because it doesn't pop up cmd windows) is TortoiseSVN plink.exe. See this ancient post on how to configure SVN+SSH with JavaHL http://goo.gl/A7R6e

Ok, fine. So I sorta got this to work. Here is a reminder of why it sucks to set this up: http://goo.gl/y9f3S

C'mon, ssh implementations are open source, and we can't seem to get that functionality built in to eclipse? still? really? Why is this so hard? #megafail

My remaining pain is that plink.exe prompts me for a 'login id' every time I read or write the repository. I have tried every combination of flag, environment variable setting, public key thing, subversion config.ini (did you know that existed?**), some windows registry hackery, googled-the-fuck-out-of-it, even sacrificed a chicken*** -- I've tried everything but the one thing that will work. And because I have already wasted hours on this little diversion today, I have concluded I will now waste less time by typing my fucking login id every time between present day and whenever the fuck SVNKit 1.7.x ships.

What a painful chain reaction of events. I really stepped in it today. It's hard to remember the other 99.73% of days that don't kick you in the nuts.

I know it is my current state of emotion speaking here, but I think SVN is eventually doomed, yet it is so entrenched today. I think anthropologists will find the fossilized remains of subversion in the same rocky deposits that contain humanoids with pinky toes.

Long live #git .

** I upgraded svn so I could use the 'git svn' command to transform a svn project into a new git repository. At least that worked.
* SVNKit.org is working (since at least October) on a new version that will be compatible with svn 1.7. Now it is due out in February.
** It lives at C:\Documents and Settings\yourname\Application Data\Subversion\config
*** Well, that was lunch....
Shared publiclyView activity