remove - push tags to github
¿Qué DVCS son compatibles con los nombres de archivo Unicode? (7)
Estoy interesado en probar sistemas de control de versiones distribuidas. git suena prometedor, pero vi una nota en alguna parte para el puerto de Windows de git que dice "no use nombres de archivo que no sean ASCII". No puedo encontrarlo ahora, pero hay este enlace . Me ha quitado la paciencia por ahora, pero no sé si las otras opciones son mejores.
El soporte para nombres de archivo que no sean ASCII es esencial para mi empresa japonesa. Estoy buscando uno que internamente almacena nombres de archivos como Unicode, no una codificación dependiente de la plataforma que causaría un dolor sin fin. Asi que:
- ¿Qué DVCS son compatibles con los nombres de archivo Unicode?
- ¿En Windows y Linux?
- Idealmente, ¿con la posibilidad de transferir repositorios entre máquinas Windows y Linux con problemas mínimos?
Mercurial
En Linux, creo que Mercurial simplemente codifica en lo que sea que sea la codificación del sistema (corrígeme si estoy equivocado). Lo mejor es configurar Linux para UTF-8 para la compatibilidad multiplataforma. Este es el valor predeterminado para muchas distribuciones modernas.
En Windows, Mercurial (debido al manejo de cadenas de byte de Python) usa la página de códigos del sistema. Esto garantiza la mala interoperación entre plataformas para caracteres que no son ASCII.
Fixutf8 Extension para Windows (antes de Mercurial 2.0)
Existe una extensión Mercurial creada fixutf8 llamada fixutf8 para Windows que maneja adecuadamente todos los caracteres Unicode (incluso aquellos fuera de la página de códigos actual) y codifica los nombres de archivo como UTF-8 en el repositorio de Mercurial. Por lo tanto, permite la interoperación con Linux siempre que Linux esté usando la codificación UTF-8. Intenté habilitarlo en mi configuración de Windows la semana pasada y tuve algunos problemas con la instalación. Desde entonces, se ha solucionado un problema. Ahora, el único problema es que las distribuciones Mercurial binarias están compiladas con Python 2.4, mientras que fixutf8 requiere que Mercurial se construya con Python 2.5 o superior para cargar fixutf8. Espero que esto se resuelva en el futuro cercano.
Mercurial 2.0 y posterior para Windows
fixutf8 parece ser incompatible con Mercurial 2.0 y posterior, de acuerdo con la página web fixutf8 . Consulte WindowsUTF8Plan para obtener detalles sobre soluciones futuras. No estoy seguro de cuándo se espera que se implemente.
git
Agosto de 2009:
El proyecto msysgit está ocupado arreglando el soporte UTF-8 para Git en Windows. Puede ser arreglado en la próxima versión.
Actualización febrero de 2012
UTF-8 viene para msysgit, con commits como este "Update less settings for UTF-8"
Desde la página de Git para Windows Google+:
Los parches UTF-8 de Karsten Blees para Git para Windows ahora se han combinado a ''
devel
''.
¡Esto significa que la próxima versión admitirá nombres de archivo Unicode!
Actualización de abril de 2012
Ahora se lanzó en mSysGit 1.7.10.
Consulte la página Compatibilidad con Git para Windows Unicode .
De acuerdo con this página: Bazar, Codendi, CVSNT, Monotone, Perforce, Rational Team Concert, Subversion, Surround SCM, Synergy. Pero hay muchas "incógnitas" en esa página.
Este es un problema realmente complicado. Los problemas vienen porque cualquiera de las herramientas intenta interpretar los nombres de los archivos cuando no conocen la codificación con seguridad, o porque traducen, pero se traducen a un formulario que no puede manejar todos los casos (por ejemplo, ASCII o UTF-16). Ninguno de los 3 sistemas operativos principales está de acuerdo en cómo se codifica un nombre de archivo, lo que hace las cosas aún más difíciles.
Para una buena comprensión de los problemas, sugiero leer la página de estrategia de codificación de Mercurial. Describe cómo varían las distintas plataformas y por qué Mercurial ha elegido la estrategia que tiene.
Si realmente necesita hacer esto, entonces lo más básico es que TODOS los sistemas deben estar configurados para usar nombres de archivos UTF-8, y no una de las muchas páginas de códigos japoneses. Sin embargo, es más fácil decirlo que hacerlo, pero una vez que lo haya hecho, ningún sistema debería necesitar traducir los nombres de los archivos a otra cosa.
Sin traducción, sin problemas.
*: Sí, sé que puede tener una codificación predeterminada del sistema, pero esto no es lo mismo que una codificación del sistema de archivos. ¿Qué sucede cuando varios sistemas acceden a un sistema de archivos o se mueve físicamente entre sistemas?
Git en Windows 1.7.10 ahora usa UTF-8 para nombres de archivos sin importar la configuración regional del usuario.
Ver el problema 80 en el mismo repositorio . En 2009, hubo una discusión en la lista de correo Git (por ejemplo, 1 , 2 ) donde el encargado de Git Junio Hamano hizo algunas preguntas al respecto. No lo tengo aquí mismo. Al unir el hilo de una manera constructiva, puede ayudar a resolver el problema.
En la implementación Java JGit, siempre usamos UTF-8 cuando creamos metadatos textuales y nombres de archivos. Esa es la única forma, pero hay algunas cosas que considerar.
Bazar VCS funciona con nombres de archivo Unicode internamente. Y tiene muy buen soporte para Unicode tanto en Linux como en Windows.