He leído muchas preguntas y respuestas diferentes sobre Stack Overflow, así como documentación de git sobre cómo funciona la configuración core.autocrlf .
Este es mi entendimiento de lo que he leído:
Los clientes Unix y Mac OSX (pre-OSX usan CR) usan terminaciones de línea LF.
Los clientes de Windows usan finales de línea CRLF.
Cuando core.autocrlf se establece en verdadero en el cliente, el repositorio de git siempre almacena archivos en formato de terminación de línea LF y las terminaciones de línea en archivos en el cliente se convierten de un lado a otro al finalizar / confirmar para clientes (es decir, Windows) que usan -LF terminaciones de línea, sin importar el formato que tengan los archivos de terminación de línea en el cliente (esto no está de acuerdo con la definición de Tim Clem; consulte la actualización a continuación).
Aquí hay una matriz que intenta documentar lo mismo para la configuración de 'entrada' y 'falsa' de core.autocrlf con signos de interrogación donde no estoy seguro del comportamiento de conversión de final de línea.
Mis preguntas son:
- ¿Cuáles deberían ser los signos de interrogación?
- ¿Es esta matriz correcta para los "signos que no son de interrogación"?
Actualizaré los signos de interrogación de las respuestas a medida que se forme un consenso.
valor core.autocrlf entrada verdadera falsa -------------------------------------------------- -------- cometer | convertir? ? nuevo | a LF (¿convertir a LF?) (¿sin conversión?) cometer | convertir a ? No existente | Conversión de LF (¿convertir a LF?) pago | convertir a ? No existente | Conversión CRLF (¿sin conversión?)
Realmente no estoy buscando opiniones sobre los pros y los contras de los diversos entornos. Solo estoy buscando datos que aclaren cómo esperar que git funcione con cada una de las tres configuraciones.
-
Actualización 17/04/2012 : Después de leer el artículo de Tim Clem vinculado por JJD en los comentarios, modifiqué algunos de los valores en los valores "desconocidos" en la tabla anterior, así como también cambié "pago existente | verdadero para convertir a CRLF en lugar de convertir a cliente ". Aquí están las definiciones que da, que son más claras que cualquier cosa que haya visto en otros lugares:
core.autocrlf = false
Este es el valor predeterminado, pero se alienta a la mayoría de las personas a cambiar esto inmediatamente. El resultado del uso de false es que Git nunca se mete con las terminaciones de línea en su archivo. Puede registrar archivos con LF o CRLF o CR o alguna combinación aleatoria de esos tres y a Git no le importa. Esto puede hacer que las diferencias sean más difíciles de leer y las fusiones sean más difíciles. La mayoría de las personas que trabajan en un mundo Unix / Linux usan este valor porque no tienen problemas de CRLF y no necesitan que Git haga un trabajo adicional cada vez que los archivos se escriben en la base de datos de objetos o se escriben en el directorio de trabajo.
core.autocrlf = true
Esto significa que Git procesará todos los archivos de texto y se asegurará de que CRLF se reemplace con LF al escribir ese archivo en la base de datos de objetos y volverá a convertir todos los LF en CRLF al escribir en el directorio de trabajo. Esta es la configuración recomendada en Windows porque garantiza que su repositorio se pueda usar en otras plataformas mientras conserva CRLF en su directorio de trabajo.
core.autocrlf = input
Esto significa que Git procesará todos los archivos de texto y se asegurará de que CRLF se reemplace con LF al escribir ese archivo en la base de datos de objetos. Sin embargo, no hará lo contrario. Cuando vuelva a leer los archivos de la base de datos de objetos y los escriba en el directorio de trabajo, seguirán teniendo LF para indicar el final de la línea. Esta configuración se usa generalmente en Unix / Linux / OS X para evitar que los CRLF se escriban en el repositorio. La idea es que si pega el código de un navegador web y accidentalmente obtiene CRLF en uno de sus archivos, Git se aseguraría de que fueran reemplazados por LF cuando escribiera en la base de datos de objetos.
El artículo de Tim es excelente, lo único que se me ocurre es que él asume que el repositorio está en formato LF, lo cual no es necesariamente cierto, especialmente para proyectos de Windows.
La comparación del artículo de Tim con la respuesta más votada hasta la fecha por jmlane muestra un acuerdo perfecto sobre la configuración verdadera y de entrada y el desacuerdo sobre la configuración falsa.
autocrlf
en falso parece mucho más fácil;) stackoverflow.com/questions/2333424/…