Поиск…


Использование Git для хранения больших файлов (LFS) с Unity

предисловие

Git может работать с разработкой видеоигр. Однако основное предостережение заключается в том, что файлы с большим объемом файлов (более 5 МБ) в версии с большим количеством файлов могут быть проблемой в долгосрочной перспективе, так как ваши истории взлома истории - Git просто не был создан для двоичных файлов версий.

Отличная новость заключается в том, что с середины 2015 года GitHub выпустил плагин для Git Git LFS, который напрямую занимается этой проблемой. Теперь вы можете легко и эффективно создавать большие двоичные файлы!

Наконец, эта документация ориентирована на конкретные требования и информацию, необходимые для обеспечения хорошей жизни Git с развитием видеоигр. В этом руководстве не будет рассказано, как использовать Git.

Установка Git & Git-LFS

У вас есть ряд опций, доступных вам как разработчик, и первым выбором является установка базовой командной строки Git или включение в нее одного из популярных приложений Git GUI.

Вариант 1: использовать приложение Git GUI

Это действительно личное предпочтение здесь, поскольку существует множество вариантов с точки зрения графического интерфейса Git или вообще использовать графический интерфейс. У вас есть несколько приложений на выбор, вот 3 из наиболее популярных:

После того, как вы установили свое приложение по своему выбору, пожалуйста, выполните Google и следуйте инструкциям о том, как обеспечить его настройку для Git-LFS. Мы пропустим этот шаг в этом руководстве, так как это приложение специфично.

Вариант 2: установите Git & Git-LFS

Это довольно просто - установите Git . Затем. Установите Git LFS .

Настройка большого хранилища файлов Git в вашем проекте

Если вы используете плагин Git LFS для лучшей поддержки двоичных файлов, вам необходимо установить некоторые типы файлов, которые будут управляться Git LFS. Добавьте ниже в свой файл .gitattributes в корень вашего репозитория для поддержки общих двоичных файлов, используемых в проектах 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

Настройка хранилища Git для Unity

При инициализации репозитория Git для развития Unity необходимо выполнить несколько вещей.

Unity Ignore Folders

Не все должно быть версией в репозитории. Вы можете добавить шаблон ниже в свой .gitignore файл в корень вашего репозитория. Или, альтернативно, вы можете проверить Unity .gitignore с открытым исходным кодом на GitHub и, альтернативно, генерировать один, используя gitignore.io для единства.

# 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

Подробнее о том, как настроить файл .gitignore, читайте здесь .

Настройки проекта Unity

По умолчанию проекты Unity не настроены на правильное управление версиями.

  1. (Пропустите этот шаг в версии 4.5 и выше) Включите параметр External в Unity → Preferences → Packages → Repository .
  2. Переключитесь на Visible Meta Files в Edit → Project Settings → Editor → Version Control Mode .
  3. Переключитесь в « Force Text в « Edit → Project Settings → Editor → Asset Serialization Mode .
  4. Сохраните сцену и проект из меню « File .

Дополнительная конфигурация

Одним из немногих серьезных неприятностей, с которыми можно столкнуться при использовании проектов Git с Unity, является то, что Git не заботится о каталогах и с радостью покидает пустые каталоги после удаления из них файлов. Unity сделает файлы *.meta для этих каталогов и может вызвать битву между членами команды, когда Git обязуется продолжать добавлять и удалять эти метафайлы.

Добавьте этот крюк Git post-merge в папку /.git/hooks/ для репозиториев с проектами Unity в них. После любого Git pull / merge, он будет смотреть, какие файлы были удалены, проверьте, пуст ли каталог, в котором он существовал, и если он его удаляет.

Сцены и сборки сборных

Общей проблемой при работе с Unity является то, что 2 или более разработчиков модифицируют сцену Unity или prefab (файлы * .unity). Git не знает, как правильно слить их из коробки. К счастью, команда Unity развернула инструмент SmartMerge, который упрощает автоматическое слияние. Первое, что нужно сделать, это добавить следующие строки в ваш файл .git или .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"

В Windows путь к UnityYAMLMerge:

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

или же

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

и на MacOSX :

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

Как только это будет сделано, mergetool будет доступен, если возникают конфликты во время слияния / переадресации. Не забудьте запустить git mergetool вручную, чтобы запустить UnityYAMLMerge.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow