2012-03-29 11 views
57

Como se puede obtener fromotherposts, la normalización de fin de línea de Git tiene sus pros y sus contras. Tengo un proyecto particular de Windows en el que creo que lo mejor es inhabilitar por completo la normalización de fin de línea. Es decir, quiero dejar todas las líneas nuevas (la mayoría de las cuales son CRLF) intactas, en lugar de hacer que git las normalice en LF -solo detrás de las escenas, y quiero que ese cambio afecte a todos los clones del repositorio en todas las máquinas. La pregunta es la forma más efectiva de hacerlo.Cómo deshabilitar Git fin de línea (CRLF a LF) en todos los clones/máquinas?

La mayoría de las discusiones sobre la normalización de fin de línea de Git están en términos de core.autocrlf, y podría lograr mi objetivo estableciendo core.autocrlf=false. Sin embargo, esta es una configuración de git-config, y creo que hay que configurarla por separado en cada máquina por máquina. Si es verdadero, parece ser propenso a errores, especialmente porque el instalador msysgit guía uno en la configuración core.autocrlf=true.

Respuesta

101

La mejor manera de evitar tener que configurar core.autocrlf por separado en cada máquina parece ser la comprobación de un archivo de .gitattributes en el repositorio que contiene la única línea

* -text 

O, si usted tiene una versión anterior de Git a continuación

* -crlf 

Esto le dice a Git que, para todas las rutas (de ahí el *), al final de la línea de normalización no se debe intentar. Por lo que puedo decir, esto no debería tener ningún otro efecto secundario. En particular, no debe alterar cómo se generan las diferencias (esto tiene el atributo separado diff/-diff) o cómo se manejan las fusiones (esto tiene un atributo separado merge/-merge).

Para más detalles, me sugieren estos recursos:

  1. La documentación gitattributes (git help attributes o an online copy), que describe en detalle cómo funciona tanto la normalización de fin de línea y los efectos particulares de los diferentes atributos. (Probablemente lo más relevante son text, crlf, diff, merge, y binary.)
  2. Git lista de correo hilo Is the "text" attribute meant only to specify end-of-line normalization behavior, or does it have broader implications? (mar 30 de, 2012), que se expande sobre el significado de los diferentes atributos, y aclara que -text no significa simplemente " este es un archivo binario ".
+0

El enlace en tu publicación está muerto. ¿Tal vez podrías usar este en su lugar? http://git.661346.n2.nabble.com/Is-the-quot-text-quot-attribute-meant-only-to-specify-end-of-line-normalization-behavior-or-does-it- -td7420001.html – Antimony

Cuestiones relacionadas