p4 merge

このコマンドは、特定のファイルセットやストリーム仕様を別のファイルセットやストリーム仕様にマージします。

構文規則

p4 [g-opts] merge [-c change] [-m max] [-n -Ob -q -F] [--from stream] 
                   [toFileSpec[RevSpec]]
p4 [g-opts] merge [-c change] [-m max] [-n -Ob -q] fromFileSpec[revSpec] toFileSpec

ストリームを処理する場合

p4 [g-opts] merge -S stream [-As | -Af]

説明

ファイルをマージする

p4 mergeコマンドはp4 integrateコマンドの簡易版であり、 変更の集合を反映元から反映先のファイル群にマージします。 このコマンドは、スケジュールされた衝突解決を出力します。 このコマンドは、ストリームおよび 分散バージョン管理での使用を 想定していますが、 従来のHelixサーバブランチにも使用できます。

  • p4 resolveを使用して、すべての変更の衝突を解決します。 次にp4 submitを使用して、マージ済みファイルをディポにコミットします。 衝突が未解決のファイルはサブミットできません。
  • p4 shelveを使用して、マージ済みファイルを保留、 またはp4 revertを使用してマージ済みファイルを削除します。
  • p4 integratedコマンドまたはp4 filelogコマンドを使用して マージ履歴を表示します。

ほとんどの場合、変更をストリーム間(またはブランチ間)で伝播するには、コマンドとして p4 mergeおよびp4 copyを使用します。

引数を何も指定しなかった場合、現在のストリームクライアントに関連付けられているストリームが デフォルトの反映先になり、現在のストリームの親ストリームがデフォルトの反映元になります。

--from stream_nameで異なる反映元を指定することができます。 これは-Pオプションのエイリアスです。 ストリームを、現在のストリームディポに関連するディレクトリ名として指定することができます。 例えば、--from //Ace/mainの代わりに--from mainを指定することができます。

ステージング領域としてクライアントワークスペースを使用し、p4 mergeは影響するすべての 反映先ファイルについて反映元の変更ごとに衝突解決を行います。 現在のクライアントビューの外にある反映先ファイルは影響を受けません。 反映元ファイルは、クライアントビューにある必要はありません。

反映先の各ファイルは反映元のファイルにマッピングされます。 ファイルの移動や名前の変更にp4 moveが使用された場合、 マッピングでは移動や名前変更したファイルの調整を自動で行います。 反映元および反映先ファイルの範囲には、マッピングで調整される古い名前および 新しい名前のファイルの両方が含まれます。 移動済み反映元ファイルは、移動の衝突解決を反映先ファイルで行うようにスケジュールします。 マージされるリビジョンは、revSpecパラメータで制限することができます。 例えば、対象範囲に新旧のファイル両方が含まれていない場合、 移動/追加または移動/削除のいずれかの移動操作の組み合わせで 1つのファイルにマージを実行した場合、エラーメッセージが表示されます。

ストリームのマージ

ストリームにp4 mergeを使用すると、より安定性の高い親ストリームの 最新状態が子ストリームに反映されます。これにより、安定性のある親へと 変更を昇格させて戻す際に、親にチェックインされていた他の変更が誤って 上書きされないようにすることができます。 ファイルは作業中チェンジリストで作業状態にされ、必要に応じて衝突解決が スケジュールされます。親ストリームを更新するには、衝突解決後にサブミットします。 デフォルトでは、p4 mergeは親ストリームから、または--fromオプションで指定された 別のストリームから現在のストリームに変更をマージします。 反映元および反映先は、ファイルパスのペアとしてコマンドラインで指定することもできます。 さらに複雑なマージのマッピングは、ブランチ仕様でp4 integrateを使用して指定することができます。 -Fオプションを使用して、ストリームの予期されるフローに対して強制的に マージを行うことができます。 また、バーチャルストリームに基づいてブランチビューを生成するように強制することもできます。 マッピング自体は基盤となる実際のストリームを参照します。

ストリーム仕様

p4 merge -S stream: このコマンドを実行すると、反映元ストリームの伝播可能フィールドが反映先ストリーム仕様内にマージされます。ストリームファイルとともに、反映先ストリーム仕様が編集用にオープンされます。ストリーム仕様だけをマージする場合はp4 merge -S stream -Asコマンドを使用し、ファイルだけをマージする場合はp4 merge -S stream -Afコマンドを使用します。

注意

p4 integrateコマンドとp4 mergeコマンドでは、 反映元ファイルおよび反映先ファイルで共通の編集が最も多い リビジョンが(ベースとして)選択されます。

オプション

-c change

ファイルが作業状態にされる既存の作業中チェンジリストを指定します。

-F

マージ操作の強制。反映先ストリームが反映元のマージを受け入れるように構成されていない場合に実行します。 ストリームの正しい変更フローを判断するには、p4 istatを使用してください。

--from stream

マージ元となる親ストリーム以外のストリームを指定します。

-m max

マージされるファイルの数を制限します。このオプションは多数のファイルを反映するスクリプトに有用です。 反映のバッチ処理が可能となり、共有バージョン化サービスの他のユーザに対する ロック関連の影響を最小にすることができます。

-n

マージ結果をプレビューします。

-Ob

-Obオプションは、(もしあれば)マージ用のbaseリビジョンと各スケジュールされた 衝突解決を表示します。

-q

クワイエットモードは、反映、コピー、マージの対象となるファイルのリストに関する、 通常の出力メッセージを抑止します。 エラーまたは例外的状態に関するメッセージは表示されます。

-S stream

反映元ストリーム仕様の伝播可能なフィールドが反映先ストリーム仕様内にマージされます。

ストリームファイルとともに、反映先ストリーム仕様が編集用にオープンされます。

ストリーム仕様だけをマージする場合は、p4 merge -S stream -Asコマンドを使用します。

ファイルだけをマージする場合は、p4 merge -S stream -Afコマンドを使用します。

g-opts

グローバルオプション」を参照してください。

使用上の注意点

ファイル引数でリビジョン指定子を使用できるか? ファイル引数でリビジョン範囲を使用できるか? 最低限必要なアクセスレベル

はい

はい

open

p4 merge
p4 resolve
p4 submit -d "Update latest changes from parent stream"

引数を何も指定しなかった場合、現在のストリームクライアントに関連付けられているストリームが デフォルトの反映先になり、現在のストリームの親ストリームがデフォルトの反映元になります。

p4 merge --from //Ace/main
p4 resolve
p4 submit -d "Update latest changes from the specified stream"

指定した反映元ストリーム(必ずしも親ストリームであるとは限りません)が、デフォルトの反映先ストリームにマージされます。

p4 merge //mySourceStream/... //myTargetStream/...
p4 resolve
p4 submit -d "Merge changes from source to target"

ストリームの場合: 指定した反映元ストリーム(親ストリームの場合もあれば、それではない場合もあります)が、指定した反映先ストリームにマージされます。

ストリームを使用しない場合: 指定した反映元ブランチが、指定した反映先ストリームにマージされます。

関連コマンド

より安定性の高い隣接ストリームへと変更を昇格させる

p4 copy

変更を伝播する

p4 integrate

ファイルの衝突を解決する

p4 resolve