Comment déterminer les fichiers qui sont soumis à un filtre par gitattributes lorsque le filtre est exécuté?
-
03-10-2019 - |
Question
Je tas de scripts Ruby dans un dépôt git et il semble être vraiment difficile de faire respecter les gens à écrire du code correctement indenté.
J'ai aussi un petit script Ruby que les formats de code standard spécifique et maintenant je voudrais courir que comme un script de filtre de sorte que indésirable wont s'engage dans le référentiel.
echo "*.rb filter=rubyfilter" > .gitattributes
echo "[filter \"rubyfilter\"]" >> .git/config
echo " clean = /home/rasjani/bin/rbeauty" >> .git/config
echo " smudge = /home/rasjani/bin/rbeauty" >> .git/config
fait le côté git truc sale, mais le script Ruby doit ensuite traiter les fichiers concernés:
comment / où est-ce que je regarde les contre?
La solution
Comme décrit dans le GitPro Livre
Git applique les paramètres uniquement pour un sous-répertoire ou sous-ensemble de fichiers. Ces paramètres spécifiques de chemin sont appelés attributs Git et sont définis soit dans un fichier .gitattributes dans l'un de vos répertoires
Le git attributes
homme mentionne:
- Au moment du départ, lorsque la commande de bavure est spécifiée, la commande est alimenté l'objet blob à partir de son entrée standard, et on utilise la sortie standard pour mettre à jour le fichier de worktree.
- De même, la commande propre est utilisé pour convertir le contenu du fichier worktree sur checkin.
votre script traitera chaque fichiers *.rb
(dans le répertoire et les sous-répertoires où le fichier .gitattributes
est situé) à la caisse et valider.
Voir cette SO question un exemple concret.
Vous pouvez tester votre configuration avec:
git checkout --force
Note: comme mentionné dans cette question SO , les scripts smudge
et clean
ne peuvent modifier le contenu d'un fichier, sans savoir quel fichier exact ils sont en train de traiter.