2010-11-10 11 views
37

Estoy en OS-Inglés OS   X 10.6.4 y trato de almacenar archivos con caracteres asiáticos en su nombre en un repositorio de Git.Cómo manejar caracteres asiáticos en nombres de archivo en Git en OS X

OK, vamos a crear un archivo de este tipo en un árbol de trabajo Git:

$ touch どうもありがとうミスターロボット.txt 

Git está mostrando como octal-escapado UTF-8 formulario:

$ git version 
git version 1.7.3.1 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt" 
nothing added to commit but untracked files present (use "git add" to track) 

Por desgracia, no estoy capaz de agregarlo al repositorio Git:

$ git add どうもありがとうミスターロボット.txt 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt" 
nothing added to commit but untracked files present (use "git add" to track) 

Git simplemente ignorado este archivo.

utilizando los patrones de trabajo:

$ git add *.txt 
$ git status 
# On branch master 
# 
# Initial commit 
# 
# Changes to be committed: 
# (use "git rm --cached <file>..." to unstage) 
# 
# new file: "\343\201\250\343\202\231\343\201\206\343\202\202\343\201\202\343\202\212\343\201\213\343\202\231\343\201\250\343\201\206\343\203\237\343\202\271\343\202\277\343\203\274\343\203\255\343\203\233\343\202\231\343\203\203\343\203\210.txt" 
# 

pero quiero invocar el comando Git desde una aplicación para un nombre de archivo específico. No tengo la opción de inventar patrones de comodines que coincidan exactamente con este archivo, pero nadie más.

¿Es este un error conocido de Git o de mí que no usa Git correctamente?

+3

Creo que este es un error conocido entre git y OSX: http://thread.gmane.org/gmane.comp.version-control.git/70688 –

+0

No creo que esté relacionado con compuestos/descompuestos personajes como umlauts alemanes. – Mot

+0

@mklhmnn: ¿Estás seguro de que ninguno de los caracteres de tu ejemplo tiene formularios descompuestos y precompuestos? – JeremyP

Respuesta

52

Git cita cualquier carácter que no sea ASCI por defecto, no solo los asiáticos. Hay una opción para desactivar este comportamiento de cotización.

Se puede desactivar mediante el siguiente comando:

git config --global core.quotepath false 

O, alternativamente, añadiendo el siguiente fragmento de su archivo de configuración de Git ($ HOME/.gitconfig por lo general)

[core] 
    quotepath = false 

Después esto, git debería mostrar tus nombres de archivo exactamente como son.

En cuanto a su otro problema, git no agregar un archivo con caracteres asiáticos, solo puedo adivinar que tiene que ver con la codificación que utiliza git no es lo mismo que la codificación que utiliza su terminal. Espero que alguien más pueda intervenir y explicar ese poco.

+0

En mi prueba limitada (usando Git 1.7.3.2 en Ubuntu), una vez que deshabilité 'core.quotepath', git mostraría los nombres de los archivos como se esperaba. Además, incluso con 'core.quotepath' habilitado, agregar explícitamente actualizaría el índice como se esperaba, por lo que el problema original puede haber sido un error que se corrigió en las versiones más nuevas de Git. –

+0

¿Sabe si esta cotización se puede deshabilitar configurando una variable de entorno o pasando un parámetro de línea de comando a Git? – Mot

+1

Aunque mi problema es ligeramente diferente, un personaje accénted, no uno asiático, pero este consejo no funcionó para mí. –