Unity 内部集成的版本合并工具,可用于第三方版本管理工具解决 Scene 和 Prefab 冲突问题
本文译自官方手册
前提
使用第三方版本管理工具需先将 Unity 的
-
Edit > Project Settings > Version Control 选项改为
Visible Meta Files
-
Edit > Project Settings > Asset Serialization 选项改为
Force Text
该操作是将 Unity Asset 文件的内容由二进制格式改为 yaml 文本格式,以便于版本管理识别
工具位置
Windows下,Unity 安装目录下
C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
or
C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
Mac OSX,右键显示包内容
/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge
使用方法
P4V
- 配置 > 合并(Preference > Merge)
- 选择其他应用 (Other application)
- 点击添加(Add) 按钮
- 在扩展区选择
.unity
- 在应用栏(Application)输入
UnityYAMLMerge
路径 - 在参数栏(Arguments)输入
merge -p %b %1 %2 %r
- 点击保存(Save)
Git
配置 Git,添加以下内容到.git
或.gitconfig
文件
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
Mercurial
添加以下内容到.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
SVN
添加以下内容到~/.subversion/config
[helpers]
merge-tool-cmd = <path to UnityYAMLMerge>
TortoiseGit
-
打开 配置 > 差异查看器 > 合并工具 点击高级 (Preferences > Diff Viewer > Merge Tool 点击 Advance)
-
在扩展名下拉栏选择
.unity
-
在扩展程序区输入
<path to UnityYAMLMerge> merge -p %base %theirs %mine %merged
PlasticSCM
-
配置 > 合并工具 点击添加按钮 (Preferences > Merge Tool 点击 Add)
-
选择外部(External)合并工具
-
选择使用下方路径文件(Use with files that match the following pattern)
-
添加
.unity
后缀 -
输入指令
<path to UnityYAMLMerge> merge -p "@basefile" "@sourcefile" "@destinationfile" "@output"
SourceTree
- 工具 > 选项 > 差异(Tools > Options > Diff)
- 合并工具下拉栏选择自定义 (Custom)
- 在合并指令栏(Merge Command)输入UnityYAMLMerge的路径
- 在参数栏(Arguments)输入
merge -p $BASE $REMOTE $LOCAL $MERGED