unity3d
Использование контроля источника Git с Unity
Поиск…
Использование 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 не настроены на правильное управление версиями.
- (Пропустите этот шаг в версии 4.5 и выше) Включите параметр
External
вUnity → Preferences → Packages → Repository
. - Переключитесь на
Visible Meta Files
вEdit → Project Settings → Editor → Version Control Mode
. - Переключитесь в «
Force Text
в «Edit → Project Settings → Editor → Asset Serialization Mode
. - Сохраните сцену и проект из меню «
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.