Re: Can't create folder with square brackets
Mark Phippard <[email protected]> Fri, 24 Oct 2014 09:07:41 -0400
| Newsgroups | gmane.comp.version-control.subversion.subclipse.user |
|---|---|
| Message-ID | <CAHFaGCoJi1kgZ8Udd+Ra+5aehJhzpKNFrEkdsFBSypaCXwYXDQ@mail.gmail.com> |
We tried techniques like those once but they are encoding the URL the way a browser form POST wants to do it, not the way Subversion expects it. I will try to find the RFC that Subversion is following and see if I can find something better, but we have done this in the past. We obviously would prefer to call a method someone else wrote that does this correctly. On Fri, Oct 24, 2014 at 8:02 AM, David Balažic <[email protected]> wrote: > Maybe some of the possibilities mentioned here: > http://stackoverflow.com/a/16226168/822870 > > > > David Balažic > > Software Engineer > > www.comtrade.com > > > > *From:* Mark Phippard [mailto:[email protected]] > *Sent:* 24. October 2014 13:12 > > *To:* [email protected] > *Subject:* Re: [Subclipse-users] Can't create folder with square brackets > *Importance:* Low > > > > Is it not pretty clear already that is what we have tried to do? Find one > better and let us know. > > > On Oct 24, 2014, at 7:05 AM, David Balažic <[email protected]> > wrote: > > Yes, there it reproduces for me too. (trying to create a folder in the > »SVN Repository Exploring« perspective) > > > > I updated to subclipse 1.10.6 and now the characters [ and ] work, but > others still don't, like # or %. > > > > I suggest using an existing encoding method instead of reinventing the > wheel, because »home made« solutions are always full of problems like these. > > > > Regards, > > David Balažic > > Software Engineer > > www.comtrade.com > > > > *From:* Stephen Elsemore [mailto:[email protected] > <[email protected]>] > *Sent:* 23. October 2014 16:07 > *To:* [email protected] > *Subject:* Re: [Subclipse-users] Can't create folder with square brackets > *Importance:* Low > > > > 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/ > > > > -- Thanks Mark Phippard http://markphip.blogspot.com/ ------------------------------------------------------ http://subclipse.tigris.org/ds/viewMessage.do?dsForumId=1047&dsMessageId=3090403 To unsubscribe from this discussion, e-mail: [[email protected]].