孙广东 2015.6.14
在UNity5.x之前的版本, 我们用文本编辑器如 sublime text 打开.unity .prefab时是可以看到 yaml格式的文本内容, 但是在 UNity5.x 当在察看.unity .prefab文件时已经变成二进制的文件了。
先来看看Unity为我们提供的内部工具:Smart Merge(智能合并)
Unity采用了一种称为UnityYAMLMerge的东西,可以在语义正确的情况下合并场景和预制文件的一个工具。该工具可以从命令行中访问,另外还提供给第三方版本控制软件接口。
在编辑器设置(菜单: ),您可以选择一个第三方版本控制工具 (例如Perforce 或 PlasticSCM)。当启用这些工具之一,您将看到Smart Merge(智能合并)版本控制标题下的菜单。菜单有四个选项:
Unity 编辑器附带UnityYAMLMerge 工具 ;假设Unity装在标准的位置,将会看到 UnityYAMLMerge 的路径:
C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
or
C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
......有 Windows 和
/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge
......有 Mac OSX (使用从 Finder显示包内容命令,以访问此文件夹)。
UnityYAMLMerge 附带一个默认回退的文件 (在Tools 文件夹中也称为 mergespecfile.txt),它指定应如何处理未解决的冲突或未知的文件。这还允许您使用它作为版本控制系统 (如 git)的主要的合并工具,没有自动选择合并工具基于文件扩展名,在 mergespecfile.txt 中已经列出最常用的工具,但您可以编辑此文件以添加新的工具或更改选项。
您可以从命令行 (您可以看到完整的使用说明通过运行不带任何参数) 运行 UnityYAMLMerge 作为一个独立的工具。常见的版本控制系统的设置说明如下。
.unity
.然后,按照同样的程序,以添加.prefab
扩展名。
将以下文本添加到您的.git
或.gitconfig
文件中:
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = ‘<path to UnityYAMLMerge>‘ merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
下面的文本添加到.hgrc
文件中:
[merge-patterns]
**.unity = unityyamlmerge
**.prefab = unityyamlmerge
[merge-tools]
unityyamlmerge.executable = <path to UnityYAMLMerge>
unityyamlmerge.args = merge -p $base $other $local $output
unityyamlmerge.checkprompt = True
unityyamlmerge.premerge = False
unityyamlmerge.binary = False
您的~/.subversion/config
文件中添加以下内容:
[helpers]
merge-tool-cmd = <path to UnityYAMLMerge>
.unity
。 <path to UnityYAMLMerge> merge -p %base %theirs %mine %merged
然后,按照同样的程序,以添加.prefab
扩展名。
.unity
扩展名。 <path to UnityYAMLMerge> merge -p “@basefile” “@sourcefile” “@destinationfile” “@output”
然后,按照同样的程序,以添加.prefab
扩展名。
merge -p $BASE $REMOTE $LOCAL $MERGED
在Arguments 文本字段中。接下来我们就来看看 UNity 做的快速和高效的 yaml 合并:
感兴趣的读一读这篇文章:
http://blogs.unity3d.com/2015/06/02/how-we-do-fast-and-efficient-yaml-merging/
最后呢给大家介绍一个Unity的插件: UniMerge
关于他的文档在这里,大家可以看一看:http://wiki.unity3d.com/index.php/UniMerge
特别是冲突窗口的合并功能 也是挺好的。
原文地址:http://blog.csdn.net/u010019717/article/details/46489715