Unity3D版本控制 UnityYAMLMerge合并scene和prefab文件

Unity3D版本控制 UnityYAMLMerge合并scene和prefab文件

https://blog.csdn.net/jueane/article/details/78915130

Smart Merge

Unity incorporates a tool called UnityYAMLMerge that can merge scene and prefab files in a semantically correct way. The tool can be accessed from the command line and is also available to third party version control software.

Setting Up Smart Merging in Unity

In the Editor Settings (menu: Edit > Project Settings > Editor), you have the option to select a third party version control tool (Perforce or PlasticSCM, for example). When one of these tools is enabled, you will see a Smart Merge menu under the Version Control heading. The menu has four options:

  • Off: use only the default merge tool set in the preferences with no smart merging.
  • Premerge: enable smart merging, accept clean merges. Unclean merges will create premerged versions of base, theirs and mine versions of the file. Then, use these with the default merge tool.
  • Ask: enable smart merging but when a conflict occurs, show a dialog to let the user resolve it (this is the default setting).

Setting up UnityYAMLMerge for Use with Third Party Tools

The UnityYAMLMerge tool is shipped with the Unity editor; assuming Unity is installed in the standard location, the path to UnityYAMLMerge will be:

 
  1. C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

  2.  
  3. or

  4.  
  5. C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

  6.  

…on Windows and

 
  1. /Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge

  2.  

…on Mac OSX (use the Show Package Contents command from the Finder to access this folder).

UnityYAMLMerge is shipped with a default fallback file (called mergespecfile.txt, also in the Tools folder) that specifies how it should proceed with unresolved conflicts or unknown files. This also allows you to use it as the main merge tool for version control systems (such as git) that don’t automatically select merge tools based on file extensions. The most common tools are already listed by default in mergespecfile.txt but you can edit this file to add new tools or change options.

You can run UnityYAMLMerge as a standalone tool from the command line (you can see full usage instructions by running it without any arguments). Set-up instructions for common version control systems are given below.

P4V

  • Go to Preferences > Merge.
  • Select Other application.
  • Click the Add button.
  • In the extension field, type .unity.
  • In the Application field, type the path to the UnityYAMLMerge tool (see above).
  • In the Arguments field, type merge -p %b %1 %2 %r
  • Click Save.

Then, follow the same procedure to add the .prefab extension.

Git

Add the following text to your .git or .gitconfig file:

 
  1. [merge]

  2. tool = unityyamlmerge

  3.  
  4. [mergetool "unityyamlmerge"]

  5. trustExitCode = false

  6. cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"

  7.  

Mercurial

Add the following text to your .hgrc file:

 
  1. [merge-patterns]

  2. **.unity = unityyamlmerge

  3. **.prefab = unityyamlmerge

  4.  
  5. [merge-tools]

  6. unityyamlmerge.executable = <path to UnityYAMLMerge>

  7. unityyamlmerge.args = merge -p --force $base $other $local $output

  8. unityyamlmerge.checkprompt = True

  9. unityyamlmerge.premerge = False

  10. unityyamlmerge.binary = False

  11.  

SVN

Add the following to your ~/.subversion/config file:

 
  1. [helpers]

  2. merge-tool-cmd = <path to UnityYAMLMerge>

  3.  

TortoiseGit

  • Go to Preferences > Diff Viewer > Merge Tool and click the Advanced button.
  • In the popup, type .unity in the extension field.
  • In the External Program field type:
 
  1. <path to UnityYAMLMerge> merge -p %base %theirs %mine %merged

  2.  

Then, follow the same procedure to add the .prefab extension.

PlasticSCM

  • Go to Preferences > Merge Tools and click the Add button.
  • Select External merge tool.
  • Select Use with files that match the following pattern.
  • Add the .unity extension.
  • Enter the command:
 
  1. <path to UnityYAMLMerge> merge -p "@basefile" "@sourcefile" "@destinationfile" "@output"

  2.  

Then, follow the same procedure to add the .prefab extension.

SourceTree

  • Go to Tools > Options > Diff.
  • Select Custom in the Merge Tool dropdown.
  • Type the path to UnityYAMLMerge in the Merge Command text field.
  • Type merge -p $BASE $REMOTE $LOCAL $MERGED in the Arguments text field.

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值