Help us understand the problem. What is going on with this article?

UnityYamlMerge

More than 3 years have passed since last update.

UnityYamlMergeの設定

導入

設定方法

  • 以下のページなどを参考にしつつ各種VCSツールに設定する。

    • Unity - Manual: Smart Merge
    • gitの場合は .git/config や ${HOME}/.gitconfig に以下の設定をする。
      (UnityYAMLMergeへのパスは適時設定してください)

      [merge]
          tool = unityyamlmerge
      [mergetool "unityyamlmerge"]
          trustExitCode = false
          cmd = "/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge" merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
      
  • マージしきれなかった場合のfallbackツールを設定する。

    • レポジトリルートディレクトリに "auto" という名前のファイルを配置
    • UnityYAMLMergeと同じディレクトリにあるmergespecfile.txtというファイル に設定例が記載されています。
    • 行頭の*はファイルタイプ指定(未検証)なので省略不可
    • UnityYamlMergeのオプションの--fallbackで指定することも可能?(未調査)

      • e.g. echo '* use "/Applications/p4merge.app/Contents/MacOS/p4merge" "%b" "%l" "%r" "%d"' > auto

        置き換え前のマーカー 内容 意訳
        %l is replaced with the path of you local version ローカルバージョン(--ours)
        %r is replaced with the path of the incoming remote version マージ対象のバージョン(--theirs)
        %b is replaced with the common base version マージ対象のベースバージョン
        %d is replaced with a path where the result should be written to コンフリクト発生中のファイル(?) 編集対象

使用方法

  • マージ作業などでコンフリクトを発生させます。
    both modified: Assets/TestScene.unity
  • コンフリクト解消のためにUnityYAMLMergeを起動させます。
    git mergetool
  • コンフリクトが解消できた場合は以下の表示が出るので、そのままyを押下します。
Normal merge conflict for 'Assets/TestScene.unity':
  {local}: modified file
  {remote}: modified file
Conflicts:
Conflict handling:
Assets/cube.unity seems unchanged.
Was the merge successful? [y/n] 
  • コンフリクトを解消できなかった場合は、autoファイルで指定されているマージツールが起動するのでマージを解消します。
    • この際は上記の[y/n]の確認は表示されません。
    • ただし、マージツールがエラーコードで終了した場合は確認されます。

vimdiffの場合の設定(書きかけ)

  • コンフリクト解消が難しい場合
    • :cq でエラーコード終了させましょう。
    • :q でそのまま終了してしまうと、マージ成功として処理されてしまいます。
  • autoの内容
    • 編集対象のファイルが空のままで表示される
      * use "/usr/local/bin/vimdiff" -c "wincmd J" "%d" "%l" "%b" "%r"
  • 参考
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away