¿Pueden los .gitattributes de git tratar a todos los files como binarys, excepto algunas excepciones?

Tengo una necesidad particular de que git trate la mayoría de las extensiones de file como binarias, excepto algunas extensiones.

Me gustaría tratar todas las extensiones de file como binarias, .pdf .doc .xls, etc., excepto files de text plano como .txt, .rb, .py, etc.

Intenté configurar .gitattributes como a continuación para ver cómo podría funcionar esto:

# cat .gitattributes * binary *.txt text 

Pensé que quizás el order en el file de configuration sería importante, pero no parece. Con la configuration anterior, todos los files se tratan como binarys.

¿Hay alguna forma de configurar .gitattributes o git de otra forma para tratar todos los files de una forma, como binarys, excepto por unas pocas excepciones?

Actualización 1:

Probé los .gitattributes que se describen a continuación. ¡Funciona!

 # cat .gitattributes *.txt crlf diff * binary # git diff diff --git a/file b/file index d929b94..bee5cb1 100644 Binary files a/file and b/file differ diff --git a/file.txt b/file.txt index 632ae98..93d22b0 100644 --- a/file.txt +++ b/file.txt @@ -1 +1,3 @@ Hey this is a .txt file +Adding another line +A new line 

Actualización 2:

Creo que crlf y text son los mismos, es decir, las dos configuraciones siguientes para .gitattributes son las mismas:

 # cat .gitattributes *.txt crlf diff * binary # cat .gitattributes *.txt text diff * binary 

binary es una macro que establece el atributo crlf y diff (en realidad aquí los desarma)
Consulte " USO DE MACROS .gitattribute " en la página del manual de .gitattribute .

Una vez que un atributo se establece o desarma, no puede ser modificado por una regla posterior.

Entonces podrías probar:

 * binary *.txt crlf diff 

De esta forma, si crlf y diff se establecen para los files *.txt , la macro binaria no los desestabilizará para esos mismos files *.txt , mientras que no se establecerán para todos los demás files.

A partir del 2009 commit b9d14ff , esas reglas deberían ir:

  • de los más generales
  • a los más específicos.
    ("una línea posterior anula una línea anterior")

git no tiene concepto de files "binarys" y "de text". Todo se define como un set de attributes que designan cómo debemos hacer fusiones, diffs, conversiones CR / LF, manejar espacios en blanco, aplicar filters y trillones de otras cosas.

binary y syntax como

  * .o binary 

en realidad está basado en macro, es decir, binary es una macro que se expande a una gran cantidad de diversos attributes que designan la fusión, la diferencia, el manejo CR / LF, etc.

No hay macro de text por lo que veo. binary expande a -crlf -diff , por lo que deshabilitar el binary y volver al procesamiento de estilo de text parece ser crlf diff .