Sök…


Använda Git Large File Storage (LFS) med Unity

Förord

Git kan arbeta med utvecklingen av videospel. Men den viktigaste varning är att versionering av stora (> 5 MB) mediefiler kan vara ett problem på lång sikt eftersom din engagemangshistorik uppblåser - Git byggdes helt enkelt inte ursprungligen för att versionera binära filer.

Den stora nyheten är att sedan mitten av 2015 har GitHub släppt ett plugin för Git som heter Git LFS som direkt hanterar detta problem. Du kan nu enkelt och effektivt versionera stora binära filer!

Slutligen fokuseras denna dokumentation på de specifika krav och information som krävs för att säkerställa att ditt Git-liv fungerar bra med utvecklingen av videospel. Den här guiden täcker inte hur man använder Git själv.

Installera Git & Git-LFS

Du har ett antal alternativ tillgängliga för dig som utvecklare och det första valet är om du vill installera den centrala Git-kommandoraden eller låta en av de populära Git GUI-applikationerna ta itu med den åt dig.

Alternativ 1: Använd en Git GUI-applikation

Detta är verkligen en personlig preferens här eftersom det finns ganska många alternativ i fråga om Git GUI eller om man vill använda ett GUI alls. Du har ett antal applikationer att välja mellan, här är tre av de mer populära:

När du har installerat ditt val av applikation, google och följ instruktionerna för att säkerställa att det är inställt för Git-LFS. Vi hoppar över detta steg i den här guiden eftersom det är applikationsspecifikt.

Alternativ 2: Installera Git & Git-LFS

Det här är ganska enkelt - Installera Git . Sedan. Installera Git LFS .

Konfigurera Git Large File Storage i ditt projekt

Om du använder Git LFS-plugin för att ge bättre stöd för binära filer måste du ställa in några filtyper som ska hanteras av Git LFS. Lägg till nedan i din .gitattributes fil i roten till ditt arkiv för att stödja vanliga binära filer som används i Unity-projekt:

# 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

Ställa in ett Git-arkiv för Unity

När man initialiserar ett Git-arkiv för enhetsutveckling, är det ett par saker som måste göras.

Enhet ignorera mappar

Inte allt ska versioneras i förvaret. Du kan lägga till mallen nedan till din .gitignore fil i roten till ditt arkiv. Eller alternativt kan du kontrollera open source Unity .gitignore på GitHub och alternativt generera en med gitignore.io för enhet.

# 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

För att lära dig mer om hur du konfigurerar en .gitignore-fil, kolla här .

Inställningar för Unity Project

Som standard installeras inte Unity-projekt för att stödja versioner korrekt.

  1. (Hoppa över detta steg i v4.5 och uppåt) Aktivera External alternativ i Unity → Preferences → Packages → Repository .
  2. Byt till Visible Meta Files i Edit → Project Settings → Editor → Version Control Mode .
  3. Växla till Force Text i Edit → Project Settings → Editor → Asset Serialization Mode .
  4. Spara scenen och projektet från File menyn.

Ytterligare konfiguration

En av de få stora irritationer som man har med att använda Git med Unity-projekt är att Git inte bryr sig om kataloger och glatt kommer att lämna tomma kataloger efter att ha tagit bort filer från dem. Unity kommer att skapa *.meta filer för dessa kataloger och kan orsaka lite strid mellan teammedlemmarna när Git förbinder sig att lägga till och ta bort dessa metafiler.

Lägg till denna Git post- /.git/hooks/ mappen /.git/hooks/ för arkiv med Unity-projekt i dem. Efter någon Git-drag / sammanslagning kommer den att titta på vilka filer som har tagits bort, kontrollera om katalogen den fanns i är tom och i så fall ta bort den.

Scener och prefabar slås samman

Ett vanligt problem när du arbetar med Unity är när två eller flera utvecklare modifierar en Unity-scen eller prefab (* .unity-filer). Git vet inte hur de ska smälta dem korrekt ur rutan. Tack och lov distribuerade Unity-teamet ett verktyg som heter SmartMerge som gör enkel sammanslagning automatiskt. Det första du ska göra är att lägga till följande rader i din .git eller .gitconfig fil: (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"

Windows är vägen till UnityYAMLMerge:

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

eller

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

och på MacOSX :

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

När detta är gjort kommer mergetool att vara tillgängligt när konflikter uppstår under sammanslagning / omfasning. Glöm inte att köra git mergetool manuellt för att utlösa UnityYAMLMerge.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow