このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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 つの変更点を解決しなければならないことも示されています。
残りの変更を解決するために、次の手順に従います。
ツリーのいずれかの行をクリックして相違点を調べます。マージ ツールは、たとえば、Simulink エディターや [コンフィギュレーション パラメーター] ダイアログ ボックスなどの、[3-way マージ] ウィンドウの右側のエディターに、各モデルの変更を表示します。
[マージ] タブの [強調表示] セクションで、[最上位モデル] または [最下位モデル] をクリックして表示するモデルを選択します。
自動マージの確認
マージ ツールは、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. 解決済みのモデル ファイルをソース管理にコミットする前に、現在のブランチに対してマージによる変更を比較して最終確認を行います。
プロジェクトの [ファイル] ビューでモデルを右クリックし、[比較]、[先祖と比較] を選択します。
参考
MATLAB を比較とマージに使用するための外部ソース管理のカスタマイズ