You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by "Benjamin M." <ma...@perspectives.qc.ca> on 2006/07/20 18:38:36 UTC

Re: Handling of accented characters in file names - MacOS 10.4 / Subversion 1.3.2

Paul Koning wrote, On 06/01/06 17:15:
>>>>>> "Dominique" == Dominique Marie <do...@laposte.net> writes:
>>>>>>             
>
>  Dominique> Hi, I have some problems with my repository and I haven't
>  Dominique> found it in the bug tracker. I loaded a module I had under
>  Dominique> cvs with "cvs2svn". Some file names were wrong (utf-8
>  Dominique> interpreted as iso-1) so I corrected them directly in the
>  Dominique> repository with "svn mv URL URL".
>
>  Dominique> When I do a "svn co" with a "svn status" immediately after
>  Dominique> I get unknown and missing files for those with accented
>  Dominique> letters as below.  Is that because of different UTF-8
>  Dominique> encodings (é in repository vs. e´ on filesystem) ? How can
>  Dominique> I fix it ?
>   
[snip]

> Yes, that problem came up about a month ago.  It doesn't sound like
> there is a workaround for it at the moment.
>
>       paul
Hi,

Any progress on that one? I have the same problem under MacOS 10.4 / 
Subversion 1.3.2. This bug prevents any operation on filename with 
accented characters under MacOS X...

The only way I have found (under MacOS X) to add files with accented 
characters and have it displayed correctly with "svn st" is with "svn 
add . --force" All the other operations with command line (svn add, mv, 
etc) create the "missing" problem on "svn st"... The  repository created 
under MacOS X behaves as expected under Linux... BUT as you can see far 
below, depending on the way the file has been added under MacOS X... the 
"é" of "Répertoire" doesn't seem to be the same character ...  Before, 
here my MacOS X testcase:

$ svnadmin create repos
$ svn co file:///tmp/repos/ wc
Checked out revision 0.
$ cd wc
$ svn mkdir Répertoire1
A         Répertoire1
$ svn st --verbose
?                                       Répertoire1
                0        0  ?           .
!              ?        ?   ?           Répertoire1
$ mkdir Répertoire2
$ svn st --verbose
?                                       Répertoire2
?                                       Répertoire1
                0        0  ?           .
!              ?        ?   ?           Répertoire1
$ svn add Répertoire2
A         Répertoire2
$ svn st --verbose
?                                       Répertoire2
?                                       Répertoire1
                0        0  ?           .
!              ?        ?   ?           Répertoire1
!              ?        ?   ?           Répertoire2
$ mkdir Répertoire3
$ svn st --verbose
?                                       Répertoire2
?                                       Répertoire3
?                                       Répertoire1
                0        0  ?           .
!              ?        ?   ?           Répertoire1
!              ?        ?   ?           Répertoire2
$ svn add . --force
A         Répertoire3
$ svn st --verbose
?                                       Répertoire2
?                                       Répertoire1
                0        0  ?           .
A               0       ?   ?           Répertoire3
!              ?        ?   ?           Répertoire1
!              ?        ?   ?           Répertoire2
$ svn mkdir Directory1
A         Directory1
$ svn ci -m "Import1"
Adding         Directory1
Adding         Répertoire1
Adding         Répertoire2
Adding         Répertoire3

Committed revision 1.
$ svn st --verbose
?                                       Répertoire2
?                                       Répertoire1
                0        0  ?           .
                1        1 benjamin     Répertoire3
                1        1 benjamin     Directory1
!              ?        ?   ?           Répertoire1
!              ?        ?   ?           Répertoire2
$ svn mv Directory1 Répertoire4
A         Répertoire4
D         Directory1
$ svn ci -m "Import2"
Deleting       Directory1
Adding         Répertoire4

Committed revision 2.
$ svn st --verbose
?                                       Répertoire2
?                                       Répertoire4
?                                       Répertoire1
                0        0  ?           .
                1        1 benjamin     Répertoire3
!              ?        ?   ?           Répertoire1
!              ?        ?   ?           Répertoire2
!              ?        ?   ?           Répertoire4
$ svn mkdir Répertoire5
A         Répertoire5
$ svn ci -m "Import3"
Adding         Répertoire5

Committed revision 3.
$ svn mv Répertoire5 Directory2
A         Directory2
D         Répertoire5
$ svn st --verbose
?                                       Répertoire2
?                                       Répertoire4
?                                       Répertoire5
?                                       Répertoire1
                0        0  ?           .
                1        1 benjamin     Répertoire3
A  +            -        3 benjamin     Directory2
!              ?        ?   ?           Répertoire1
!              ?        ?   ?           Répertoire2
!              ?        ?   ?           Répertoire4
D              ?        ?   ?           Répertoire5
$ svn ci -m "Import3"
Adding         Directory2
Deleting       Répertoire5

Committed revision 4.
$ svn st --verbose
?                                       Répertoire2
?                                       Répertoire4
?                                       Répertoire1
                0        0  ?           .
                1        1 benjamin     Répertoire3
                4        4 benjamin     Directory2
!              ?        ?   ?           Répertoire1
!              ?        ?   ?           Répertoire2
!              ?        ?   ?           Répertoire4


Here the "svn st --verbose" output (Terminal Characters Set Encoding: 
UTF-8) after moving the repository from my Mac to my Linuxbox

$ svn st --verbose
                2        2 benjamin     .
                2        1 benjamin     Répertoire3
                2        1 benjamin     Répertoire1
                2        1 benjamin     Répertoire2
                2        2 benjamin     Répertoire4

But with Terminal Characters Set Encoding: Latin-1 (any better way to 
know the exact character?)

$ svn st --verbose
                2        2 benjamin     .
                2        1 benjamin     ReÌpertoire3     <-- svn add . 
--force
                2        1 benjamin     Répertoire1  <-- filename via 
cmd line...
                2        1 benjamin     Répertoire2
                2        2 benjamin     Répertoire4

Here the ouput with Terminal Characters Set Encoding: Latin-1 under MacOS X:

$ svn st --verbose
?                                       ReÌpertoire2
?                                       ReÌpertoire4
?                                       ReÌpertoire1
                0        0  ?           .
                1        1 benjamin     ReÌpertoire3
                4        4 benjamin     Directory2
!              ?        ?   ?           Répertoire1
!              ?        ?   ?           Répertoire2
!              ?        ?   ?           Répertoire4



Now if I add Répertoire5 under Linux... (To see which is the expected "é")

$ svn mkdir Répertoire5
A        Répertoire5


Terminal Characters Set Encoding: Latin-1
$ svn st --verbose
                2        2 benjamin     .
                2        1 benjamin     ReÌpertoire3
                2        1 benjamin     Répertoire1 
                2        1 benjamin     Répertoire2 
                3        3 benjamin     Répertoire5 
                2        2 benjamin     Répertoire4 

So... Linux client doesn't seem to bother between Répertoire or 
ReÌpertoire on "svn st"... but MacOS client does... Also the right "é" 
seems to be the one in Répertoire... not the one in ReÌpertoire...

Hope that can help to solve the problem...

--
Ben



-------------------
$ locale
-------------------

Under MacOS X:
$ locale
LANG="en_CA.UTF-8"
LC_COLLATE="en_CA.UTF-8"
LC_CTYPE="en_CA.UTF-8"
LC_MESSAGES="en_CA.UTF-8"
LC_MONETARY="en_CA.UTF-8"
LC_NUMERIC="en_CA.UTF-8"
LC_TIME="en_CA.UTF-8"
LC_ALL="en_CA.UTF-8"

Under Linux:
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_CA.UTF-8"
LC_NUMERIC="en_CA.UTF-8"
LC_TIME="en_CA.UTF-8"
LC_COLLATE="en_CA.UTF-8"
LC_MONETARY="en_CA.UTF-8"
LC_MESSAGES="en_CA.UTF-8"
LC_PAPER="en_CA.UTF-8"
LC_NAME="en_CA.UTF-8"
LC_ADDRESS="en_CA.UTF-8"
LC_TELEPHONE="en_CA.UTF-8"
LC_MEASUREMENT="en_CA.UTF-8"
LC_IDENTIFICATION="en_CA.UTF-8"
LC_ALL=en_CA.UTF-8