p4 fetch

概要

リモートサーバから現在接続中のサーバにファイルをコピーします。

構文

p4 [g-opts] fetch [-r remotespec] [-m depth] [-v -k] [-n | -u] [-S stream | filespec]

解説

p4 fetchコマンドは、指定したファイルのセットとこれらのファイルをサブミットしたチェンジリストを、指定したリモートサーバからローカルサーバにコピーします。フェッチが可能なのは、フェッチされるファイルが現在接続されているサーバに完全に適合していて、共有されている共通の履歴に基づいて厳密に構築されている場合のみです。

衝突がない場合、ファイルとそのチェンジリストは、このサーバの新規のサブミット済みチェンジリストになります。衝突の処理は、-uオプションを使用することで構成可能になります。-uの指定が無く、衝突やずれが多数ある場合、フェッチは拒否されます。-uオプションは、衝突しているチェンジリストがサブミット解除されるように指定し、それからリモートの作業をフェッチします。フェッチの完了後、p4 resubmitを使用して衝突しているローカルの変更を再度サブミットします。

チェンジリストがサーバに追加されると、新しいチェンジ番号が付与されますが、ファイルが保持する記述、ユーザ、タイプ、ワークスペースおよびファイルのセットは同じです。ファイルがこのサーバに追加されると、同じチェンジリストに保持され、現在の最新リビジョンの後に開始される新規のリビジョンになります。新規のリビジョンは、同じリビジョン番号、ファイルタイプ、操作、日付、タイムスタンプ、ダイジェスト、ならびにファイルサイズを保持します。そのチェンジリストがこのサーバに新規でサブミットされたチェンジリストだとしても、このサーバではサブミットトリガは実行されません。

通常、p4 fetchコマンドはリモートの仕様を設定し、リモート仕様のDepotMapフィールドはフェッチするファイルを指定します。p4 fetchコマンドは、フェッチされるファイルをさらに制限するfilespec引数も指定する場合があります。リモート仕様がDepotMapのローカルおよびリモート側で異なるパターンを使用する場合、filespec引数(該当の場合)はローカルのfilenameシンタックスでファイルを指定する必要があります。あるチェンジリストに、filespecが一致するファイルと一致しないファイルが含まれている場合、一致するファイルのみがフェッチに含まれます。チェンジリストの一部をフェッチしないようにするには、適切なfilespecを指定する必要があります(例えば//...@change,#headなど)。ファイルのリビジョンとチェンジリストに加えて、p4 fetchコマンドはアーカイブの内容もこのサーバにコピーします。

p4 fetchコマンドは、反映を記述したすべての反映レコードをフェッチされるファイルにコピーします。これらの反映レコードは現在のサーバで調整され、その結果現在のサーバのチェンジリスト番号とリビジョン番号が反映されます。ファイルのセットをフェッチするには、リモートサーバのこれらのファイルに対する読み取りアクセス権と、ローカルサーバにある同じファイルに対する書き込みアクセス権を持っている必要があります。ローカルのuseridはリモートサーバのuseridとして使用され、p4 fetchコマンドを実行する前に両方のサーバにログインしておく必要があります。

デフォルトでは、サーバは別のサーバからのフェッチの要求を受け付けません。サーバからフェッチするには、サーバ管理者はserver.allowpush1に設定してフェッチを有効にする必要があります。

p4 fetchコマンドは不可分です。指定のファイルをすべてフェッチするか、どれもフェッチしないかのいずれかになります。

ファイルタイプ修飾子+k+l+Sには、特別な考慮事項があります。+kタイプのファイルのダイジェストは、フェッチされる時にクリアされます。これは、特定のサーバ間マージの衝突が検出されないことを意味します。フェッチ後にダイジェストを再生成するには、p4 verifyコマンドを使用します。+lタイプのファイルをフェッチする時、サーバで作業中チェンジリストによりファイルが現在作業中であっても、新しいファイルがサーバに追加されます。+Sタイプのファイルをフェッチする時、指定された制限を超える古いアーカイブはフェッチコマンドで消去されません。

p4 fetchコマンドは、サーバにサブミット解除された変更がある場合使用できません。最初にこれらの変更を再度サブミットするにはp4 resubmitコマンドを使用し、変更を望まない場合はp4 shelve -dで保留ファイルを破棄します。

Note

p4 fetchは処理の一環としてp4 syncを自動で実行します。

オプション

オプションの指定がない場合、p4 fetchはオリジンに指定されたリモートサーバからファイルをフェッチします。

-k

最新リビジョンへのワークスペースの自動同期を抑制します。

-m depth

Perforceがフェッチを浅く行うように指定します。depthで指定されたリビジョンの最後の番号のみフェッチされます。

-n

正確性チェックを実行します。ただし、ファイルまたはチェンジリストはリモートサーバからフェッチされません。特に、Perforceはサーバーで行われている作業とリモートサーバからフェッチしようとする作業との衝突を確認します。これにより、自分の個人サーバがリモートサーバに対して最新かどうかわかります。

-r remotespec

リモートサーバのアドレスを含むリモート仕様、およびリモートサーバからファイルがフェッチされたときにファイルの再マッピングに使用されるファイルマッピングを指定します。p4 remoteも参照してください。

-S stream

フェッチする特定のストリームを指定します。ストリームを指定した場合、1つまたは複数のファイルも指定することはできません。

-u

衝突している変更がサブミット解除されるように指定します。-uオプションは、-rオプションを必要とします。

-v

デバッグの診断を行える冗長モードを指定します。

filespec

フェッチするファイルを指定します。1つまたは複数のファイルを指定した場合、-Sオプションでストリームを指定することはできません。

使用上の留意点

ファイル引数にリビジョン指定子を使えるか?

ファイル引数にリビジョン範囲を使えるか?

最低限必要なアクセスレベル

適用外

適用外


リモートサーバではread、ローカルサーバではwrite

p4 fetch -m 5 -r dev

devリモート仕様で、各ファイルの最新のリビジョンを5個フェッチします。

関連コマンド

リモートサーバにプッシュする。

p4 push