Suche…


Verwenden von Git Large File Storage (LFS) mit Unity

Vorwort

Git kann mit der Entwicklung von Videospielen sofort arbeiten. Der Hauptvorteil ist jedoch, dass die Versionsverwaltung großer (> 5 MB) Mediendateien langfristig ein Problem darstellen kann, da Ihr Commit-Verlauf aufgebläht wird - Git wurde ursprünglich nicht für die Versionsverwaltung von Binärdateien entwickelt.

Die gute Nachricht ist, dass GitHub seit Mitte 2015 ein Plug-In für Git namens LFS veröffentlicht , das sich direkt mit diesem Problem befasst. Sie können jetzt große Binärdateien einfach und effizient versionieren!

Schließlich konzentriert sich diese Dokumentation auf die spezifischen Anforderungen und Informationen, die erforderlich sind, um sicherzustellen, dass Ihr Git-Leben mit der Entwicklung von Videospielen gut funktioniert. Dieses Handbuch behandelt nicht die Verwendung von Git selbst.

Git & Git-LFS installieren

Ihnen als Entwickler stehen eine Reihe von Optionen zur Verfügung. Als erste Wahl können Sie die Kern-Git-Befehlszeile installieren oder eine der gängigen Git-GUI-Anwendungen für Sie erledigen lassen.

Option 1: Verwenden Sie eine Git-GUI-Anwendung

Dies ist wirklich eine persönliche Präferenz, da es viele Optionen gibt, was Git-GUI angeht oder ob überhaupt eine GUI verwendet wird. Sie haben eine Reihe von Anwendungen zur Auswahl, hier sind 3 der beliebtesten:

Nachdem Sie Ihre Anwendung installiert haben, gehen Sie bitte zu google und befolgen Sie die Anweisungen, um sicherzustellen, dass sie für Git-LFS eingerichtet ist. Dieser Schritt wird in diesem Handbuch übersprungen, da er anwendungsspezifisch ist.

Option 2: Installieren Sie Git & Git-LFS

Das ist ziemlich einfach - Installieren Sie Git . Dann. Installieren Sie Git LFS .

Git Large File Storage für Ihr Projekt konfigurieren

Wenn Sie das Git LFS-Plugin verwenden, um Binärdateien besser zu unterstützen, müssen Sie einige Dateitypen festlegen, die von Git LFS verwaltet werden sollen. Fügen Sie Ihrer .gitattributes Datei im Stammverzeichnis Ihres Repositorys Folgendes .gitattributes , um gängige Binärdateien zu unterstützen, die in Unity-Projekten verwendet werden:

# 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

Einrichten eines Git-Repositorys für Unity

Beim Initialisieren eines Git-Repositorys für die Unity-Entwicklung müssen einige Dinge getan werden.

Ordner ignorieren

Im Repository sollte nicht alles versioniert werden. Sie können die untenstehende Vorlage zu Ihrer .gitignore Datei im Stammverzeichnis Ihres Repositorys hinzufügen. Alternativ können Sie die Open Source Unity .gitignore auf GitHub überprüfen und alternativ mit gitignore.io eine Unity generieren .

# 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

Weitere Informationen zum Einrichten einer .gitignore-Datei finden Sie hier .

Unity-Projekteinstellungen

Standardmäßig werden Unity-Projekte nicht für die korrekte Unterstützung der Versionsverwaltung eingerichtet.

  1. (Überspringen Sie diesen Schritt in v4.5 und höher.) Aktivieren Sie die Option External in Unity → Preferences → Packages → Repository .
  2. Wechseln Sie zu Visible Meta Files Edit → Project Settings → Editor → Version Control Mode .
  3. Wechseln Sie unter Edit → Project Settings → Editor → Asset Serialization Mode zu Force Text Edit → Project Settings → Editor → Asset Serialization Mode .
  4. Speichern Sie die Szene und das Projekt im Menü File .

Zusätzliche Konfiguration

Eine der wenigen Ärgernisse, die man bei der Verwendung von Git mit Unity-Projekten hat, ist, dass Git keine Verzeichnisse interessiert und leere Verzeichnisse nach dem Entfernen von Dateien glücklich hinterlassen wird. Unity erstellt *.meta Dateien für diese Verzeichnisse und kann zu *.meta zwischen den Teammitgliedern führen, wenn Git-Commits diese Metadateien hinzufügen und entfernen.

Fügen Sie diesen Git-Post-Merge-Hook für Repositorys mit Unity-Projekten in den Ordner /.git/hooks/ . Nach jedem Git-Pull / Merge-Vorgang wird geprüft, welche Dateien entfernt wurden, ob das Verzeichnis, in dem es sich befand, leer ist und ob es gelöscht wird.

Szenen und Prefabs zusammenführen

Ein häufiges Problem bei der Arbeit mit Unity ist, wenn zwei oder mehr Entwickler eine Unity-Szene oder ein Prefab (* .unity-Dateien) ändern. Git weiß nicht, wie sie korrekt aus der Box zusammengefügt werden sollen. Glücklicherweise hat das Unity-Team ein Tool namens SmartMerge bereitgestellt, das die einfache Zusammenführung automatisch macht. Das erste , was zu tun ist , die folgenden Zeilen zu Ihrer hinzufügen .git oder .gitconfig - Datei: (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"

Unter Windows lautet der Pfad zu UnityYAMLMerge:

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

oder

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

und unter MacOSX :

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

Sobald dies erledigt ist, steht das Mergetool zur Verfügung, wenn Konflikte während der Zusammenführung auftreten. Vergessen Sie nicht, git mergetool manuell git mergetool , um UnityYAMLMerge auszulösen.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow