Szukaj…


Korzystanie z Git Large File Storage (LFS) z Unity

Przedmowa

Git może pracować z programowaniem gier wideo od razu po wyjęciu z pudełka. Jednak głównym zastrzeżeniem jest to, że wersjonowanie dużych (> 5 MB) plików multimedialnych może stanowić problem w dłuższej perspektywie, ponieważ historia zatwierdzeń się powiększa - Git po prostu nie był pierwotnie zbudowany do wersjonowania plików binarnych.

Wspaniałą wiadomością jest to, że od połowy 2015 roku GitHub wydał wtyczkę dla Git o nazwie Git LFS, która bezpośrednio rozwiązuje ten problem. Teraz możesz łatwo i wydajnie wersjonować duże pliki binarne!

Wreszcie, ta dokumentacja koncentruje się na konkretnych wymaganiach i informacjach niezbędnych do zapewnienia, że Twoje życie Git działa dobrze z tworzeniem gier wideo. Ten przewodnik nie obejmuje korzystania z samego Gita.

Instalowanie Git i Git-LFS

Jako programista masz do wyboru wiele opcji, a pierwszym wyborem jest to, czy zainstalować podstawowy wiersz polecenia Git, czy pozwolić jednej z popularnych aplikacji Git GUI sobie z tym poradzić.

Opcja 1: Użyj aplikacji Git GUI

Jest to naprawdę osobista preferencja, ponieważ istnieje wiele opcji w zakresie Git GUI lub tego, czy w ogóle używać GUI. Masz do wyboru wiele aplikacji, oto 3 z bardziej popularnych:

Po zainstalowaniu wybranej aplikacji przejdź do Google i postępuj zgodnie z instrukcjami, aby upewnić się, że jest ona skonfigurowana dla Git-LFS. Pominiemy ten krok w tym przewodniku, ponieważ jest on specyficzny dla aplikacji.

Opcja 2: zainstaluj Git i Git-LFS

To jest dość proste - zainstaluj Git . Następnie. Zainstaluj Git LFS .

Konfigurowanie magazynu dużych plików Git w projekcie

Jeśli używasz wtyczki Git LFS, aby zapewnić lepszą obsługę plików binarnych, musisz ustawić niektóre typy plików, które będą zarządzane przez Git LFS. Dodaj poniżej plik .gitattributes w katalogu głównym repozytorium, aby obsługiwać popularne pliki binarne używane w projektach 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

Konfigurowanie repozytorium Git dla Unity

Podczas inicjowania repozytorium Git na potrzeby rozwoju Unity należy wykonać kilka czynności.

Unity Ignoruj foldery

Nie wszystko powinno być wersjonowane w repozytorium. Możesz dodać poniższy szablon do pliku .gitignore w katalogu głównym repozytorium. Lub alternatywnie, możesz sprawdzić Openity Unity .gitignore na GitHub i alternatywnie wygenerować jeden za pomocą gitignore.io dla unity.

# 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

Aby dowiedzieć się więcej o tym, jak skonfigurować plik .gitignore, sprawdź tutaj .

Ustawienia projektu Unity

Domyślnie projekty Unity nie są skonfigurowane do prawidłowej obsługi wersjonowania.

  1. (Pomiń ten krok w wersji 4.5 lub nowszej) Włącz opcję External w Unity → Preferences → Packages → Repository .
  2. Przejdź do Visible Meta Files w Edit → Project Settings → Editor → Version Control Mode .
  3. Przełącz na Force Text w Edit → Project Settings → Editor → Asset Serialization Mode .
  4. Zapisz scenę i projekt z menu File .

Dodatkowa konfiguracja

Jedną z niewielu głównych niedogodności związanych z używaniem projektów Git z Unity jest to, że Git nie dba o katalogi i chętnie zostawia puste katalogi po usunięciu z nich plików. Unity utworzy pliki *.meta dla tych katalogów i może spowodować bitwę między członkami zespołu, gdy Git zobowiązuje się do dodawania i usuwania tych plików meta.

Dodaj ten zaczep Git po scaleniu do folderu /.git/hooks/ dla repozytoriów z projektami Unity. Po każdym ściągnięciu / scaleniu Git, sprawdzi, jakie pliki zostały usunięte, sprawdzi, czy katalog, w którym istniał, jest pusty, a jeśli tak, usuń go.

Scalanie scen i prefabrykatów

Częstym problemem podczas pracy z Unity jest sytuacja, gdy 2 lub więcej programistów modyfikuje scenę lub prefabrykację Unity (pliki * .unity). Git nie wie, jak poprawnie połączyć je po wyjęciu z pudełka. Na szczęście zespół Unity wdrożył narzędzie o nazwie SmartMerge, które sprawia, że proste scalanie jest automatyczne. Pierwszą rzeczą do zrobienia jest dodanie następujących wierszy do pliku .git lub .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"

W systemie Windows ścieżka do UnityYAMLMerge to:

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

lub

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

i na MacOSX :

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

Po wykonaniu tej czynności narzędzie do łączenia będzie dostępne, gdy pojawią się konflikty podczas scalania / zmiany bazy. Nie zapomnij uruchomić git mergetool ręcznie, aby uruchomić UnityYAMLMerge.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow