トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

unityでシーンの差分を見たい&UnityYamlMergeとSmartMarge

gitで管理している時、Unityのシーンの差分が分からない。

コンフリクト起こしたとき困っちゃう

差分を見れるアセット

有料 

15ドル

assetstore.unity.com

15ドル

assetstore.unity.com

SceneDiff

無料。だけどUnity4で作られている・・・時代は2020東京オリンピックなのに

assetstore.unity.com

入れた。Window>SceneDiffでウィンドウが開く

f:id:bibinbaleo:20200626132507p:plain

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)

f:id:bibinbaleo:20200626132349p:plain

WinMargeを入れてもエラーが出たが、よく見るとWinMargeU.exeだった。

https://sourceforge.net/projects/winmerge/files/stable/2.16.4/

SceneDiffの下のほうのパスにUを足したらいい。

f:id:bibinbaleo:20200626133709p:plain

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

f:id:bibinbaleo:20200626134821p:plain
でもシーンの比較はできないっぽい?オブジェクトの比較はできる。

同じシーンのLocal、Latestとかはある。

f:id:bibinbaleo:20200626135644p:plain

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

f:id:bibinbaleo:20200626134818p:plain

SmartMarge/UnityYamlMerge

Unityに組み込まれているシーンマージツール

docs.unity3d.com

シーンのコンフリクトしたときに解決してくれるもの。差分を細かく見ていい感じにしてくれるのかな?

qiita.com

UnityYamlMergeとSmartMargeの名前の関係が分からないけど、同じものをさしている。UnityYamlMergeがexeとかツール名なのは分かる。

 

パスはここ

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

 

UnityのEdit>Projectsettings>EditorにSmartMargeの設定があるって書いてあるが、見当たらない。設定しなくていいのかな

f:id:bibinbaleo:20200626105823p:plain

SourceTreeで使う

コマンドラインやSourceTreeなどでも使えるって

  • Tools > Options > Diff に移動します。
  • Custom in the Merge Tool のドロップダウンで Custom を選択します。
  • Merge Command テキストフ​​ィールドに UnityYAMLMerge へのパスを入力します。
  • Arguments テキストフ​​ィールドに merge -p $BASE $REMOTE $LOCAL $MERGED と入力します。

今WinMargeを設定してたけど、使ってないし書き換えていいかな

これでいいのか?

f:id:bibinbaleo:20200626111846p:plain

パス違うかな。

エディタのバージョンごとに変えないといけないのかな?

ここにもある

"D:\Unity\2018.4.18f1\Editor\Data\Tools\UnityYAMLMerge.exe"

am1tanaka.hatenablog.com

SourceTreeだとやはり一つのマージツールしか使えない。リポジトリごとに分けれない?

onceduck.hatenablog.com

動作

マージ

Cube一個のシーンを作る

developとfeature(test)を作る。

developにはSphereを追加、featureにはCubeを追加。

f:id:bibinbaleo:20200626115412p:plain f:id:bibinbaleo:20200626115310p:plain

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

f:id:bibinbaleo:20200626115307p:plain

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

f:id:bibinbaleo:20200626115304p:plain

 えっ!これがSmartMargeの成果だよね・・・前はコンフリクトしてたよね・・?

 競合

ということで次は同じパラメーターをいじって競合を起こす。

developはCubeのScaleYを2m、featureは0.5mにした。

そしてマージ。競合発生

外部のマージツールを起動

f:id:bibinbaleo:20200626115806p:plain

f:id:bibinbaleo:20200626115848p:plain

えらー!

f:id:bibinbaleo:20200626115846p:plain

mergespecfile.txtに何かしないといけないのか

ローカルにautoファイルを作るの?auto.textなのか.autoなのか何もわからない。

P4margeもいるのか?なんかよくわからない

labs.gree.jp

qiita.com

tsubakit1.hateblo.jp