メインコンテンツ

Simulink 3-way マージを使用したプロジェクト内の競合の解決

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

Simulink モデルの変更と競合

[コマンドのコピー] ボタンを使用して、競合を含むサンプル プロジェクトをダウンロードします。サンプル プロジェクトは Git™ ソース管理下に置かれます。同僚による main Git のブランチへの変更を taskBranch にマージしようとすると、その操作により競合が生じます。

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

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

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

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

Simulink 3-way マージを開く

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

競合の詳細レポートを表示するには、slproject_f14 ファイルを右クリックして [ソース管理]、[競合を表示] をクリックします。あるいは、[ソース管理] パネルの [変更済みファイル] セクションで slproject_f14 ファイルを右クリックし、[競合を表示] を選択します。

ソース管理下でプロジェクトを操作しやすくするために、[プロジェクト] パネルと [ソース管理] パネルをグループ化します。これを行うには、いずれかのパネル アイコンをもう一方のパネル アイコンの横にドラッグします。[ソース管理] アイコンがサイドバーにない場合は、[パネルをさらに開く] ボタン Open more panels icon をクリックして追加します。

The MATLAB desktop shows the Project and Source Control panel with the project open on the left, the Project toolstrip on top, the Command Window in the middle, and the Project Issues panel on the right. The Source Control panel shows one conflicted file with a context menu. The mouse pointer points to the View Conflicts option.

変更点の表示

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

Three-Way Merge tool show a toolstrip on top, three panes (main, base, and taskBranch) in the middle, and the Target pane and the summary table on the bottom.

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

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

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

モデル ファイルの個々の相違点を視覚的に調べることができます。

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

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

自動マージの確認

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

すべての自動マージ選択項目を確認して調整できます。たとえば、PilotGain 行をクリックして最初の変更を調べます。この行は、マージ ツールにより、同僚が main ブランチで行った変更が取得されて自動的にマージされています。[ターゲット] ツリーにあるオプション ボタン を使用して自動選択項目を調整できます。taskBranch からの変更を取得すると、同僚が追加した PilotGain ブロックが削除されます。

The model on the main branch with the PilotGain block highlighted on top and the targetFile with no PilotGain block below.

競合の解決

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

1. [次へ] ボタンを使用して競合に移動します。自分と同僚が変更したため、StopTime パラメーターが競合しています。[ターゲット] ペインでは、既定では、ツールはブランチ taskBranch taskBranch icon からの変更を選択します。

2. 既定の選択を使用して競合を解決するには、競合を解決済みとしてマークします。[ターゲット] ペインで、[StopTime] 行の競合アイコン Conflict icon をクリックし、[解決済みとしてマーク] をクリックします。あるいは、[StopTime] 行を右クリックして、[解決済みとしてマーク] を選択します。

代わりに main ブランチからの変更を保持する場合は、main ブランチの main branch icon 列のオプション ボタン を選択します。選択すると、ツールにより、自動的に項目が解決済みとしてマークされ、行の色が更新されます。

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

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

Summary table shows that all changes have been resolved.

ヒント:

  • 現在のビューですべての競合を解決したのにもかかわらず、概要テーブルのタイトルが [x 件の未解決の変更のうち、y 件にフィルターが適用されています] となっている場合は、フィルターを無効にして、残りの競合を表示して解決する必要があります。適用されているすべてのフィルターをクリアするには、[表示の変更] の横にあるフィルターをクリックします。

Visible changes section shows two filters. The mouse pointer points to one of the filters.

  • 対応する必要がある未解決の変更間を移動するには、[次へ] ボタンおよび [前へ] ボタンを使用します。

  • 解決が必要な項目ごとに、ツールでは問題の解決に役立つヒントが示されます。[ターゲット] ペインの行の横に表示されているアイコンをクリックします。

Warning icon and a popout with a tip and a Mark as Resolved button.

変更を確定する

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

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

[プロジェクト] パネルでモデルを右クリックし、[ソース管理]、[変更を表示] を選択します。

ヒント:

[確定して閉じる] をクリックすると、解決する必要がある競合がまだある場合は、ツールによってプロンプトが表示されます。[続行] をクリックすると、ツールは "Mine" の変更 (この例では "taskBranch") を選択し、未解決の競合をすべて解決します。

Save Result dialog box with Continue and Cancel buttons.

参考

ツール

トピック