Итак, у меня есть эта дилемма, которую я пытаюсь решить. Я независимый разработчик игр, работающий над 6-7 клиентскими проектами одновременно с игровым движком Unity. Проблема, с которой я сталкиваюсь, заключается в том, что мой общий код синхронизируется между проектами - мое текущее решение очень «ручное» и требует много времени (и подвержено ошибкам, когда я забываю все обновить). Я начал рассматривать внешние SVN как решение, но есть одна проблема. Игровой движок Unity использует файлы *.meta для хранения данных о том, как рассматриваемые файлы используются в каждой игре.
В качестве быстрого примера - вот примерная структура папок:
Проект 1:
- КОРЕНЬ
- КОРЕНЬ/Активы
- КОРЕНЬ/активы/общий код
- ROOT/Активы/SharedCode/SharedScript.cs
- ROOT/Активы/SharedCode/SharedScript.meta
Проект 2:
- КОРЕНЬ
- КОРЕНЬ/Активы
- КОРЕНЬ/активы/общий код
- ROOT/Активы/SharedCode/SharedScript.cs
- ROOT/Активы/SharedCode/SharedScript.meta
Очевидное/немедленное решение состоит в том, чтобы просто сделать мою папку «SharedCode» внешней SVN. Проблема заключается в том, что файл SharedScript.cs должен быть идентичен в обоих проектах, но файл SharedScript.meta зависит от проекта и автоматически генерируется игровым движком (поэтому я не могу сказать, хранить все мои метафайлы в одну папку где-то вне папки «SharedCode»).
Таких файлов сотни, поэтому мне бы хотелось найти решение, которое не предполагает обработки каждого «общего» файла как внешнего по отношению к себе SVN.
Мое текущее уродливое решение состоит в том, чтобы сохранить все дерево проекта в SVN, и у меня есть подпапка, представляющая собой репозиторий GIT, который игнорирует файлы .meta. Это довольно уродливо, и я часто фиксирую/обновляю основной проект и забываю коммитить/нажимать/вытягивать проект "библиотеки" git.
Любые предложения будут ценны!