Zoeken…


Git Large File Storage (LFS) gebruiken met Unity

Voorwoord

Git kan direct met de ontwikkeling van videogames werken. Het belangrijkste nadeel is echter dat versiebeheer van grote (> 5 MB) mediabestanden op de lange termijn een probleem kan zijn als je commit geschiedenis bloats - Git was gewoon niet oorspronkelijk gebouwd voor versiebeheer van binaire bestanden.

Het goede nieuws is dat GitHub sinds medio 2015 een plug-in voor Git heeft uitgebracht, genaamd Git LFS, die dit probleem rechtstreeks aanpakt . U kunt nu eenvoudig en efficiënt grote binaire bestanden versieren!

Ten slotte is deze documentatie gericht op de specifieke vereisten en informatie die nodig is om ervoor te zorgen dat je Git-leven goed werkt met de ontwikkeling van videogames. Deze gids behandelt niet hoe Git zelf te gebruiken.

Git & Git-LFS installeren

Je hebt een aantal opties tot je beschikking als ontwikkelaar en de eerste keuze is of je de kern Git-opdrachtregel installeert of een van de populaire Git GUI-applicaties het voor je laat regelen.

Optie 1: gebruik een Git GUI-applicatie

Dit is hier echt een persoonlijke voorkeur, want er zijn nogal wat opties in termen van Git GUI of het al dan niet gebruiken van een GUI. Je hebt een aantal applicaties om uit te kiezen, hier zijn 3 van de meer populaire:

Nadat u de gewenste toepassing heeft geïnstalleerd, google en volg de instructies om te controleren of deze is ingesteld voor Git-LFS. We slaan deze stap in deze handleiding over omdat deze toepassingsspecifiek is.

Optie 2: Git & Git-LFS installeren

Dit is vrij eenvoudig - Installeer Git . Vervolgens. Installeer Git LFS .

Git Large File Storage configureren voor uw project

Als je de Git LFS-plug-in gebruikt om betere ondersteuning te bieden voor binaire bestanden, dan moet je een aantal bestandstypes instellen om te worden beheerd door Git LFS. Voeg het onderstaande toe aan uw .gitattributes bestand in de hoofdmap van uw repository ter ondersteuning van veelgebruikte binaire bestanden die worden gebruikt in Unity-projecten:

# 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

Een Git-repository instellen voor Unity

Bij het initialiseren van een Git-repository voor Unity-ontwikkeling zijn er een aantal dingen die gedaan moeten worden.

Eenheid negeer mappen

Niet alles zou in de repository moeten worden ge-versieed. U kunt de onderstaande sjabloon toevoegen aan uw .gitignore bestand in de hoofdmap van uw repository. Of je kunt ook de open source Unity .gitignore op GitHub controleren en er als alternatief een genereren met behulp van gitignore.io voor eenheid.

# 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

Voor meer informatie over hoe u een .gitignore bestand, kijk hier .

Unity Project-instellingen

Standaard zijn Unity-projecten niet ingesteld om versiebeheer correct te ondersteunen.

  1. (Sla deze stap over in v4.5 en hoger) Schakel de External optie in Unity → Preferences → Packages → Repository .
  2. Schakel naar Visible Meta Files in Edit → Project Settings → Editor → Version Control Mode .
  3. Schakel naar Force Text in Edit → Project Settings → Editor → Asset Serialization Mode .
  4. Sla de scène en het project op in het menu File .

Aanvullende configuratie

Een van de weinige grote ergernissen die je hebt bij het gebruik van Git met Unity-projecten is dat Git niet om mappen geeft en gelukkig lege mappen zal laten staan nadat ze bestanden van hen hebben verwijderd. Unity maakt *.meta bestanden voor deze mappen en kan een beetje strijd tussen teamleden veroorzaken wanneer Git commits deze metabestanden blijft toevoegen en verwijderen.

Voeg deze Git post-merge hook toe aan de /.git/hooks/ map voor repositories met Unity-projecten erin. Na een Git pull / merge, zal het bekijken welke bestanden zijn verwijderd, controleren of de map waarin het bestond leeg is, en zo ja verwijderen.

Scènes en Prefabs samenvoegen

Een veelvoorkomend probleem bij het werken met Unity is wanneer 2 of meer ontwikkelaars een Unity-scène of prefab (* .unity-bestanden) wijzigen. Git weet niet hoe ze uit de doos correct moeten worden samengevoegd. Gelukkig heeft het Unity-team een tool genaamd SmartMerge geïmplementeerd die eenvoudig samenvoegen automatisch maakt. Het eerste wat u moet doen, is de volgende regels toevoegen aan uw .git of .gitconfig bestand: (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"

Op Windows is het pad naar UnityYAMLMerge:

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

of

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

en op MacOSX :

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

Zodra dit is gedaan, is de mergetool beschikbaar wanneer er conflicten optreden tijdens samenvoegen / opnieuw opstarten. Vergeet niet git mergetool handmatig uit te voeren om UnityYAMLMerge te activeren.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow