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

Re: check-mime-type, Windows client, non-ASCII path

From: Stefan Sperling <stsp_at_elego.de>
Date: Thu, 2 Feb 2012 10:33:05 +0100

On Wed, Feb 01, 2012 at 09:00:39AM +0100, Ignacio González (Eliop) wrote:
> Clients: Windows-XP, Windows 7, svn 1.6.16 (Spanish)
> Server: Linux (CentOS), svn 1.6.16 (Spanish)
>
> Repository created OK
> Hundreds of revisions already checked-in OK
> Hook "check-mime-type" (bash) added in server
> A couple of revisions checked-in OK
> New file added with non-ASCII characters -> Problem:
> Path name (in Windows, client): C:\Usuarios\arenero\Inútil.TXT
> (note the u with an acute accent: ú)
>
> C:\Usuarios\arenero>svn ci acentos -m "Prueba 1"
> Adding acentos
> Adding acentos\In£til.TXT
> Transmitting file data .svn: Commit failed (details follow):
> svn: Commit blocked by pre-commit hook (exit code 1) with output:
> /opt/csvn/data/repositories/telecontrol/hooks/check-mime-type:
> `/opt/csvn/bin/sv
> nlook proplist /opt/csvn/data/repositories/arenero -t 44-1e --verbose
> acentos/In
> ?\195?\186til.TXT' failed with this output:
> svnlook: Path 'acentos/In?\195?\186til.TXT' does not exist

195 186 in hex is 0xc38a

$ echo 0xc3ba | xxd -r | ExplicateUTF8
The sequence 0xC3 0xBA
             11000011 10111010
is a valid UTF-8 character encoding equivalent to UTF32 0x000000FA.

(ExplicateUTF8 is part of the 'unitools' suit).

Written out as UTF-8 in email, unicode code point 0xfa is the character 'ú'.

> To help diagnose it, I tried to check out an already existing file with
> accents in its name
> (checked in before the Hook "check-mime-type" (bash) was added in the
> server).
> Check out fails.

And how exactly does it fail? What's the error message?
Does it print the same error message as you get with the hook?

Whenever you write a problem report and you describe parts of the
problem by "X fails" without showing how X fails, recipients of your
report can only make wild guesses.

> Oh, my God.

Don't panic. This is nothing that cannot be fixed.
You'll just have to figure out where it goes wrong.

You didn't specify what type of server you are running (svnserve or
mod_dav_svn), so I'm going to guess that you're using mod_dav_svn,
i.e. an Apache HTTPD server is serving your repositories.
In that case, issue #2487 might be the problem:
http://subversion.tigris.org/issues/show_bug.cgi?id=2487
Though this would not explain a failing checkout, only problems
in the hook script. Does your hook script set any of the LANG, LC_CTYPE
or LC_ALL environment variables to some value? (If possible, please just
show us the entire hook script.)
See the issue link for more information and some workarounds (patches,
but also an additional apache module you could load).
A fix has just recently been committed but it is for 1.8. We cannot
backport it to 1.7 because it requires API changes.

The character ú is a character which has a diacritic so another
possible explanation is a problem with NFC/NFD normalisation.
See http://subversion.tigris.org/issues/show_bug.cgi?id=2464
This usually happens when MacOS X clients are involved. But in theory any
Windows or Linux client could cause the same problem depening on how
tools used on the client machine normalise UTF-8.

Can you check if either of these apply?
If not, we'll need to dig further.
Received on 2012-02-02 10:33:54 CET

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