Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
14
Help us understand the problem. What is going on with this article?
@Shaula

UnityYamlMerge

More than 5 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"
  • 参考
14
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  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
Shaula

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
14
Help us understand the problem. What is going on with this article?