Quelles sont les meilleures pratiques pour utiliser le contrôle de source Git avec Unity 3D, en particulier pour gérer la nature binaire des projets Unity 3D? Veuillez décrire le flux de travail, quels chemins seraient inclus dans .gitignore, quels paramètres devraient être définis dans Unity et / ou le projet, et tout autre élément spécial à noter.
Remarque: je me rends compte que l'utilisation d'Asset Server est la méthode recommandée par Unity, mais je voudrais utiliser Git pour diverses raisons. Veuillez ne pas répondre à cette question ou affirmer que je devrais simplement utiliser le serveur d'actifs. Le serveur d'actifs n'est vraiment pas une option pour moi.
git
unity3d
version-control
PressingOnAlways
la source
la source
Réponses:
Ce qui suit est un extrait de mon blog personnel .
Utiliser Git avec des jeux 3D
Mise à jour d'octobre 2015: GitHub a depuis publié un plugin pour Git appelé Git LFS qui traite directement le problème ci-dessous. Vous pouvez désormais facilement et efficacement mettre à jour de gros fichiers binaires!
Git peut très bien fonctionner avec des jeux 3D prêts à l'emploi. Cependant, la principale mise en garde ici est que la gestion des versions des fichiers multimédias volumineux (> 5 Mo) peut être un problème à long terme lorsque votre historique de validation est trop lourd. Nous avons résolu ce problème potentiel dans nos projets en ne versionnant l'actif binaire que lorsqu'il est considéré comme final. Nos artistes 3D utilisent Dropbox pour travailler sur les ressources WIP, à la fois pour la raison ci-dessus et parce que c'est beaucoup plus rapide et plus simple (peu d'artistes voudront activement utiliser Git!).
Flux de travail Git
Votre flux de travail Git est quelque chose que vous devez décider vous-même compte tenu de vos propres expériences en équipe et de la façon dont vous travaillez ensemble. Toutefois. Je recommanderais fortement la méthodologie Git Flow correctement nommée telle que décrite par l'auteur original ici .
Je n'entrerai pas dans les détails ici sur le fonctionnement de la méthodologie telle que l'auteur la décrit parfaitement et en peu de mots aussi, donc c'est facile à comprendre. J'utilise avec mon équipe depuis un certain temps maintenant, et c'est le meilleur flux de travail que nous ayons essayé jusqu'à présent.
Application cliente Git GUI
C'est vraiment une préférence personnelle ici car il existe de nombreuses options en termes de Git GUI ou s'il faut utiliser une interface graphique. Mais je voudrais suggérer l' application gratuite SourceTree car elle se branche parfaitement avec l'extension Git Flow. Lis le tutoriel SourceTree ici sur l'implémentation de la méthodologie Git Flow dans leur application.
Unity3D Ignore Folders
Pour un contrôle de version à jour, Github a conservé le fichier Unity.gitignore sans spécification du système d'exploitation.
Paramètres Unity3D
Pour les versions de Unity 3D v4.3 et supérieures:
External
option dansUnity → Preferences → Packages → Repository
.Edit
menu et choisissezProject Settings → Editor
:Version Control Mode
àVisible Meta Files
.Asset Serialization Mode
àForce Text
.File
menu.Vous souhaitez migrer votre référentiel existant vers LFS?
Consultez mon article de blog pour savoir comment le faire ici .
Configuration supplémentaire
L'un des rares désagréments majeurs liés à l'utilisation de Git avec des projets Unity3D est que Git ne se soucie pas des répertoires et laissera volontiers des répertoires vides après avoir supprimé des fichiers. Unity3D crée des fichiers * .meta pour ces répertoires et peut provoquer un peu de bataille entre les membres de l'équipe lorsque Git s'engage à continuer d'ajouter et de supprimer ces méta-fichiers.
Ajoutez ce hook post-fusion Git au
/.git/hooks/
dossier des référentiels contenant des projets Unity3D. Après tout pull / merge Git, il va regarder quels fichiers ont été supprimés, vérifier si le répertoire dans lequel il existait est vide, et si oui, le supprimer.la source
Hidden Meta Files
?Dans Unity 4.3, vous deviez également activer l'option externe à partir des préférences, mais depuis Unity 4.5, ils ont abandonné l'option pour cela, donc le processus de configuration complet ressemble à:
Visible Meta Files
inEditor → Project Settings → Editor → Version Control Mode
Force Text
inEditor → Project Settings → Editor → Asset Serialization Mode
File
menuNotre équipe utilise également un
.gitignore
fichier un peu plus étendu :Notez que les seuls dossiers que vous devez garder sous contrôle de code source sont
Assets
etProjectSettings
.Vous trouverez plus d'informations sur la façon de garder Unity Project sous contrôle de source dans cet article .
la source
Hidden Meta Files
?Qu'est-ce que GIT?
Git est un système de contrôle de version distribué (SCM) gratuit et open source développé par Linus Torvalds en 2005 (fondateur de Linux OS). Il est créé pour contrôler tout ce qui se passe de petits à grands projets avec rapidité et efficacité. Des entreprises de premier plan comme Google, Facebook et Microsoft utilisent GIT au quotidien.
Si vous voulez en savoir plus sur GIT, consultez ce tutoriel rapide ,
Tout d'abord, assurez-vous que votre environnement Git est configuré.Vous devez configurer à la fois votre environnement local et un référentiel Git (je préfère Github.com).
Application client GIT Mac / Windows
Pour l'application client GIT gui, je vous ai recommandé d'aller avec Github.com,
GitHub est l'endroit idéal pour partager du code avec des amis, des collègues, des camarades de classe et de parfaits inconnus. Plus de cinq millions de personnes utilisent GitHub pour construire ensemble des choses incroyables.
Paramètres Unity3d
Vous devez effectuer ces réglages
Basculez vers les méta-fichiers visibles dans Édition → Paramètres du projet → Éditeur → Mode de contrôle de version.
Activer l'option externe dans Unity → Préférences → Packages → Référentiel
Passez à Forcer le texte dans Édition → Paramètres du projet → Éditeur → Mode de sérialisation des ressources.
Source: Utilisation de Git avec le contrôle de source des jeux 3D
la source
Preferences > Packages
dans Unity 5.x Normal? tyPour ajouter à tout ce qui est indiqué, il est également idéal d'utiliser git lfs avec Unity. Je l'utilise depuis sa sortie et je n'ai eu aucun problème avec.
Vous voudrez l'ajouter à
.gitattributes
côté de votre.gitignore
fichierC'est ma liste de dossiers roulants. Si vous utilisez des fichiers binaires supplémentaires non répertoriés, ajoutez-les.
J'ai également des fichiers configurés pour utiliser yamlmerge, vous devez le configurer. Vous pouvez en lire plus ici: http://docs.unity3d.com/Manual/SmartMerge.html
la source
Nous avons maintenant une intégration transparente à l'unité avec l'extension Github to Unity ... https://unity.github.com/
La nouvelle extension GitHub pour Unity apporte le flux de travail GitHub et plus à Unity, en prenant en charge les fichiers volumineux avec Git LFS et le verrouillage de fichiers.
Au moment de la rédaction, le projet est en alpha, mais est toujours utilisable pour des projets personnels.
la source
J'ai pensé que je pourrais poster un texte plus simple
.gitignore
pour toute personne intéressée:la source
UnityPackageManager/
etPackages/
).Les principales choses à retenir lors de l'utilisation de git pour le contrôle de version du code source de l'unité-3d:
(A) NE PAS archiver le dossier Bibliothèque . J'ai fait cette erreur plusieurs fois dans le passé et j'en ai souffert! Supprimez OU déplacez le dossier de la bibliothèque avant d'ajouter votre projet / vos fichiers dans git.
(B) Utilisez "Meta Files visibles" - pour les dernières versions de l'unité - 5.3.4 et au-dessus, cela se produit par défaut. Pour certaines des versions antérieures, vous devez modifier les paramètres sous: Edition-> Paramètres du projet-> Contrôle de version
(C) Utilisez un fichier .gitignore pour Unity - pour vous assurer que l'intégrité est maintenue et que les fichiers ne sont pas inutilement ajoutés - si sur android / tizen - ajoutez des règles pour exclure les fichiers APK et TPK d'être ajoutés au référentiel. Recherchez un fichier .gitignore pour l'unité dans Google ou utilisez ce modèle .gitignore pour Unity fourni par GitHub: https://github.com/github/gitignore/blob/master/Unity.gitignore
(D) Assurez-vous que le fichier .gitignore est ajouté au référentiel en tant que premier fichier ajouté - parce que dans le passé, personnellement, j'ai manqué d'ajouter le fichier .gitignore. Renseignez-vous avec le recul sur la raison pour laquelle cela s'est produit, mais de nos jours, je copie et j'ajoute simplement le fichier .gitignore comme première étape de la configuration du référentiel.
Donc ... pour préparer un projet Unity pour git, procédez comme suit:
(1) Allez dans le dossier du projet
(2) Tapez git init.
(3) Copiez le fichier .gitignore: Sous MacOS: cp ~ / Downloads / .gitignore Sous Windows: copiez c: \ Users [votre nom d'utilisateur] \ Downloads.gitignore.
(4) git add .gitignore
(5) git add *
J'espère que cela aide ... tout le meilleur!
la source
Edit -> Project Settings -> Editor
Définissez le contrôle de version sur des méta-fichiers. Définissez la sérialisation des actifs pour forcer le texte.
Je pense que c'est ce que tu veux.
la source
Je préférerais plutôt que vous utilisiez BitBucket, car il n'est pas public et il existe un tutoriel officiel d'Unity sur Bitbucket.
https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository
J'espère que cela t'aides.
la source
Vous pouvez utiliser Github pour Unity , une extension Unity qui apporte le flux de travail git dans l'interface utilisateur d'Unity.
Github pour Unity vient de publier la version 1.0 de l'extension.
la source
Seuls les actifs et les paramètres du projet dossiers doivent être sous contrôle de version git.
Vous pouvez faire un gitignore comme ça.
la source
Unity fournit également son propre contrôle de version source. avant Unity5, c'était UnitAsset Server, mais maintenant il est déprécié. et lancer un nouveau système de contrôle SVN appelé Unity Collaborate.Mais le principal problème lié à l'unité et à n'importe quel SVN est la validation et la fusion de la scène. mais Non de svn nous donne le moyen de résoudre ce genre de conflits ou de fusionner la scène. dépend donc de vous quel SVN vous connaissez. J'utilise l'outil SmartSVN sur Mac. et tortue sur les fenêtres.
la source
Ajout juste sur le sujet de Gitignore. La méthode recommandée ignore uniquement Library et Temp, si sa racine wihtin de votre projet git. si vous êtes comme moi et avez parfois besoin d'un projet d'unité pour faire partie du repo, pas de l'ensemble du repo, les cordes correctes dans gitignore seraient:
la source
Je voulais ajouter un flux de travail très simple de quelqu'un qui a été frustré par Git dans le passé. Il existe plusieurs façons d'utiliser git, probablement les plus courantes pour l'unité sont GitHub Desktop, Git Bash et GitHub Unity
https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069 .
Essentiellement, ils font tous la même chose, mais son choix d'utilisateur. Vous pouvez avoir git pour la configuration de fichiers volumineux qui permet un stockage de fichiers volumineux gratuit de 1 Go avec un stockage supplémentaire disponible dans des packs de données pour 4 $ / mois pour 50 Go, et cela vous permettra de pousser des fichiers> 100 Mo vers des référentiels distants (il stocke les fichiers réels sur un serveur et dans votre référentiel un pointeur)
https://git-lfs.github.com/
Si vous ne voulez pas configurer lfs pour une raison quelconque, vous pouvez analyser vos projets pour les fichiers> 128 Mo dans Windows en tapant size: large dans le répertoire où vous avez votre projet. Cela peut être pratique pour rechercher des fichiers volumineux, bien que certains fichiers entre 100 Mo et 128 Mo puissent être manqués.
Le format général de git bash est
git add. (ajoute des fichiers à valider)
git commit -m 'message' (valide les fichiers avec un message, ils sont toujours sur votre PC et non dans le référentiel distant, en gros ils ont été 'versionnés' comme un nouveau commit)
git push (envoyer des fichiers au référentiel)
L'inconvénient de git bash pour les projets d'unité est que s'il y a un fichier> 100 Mo, vous n'obtiendrez pas d'erreur jusqu'à ce que vous poussiez. Vous devez ensuite annuler votre commit en réinitialisant votre tête au commit précédent. Une sorte de tracas, surtout si vous êtes nouveau avec git bash.
L'avantage de GitHub Desktop, AVANT de valider des fichiers avec 100 Mo, il vous donnera un message d'erreur contextuel. Vous pouvez ensuite réduire ces fichiers ou les ajouter à un fichier .gitignore.
Pour utiliser un fichier .gitignore, créez un fichier appelé .gitignore dans votre répertoire racine de référentiel local. Ajoutez simplement les fichiers une ligne à la fois que vous souhaitez supprimer. Les SharedAssets et autres fichiers de dossiers non-Asset peuvent généralement être omis et se repeupler automatiquement dans l'éditeur (les packages peuvent être réimportés, etc.). Vous pouvez également utiliser des caractères génériques pour exclure les types de fichiers.
Si d'autres personnes utilisent votre référentiel GitHub et que vous souhaitez cloner ou extraire, vous disposez également de ces options sur le bureau GitHub ou Git bash.
Je n'ai pas beaucoup parlé du paquet Unity GitHub où vous pouvez utiliser GitHub dans l'éditeur parce que personnellement, je n'ai pas trouvé l'interface très utile, et je ne pense pas que dans l'ensemble cela va aider quiconque à se familiariser avec git, mais c'est juste mon préférence.
la source