Лучшие практики для контроля версий в Unity?

11

Я немного запутался, как использовать контроль версий в Unity, особенно с такими объектами, как сцены или префабы, которые не являются просто кодом.

У нас недавно была проблема, когда мы с коллегой работали над разными частями одной сцены. что привело к конфликтам, разветвлению и слиянию в изобилии.

В конце концов моя ревизия была отвергнута его изменениями.

Единственный способ, который я вижу в данный момент, - это то, что мы по очереди работаем над одними и теми же объектами, но это кажется не очень удобным, тем более что вся работа, которую мы сейчас выполняем, происходит в сценах.

Что люди обычно делают в этих ситуациях?

(Мы используем Mercurial, BitBucket и SourceTree.)

Каору
источник
1
Эмм. Не могли бы вы прокомментировать, почему меня опровергли менее чем через 5 минут после вопроса? Я не могу сделать вопрос лучше, если не знаю, что с ним не так.
Каору
2
Я тоже столкнулся с этим. Вы можете поместить сценарии без каких-либо проблем, но сцены и т. Д. Кажутся сложнее
Ewan
1
Являются ли эти файлы сцен текстовыми файлами, которые трудно объединить, или они являются двоичными файлами, которые более или менее невозможны? Если они являются двоичными файлами, Unity, кажется, предоставляет для этого инструменты слияния (и, возможно, diff?) .
Натан Купер
@ NatanCooper Насколько я могу судить, они бинарные. По крайней мере, они ведут себя как двоичные файлы, и открытие их в текстовом редакторе дает мне такую ​​же загрузку mumbo-jumbo, как и любой другой скомпилированный файл. Я не знал об умном слиянии. Спасибо!
Каору

Ответы:

6

Вы можете попробовать следующее решение, если вы используете GitHub.

  1. В единстве откройте Edit-> Project Settings -> Editor, затем в Инспекторе настроек проекта.
  2. Измените «Режим контроля версий» на «Видимые метафайлы».
  3. Измените «Режим сериализации активов» на «Принудительный текст».

Это прекрасно работает для меня.

KamikyIT
источник
3

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

Было бы здорово иметь лучшую поддержку diffи объединение двоичных файлов из соответствующих приложений, которые используют эти файлы. Например, Microsoft Word позволяет сравнивать два документа, и хотя это далеко не удобный инструмент для слияния, он все же лучше, чем ничего, и много раз экономил мне часы. К сожалению, функция слияния обычно либо отслеживается в программных продуктах, либо ее сложно реализовать (как вы визуализируете diffтрехмерную сцену?)

Когда дело доходит до двоичных файлов, вы получаете небольшую помощь от VCS. Они не только не могут эффективно хранить последовательные изменения, но и не могут помочь вам объединить изменения.

Два года назад я задал очень похожий вопрос, касающийся использования контроля версий в программном обеспечении для редактирования видео . Я считаю, что ответы, которые были даны на мой вопрос, частично применимы и здесь, единственное (но важное) отличие состоит в том, что мой вопрос касался больших файлов, в то время как в вашем случае двоичные файлы, вероятно, относительно малы.

Подход, который вы нашли, то есть «работа по очереди на одних и тех же объектах», является хорошим. Если вы не можете объединиться, не работайте параллельно над одним и тем же материалом. Если вы работаете в одном офисе, это может быть легко сделать. Если нет, большинство систем управления версиями ( включая используемую вами ; это также обсуждается здесь в контексте BitBucket) поддерживают блокировку , которая заключается в том, чтобы пользователь VCS через систему сообщал, что он работает с данным правом файла. сейчас же; другие пользователи могут загрузить последнюю версию файла, но они не должны ее менять.

Арсений Мурзенко
источник