gitで管理している時、Unityのシーンの差分が分からない。
コンフリクト起こしたとき困っちゃう
差分を見れるアセット
有料
15ドル
15ドル
SceneDiff
無料。だけどUnity4で作られている・・・時代は2020東京オリンピックなのに
入れた。Window>SceneDiffでウィンドウが開く

Diffを押したらWinMargeを入れよと出た。
SceneDiff: Failed to find diff-utility 'C:\Program Files (x86)\WinMerge\WinMerge.exe'. Please install some diff-tool (for example WinMerge is free and works great)

WinMargeを入れてもエラーが出たが、よく見るとWinMargeU.exeだった。
https://sourceforge.net/projects/winmerge/files/stable/2.16.4/
SceneDiffの下のほうのパスにUを足したらいい。

これでDiffを押したらWinMargeが立ち上がる。

でもシーンの比較はできないっぽい?オブジェクトの比較はできる。
同じシーンのLocal、Latestとかはある。

でもDiff押しても比較ボタン押せない

SmartMarge/UnityYamlMerge
Unityに組み込まれているシーンマージツール
シーンのコンフリクトしたときに解決してくれるもの。差分を細かく見ていい感じにしてくれるのかな?
UnityYamlMergeとSmartMargeの名前の関係が分からないけど、同じものをさしている。UnityYamlMergeがexeとかツール名なのは分かる。
パスはここ
"C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe"
UnityのEdit>Projectsettings>EditorにSmartMargeの設定があるって書いてあるが、見当たらない。設定しなくていいのかな

SourceTreeで使う
コマンドラインやSourceTreeなどでも使えるって
- Tools > Options > Diff に移動します。
- Custom in the Merge Tool のドロップダウンで Custom を選択します。
- Merge Command テキストフィールドに UnityYAMLMerge へのパスを入力します。
- Arguments テキストフィールドに
merge -p $BASE $REMOTE $LOCAL $MERGEDと入力します。
今WinMargeを設定してたけど、使ってないし書き換えていいかな
これでいいのか?

パス違うかな。
エディタのバージョンごとに変えないといけないのかな?
ここにもある
"D:\Unity\2018.4.18f1\Editor\Data\Tools\UnityYAMLMerge.exe"
SourceTreeだとやはり一つのマージツールしか使えない。リポジトリごとに分けれない?
動作
マージ
Cube一個のシーンを作る
developとfeature(test)を作る。
developにはSphereを追加、featureにはCubeを追加。

そしてfeatureをdevelopにマージすると・・・

おおー。何も言われずにいい感じになった。

えっ!これがSmartMargeの成果だよね・・・前はコンフリクトしてたよね・・?
競合
ということで次は同じパラメーターをいじって競合を起こす。
developはCubeのScaleYを2m、featureは0.5mにした。
そしてマージ。競合発生
外部のマージツールを起動


えらー!

mergespecfile.txtに何かしないといけないのか
ローカルにautoファイルを作るの?auto.textなのか.autoなのか何もわからない。
P4margeもいるのか?なんかよくわからない