Ignorer les fichiers META du dossier sur le contrôle de version

Unity crée et supprime des méta-fichiers pour les 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 aller aux questions): quelqu'un crée un dossier de fichiers qui seront ignorés mais oublie d'ignorer le méta-fichier du dossier. Unity crée le fichier meta et la personne ajoute le meta 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 fichier meta du contrôle de version. Tout le monde dans l'équipe ne comprend pas cela, donc le processus est perpétué dans une boucle de l'enfer.

, Étonnamment, cela arrive tout le temps. Donc, deux questions:

  1. est-il important de mettre à jour les fichiers meta du dossier?
  2. Existe - t-il un moyen d'ignorer automatiquement les fichiers meta des dossiers-en particulier sur Git ou mercurial?
46
demandé sur Roberto 2013-10-03 09:12:39

2 réponses

Les documentsUnity disent:

Lors de la création de nouveaux actifs, assurez-vous à la fois de l'actif lui-même et de l'actif associé .le fichier meta est ajouté 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:

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

Je viens de jouer avec les différentes commandes git, ce qui suit pourrait être utile: Le script git hook doit d'abord vérifier si .gitignore a changé par:

git diff-index --cached --name-only HEAD | grep ".gitignore"

Affiche les noms de répertoire de toutes les lignes nouvellement ajoutées .gitignore s'ils sont situés 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 dépôt GitHub git-pre-commit-crochet-unité-actifs pour le code et mon blogue à ce sujet pour plus de détails.

47
répondu Kay 2017-11-03 21:05:08

Pour inclure des méta-fichiers avec des ressources, ajoutez simplement ce qui suit après vos exclusions:

!*.*.meta

Voici un échantillon de mon .gitignore:

# Ignore the following files
# --------------------------
# Unity3D specific
#
**/Library/*
**/Temp/*
**/*.csproj
**/*.unityproj
**/*.sln
**/*.userprefs
**/*.pidb

# include meta files
!*.*.meta

Je place ceci dans le dossier avec la structure du référentiel git, donc ma structure de projet ressemblerait à:

root folder /
   - Unity Project/
        - .gitignore
        - .git/
        - ProjectFolder/
              - {all project related data}

J'espère que ça aide.

-6
répondu razblack 2013-12-04 16:13:12