¿Mejores prácticas para el control de versiones en Unity?

11

Estoy un poco confundido sobre cómo usar el control de versiones con Unity, especialmente con objetos como escenas o prefabricados que no son solo código.

Tuvimos un problema recientemente cuando mi colega y yo estábamos trabajando en diferentes partes de la misma escena. lo que resultó en conflictos, ramificación y fusión en abundancia.

Al final, mi revisión fue anulada por sus cambios de todos modos.

La única forma en que veo en este momento es que nos turnemos para trabajar en los mismos objetos, pero no parece muy conveniente, especialmente porque todo el trabajo que estamos haciendo actualmente está en escena.

¿Qué suelen hacer las personas en estas situaciones?

(Estamos utilizando Mercurial, BitBucket y SourceTree).

Kaworu
fuente
1
Erm. ¿Le gustaría comentar por qué me votaron menos de 5 minutos después de preguntar? No puedo mejorar la pregunta si no sé qué tiene de malo.
Kaworu
2
También me he encontrado con esto. Puede poner los guiones en ningún problema, pero las escenas, etc. parecen más difíciles
Ewan
1
¿Son estos archivos de escena archivos de texto que son difíciles de fusionar o son archivos binarios que son más o menos imposibles? Si son binarios, Unity parece proporcionar herramientas de fusión (¿y quizás diferencias?) Para eso .
Nathan Cooper
@NathanCooper Son binarios hasta donde puedo decir. Al menos se comportan como binarios, y abrirlos en un editor de texto me da la misma carga de mumbo-jumbo que cualquier otro archivo compilado. No sabía sobre Smart Merge. ¡Gracias!
Kaworu

Respuestas:

6

Puedes probar la siguiente solución si estás usando GitHub.

  1. En unidad, abra Edición-> Configuración del proyecto -> Editor, luego en Inspector de Configuración del proyecto.
  2. Cambie el "Modo de control de versiones" a "Meta archivos visibles".
  3. Cambie "Modo de serialización de activos" a "Forzar texto".

Esto funciona bien para mi.

KamikyIT
fuente
3

La mayoría de los sistemas de control de versiones (VCS) están diseñados para texto. Por lo general, tienen características muy potentes y convenientes para comparar ( diff) y fusionar el código fuente, y algunas herramientas pueden incluso combinar automáticamente los cambios (y hacer un trabajo decente al adivinar cómo se deben fusionar los cambios y en qué momento se debe solicitar al desarrollador que haga un fusión manual).

Sería genial tener un mejor soporte diffy fusión de archivos binarios de las respectivas aplicaciones que usan esos archivos. Microsoft Word, por ejemplo, permite comparar dos documentos, y aunque está lejos de ser una herramienta de fusión conveniente, sigue siendo mejor que nada y me ahorró horas en múltiples ocasiones. Desafortunadamente, la función de fusión generalmente se supervisa en productos de software o es difícil de implementar (¿cómo visualiza una diffescena 3D?)

Cuando se trata de archivos binarios, obtienes poca ayuda de VCS. No solo no pueden almacenar cambios sucesivos de manera eficiente, sino que tampoco pueden ayudarlo a fusionar los cambios.

Hace dos años, hice una pregunta muy similar sobre el uso del control de versiones en el software de edición de video . Creo que las respuestas que se dieron a mi pregunta se aplican parcialmente aquí también, la única (pero importante) diferencia es que mi pregunta se refería a archivos grandes, mientras que en su caso, los archivos binarios son probablemente relativamente pequeños.

El enfoque que encontró, que es "turnarse para trabajar en los mismos objetos", es el mejor. Si no puede fusionarse, no trabaje en paralelo en las mismas cosas. Si trabaja en la misma oficina, podría ser fácil de hacer. De lo contrario, la mayoría de los sistemas de control de versiones ( incluido el que usa ; también se trata aquí en un contexto de BitBucket) admiten el bloqueo , que consiste en que el usuario de un VCS diga, a través del sistema, que está trabajando en un archivo determinado ahora; otros usuarios pueden cargar la última versión del archivo, pero no se espera que lo cambien.

Arseni Mourzenko
fuente