Please improve SVN support in IntelliJ IDEA

Lately I'm getting more and more frustrated with the lack of decent Subversion support in IDEA. Ever since 11.1 (introducing SVN 1.7 support, with newer SVNKit versions, ...) there have been so many issues [1] that it's hard to keep working. The incidents of corrupted working copies (causing huge loss of time) and threading-issues just make it almost unusable. Like I mentioned in one of those issues, the loss of time / productivity that we incur because of this broken svn support is just staggering. I'm actively discouraging my colleagues from upgrading to 11.1, and instead prefer them to stay on 11.0 or 10.5.

This is very sad, knowing that the Apache Subversion project has released 1.7 almost 1 year ago (October 2011), with very nice improvements like the much faster new working copy format, and IDEA still hasn't gotten proper SVN 1.7 support (and in the meantime it has destabilized SVN support in general, also for 1.6 working copies). When SVN 1.8 gets released in a couple of months, will IDEA have decent SVN 1.7 support by then? Will we have to wait for another year then to get 1.8 support?

I'd like to point out that:

  • Version control is one of the most critical pieces of infrastructure for professional developers. You need it all the time, and it needs to work flawlessly. You need to be able to trust it. Issues that break working copies, or even have the potential to lose uncommitted changes are extremely disrupting.
  • SVN is still one of the most widely used version control systems overall, and even more so in the corporate world. I thought enterprise users were one of the main target audiences of a commercial IDE like IntelliJ IDEA.
  • As far as I know, none of the current stability issues are problems with core SVN itself, but are exclusive to IDEA and/or SVNKit (in any case, the responsibility currently lies with Jetbrains -- either fix the bugs in IDEA's SVN plugin, or work together more closely with the SVNKit team to get issues fixed, or get us some proper SVN support in some other way).


Still, these disruptive issues do not get fixed, and Jetbrains keeps shipping releases of IDEA with outdated snapshot builds of SVNKit [2].

To be clear, I don't blame the people that actually work on SVN integration, but perhaps there just aren't enough people able to spend enough time on this. But what I don't understand is why Jetbrains as a company does not put more effort into this (freeing up resources to work on this, maybe work closer together with the SVNKit team to get your SVN plugin really rock-solid, hiring additional experts, ...), thereby causing major problems for a lot of its customers.

Please address this situation and get us some SVN integration that works, so we can again start to trust our IDE.


[1] Some of the most destabilizing issues:

  • IDEA-83673: Checksum mismatch on SVN update
  • IDEA-85496: Getting svn: E200030: Commit failed (details follow): svn: E200030: BUSY
  • IDEA-88764: Subversion client requests non-existing revisions
  • IDEA-88772: Subversion operations occasionally act on wrong file
  • IDEA-81144: File has probably wrong encoding after getting a specific revision from SVN
  • IDEA-65331: Files are lost when package is moved  (loss of uncommitted changes -- needs to be backported to 11 IMO)


[2] IDEA 11.1.3 (released July 26th) was shipped with version r9277_v20120530_1958 of SVNKit (snapshot build of May 30th). In the meantime, SVNKit had already long released its final 1.7.5 version (on June 21st). Moreover, the SVNKit team had in the meantime already fixed more workingcopy-corrupting bugs for their upcoming 1.7.5-v1 release, so if IDEA 11.1.3 would have taken a more recent snapshot (1.7.5-v1 rc1 was made on July 18th), it would have gotten these fixes (see 'svn log http://svn.svnkit.com/repos/svnkit/') (note: I'm just guessing that these are relevant ... but they sound interesting):

  • r9324 (2012-06-25): SVNSqlJetStatement#reset was not called in several places, fix. That could lead to wrong recount value in PRISTINE table (because the trigger list wasn't cleared properly).
  • r9331 (2012-06-27): Possible corruption fixes: added reset() calls to finally block for SQLJet statements. Absense of reset() method may lead to invalid triggers set.
  • r9333 (2012-06-28): DAV URL cache was not properly cleaned on update when "useDAVWCURL" option was set to false.
  • r9336 (2012-06-28): SVNKIT-273: ACTUAL_NODE contained not NULL but empty 'conflict_working' in absense of "mine" version, fixed.
  • r9343 (2012-06-29): WC16: do not round file last modified time to 1 second precision when comparing it to the value stored in .svn/entries
  • r9348 (2012-07-01): External switch could produce wrong conflicting information in ACTUAL_NODE because base properties weren't read properly.
  • r9351 (2012-07-01): WC 1.6: Deletion and addition of a directory could lead to working copy root replacement, fixed.
  • r9356 (2012-07-02): Last modified time was wrong, * 1000 multiplier was mssing, fixed.
  • r9358 (2012-07-03): Checkout shouldn't allow 'null' value to get to dav cache storage because it is kept as an empty string there (and this transform should be considered as some kind of corruption).
16 comments
Comment actions Permalink

I would also mention Issue IDEA-75800: SVN "Merge from..." not working
I do not use Idea for SVN merge operations for months.
I congrat Idea IntelliJ Development Team for beeing so open to implement features that users request and being so inovative. I still consider Jetbrains IDEs are best on the market.
But, on the other hand this 10 months issue, preventing users to use svn merge operation for such long definitelly is a worse review, and purchasing comercial license becomes debatable.

Moreover, I totally agree with Johan Corveleyn about  the importance of VCS and especially of Subversion.

Just my 2c

0
Comment actions Permalink

Hello Johan,
thank you for your feedback and attention to Subversion issues in IntelliJ IDEA.

I answered in mentioned issues and repeat my answers here:

[1] Some of the most destabilizing issues:
• IDEA-83673: Checksum mismatch on SVN update
 Answered in issue; probably fixed in 1-7-5-v1
• IDEA-85496: Getting svn: E200030: Commit failed (details follow): svn: E200030: BUSY
 Answered in issue, the problem with inter-IDE locks will be addressed but requires some time to be implemented; definitely will be solved for IntelliJ IDEA 12
• IDEA-88764: Subversion client requests non-existing revisions
 Not sure what is the case; will investigate
• IDEA-88772: Subversion operations occasionally act on wrong file
 The problem is forwarded to svnkit
• IDEA-81144: File has probably wrong encoding after getting a specific revision from SVN
 Fixed in trunk in July, ported to 11.1.x
• IDEA-65331: Files are lost when package is moved  (loss of uncommitted changes -- needs to be backported to 11 IMO)
 Fix is ported to 11.1.x

Also, I confirm that svnkit version in 11.1.3 is old and they have fixed some important issues.
Right now new svnkit version can be taken from their site and svnkit.jar and sqljet.jar in $Intallation folder$/plugins/svn4idea/lib should be replaced with those from svnkit distribution archive (please rename correspondiong files to svnkit.jar and sqljet.jar without version numbers in names).

Here is the information on the new 11.1.4 EAP build: http://blogs.jetbrains.com/idea/2012/09/intellij-idea-1114-eap-build-is-available-117912/

0
Comment actions Permalink

Hi Irina,
Thanks for picking this up. I will give 11.1.4 EAP a try.

I added some more information to IDEA-85496 (Getting svn: E200030: Commit failed (details follow): svn: E200030: BUSY) regarding the reduced concurrency in SVN 1.7 in general (because of the new working copy format). I hope that helps understanding the underlying reason for these new problems. This issue is IMO particularly important to get under control, so we can all "use version control with pleasure" :-), without running into unexpected surprises.

Oh, and one more question, a shortcoming of IDEA's svn plugin that already annoys me for a long time: can someone please add the ability to edit log messages? See IDEA-60323. That's a standard feature of Subversion even from before version 1.0, so it would be nice if we could finally do this from within IDEA (this missing feature is one of the main reasons why most of my colleagues still have TortoiseSVN or a command line client installed).

Thanks for your work.

0
Comment actions Permalink

Hi Irina,

Another important issue which I forgot about in my initial post:
* IDEA-83768: Subversion: undo of case-only rename on Windows deletes local file, possibly losing uncommitted changes

This is quite important to fix, because of the potential to lose uncommitted changes. It's also a new issue since SVN 1.7, because before 1.7 one couldn't even perform a case-only rename with svn on Windows.

Can you take a look at this too? Case-only rename on Windows is an important improvement of svn 1.7, so it would be nice if it worked flawlessly.

Thanks,
Johan

0
Comment actions Permalink

I'm putting my comment for http://youtrack.jetbrains.com/issue/IDEA-85496 also here

I started my investigations on how IDEA could organize its access to Subversion 1.7 working copies,
and was going to build synchronization on the SQLite itself (for read operations, I was going to open "wrapping" read access to database (doing unlimited number of attempts) - which would allow to wisely use long "write" operations as update, which perform actual write to SQLite only at certain moments)

but during the experiments faced a problem with svnkit http://issues.tmatesoft.com/issue/SVNKIT-317
which, I believe, also is the main cause of this issue.
I mean, if it was fixed, we would see BUSY exception not so often

0
Comment actions Permalink

Thanks, Irina. That sounds like very good progress on this issue. I hope this can soon be fixed and released in IDEA.

0
Comment actions Permalink

And same thing comes again with 1.8 SVN
IDEA doesnt work with it :(

svn: E155021: This client is too old to work with the working copy at
'x_some_file_path_here_x' (format '31').

0
Comment actions Permalink

Hi Alexey,

Subversion 1.8 is not supported yet. Please watch http://youtrack.jetbrains.com/issue/IDEA-94942

0
Comment actions Permalink

Hi, this is a pretty serious issue and getting very dated, and it is not as though this is freeware or shareware.

SVN 1.8 is not new. I looked at your bugTrack and from what I could glean, you intend to make some major change to the manner that Intellij interacts with SVN in the future so this issue is never encountered again.

While that is all well and good, can you patch the current functionality to allow 1.8?

Really quite a pain.

0
Comment actions Permalink

I too have just ran into this issue.  I updated my project on accident via tortoiseSVN and now my IntelliJ instance won't work. This is aweful. Please fix this soon.

0
Comment actions Permalink

Just commit any changes, delete your project and re-check it out with a Subversion 1.7 client.

0
Comment actions Permalink
Is this still the case?  Do we still need to use 1.7 subversion client?
0
Comment actions Permalink

Its 1.8 support that I was looking for. I had to roll my repo back to 1.7 since IntelliJ 12 does not (or did not at the time) support 1.8

0
Comment actions Permalink

I may have been confused by your post Panos, I thought you were IDEA support responding to me.

Yes, as far as I know, IntelliJ 12 does not support SVN 1.8

0
Comment actions Permalink

Hello Irina,

I tried to update the SvnKit as mentioned, but it does not work (error "java.lang.AbstractMethodError: org.jetbrains.idea.svn.SvnAuthenticationManager.acknowledgeConnectionSuccessful" in the Idea log).
Even when copying all jars…
What is the correct way to update it ?

Idea version 12.1.4

0

Please sign in to leave a comment.