¿Cuál es la diferencia entre diff y diff = astextplain?

Alguien me puede ayudar. Estoy usando Git (GitHub) y estoy tratando de decidir en qué establecer mis files *.sql en los gitattributes. He visto gente usar

 *.sql diff=astextplain *.sql diff *.sql text=auto 

Me aconsejaron configurar esto para la segunda opción, pero me pregunto cuál es la diferencia entre eso y los otros dos.

TL; DR

  • diff=astextplain ( msysGit solamente): convierte esos files (bajo la condición de que su extensión sea *.doc , *.pdf , *.rtf , etc.) en un formatting de text antes de generar su diff.
  • diff : trata esos files como text sin formatting para generar su diff.
  • text=auto : normaliza automáticamente los caracteres EOL (a LF) en files considerados como files de text por Git.

Más detalles

diff=astextplain

El valor de cadena astextplain no es parte del núcleo de Git: de hecho, se está ejecutando

 git grep "astextplain" 

en el repository del proyecto Git no devuelve nada. Por lo que puedo decir, es un script de shell que viene con msysGit y te permite convertir files como

  • Documentos de Word
  • PDF,
  • RTF

a un formatting de text antes de generar su diff.

diff

De acuerdo con la página man de gitattributes :

El atributo diff afecta cómo Git genera diffs para files particulares. […]

Una ruta a la que se establece el atributo diff se trata como text, incluso cuando contienen valores de bytes que normalmente nunca aparecen en los files de text, como NUL.

text=auto

De acuerdo con la página man de gitattributes :

Cuando el text se establece en "automático", la ruta se marca para la normalización automática al final de la línea. Si Git decide que el contenido es text, sus finales de línea se normalizan a LF al registrarse.