Unity incorpora una herramienta llamada UnityYAMLMerge que puede fusionar tanto archivos de escena como prefab en una manera semántica correcta. La herramienta se puede acceder desde la linea de comando y también está disponible a software de terceros de control de versiones.
En los Editor Settings (menú: Edit > Project Settings > Editor), usted tiene la opción de seleccionar una herramienta de terceros de control de versiones (Perforce o PlasticSCM, por ejemplo). Cuando una de estas herramientas está habilitada, usted verá un menú Smart Merge debajo del encabezado de Version Control. El menú tiene cuatro opciones:
La herramienta UnityYAMLMerge es lanzada con el editor de Unity; asumiendo que Unity está instalado en la ubicación estándar, la ruta a UnityYAMLMerge será:
C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
o
C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
…en Windows y
/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge
…en Mac OSX (utilice el comando Show Package Contents desde el Finder para acceder a esta carpeta).
UnityYAMLMerge es lanzado con un archivo fallback predeterminado (llamado mergespecfile.txt,también en la carpeta Tools) que específica cómo debería proceder con los conflictos sin resolver o archivos no conocidos. Esto también le permite a usted utilizarlo como la herramienta de fusión principal para sistemas de control de versiones (como lo es git) que no seleccionan automáticamente las herramientas smart merge basadas en las extensiones de los archivos. Las herramientas más comunes ya están listadas por defecto en mergespecfile.txt pero usted puede editar este archivo para agregar nuevas herramientas o cambiar opciones.
Usted puede ejecutar UnityYAMLMerge como la herramienta standalone desde la linea de comando (usted pude ver las instrucciones completas de uso al correrlo sin argumentos). Las instrucciones de configuración para los sistemas de control de versiones comunes se dan abajo:
.unity
.merge -p %b %1 %2 %r
Luego, siga el mismo procedimiento para agregar una extensión .prefab
.
Agregue el siguiente texto a su archivo .git
o .gitconfig
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
Agregue el siguiente texto a su archivo .hgrc
:
[merge-patterns]
**.unity = unityyamlmerge
**.prefab = unityyamlmerge
[merge-tools]
unityyamlmerge.executable = <path to UnityYAMLMerge>
unityyamlmerge.args = merge -p --force $base $other $local $output
unityyamlmerge.checkprompt = True
unityyamlmerge.premerge = False
unityyamlmerge.binary = False
Agregue lo siguiente a su archivo ~/.subversion/config
:
[helpers]
merge-tool-cmd = <path to UnityYAMLMerge>
.unity
en el campo de extensión. <path to UnityYAMLMerge> merge -p %base %theirs %mine %merged
Luego, siga el mismo procedimiento para agregar una extensión .prefab
.
.unity
. <path to UnityYAMLMerge> merge -p "@basefile" "@sourcefile" "@destinationfile" "@output"
Luego, siga el mismo procedimiento para agregar una extensión .prefab
.
merge -p $BASE $REMOTE $LOCAL $MERGED
en el campo de texto Arguments.