Entonces, siempre pensé que con core.autocrlf=true
Git reemplaza todo LF
termina con CRLF
al retirar el archivo en el directorio de trabajo.
Desde el libro:
Si está en una máquina con Windows, configúrelo en verdadero: esto convierte las terminaciones LF en CRLF cuando revisa el código
Sin embargo, al extraer un archivo con finales de línea mixtos y core.autocrlf
ajustado a true
mi versión de Git desprotege el archivo tal como está.
Encontré un repositorio de GitHub muy conveniente para probar este comportamiento: https://github.com/YueLinHo/TestAutoCrlf
Resultados de la prueba:
- un archivo con
LF
solo terminaciones (LF.txt)- Con
autocrlf=false
: desprotegido tal cual (todas las terminaciones de línea sonLF
) - Con
autocrlf=true
: todos los finales de línea se cambian aCRLF
al pagar
- Con
Hasta ahora todo bien, todo como esperaba. Ahora para el archivo con finales de línea mixtos:
- Un archivo con finales de línea mixtos (MIX-more_CRLF.txt, MIX-more_LF.txt)
- Con
autocrlf=false
: desprotegido tal cual (una mezcla deLF
yCRLF
) - Con
autocrlf=true
: desprotegido tal cual (una mezcla deLF
yCRLF
)
- Con
¿Por qué pasó esto? no he visto nada sobre autocrlf=true
no tocar archivos con finales de línea mixtos.
¿Mi configuración de Git tiene la culpa? revisé el core.autocrlf
corriendo git config --get core.autocrlf
en la carpeta del repositorio después de verificar con autocrlf=true
en el .gitconfig global, y el comando devolvió verdadero. No hay un archivo .gitattributes para sobrescribir la configuración.
Todas las pruebas se realizaron en la versión Git. 1.9.5.msysgit.0
.
EDITAR: Mismo comportamiento en la última versión de msysgit 1.9.5.msysgit.1
.
Mi problema original es que de alguna manera logré enviar un archivo final de línea mixta con solo LF
terminaciones teniendo core.autocrlf
ajustado a true
lo que significa que el archivo se desprotegió tal cual, pero se comprometió con CRLF
cambiado a LF
. Actualmente estoy trabajando desde otra máquina y no puedo reproducir este comportamiento en mi versión de msysgit.
En realidad, suena como un buen valor predeterminado; si un archivo tiene finales de línea mixtos, probablemente haya una buena razón para ello en situaciones generales. La solución obvia es convertir el archivo a los finales de línea predeterminados del sistema y luego confirmarlo, lo que permite que git convierta los finales de línea.
– Microvirus
22 de abril de 2015 a las 9:46
@MicroVirus Tal vez sea un buen valor predeterminado, pero no he visto este comportamiento documentado en ninguna parte, así que me preguntaba por qué sucede.
– sdds
22 de abril de 2015 a las 10:18