[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[TSVN] url field in .svn/entries file is not %-escaped for non-ASCII chars

From: Hiroharu Tamaru <tamaru_at_myn.rcast.u-tokyo.ac.jp>
Date: 2005-05-12 16:04:42 CEST

Dear TortoiseSVN developers,

I'v found that the checkout procedure of TortoiseSVN (tested
1.1.3, 1.1.7) does not %-escape the repository URL string
passed from the user, when writing the .svn/entries file.

People at dev@subversion list told me that URI must have
non-ASCII characters escaped, and the libraries and command
line version of subversion should and do strip such raw
non-ASCII characters, and could eventually fail the command
in unexpected manners.

So I assume TortoiseSVN should %-escape the non-ASCII chars
in user supplied repository URL, or else at least reject
something that contains such chars.

This has turned out to be the cause of our long standing
mystery for occasional commit failure.

The following is what I wrote to dev@subversion list to
describe this failure:

> If a .svn/entries file have a repository URL that has RAW
> (as opposed to %-escaped) utf-8 characters within it, a
> commit of a file does not update the revision number that
> appears in the files in .svn/wcprops/* .
>
> This results in a succeeding commit of the same file to
> fail with out-of-date error. Performing update on the file
> or its parent directories does not resolve this matter,
> but brute forcing with an editor and hand correct the
> revision number in .svn/wcprops/* file does resolve the
> issue (for this one time).
>
> Obviously, this is a problem in the state of checked out WC,
> so deleting this WC and checking out a fresh one will allow
> me to commit again (but again only once, if you checkout
> with TortoiseSVN; see below).
>
> Other random things that I noticed:
>
> O wcprops/* and dir-wcprops are seemingly not used for
> file:// and svn:// repositories. So only WC's that are
> checked out from https:// (and http:// ?) repositories are
> affected.
> (Thus I couldn't come here with a simple sample transcript... :( )
>
> O subversion-1.1.4 %-escapes all non-ASCII chars that were
> given on the command line at the time of check out, as
> well as the non-ASCII chars in subdirectory names under
> the checked-out root, where as TortoiseSVN leaves the
> repository part raw, and only escapes the subdirectory
> part. Therefore, a WC checked out by TortoiseSVN has the
> above mentioned problem for commits performed by either
> subvesrion or TortoiseSVN, whereas a WC checked out by
> subversion are handled correctly by both subverson AND
> TortoiseSVN.
...
> O If multiple WC are checked out from the same repository,
> and many concurrent commits and updates occur, chances are
> that wcporps/* will be updated in the course of fetching
> other people's work, and above mentioned problem will not
> be observed so much; it took me some months to come up
> with the above reproducible description.

and as I mentioned at the top, the answer I got was that
URI, by its definition, must be ASCII-only.

I'd appreciate very much if it could be corrected in TortoiseSVN.

Thank you.

-- 
Hiroharu Tamaru
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: dev-help@tortoisesvn.tigris.org
Received on Thu May 12 16:05:31 2005

This is an archived mail posted to the TortoiseSVN Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.