Re: Can't create folder with square brackets
Stephen Elsemore <[email protected]> Thu, 23 Oct 2014 16:07:04 +0200
| Newsgroups | gmane.comp.version-control.subversion.subclipse.user |
|---|---|
| Message-ID | <CANtm4EtpwDX7pMzBW++yn2VO_6=dwj8F+A1UDK54Rr+ymczdaw@mail.gmail.com> |
I was able to reproduce the problem by right clicking a folder in the SVN Repositories view, selecting New -> New remote folder, and then trying to add a folder with square brackets in the name. I got: org.apache.subversion.javahl.ClientException: Bogus URL svn: URL 'myurlwithbrackets' is not properly URI-encoded I got similar errors if I tried to show history for a folder or file with square brackets in the name. On Thu, Oct 23, 2014 at 4:01 PM, Mark Phippard <[email protected]> wrote: > On Thu, Oct 23, 2014 at 9:45 AM, David Balažic <[email protected] > > wrote: > > >> I was curious and tried to reproduce the problem, but could not. >> >> I have Eclipse Kepler SR-2 (v4.3.2) with: >> >> Subclipse (Required) 1.10.5 >> >> Subversion Client Adapter (Required) 1.10.1 >> >> Subversion JavaHL Native Library Adapter 1.8.10 >> >> >> >> With repository on VisualSVN Server 3.0.0 >> >> >> >> I created , updated, viewed the log of a folder with sqaure brackets in >> its name but everything worked without error. >> >> Does the error happen in some special circumstances? >> >> >> Steve fixed this before I ever tried it. Not sure what he did to test > it. The OP mentions creating a folder. Did you try doing it against the > remote repository? It is possible you do not see this if you do it locally > and then just commit the folder. > > In general, when a URL is passed to the SVN API it has to be URI-encoded. > So, as an example, we have to convert spaces to %20. Any character that > has to be converted to a %xx value has to be done this way. We handle this > in the toString() method of our SVNUrl class: > > public String toString() { > // The URI class will throw Exception if there are spaces in the URL, but it seems // to handle other classes OK. I tested with @ + and Unicode characters. It leaves // the @ and + alone and converts Unicode to %nn. It is possible there are other // characters we need to replace here besides space. String s = get().replace(" ", "%20").replace("[", "%5B").replace("]","%5D"); > try { > URI u = new URI(s); > return u.toASCIIString(); > } catch (URISyntaxException e) { > return s; > } > } > > > So most of the work happens in the URI.toASCIIString() method that we > call. As the comment notes, this method does not convert spaces (and > possibly other characters). I assume that Steve confirmed that it does not > convert brackets and so he added those to the manual exceptions. I have > not checked if that is right or wrong, but that is what is needed here in > general. > > SVN itself handles all of this fine internally. The only issue is when we > have to directly provide one of these URL's in an API call. > > -- > Thanks > > Mark Phippard > http://markphip.blogspot.com/ > ------------------------------------------------------ http://subclipse.tigris.org/ds/viewMessage.do?dsForumId=1047&dsMessageId=3090359 To unsubscribe from this discussion, e-mail: [[email protected]].