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

International Characters & Subversion 1.0.8 problems

From: Erich Enke <epte_at_ruffdogs.com>
Date: 2004-10-01 20:47:12 CEST

# svn add G%E4steBuch
A G%E4steBuch

# svn ci -m 'Testing international characters'
Adding de/G%E4steBuch

# svn ls [path_to_file_in_repository]/G%E4steBuch
svn: Unable to open an ra_local session to URL
svn: Unable to open repository '[path_to_file_in_repository]/G?\228steBuch'
svn: Can't recode string

This is the simplest example of the problems I am having. Yes, I have
read all applicable issues and searched the mail archives. Yes I have
googled. Either there is a bug here, or I'm not understanding something.

What I'm really trying to do is to merge a branch into the trunk, which
had this file added into it (and other files with similar filenames).
If adding the file doesn't cause problems, I wouldn't think other
operations should, but they do. The merge was successful, but on
commit, I get:

svn: Commit failed (details follow):
svn: File not found: revision '552', path
'[path_within_repository]/G?\228steBuch'

Doing an svn ls on the repository directory containing the file gives
"G%E4steBuch". I would expect svn ls to be consistent, but I get
G%E4steBuch one way and G%E4steBuch the other way. Very confusing.

OK. So, maybe it got in fine, but I'm using the wrong LC_CTYPE,
LC_CLANG, or LANG, since subversion stores all filenames as unicode
internally. So I change all three of these to UTF-8 and do the following:

# svn ls [path to file in repo]
G%E4steBuch
[other entries]

# svn ls [path to file in repo]/G%E4steBuch
svn: URL non-existent in that revision

# svn st -u
A + - [path]/G%E4steBuch

#svn ci -m ""
svn: Commit failed (details follow):
svn: File not found: revision '552', path
'[path_within_repository]/GästeBuch'

(Note that [path_within_repository] of course refers to the branch that
I'm trying to merge in, since this file doesn't exist in the trunk yet)

OK, so that didn't do it. Maybe subversion is having issues with the
fact that I added the file while not in UTF-8 (though the addition
process never complained to me about this). However, this would be very
unfortunate since the rest of my code is expecting the filename
"G%E4steBuch". But, I'll try it and see what I can learn. So, with
those three variables set as UTF-8, I try the following:

# svn mv [path_to_file_in_repository]/{G%E4steBuch,GästeBuch}
svn: Valid UTF-8 data
(hex: [pathname characters] 2f 47)
followed by invalid UTF-8 sequence
(hex: e4 73 74 65)

# svn ls [path_to_file_in_repostory]/GästeBuch
[same thing]

Grr... I can't svn mv. Let's try adding it straight as GästeBuch while
in UTF-8.

# cd [my branch that I'm trying to merge into the trunk]
# cp G%E4steBuch GästeBuch
# svn add GästeBuch
A GästeBuch
# svn ci -m ""
Adding pgsrc/GästeBuch
Transmitting file data .
Committed revision 856.

Some success! Now let's try that commit (since the file GästeBuch _is_
there now. I just added it, right?)

# svn ci -m ""
svn: Commit failed (details follow):
svn: File not found: revision '552', path
'[path_within_repository]/GästeBuch'

But I just added it!

# svn ls [path_to_file_in_repo]
GästeBuch
G%E4steBuch
[other entries]

Huh? If I add GästeBuch using UTF-8, and subversion stores in UTF-8,
there should be no issues. I should see GästeBuch in the ls, but I
don't. OK. Maybe, just maybe, I should have used the --encoding flag
when adding the file, so svn REALLY knows I'm giving it to subversion in
UTF-8 encoding.

(I svn removed the GästeBuch file. That went fine)
# cd [my branch that I'm trying to merge into the trunk]
# cp G%E4steBuch GästeBuch
# svn add GästeBuch
A GästeBuch
# svn ci --encoding UTF-8 -m ""
Adding pgsrc/GästeBuch
Transmitting file data .
Committed revision 859.

# svn ls [path_to_file_in_repo]
GästeBuch
G%E4steBuch
[other entries...]

Good. Now let's try the commit. It should work. The file it was
saying wasn't there is there now. I can see it.

# svn ci -m ""
svn: Commit failed (details follow):
svn: File not found: revision '552', path '[path_within_repo]/GästeBuch'

Which seems to me to be definitely broken. What I would really like,
though, is just to store off G%E4steBuch in the repository, and have it
come out the same way, have it be interpreted just like that, because
G-percent-E-4-steBuch is really the desired filename.

Thank you in advance for any assistance that anyone may be able to give me.
Erich
Ruffdogs.com

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Fri Oct 1 20:55:11 2004

This is an archived mail posted to the Subversion Users mailing list.

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