Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

Simulink 3-way マージを使用した競合の解決

この例では、Simulink® 3-way マージ ツールを使用して Simulink モデル内の競合を解決する方法を示します。結果ファイル内の Simulink モデルの相違点を表示およびマージできます。

この例の手順を視覚的に確認するには、ビデオをご覧ください。

Simulink モデルの変更と競合

プロジェクトは Git™ ソース管理下に置かれます。同僚によるメイン Git のブランチへの変更を TaskBranch にマージしようとすると、その操作により競合が生じます。

3-way マージ ツールを使用して競合を解決するために、ローカル ファイル ("Mine")、競合するリビジョン ("Theirs")、およびこれらの 2 つのファイルの共通の先祖 ("Base") を調べます。

  • Theirs - 同僚によって、pilot model サブシステムでパイロットの入力コマンドの振幅に明示的な "Gain" ブロックを使用するように更新されました。同僚によって [シミュレーション終了時間] パラメーターも更新されました。

  • Mine - pilot model サブシステムのコンフィギュレーション設定を一部変更しました。

マージ ツールは、3-way マージ レポートを開く前に、競合のない相違点を自動的にマージします。以下の手順に従い、自動マージの選択を確認し、必要な編集を適用し、残りの相違点を解決する方法を指定します。競合を解決した後、解決したモデルをソース管理にコミットします。

Simulink 3-way マージを開く

プロジェクトの [ファイル] ビューで、競合のあるファイルを探します。slproject_f14 ファイルでは [Git] 列に赤色の警告アイコン が表示されますが、これは競合を示します。

競合の詳細レポートを表示するには、slproject_f14 ファイルを右クリックして [競合を表示] をクリックします。

変更点の表示

3-way マージ ツールは、このファイル競合を発生させる 2 つの Simulink 設計の変更点を示します。

  • [Theirs][Base][Mine] の各ツリーは、競合するリビジョン、ユーザーのリビジョン、およびこれらのベースとなる先祖ファイルの差分を示します。

  • [ターゲット] ツリーは、変更をマージするファイルを示します。マージ結果を確定すると、ツールはこの一時ファイルをプロジェクトにコピーします。

  • 右下隅にある概要テーブルでは、マージ ツールが競合のない 4 つの相違点を自動的に解決したことが示されています。このテーブルには、残りの 2 つの変更点を解決しなければならないことも示されています。

残りの変更を解決するために、次の手順に従います。

  1. ツリーのいずれかの行をクリックして相違点を調べます。マージ ツールは、たとえば、Simulink エディターや [コンフィギュレーション パラメーター] ダイアログ ボックスなどの、[3-way マージ] ウィンドウの右側のエディターに、各モデルの変更を表示します。

  2. [マージ] タブの [強調表示] セクションで、[最上位モデル] または [最下位モデル] をクリックして表示するモデルを選択します。

自動マージの確認

マージ ツールは、3-way マージ レポートを開く前に、ほとんどの競合のない相違点を自動的にマージします。

PilotGain 行をクリックして [Theirs] ツリー上部で最初の変更を調べます。この行はマージ ツールで自動的にマージされています。[ターゲット] ツリーにある ボタンを使用して自動選択項目を調整できます。すべての自動マージ選択項目を確認して調整できます。

競合の解決

アクションを必要とする相違点のタイプは 2 つあります。

  • 競合 - これらの相違点は、マージ ツールで自動的には解決できません。ターゲット ファイルで保持する設計を選択する必要があります。[ターゲット] ペインで競合列 の警告アイコン により、これらの相違点が示されます。

  • 手動マージ - 一部の相違点では、Simulink で手動で変更を行う必要があります。[ターゲット] ペインで競合列 の鉛筆アイコン により、これらの相違点が示されます。

競合を解決するには、次の手順に従います。

1. [次へ] ボタンを使用して最初の競合に移動します。

StickCommand_rad の相違点は手動でマージする必要があり、競合列 の鉛筆アイコン で示されます。

2. targetFile のラインの相違点を解決するには、Simulink エディターで Pilot ブロックの出力に接続されたラインの名前を StickCommand_rad から Pilot Output に変更します。

相違点を解決してから、Simulink エディターで変更を保存し、手動マージ メニュー を使用して解決された変更をマークします。

Simulink エディターで変更を行っても、行った変更はマージ レポートにすぐには反映されません。

3. ツールストリップの [次へ] をクリックして、次の競合を確認します。自分と同僚が変更したため、StopTime パラメーターが競合しています。Mine の変更を使用して競合を解決します。[ターゲット] ペインの Mine 列 で、Stop time の横にある ボタンを選択します。

4. 概要テーブルを調べて、すべての競合が解決されたことを確認します。

この例では、すべての競合が正常に解決されたことが概要テーブルに示されています。

現在のビューですべての競合を解決したのにもかかわらず、概要テーブルのタイトルが [残り x 件の変更を解決] となっている場合は、フィルターを無効にして、残りの競合を表示して解決します。[マージ] タブの [フィルター] セクションで、フィルターをオフにします。

変更を確定する

1. すべてのフィルター処理された変更とフィルター処理されていない変更を解決したら、[確定して閉じます] をクリックします。マージ ツールはレポートおよびモデルを閉じ、targetFile のマージ結果を確定し、ソース管理ツールでその競合を解決済みとしてマークします。

2. 解決済みのモデル ファイルをソース管理にコミットする前に、現在のブランチに対してマージによる変更を比較して最終確認を行います。

プロジェクトの [ファイル] ビューでモデルを右クリックし、[比較]、[先祖と比較] を選択します。

参考

Simulink モデルの比較

プロジェクトのソース管理

競合の解決

リビジョンの比較

MATLAB を比較とマージに使用するための外部ソース管理のカスタマイズ

関連する例

Simulink モデルの比較とマージ

Stateflow を含む Simulink モデルの比較とマージ