Problema com a codificação de nome de arquivo SVN no Mac OS X

7

Eu tenho algum nome de arquivo com algum caractere Unicode nele. Todos os nomes de arquivos no Mac OS X são codificados em UTF8. Também $LANG está definido como en_US.UTF-8 .

No entanto, parece que svn tem alguns problemas com isso:

az@ip212 1054 (Integration) %ls
Abbildungen                           Verbesserungsvorschläge_Applets.odt
AllgemeineAnmerkungen.rtf             Verbesserungsvorschläge_Applets.rtf
Geogebra                              Vorlagen
Texte
az@ip212 1055 (Integration) %svn ls
Abbildungen/
AllgemeineAnmerkungen.rtf
Geogebra/
Texte/
Verbesserungsvorschläge_Applets.rtf
Verbesserungsvorschläge_Applets.odt
Vorlagen/
az@ip212 1056 (Integration) %svn del Verb*.odt
svn: Use --force to override this restriction
svn: 'Verbesserungsvorschläge_Applets.odt' is not under version control
az@ip212 1057 (Integration) %svn status
?       Verbesserungsvorschläge_Applets.odt
!       Verbesserungsvorschläge_Applets.odt
az@ip212 1058 (Integration) %

Como você pode ver, svn del não reconhece o nome do arquivo. E mesmo svn status fica confuso sobre isso.

Como posso consertar isso? Eu também tentei com LC_CTYPE=$LANG LC_ALL=$LANG LC=$LANG mas sem alteração.

    
por Albert 16.08.2010 / 04:46

3 respostas

8

Eu recebi uma resposta da lista de discussão do Subversion de B Smith-Mannschott:

This is a known issue.

http://subversion.tigris.org/issues/show_bug.cgi?id=2464

One poster on the comment thread to that issue suggested as follows:

Additional comments from Julian Mehnle Thu Aug 6 07:40:30 -0700 2009:

There is a work-around: install the "unicode_path" variant of the subversion MacPorts package:

$ sudo port install subversion +unicode_path

     

Eu não tentei isso sozinho.

     

// ben

Parece funcionar principalmente para mim, mas não sei o que mais está quebrado agora.

Eu fiz algumas investigações sobre a fonte do Subversion e parece que o suporte ao nome de arquivo UTF8 foi muito mal. Eles meio que ignoram o fato de que um nome de arquivo pode ter diferentes representações no UTF8. Eles lidam com todas essas representações diferentes como nomes de arquivos diferentes. O MacOSX pode mudar a representação internamente e é isso que o Subversion confunde muito - e não consegue lidar com isso.

Você pode ver em sua fonte que sua função de comparação de caminhos é basicamente apenas um memcpy.

Eu tentei consertar, mas não tenho certeza se fiz isso ou não (e não quero desperdiçar muito mais tempo com isso - parece que funciona agora, mas não tenho certeza sobre isso).

Leia o relatório de bug do upstream para mais detalhes e uma discussão de acompanhamento.

    
por 28.08.2010 / 16:30
0

você pode export LANG=de_DE.UTF-8 ?

    
por 16.08.2010 / 07:27
0

Eu fui mordido por isso hoje. O servidor está em um Linux e dois clientes do OS X estão sincronizando com ele. Estava tentando excluir o arquivo problemático no servidor, mas até mesmo os caracteres Unicode são marcados de forma engraçada. Talvez seja hora de eu me mudar para o git?

Adendo:

De alguma forma, eu consegui mudar as coisas no servidor, de modo que o problema do arquivo de nome duplo unicode parece ter se transformado em " Checksum incompatibilidade ao ler representação "no final de 'svn update' ou 'svn checkout'. Heh

    
por 13.04.2012 / 19:31

Tags