Simulink モデルの 3-way 差分とマージ: 手順を追ったガイド
3-way の比較は共通の祖先を使うため、マージする前に、SimDiff は追加と削除を区別できます。
複数の人がバージョン管理システムで同じ Simulink モデルを変更する場合、3-way の比較とマージのツールが重要です。
バージョン管理に 3-way の比較が必要な理由
チームでは、複数の人が同じモデルを変更することがよくあります。3-way の比較は、変更されたモデルの 2 つのバージョンを共通の祖先と比較することで、コンフリクトを解消します。
2 つの Simulink モデルを比較する方法をご覧下さい。または、3-way の比較について、このまま続けてください。
3-way 差分は、モデルがどのように異なるかだけではなく、モデルがどのように変更されたかを示すため、2-way 差分より正確です。2 つのバージョンが、共通の祖先を変更して作られたとします。2-way 差分で分かるのは、2 つの要素が同じか異なるかだけです。下の表では、元のモデルがなければ、D が Model 2 に追加されたのか、Model 1 から削除されたのかを知る方法はありません。

ここで、元のモデルである共通の祖先には、ブロック A、B、C だけが含まれていたとします。

3-way 差分は、比較する 2 つのモデルとともに元のモデルを調べ、モデルがどのように変更されたかを示せます。

Model 1 と Model 2 がどのように異なるかだけではなく、どの変更が追加で、どの変更が削除であったかが分かります。
バージョン管理システムは、正確な 3-way 差分とマージのツールが利用できることを前提としています。Simulink は独自形式であるため、バージョン管理システムに組み込まれた 3-way 差分とマージは、この形式に対応しません。自動車、航空宇宙、または防衛の会社で働いている場合、3-way 差分を計算し 3-way マージを支援する SimDiff を、すでに持っていることが多いです。持っていない場合は、SimDiff のトライアルをお申し込みください。
簡単な 3-way マージ
バージョン管理と連携せずに 3-way マージを行う方法
通常は、バージョン管理クライアントから SimDiff を起動します。バージョン管理の設定ガイドに、その方法が示されています。SimDiff 自体から 3-way マージを実行することもできます。
- SimDiff を開いてください。
- Merge モードを選択してください。
- 参照ボタンを使うか、ファイルを左、右、ベースのモデル欄へドラッグアンドドロップしてください。
- Start ボタンをクリックしてください。

SimDiff はモデルを比較し、両方のモデル階層を、差分を強調した状態で表示します。各差分には番号と色が付きます。既定では、SimDiff は変更に青、削除に赤、追加に緑を使います。
変更された要素をクリックすると、個々の属性差分が下部の Attributes ビューに表示されます。

SimDiff には、差分をたどりやすくする複数の選択肢があります。
既定では、最上位のサブシステムは折りたたまれて表示されます。最上位のシステムを選択し、Expand-all ボタンを使って、その下のすべてのサブシステムを展開してください。その後、モデルをスクロールしてください。小さいモデルでは、これが役立つことがあります。

大きいモデルをたどりやすくする選択肢もあります。ナビゲーションツールバーのボタンで、次または前の差分と、次または前のコンフリクトを探してください。
要素を検索することもできます。モデルツリーは、検索語に一致する要素に絞り込まれます。内側のナビゲーションボタンで、一致した要素を順に移動してください。

既定では、SimDiff は変更されていない要素を含むモデル全体を表示します。All Changes ボタンをクリックすると、差分だけの表示に切り替わります。3-way の比較の後は、左のモデルまたは右のモデルの変更に、表示を絞り込むこともできます。

SimDiff は Simulink Editor と連携します。モデルの変更を、グラフィカルな文脈の中で並べて見ることができます。SimDiff のツリービューで任意の要素をダブルクリックすると、Simulink がその要素を探して強調表示します。

差分のマージ
SimDiff には、差分をマージするための複数の選択肢があります。1 つの差分をマージする最も簡単な方法は、2 つのモデル階層の間にある中央の列のマージ操作アイコンをクリックすることです。
複数の変更を一度にマージするには、変更を選択し、ツールバーの Merge selected elements ボタンをクリックしてください。

サブシステムなどの任意のコンテナノードを選択し、ツールバーの hierarchy merge ボタンをクリックすることもできます。hierarchy merge は、その下にある差分のうち、ユーザーの入力を必要としないものをすべて自動的にマージします。hierarchy merge の後は、コンフリクトと Stateflow の変更を確認してください。レイアウトは Stateflow のシミュレーション動作に影響することがあるため、それらの変更には追加の注意が必要です。

コンフリクトの特定と解消
次または前のコンフリクトのツールバーボタンを使って、コンフリクトを順に移動してください。コンフリクトには、赤いマージ操作アイコンが表示されます。
右のモデルの変更を残すには、マージ操作ボタンをクリックしてください。そうしない場合は、左のモデルの変更が残ります。
ご質問、または修正のご希望はありますか?
ありがとうございます。
このページについての内容を受け取りました。
