Atributos de Git que afectan el submodule

¿Es posible que el file .gitattributes mina afecte al submodule?

Estoy interesado en especificar filter y smudge / clean, por lo que se aplicaría durante las compras en el submodule.

No: si desea definir un controller de filter de contenido (script de borrado / limpieza) aplicado durante el pago de un submodule, debe definirse en un .gitattributes almacenado en el repository de submodule.

PERO: si no desea agregar un .gitattributes al repository del submodule (porque, por ejemplo, no posee ese repository, solo lo está incluyendo y desea aplicar un filter que tenga sentido en su context), lo que puedes hacer es:

  • inicialice el submodule ( git submodule init o incluso git submodule update --init ):
    Eso creará en tu padre una carpeta .git/modules/yourSubmodule

  • copie en .git/modules/yourSubmodule/info/attributes los attributes que desea declarar para ciertos files (aquí, por ejemplo, todos los files ruby)

     *.rb filter=yourFilter 

Eso jugará el rol de .gitattributes (aún válido solo para el submodule, pero definido y almacenado en tu parent_repo/.git/modules/ )
De esta forma, puede definir attributes para un submodule sin tener que agregar un .gitattributes dentro del repository del submodule.

No es exactamente un ' .gitattributes ' de su repository padre: es algo que agrega después de inicializar un submodule, dentro de la carpeta .git/modules de su repository padre.
Puede almacenar el contenido de ese "gitattributes" como un file normal en su repository padre, pero tendrá que escribir un script capaz de inicializar el submodule y copyr ese file como un file .git/modules/yourSubmodule/info/attributes .
Lo he hecho en mi proyecto: vea este script de installation como un ejemplo.

  • modifique .git/modules/yourSubmodule/config para declarar una mancha o un filter limpio que haga reference a esa secuencia de commands.

     [filter "yourFiler"] smudge= yourScript1 %f clean = yourScript2 %f 

Luego, siempre que haya actualizado su submodule ( git submodule update ), ejecute un

 cd parentRepo/yourSubmodule git checkout HEAD -- . 

Eso disparará sus scripts de filter para ese submodule