web-dev-qa-db-fra.com

Ignorer les méta-fichiers des dossiers lors du contrôle de version

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:

  1. Est-il important de mettre les fichiers méta du dossier de version?
  2. Existe-t-il un moyen d'ignorer automatiquement les méta-fichiers de dossiers - en particulier sur git ou mercurial?
56
Roberto

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:

  • Organisationnel: définissez une convention de dénomination pour les dossiers locaux, comme commencer par "_". Mais nous savons tous que cela ne fonctionnera pas ;-)
  • Installez un côté client crochet de pré-validation sur toutes les machines. Je ne l'ai pas encore fait mais cela semble prometteur.

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.

54
Kay

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.

2
Guo Lieene