分析Code Workbookブランチブランチのマージ

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

ブランチのマージ

マージ は、それらをコピーする前に親ブランチに導入される変更をステージングすることを可能にします。ユーザーのブランチと親ブランチの間に論理的なコンフリクトがある場合、マージ中にコンフリクトを解決し、結果が正しいかどうかを確認するために変換を再実行することができます。

このドキュメンテーションの残りの部分では、マージしようとしているブランチを ソースブランチ、マージしようとしているブランチを ターゲットブランチ と呼びます。

マージのプレビュー

merge preview

ブランチを編集している任意の時点で、ツールバーの Preview merge ボタンをクリックしてマージ状態に入り、ソースブランチとターゲットブランチの間の変更を表示することができます。Code Workbookでは、ブランチをその直接の親にしかマージできないことに注意してください。マージに入った後、ソースとターゲットのブランチ間の差異はそれぞれの変換でハイライト表示されます。Contentsパネルの Modified および Conflict タグを探して変更を確認してください。以下のスクリーンショットでは、ソースブランチ(右)とターゲットブランチ(左)の間のコードの変更が緑でハイライト表示されています。

merge graph view

マージ中に変換を実行すると、Code Workbookは自動的に出力データセットに マージブランチ を作成します。これにより、マージはターゲットブランチとソースブランチの両方から分離されます。これらのマージブランチは、ユーザーのデータセットに vector-merge-{source}-{target}-{uuid} の形式で表示されます。

マージコンフリクトの解決

ソースブランチとターゲットブランチの両方で同じ変換が変更された場合、マージコンフリクトが発生する可能性があります。このシナリオで何が起こるかを見ていきましょう。

Preview Merge をクリックすると、マージを進行する前にコンフリクトを解決する必要があることを示すプロンプトが表示されます。

merge conflict

コンフリクトのある変換をクリックすると、マージコンフリクトビューが表示されます。コードについては、インラインのコンフリクトマーカーがどのロジックを選択するかを選択できます。

merge conflict code

マージコンフリクトを解決した後、Merge branch ボタンが有効になります。

マージの管理

ブランチがマージされている間、ツールバーの左上にある戻るボタンを使用して、ターゲットブランチに戻ることができます。マージを開始する前のソースブランチに戻るには、Exit merge をクリックします。マージで行った変更は、終了時に削除されます。

マージの準備と終了は完全に安全であり、ユーザーのブランチで行った変更には影響を与えません - ユーザーは自由にマージのプレビューと終了を行うことで、ターゲットブランチに導入される変更を確認することができます。マージを開始した後にターゲットブランチに変更が導入されると、ツールバーに Update merge ボタンが表示されます。このボタンを使用して、ターゲットブランチからの最新のロジックでユーザーのマージを更新することができます。

マージの完了

コンフリクトを解決し、他のブランチ固有のチェックが成功したら、Merge branch をクリックして、ターゲットブランチに変更を導入します。次に2つのトグルが含まれたダイアログが表示されます。

confirm merge

最初のトグルは、ソースブランチからのトランザクションをターゲットブランチにコピーするかどうかを選択できます。ブランチング後にマスターで追加の作業を行い、派生したデータセットの master ブランチに新たなトランザクションをコミットしたとします。このトグルがTrueに設定されている場合、updated-branch ブランチが作成されてからマスターで作成されたトランザクションは、マージ後のデータセットには表示されなくなります。

2つ目のトグルは、ソースブランチをデータセットから削除するかどうかを選択できます。これは、ワークブックのブランチ自体を削除することとは異なり、これは常にマージで行われ、設定できません。2つ目のトグルがTrueの場合、ソースブランチはワークブックで作成された派生データセットから削除されます。

マージの完了には時間がかかる場合があります。マージが完了すると、マージしたブランチは自動的に削除されますが、子ブランチがまだ存在する場合は削除されません。