変更のマージ

ブランチの作成後、ブランチ間に変更を伝播しなければならない場合があります。 例えば、リリースブランチでバグを修正した場合、その修正内容をメインのコードラインに組み込む必要があります。 選択した変更をブランチされたファイル間で伝播するには、p4 mergeコマンドとp4 resolveコマンドを次のように使用します。

  1. p4 mergeコマンドを発行してファイルの衝突解決をスケジュールします。
  2. p4 resolveコマンドを発行し、反映元ファイルから反映先ファイルに変更を伝播します。

    変更を個別に伝播するには、マージファイルを編集するか、マージプログラムを使用します。 クライアントワークスペースにある反映先ファイルに変更が加えられます。

  3. 解決済みファイルを含むチェンジリストをサブミットします。

Example   ブランチされたファイル間で変更を伝播する

ブルーノは、Jamプロジェクトのリリース2.2ブランチにおけるバグを修正したため、その修正内容をメインのコードラインに反映させる必要があります。 ブルーノはホームディレクトリで次のように入力します。

$ p4 merge //JamCode/release/jam/2.2/src/Jambase //JamCode/dev/jam/Jambase

次のメッセージが表示されます。

//JamCode/dev/jam/Jambase#134 - merge from ////JamCode/release/jam/2.2/src/Jambase#9

これで、ファイルの衝突解決がスケジュールされました。 ブルーノがp4 resolveと入力すると、標準マージダイアログが画面に表示されます。

//JamCode/dev/jam/Jambase - merging depot/release/jam/2.2/src/Jambase#9
Diff chunks: 0 yours + 1 theirs + 0 both + 0 conflicting
Accept(a) Edit(e) Diff(d) Merge (m) Skip(s) Help(?) [at]:

ここでファイルの衝突を解決できます。 完了すると、ブルーノのワークスペースのファイルが結果ファイルによって上書きされます。 結果ファイルを含むチェンジリストをディポにサブミットする必要があります。

p4 mergeコマンドまたはp4 copyコマンドを実行するには、反映先ファイルに対する書き込み権限(Helix Corewrite)と、反映元ファイルに対する読み取り権限(read)が必要です。 (Helix Core権限の詳細については、『Helixバージョニングエンジン管理者ガイド: 基本』を参照してください。)

デフォルトでは、p4 mergeコマンドによってクライアントワークスペースで新規作成されたファイルは、サブミットしないと編集できません。 新たにマージされたファイルをサブミットする前に編集するには、衝突を解決した後、p4 editコマンドを発行します。

マージされるリビジョンの範囲に削除済みのリビジョンが含まれる場合(例えば、ファイルがディポから削除された後に再度追加された場合)は、削除済みリビジョンの反映方法を-Diオプションで指定できます。 詳細については、『P4コマンドリファレンス』を参照してください。