Recherche…


Utilisation de GFS Large File Storage (LFS) avec Unity

Avant-propos

Git peut travailler avec le développement de jeux vidéo. Cependant, le principal inconvénient est que le contrôle des versions de fichiers multimédias volumineux (> 5 Mo) peut être un problème à long terme, car votre historique de validation bloque - Git n'a tout simplement pas été conçu pour gérer les fichiers binaires.

La bonne nouvelle est que depuis la mi-2015, GitHub a publié un plug-in pour Git appelé Git LFS, qui traite directement de ce problème. Vous pouvez maintenant facilement et efficacement version de gros fichiers binaires!

Enfin, cette documentation est axée sur les exigences et les informations spécifiques nécessaires pour garantir que votre vie Git fonctionne bien avec le développement de jeux vidéo. Ce guide ne couvrira pas la manière d'utiliser Git lui-même.

Installation de Git & Git-LFS

En tant que développeur, vous disposez d'un certain nombre d'options et le premier choix consiste à savoir s'il faut installer la ligne de commande Git principale ou laisser l'une des applications d'interface graphique Git les plus prisées en charge pour vous.

Option 1: Utiliser une application Git GUI

Ceci est vraiment une préférence personnelle, car il existe plusieurs options en termes d’interface graphique de Git ou d’utilisation d’une interface graphique. Vous avez un certain nombre d'applications à choisir, voici 3 des plus populaires:

Une fois que vous avez installé l'application de votre choix, consultez Google et suivez les instructions pour vous assurer qu'elle est configurée pour Git-LFS. Nous allons sauter cette étape dans ce guide car il est spécifique à l'application.

Option 2: installer Git & Git-LFS

C'est assez simple - Installez Git . Alors. Installez Git LFS .

Configuration du stockage de fichiers Git Large sur votre projet

Si vous utilisez le plug-in Git LFS pour mieux prendre en charge les fichiers binaires, vous devrez définir certains types de fichiers à gérer par Git LFS. Ajoutez ce qui suit à votre fichier .gitattributes à la racine de votre référentiel pour prendre en charge les fichiers binaires courants utilisés dans les projets Unity:

# Image formats:
*.tga filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text

# Audio formats:
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text

# 3D model formats:
*.fbx filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text

# Unity formats:
*.sbsar filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text

# Other binary formats
*.dll filter=lfs diff=lfs merge=lfs -text

Mettre en place un dépôt Git pour Unity

Lors de l'initialisation d'un référentiel Git pour le développement d'Unity, il y a plusieurs choses à faire.

Unité ignore les dossiers

Tout ne devrait pas être versionné dans le référentiel. Vous pouvez ajouter le modèle ci-dessous à votre fichier .gitignore dans la racine de votre référentiel. Ou bien, vous pouvez vérifier le code source libre Unity .gitignore sur GitHub et en générer un en utilisant gitignore.io pour l'unité.

# Unity Generated
[Tt]emp/
[Ll]ibrary/
[Oo]bj/

# Unity3D Generated File On Crash Reports
sysinfo.txt

# Visual Studio / MonoDevelop Generated
ExportedObj/
obj/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd

# OS Generated
desktop.ini
.DS_Store
.DS_Store?
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Pour en savoir plus sur la configuration d'un fichier .gitignore, consultez ici .

Paramètres du projet Unity

Par défaut, les projets Unity ne sont pas configurés pour prendre en charge le contrôle de version correctement.

  1. (Ignorez cette étape dans la version 4.5 et ultérieure) Activer l'option External dans Unity → Preferences → Packages → Repository .
  2. Basculez vers les Visible Meta Files dans Edit → Project Settings → Editor → Version Control Mode .
  3. Basculer vers le Force Text dans Edit → Project Settings → Editor → Asset Serialization Mode .
  4. Enregistrez la scène et le projet dans le menu File .

Configuration supplémentaire

L'un des rares désagréments majeurs liés à l'utilisation de Git avec les projets Unity est que Git ne se soucie pas des répertoires et laissera volontiers des répertoires vides après avoir supprimé les fichiers. Unity va créer des fichiers *.meta pour ces répertoires et peut causer une bataille entre les membres de l'équipe lorsque Git se *.meta pour continuer à ajouter et à supprimer ces fichiers méta.

Ajoutez ce hook post-fusion Git au dossier /.git/hooks/ pour les référentiels contenant des projets Unity. Après chaque extraction / fusion de Git, il examinera quels fichiers ont été supprimés, vérifie si le répertoire dans lequel il se trouve est vide et, le cas échéant, le supprime.

Scènes et préfabriqués fusionnant

Un problème courant lorsque vous travaillez avec Unity est lorsque 2 développeurs ou plus modifient une scène ou un préfabriqué Unity (fichiers * .unity). Git ne sait pas comment les fusionner correctement. Heureusement, l'équipe d'Unity a déployé un outil appelé SmartMerge, qui permet de fusionner automatiquement les données. La première chose à faire est d'ajouter les lignes suivantes à votre fichier .git ou .gitconfig : (Windows: %USERPROFILE%\.gitconfig , Linux / Mac OS X: ~/.gitconfig )

[merge]
tool = unityyamlmerge

[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"

Sous Windows, le chemin d'accès à UnityYAMLMerge est le suivant:

C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

ou

C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

et sur MacOSX :

/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge

Une fois cela fait, le mergetool sera disponible lorsque des conflits surviendront lors de la fusion / rebase. N'oubliez pas de lancer git mergetool manuellement pour déclencher UnityYAMLMerge.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow