‹ SimDiff サポート

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 から削除されたのかを知る方法はありません。

Model 1 と Model 2 の表に、ブロック A、B1 と B2、C、D、E が並び、それぞれ Same または Different と示されています。

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

元のモデルの表に、ブロック A、B、C が一覧されています。

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

同じ Model 1 と Model 2 の表が、コンフリクト、Model 2 での削除、Model 2 での追加、Model 1 での追加としてマークされています。

Model 1 と Model 2 がどのように異なるかだけではなく、どの変更が追加で、どの変更が削除であったかが分かります。

バージョン管理システムは、正確な 3-way 差分とマージのツールが利用できることを前提としています。Simulink は独自形式であるため、バージョン管理システムに組み込まれた 3-way 差分とマージは、この形式に対応しません。自動車、航空宇宙、または防衛の会社で働いている場合、3-way 差分を計算し 3-way マージを支援する SimDiff を、すでに持っていることが多いです。持っていない場合は、SimDiff のトライアルをお申し込みください。

簡単な 3-way マージ

バージョン管理と連携せずに 3-way マージを行う方法

通常は、バージョン管理クライアントから SimDiff を起動します。バージョン管理の設定ガイドに、その方法が示されています。SimDiff 自体から 3-way マージを実行することもできます。

  1. SimDiff を開いてください。
  2. Merge モードを選択してください。
  3. 参照ボタンを使うか、ファイルを左、右、ベースのモデル欄へドラッグアンドドロップしてください。
  4. Start ボタンをクリックしてください。
Merge モードの SimDiff 起動ウィンドウで、左、右、ベースの aero_radmod モデルが選択され、マージ出力が左のモデルに設定されています。

SimDiff はモデルを比較し、両方のモデル階層を、差分を強調した状態で表示します。各差分には番号と色が付きます。既定では、SimDiff は変更に青、削除に赤、追加に緑を使います。

変更された要素をクリックすると、個々の属性差分が下部の Attributes ビューに表示されます。

変更された要素が選択された SimDiff の 3-way 比較で、その属性差分が Attributes ビューに一覧されています。

SimDiff には、差分をたどりやすくする複数の選択肢があります。

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

Expand all ボタンと選択されたルートシステムがあり、その下のサブシステムが折りたたまれて表示されている SimDiff のモデルツリーです。

大きいモデルをたどりやすくする選択肢もあります。ナビゲーションツールバーのボタンで、次または前の差分と、次または前のコンフリクトを探してください。

次と前の差分、および次と前のコンフリクトに対応する SimDiff のツールバーボタンです。

要素を検索することもできます。モデルツリーは、検索語に一致する要素に絞り込まれます。内側のナビゲーションボタンで、一致した要素を順に移動してください。

SimDiff の検索ボックスが、検索語に一致する要素へモデルツリーを絞り込んでいます。

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

3-way 比較で All Changes が選択された SimDiff のツールバーで、モデルツリーには差分だけが表示されています。

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

SimDiff が Simulink の横に並び、変更されたブロックがモデルエディタで強調表示されています。

差分のマージ

SimDiff には、差分をマージするための複数の選択肢があります。1 つの差分をマージする最も簡単な方法は、2 つのモデル階層の間にある中央の列のマージ操作アイコンをクリックすることです。

複数の変更を一度にマージするには、変更を選択し、ツールバーの Merge selected elements ボタンをクリックしてください。

SimDiff のツールバーに Merge selected elements があり、2 つのモデルツリーの間の列にマージ操作アイコンがあります。

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

hierarchy merge の後の SimDiff で、hierarchy merge のツールバーボタンと、まだマークされた残りのコンフリクトが表示されています。

コンフリクトの特定と解消

次または前のコンフリクトのツールバーボタンを使って、コンフリクトを順に移動してください。コンフリクトには、赤いマージ操作アイコンが表示されます。

右のモデルの変更を残すには、マージ操作ボタンをクリックしてください。そうしない場合は、左のモデルの変更が残ります。

ご質問、または修正のご希望はありますか?

どのようなご用件ですか?