2012-05-16 8 views
13

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:

  1. entender lo que sucedió con los caracteres con acentos
  2. 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)?

+1

¿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? –

+0

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 –

+0

Cuando git-svn realiza cambios en el repositorio hace lo siguiente: –

Respuesta

15

Y ahora revelemos la verdad dolorosa (dolorosa para mi ego, no para los usuarios de git): Me molesté con los acentos, no git.

Me podría haber eliminado la pregunta que vamos a pensar erróneamente que lío git lata con acentos, pero teniendo en cuenta el número de upvotes, creo que un montón de gente en el mismo error que yo hice, así que tengo Elegido para responder mi propia pregunta para establecer la verdad, y tal vez ayudar a las personas en el mismo caso:

  1. Git no toca caracteres que no sean saltos de línea.
  2. Rompí los acentos antes de cometiendo, y no me di cuenta porque no le presté suficiente atención. Para hacerlo, edité algunos de los archivos con eclipse.Eclipse no reconoció la codificación y todos los acentos fueron reemplazados por una extraña secuencia de bytes al guardar. Eso es todo.

Gracias nuevamente a Dmitry Pavlenko por darme indicaciones sobre cómo investigar este problema.

1 a "git reflog"

acento feliz fijación; =)

+0

Desafortunadamente, Eclipse utiliza diferentes valores predeterminados para enconding en Linux y Windows. Solo eso me causó más problemas que cualquier otra cosa. –

Cuestiones relacionadas