Ricerca…


Utilizzo di Git Large File Storage (LFS) con Unity

Prefazione

Git può funzionare con lo sviluppo di videogiochi fuori dagli schemi. Tuttavia, l'avvertenza principale è che i file multimediali con versioni di grandi dimensioni (> 5 MB) possono rappresentare un problema a lungo termine dato che la cronologia dei commit è a dismisura - Git semplicemente non è stato originariamente creato per il versioning di file binari.

La grande notizia è che da metà 2015 GitHub ha rilasciato un plugin per Git chiamato Git LFS che tratta direttamente questo problema. Ora puoi creare facilmente ed efficientemente file binari di grandi dimensioni!

Infine, questa documentazione si concentra sui requisiti specifici e le informazioni necessarie per garantire che la tua vita Git funzioni bene con lo sviluppo di videogiochi. Questa guida non tratterà come usare Git stesso.

Installazione di Git & Git-LFS

Hai una serie di opzioni a tua disposizione come sviluppatore e la prima scelta è se installare la riga di comando Git di base o lasciare che una delle popolari applicazioni Git della GUI si occupi di esso.

Opzione 1: utilizzare un'applicazione Git GUI

Questa è davvero una preferenza personale in quanto vi sono alcune opzioni in termini di Git GUI o se utilizzare una GUI del tutto. Hai un numero di applicazioni tra cui scegliere, qui ci sono 3 delle più popolari:

Una volta installata l'applicazione preferita, fai clic su Google e segui le istruzioni su come assicurarsi che sia configurato per Git-LFS. Salteremo questo passaggio in questa guida poiché è specifica dell'applicazione.

Opzione 2: installa Git & Git-LFS

Questo è piuttosto semplice - Installa Git . Poi. Installa Git LFS .

Configurazione di Git Large File Storage sul tuo progetto

Se stai utilizzando il plug-in Git LFS per fornire un supporto migliore per i file binari, dovrai impostare alcuni tipi di file che Git LFS gestirà. Aggiungi il sotto al tuo file .gitattributes nella root del tuo repository per supportare i file binari comuni usati nei progetti 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

Impostazione di un repository Git per Unity

Quando si inizializza un repository Git per lo sviluppo di Unity, ci sono un paio di cose che devono essere fatte.

Unity Ignora le cartelle

Non tutto dovrebbe essere versionato nel repository. Puoi aggiungere il modello qui sotto al tuo file .gitignore nella root del tuo repository. In alternativa, puoi controllare l' unità open source .gitignore su GitHub e in alternativa crearne una utilizzando gitignore.io per 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

Per ulteriori informazioni su come impostare un file .gitignore, consulta qui .

Impostazioni del progetto Unity

Per impostazione predefinita, i progetti Unity non sono configurati per supportare il controllo delle versioni correttamente.

  1. (Salta questo passaggio nella versione 4.5 e successive) Abilita l'opzione External in Unity → Preferences → Packages → Repository .
  2. Passa a Visible Meta Files in Edit → Project Settings → Editor → Version Control Mode .
  3. Passa a Force Text in Edit → Project Settings → Editor → Asset Serialization Mode .
  4. Salva la scena e proietta dal menu File .

Configurazione aggiuntiva

Uno dei pochi maggiori fastidi che si hanno con l'utilizzo dei progetti Git with Unity è che a Git non interessano le directory e lasceranno felicemente le directory vuote dopo aver rimosso i file da esse. Unity *.meta file *.meta per queste directory e può causare un po 'di battaglia tra i membri del team quando Git si impegna a continuare ad aggiungere e rimuovere questi meta file.

Aggiungi questo hook post-merge Git alla cartella /.git/hooks/ per repository con progetti Unity al loro interno. Dopo ogni Git pull / merge, verrà esaminato quali file sono stati rimossi, verificare se la directory in cui è presente è vuota e, in tal caso, eliminarla.

Fusione di scene e prefabbricati

Un problema comune quando si lavora con Unity è quando 2 o più sviluppatori stanno modificando una scena Unity o prefabbricati (file * .unity). Git non sa come unirli correttamente fuori dalla scatola. Fortunatamente il team Unity ha implementato uno strumento chiamato SmartMerge che rende automatica l'unione semplice. La prima cosa da fare è aggiungere le seguenti righe al tuo file .git o .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"

Su Windows il percorso di UnityYAMLMerge è:

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

o

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

e su MacOSX :

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

Una volta fatto, il mergetool sarà disponibile quando sorgono conflitti durante l'unione / rebase. Non dimenticare di eseguire git mergetool manualmente per attivare UnityYAMLMerge.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow