現在ディポ上に「ブランチ元」の //depot/A/...
が存在しているとして、これを元に //depot/B/...
というブランチを作成するには以下のようにします。
まずは準備としてクライアント仕様に、ブランチ用のビューを追加しておきます。
これは、p4
コマンドで //depot/B/...
というパスを指定したときに、ローカルディレクトリにマッピングできるようにするためです。
もし、クライアントビューとして、//depot/...
のように親ディレクトリからのビューが指定されている場合は、この作業は必要ありません。
$ p4 client
View:
//depot/A/... //$CLIENT/A/... ← 「本線」用のクライアント・ビュー
//depot/B/... //$CLIENT/B/... ← 「ブランチ」用のクライアント・ビュー
まだこの時点では、サーバ上に //depot/B/
は存在しないし、クライアント上にも対応するファイル郡は作成されていません。
$ p4 integrate //depot/A/... //depot/B/...
このコマンドにより、クライアントの //$CLIENT/B/...
に作業コピーが作成されます。
コピーの元になっているファイルは //depot/A/...
にあるファイルです。
作業コピーで作成されたファイルは //depot/B/...
というブランチを作成するための作業状態として作業リストに追加されます。
この時点ではディポ上には //depot/B/...
で参照できるファイルはまだ存在しないということがポイントです。
integrate
コマンドは作業コピーとしてディポ上のファイルを持ってくるだけです。
integrate
コマンドは sync
コマンドのブランチ用と考えると分かりやすいです。
上記の例は、「本線」での作業を「ブランチ」側へ反映するためのコマンドともいえます(今回は「ブランチ」側の作業ディレクトリが空なのですべてのファイルがコピーされます)。
この作業を実際にディポ上に反映するには submit
を実行します。
$ p4 submit
submit
コマンドを実行する時点で //$CLIENT/B/...
のファイルが新規作成の作業状態になっているので、//$CLIENT/B/...
のファイルがすべて //depot/B/...
へサブミットされることになります。
これで、他のユーザも //depot/B/...
を参照してブランチの作業コピーを取得できるようになります。