¿Forzar terminaciones de línea LF usando .gitattributes sin perder la inferencia automática de text / binary?

Me gustaría usar eol=LF en mi file .gitattributes, pero me gustaría que se aplique solo a los files que Git determina automáticamente que son files de text.

Lo mejor que pude encontrar es definir extensiones / extensiones de file específicas como text o binary. Esto no es ideal ya que la list podría ser enorme. Intenté * text=auto eol=LF , pero la parte eol=LF parece anular la parte auto .

¿Puedo forzar las terminaciones de línea LF sin requerir git config configuration de git config específicas, y sin perder la inferencia automática de text / binary?

Actualización: después del comentario de @romkyns volví a comprobar todo y encontré que mi solución era ligeramente incorrecta. Correcto sería un .gitattributes .gitattributes con el siguiente contenido:

 * text=auto 

De acuerdo con la documentation , esto garantiza que todos los files que Git considere que sean text tendrán terminaciones de línea normalizadas (LF) en el repository.


Respuesta Original:

Lo que desea escribir en sus .gitattributes es tan simple como esto:

 * text=auto * text eol=lf 

La primera línea le dice a git que autodetecte los types de files (binarys o de text, que es el comportamiento pnetworkingeterminado de git y pueden omitirse), la segunda línea trata los finales de línea de todos los files de text detectados (y solo aquellos) con un final de línea LF .

Probé esta configuration con algunos contenidos binarys mezclados y algunos files de text con terminación CRLF y obtuve la conversión esperada a finalización de LF.

Sugiero tres soluciones:

MÉTODO 1
Supongo que la mayoría de tus files de directory de trabajo son files de text. Por lo tanto, perder mucho time para agregar una línea específica para cada tipo de file de text.

Puede unset text atributo de unset text para files binary en el file .gitattributes . Dado que solo hay unos pocos types de files binary , no es tedioso hacerlo.

MÉTODO 2
Creo que su principal preocupación es deshabilitar la configuration global eol=lf . De acuerdo con la precedencia de .gitattributes , puede configurar el text=auto en su $GIT_DIR/info/attributes que tiene la prioridad más alta. Mientras tanto, solo afecta el tree de trabajo.

MÉTODO 3 .gitattributes totalmente los .gitattributes de su tree de trabajo. Confíe en su editor de files para la conversión al final de la línea. Recomiendo Notepad ++ que es útil para la conversión EOL entre estilo Unix y estilo Windows.

Reitre niveles de attributes de git: ( ¿Dónde debería colocar mi file 'gitattributes' global? )

-crear un file .git / info / attributes con en él: * text = auto

-Para cada file modificado, al hacer git add *, ahora se le debe advertir que "el file tendrá sus finales de línea originales en su directory de trabajo"