Editar: git no se mezcla con la codificación de caracteres. Esto todavía está aquí para compartir el conocimiento y evitar que otros cometan el mismo error.¿Qué puede hacer que Git se meta con la codificación de caracteres?
El contexto: Mi empresa utiliza un repositorio SVN. Estoy usando git-svn como cliente para interactuar con este repositorio. Todos los archivos de texto en el proyecto están (y deben estar) codificados con la codificación predeterminada de Windows (cp -....). Yo uso git-extensions, y algunas veces la línea de comando para pilot git.
Lo que hice: Durante los últimos 3 días, estaba trabajando en una nueva función, e hice una serie de confirmaciones locales. Finalmente aplasté todas estas confirmaciones en una sola utilizando una rebase interactiva, luego utilicé git svn dcommit para insertar todo en el repositorio svn en una única confirmación.
Lo que pasó entonces: Un colega me dijo que todos los acentos estaban en mal estado en los archivos que modifiqué, y en los nuevos archivos después de mi confirmación. Ya había enviado archivos de texto con acentos en el mismo repositorio con mi instalación de git + svn anteriormente, y es la primera vez que enfrento este problema.
Mi investigación: Hice las siguientes cosas para investigar: abrieron los archivos con la libreta ++, y trataron las codificaciones más actuales (incluyendo Windows por defecto y UTF-8) para verlas: ninguno de ellos pudo mostrar detalles debidamente, y los diferentes acentos siempre se representan con la misma secuencia de glifos extraños.
La solución temporal: Creé rápidamente una confirmación de restitución con extensión git y la "compuse".
La pregunta: Mi repositorio empresarial SVN está bien, pero ahora tengo los siguientes dos problemas a resolver:
- entender lo que sucedió con los caracteres con acentos
- Recuperar mi trabajo desde el SVN la historia y la compromete de una manera apropiada (si es posible sin revisar manualmente todos los caracteres con acentos)
¿Alguien puede dar algunas pistas (soy bastante nuevo en git)?
¿Quiere decir que los contenidos de los archivos de texto se cambió, no caminos? (Lo pregunto porque sé que git-svn funciona con archivos como con matriz de bytes). ¿Qué versión de git-svn usas? –
Sí, es el contenido de los archivos que se cambió durante la operación, no las rutas. Estoy actualizando tan pronto como aparece una nueva versión, pero no estoy trabajando en este momento. Te contaré los números de versión exactos de las extensiones de git y git tan pronto como pueda –
Cuando git-svn realiza cambios en el repositorio hace lo siguiente: –