ユースケース開発SlateSlate アプリケーションの管理アプリケーション変更のマージ

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

アプリケーションの変更をマージする

複数の共同作業者が同じ Slate アプリケーションで作業する場合、バージョン管理を維持するために変更をマージする必要が生じることがあります。2人以上のユーザーが同じバージョンのアプリケーションを同時に編集し始め、それぞれが変更を保存しようとすると、バージョン管理が必要になります。2回目の保存は、最初の保存によって古くなったバージョンに基づいているため、通常の方法では、いずれかのユーザーの変更を失わずにアプリケーションを保存できません。この状況を解決するには、2人目のユーザーが次の選択肢から選ぶ必要があります。

  • 自分の変更を破棄する。
  • 最初のユーザーの変更を上書きする。
  • 別の名前でアプリケーションを保存する。
  • 自分の変更を最初のユーザーの変更とマージする。

次のセクションでは、マージの手順を説明します。

マージ競合

マージ競合は、複数のユーザーが同じ要素を変更または削除したときに発生します。たとえば、あるユーザーがウィジェットを削除し、別のユーザーがそのウィジェットを変更すると、競合が発生します。また、両方のユーザーが同じクエリを変更した場合にも競合が発生します。

本来はマージできるウィジェットでも、ID が衝突すると競合が発生し、ユーザーはいずれかのバージョンを選ぶ必要があります。この競合は、アプリケーション開発者が意味のあるウィジェット名を付けるというベストプラクティスに従わず、デフォルトのウィジェット名を使用している場合に発生しやすくなります。

競合がない場合

保存時に競合が検出されない場合、Slate はアプリケーションの JSON を自動的にマージし、マージされたアプリケーションのプレビューを表示します。変更内容に問題がなければ、承認して保存を選択します。修正が必要な場合は、変更を加えるを選択して JSON を表示し、編集します。

競合がある変更をマージする

保存時にマージ競合が検出されると、変更内容の JSON 表示が開きます。マージ表示では、別のユーザーによる変更、マージ結果、自分の変更が3つの独立したペインに表示されます。マージ競合が特定されると、Slate はその要素内の変更をマージしようとはせず、デフォルトでは他のユーザーの変更がマージ結果に含まれます。

各競合について、次の手順を実行します。

  1. 競合タグが付いた要素を選択して、競合に移動します。
  2. 自分の変更と他のユーザーの変更の両方から、残したい変更が含まれるように、マージ結果の JSON を変更します。
  3. マージ結果に問題がなければ、解決済みとしてマークを選択します。

すべての競合が解決され、JSON の変更内容に問題がなければ、最終結果をプレビューするを選択します。マージされたアプリケーションのビジュアルプレビューが表示され、アプリケーションを保存できるようになります。

競合がある変更をマージする例

この例では、ユーザー A がチャートの Y 値を変更します。

merge-chart-edit1

次に、ユーザー B が同じウィジェットで系列の色を変更します。

merge-chart-edit2

ユーザー A が保存し、その後ユーザー B が保存すると、ユーザー B には次のプロンプトが表示されます。

merge-prompt

ユーザー B がマージ… ボタンを選択すると、マージインターフェースが表示されます。この初期表示では、Slate アプリケーション全体の比較(「diff」とも呼ばれます)が表示されます。ユーザー B は左側のメニューから特定の要素を選択できます。

merge-json-initial

競合がある要素に移動すると、その変更だけに焦点を当てた表示になります。ユーザー B による変更はまだ1つもマージされていません。ユーザー B は、残したい変更をマージ結果ペインにコピーする必要があります。

merge-json-conflict

ユーザー B が残したい変更をマージ結果ペインにコピーすると、次のような表示になります。

merge-json-pick

マージ結果ペインの内容に問題がなければ、ユーザー B は解決済みとしてマークを選択します。

ユーザー B がすべての競合を解決し、最終結果をプレビューするを選択すると、マージされたアプリケーションのビジュアルプレビューが表示されます。

merge-preview

マージされた Slate アプリケーションには、両方の変更の属性が含まれています。