Unity crée et supprime des méta-fichiers pour dossiers dans le dossier Asset.
Cela peut créer une situation gênante lors de l'utilisation du contrôle de version (que vous pouvez ignorer et passer aux questions): quelqu'un crée un dossier de fichiers qui sera ignoré mais oubliez d'ignorer le méta-fichier du dossier. Unity crée le méta-fichier et la personne ajoute la méta au contrôle de version. Une autre personne obtient les changesets et, comme il n'a pas le dossier, son unité supprime le méta-fichier et il supprime le méta-fichier du contrôle de version. Tout le monde dans l'équipe ne comprend pas cela, donc le processus se perpétue dans une boucle de l'enfer.
Étonnamment, cela se produit tout le temps. Donc, deux questions:
Les nity docs disent:
Lors de la création de nouveaux actifs, assurez-vous que l'actif lui-même et le fichier .meta associé sont ajoutés au contrôle de version.
Pour moi, c'est une raison suffisante pour les mettre sous contrôle de version. Je vois deux approches pour résoudre le problème:
Je viens de jouer avec les différentes commandes git, ce qui pourrait être utile: Le script git hook devrait d'abord vérifier si .gitignore a changé par:
git diff-index --cached --name-only HEAD | grep ".gitignore"
Imprimez les noms de répertoire de toutes les lignes nouvellement ajoutées dans .gitignore si elles se trouvent sous le dossier Assets:
git diff --cached --Word-diff=plain .gitignore | grep -o -e "{+\/.*\/Assets\/.*+}" | cut -d + -f 2
Mise à jour
Je viens d'écrire un tel crochet de pré-validation :-) Voir le référentiel GitHub git-pre-commit-hook-unit-assets pour le code et mon publication de blog à ce sujet pour plus de détails.
Ajoutez ceci à .gitignore
#Ignore all .meta file
*.meta
#But not source file with postfix. which is everything but a folder
!*.*.meta
Cela ignorera le fichier sans suffixe. Mais cela ne devrait pas faire de mal.