Pull to refresh

Comments 15

Спасибо за статью!
Я тут так-же разбирался с тем, как нормально подружить Unity и Git. Пусть будет как дополнительная информация.


Клиент для гита использую SmartGit (Недавно перешел на него с SourceTree)


Использование Unity + Git + Yaml (Smart Merge) в SmartGit — без правки .gitattributes


Настройка SmartGit

Go to: Preferences -> Conflict Solvers:


File Pattern: "*.meta, *.unity, *.asset, *.prefab"
Command: "..\Unity\Editor\Data\Tools\UnityYAMLMerge.exe"
Arguments: "merge -p ${baseFile} ${rightFile} ${leftFile} ${mergedFile}"


image


Настройка Unity YAML (Smart Merge) для Meld Merge

Add this code to mergespecfile.txt file (line 20):


..\Unity\Editor\Data\Tools\mergespecfile.txt

# Meld merge (Recommended)
* use "..\Meld\Meld.exe" "%r" "%b" "%l" -o "%d" --auto-merge
Да это рекомендованный Unity метод но он позволяет разруливать уже случившийся конфликт, мой метод позволяет конфликту не случиться.

Да, все верно — это в случае если мерж не прошел успешно (по методу описанному в статье).

но благодаря флагу -p Smart Merge частично смердживает что может без конфликтов, и конфликты остаются уже явно только по существу, так что при таком раскладе устанавливать Smart Merge в качестве утилиты решения конфликтов уже не имеет смысла.

В настройках SmartGit стоит этот же ключ "-p", по этому он также автоматически мержит такие изменения (не конфликтные)

А как добавить поддержку *.m файлов?
(для исходников iOS-компонент)
Никакой дополнительной настройки не требуется. Но если очень хочется можно попробовать в .gitattributes добавить строку *.m diff=objc text но работать будет и без этого, и я не готов точно сказать насколько это позволит эффективней мерджить такие файлы
Да вот что-то гит не видит их ни со стройкой, ни без строки…
попробовал у себя локально создав файл test.m в корне асетов все ок
либо на компьютере есть файл .gitignore из за которого файлы .m игнорируются либо этот файл лежит в папке которая игнорируется
да я видел этот проект, к сожалению он сильно заточен на API github и не подходит если проект хостится не там
У тебя в .gitignore написано:
*.unitypackage

И в .gitattributes тоже
*.unitypackage

Выходит что ты и игнориишь все файлы с расширением .unitypackage и вносишь их в LFS.
Да я для себя решил что unitypackage хранить в репозитории не буду, но вот из .gitattributes убрать забыл.
С другой стороны уж если их хранить то лучше в LFS

Иногда бывают моменты, что некоторые пакеты (из плагинов) надо наоборот включить в билд в обход основного правила .gitignore:


!/SomePlugin/*.unitypackage

В таком случае — эта конфигурация является верной.

Sign up to leave a comment.

Articles