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もいるのか?なんかよくわからない