2009-03-25 21 views
14

Tengo un repositorio que tiene commiters de Windows (cp1252) y linux (utf8). Obviamente, Git se confunde y pone nombres inválidos (desde la perspectiva de Linux). Sé que puedo usar ganchos para cambiar el nombre de los archivos en un lado (en el lado de Linux, por ejemplo, cambiar el nombre de los archivos de cp1252 a utf8 cuando aparecen y viceversa), pero ... ¿cómo lo hago exactamente? Exactamente qué ganchos tengo que escribir?Git: manejo de nombres de archivos de codificación mixta

+1

¿No sería más fácil convertir los archivos una vez y usar UTF-8 en Windows también? – TimWolla

Respuesta

7

¡Buena pregunta!

http://www.serverwatch.com/tutorials/article.php/3705216 Habla sobre una herramienta llamada "convmv" que arreglará los nombres de los archivos. Esto podría ser útil.

Iconv http://www.gnu.org/software/libiconv/ puede convertir texto arbitrario en diferentes conjuntos de caracteres.

http://ozmm.org/posts/git_post_commit_for_profit.html Te dice cómo hacer un gancho post-commit, más específico de Ruby. Parece que acaba de agregar un script para ejecutar en .git/hooks/post-commit, y git lo ejecutará después de confirmar. Podría ser un script que incluso ejecuta un script en tu git repo.

Para la secuencia de comandos, yo recomendaría simplemente escanear con find, convertir el nombre de archivo a UTF-8, ver si ya es ese nombre, y si no, moverlo.

+0

pero ¿se ha post-commit el gancho correcto? Estaba pensando que tenía que convertir (en Linux) de cp1252 a utf8 después de recibir archivos y volver a cp1252 antes de enviar o comparar archivos al otro repositorio (ya que las máquinas Linux son una minoría en la red, y convmv es fácilmente instalable en * buntu) ... – Massa

+1

'pre-commit' parece prometedor. ver: http://git-scm.com/book/es/Customizing-Git-Git-Hooks – tessi

Cuestiones relacionadas