Helix Core P4コマンドリファレンス (2019.1)

p4 fetch

リモートサーバからローカルサーバへファイルをコピーします。

注意

分散バージョン管理で使用。 詳細については、分散バージョニング環境におけるHelix Coreサーバの利用を参照してください。

構文

p4 [g-opts] fetch [-r remotespec] [-m depth] [-v -k] [-n | -t] [-Ox] 
                   [-S stream | filespec]
p4 [g-opts] fetch [-r remotespec] [-v] [-n] [-Ox] -s shelf

説明

p4 fetchコマンドを実行すると、指定したリモートサーバからローカルサーバに次の項目がコピーされます。

  • 指定したファイルのセット
  • 指定したファイルをサブミットしたチェンジリスト
  • ファイルの属性
  • チェンジリストに関連付けられているすべての修正(ただし、修正によってリンクされたジョブが、ローカルサーバ内に既に存在している場合のみ。 存在しない場合、修正はコピーされません)。
  • フェッチ対象のファイルに対する反映を記述するすべての反映記録

フェッチが可能なのは、フェッチされるファイルが現在接続されているサーバに完全に適合していて、共有されている共通の履歴に基づいて正確に構築されている場合のみです。

このコマンドの2番目のフォームにより、1つ以上のサブミット済みチェンジリストではなく、保留中のチェンジリストがコピーされます。その際に衝突は発生せず、ローカルサーバ上で新しい変更が保留されます。

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

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

特定のリビジョンをローカルサーバにコピーし、p4 attribute -fコマンドを使用してそのリビジョンの属性を変更した場合は、そのサーバ上のリビジョンのみに影響し、他のサーバにコピーされたリビジョンには影響しません。

通常、p4 fetchコマンドはリモートの仕様を設定し、リモート仕様のDepotMapフィールドはフェッチするファイルを指定します。 p4 fetchコマンドでfilespec引数を指定して、フェッチするファイルをさらに絞り込むこともできます。 filespec引数を使用して、以下のいずれかを指定することができます。

  • ストリームの名前(「-S dev」など)
  • ファイル名のパターン(//stream/dev/...//path1/...//...など)

1つのfetchコマンドで、ストリーム名とファイル名パターンの両方を指定することはできません。

注意

filespec引数を使用してフェッチするファイルを絞り込むと、filespec引数を指定せずにp4 fetchコマンドを実行するまで、「LastFetch:」フィールドは更新されません。

リモート仕様がDepotMapのローカルおよびリモート側で異なるパターンを使用する場合、filespec引数(該当の場合)はローカルのfilenameシンタックスでファイルを指定する必要があります。 filespec引数に一致するファイルと一致しないファイルが同じチェンジリストに含まれている場合、一致するファイルのみがフェッチされます。 チェンジリスト内の特定のファイルをフェッチ対象から除外するには、適切なfilespec引数を指定する必要があります(「//...@change,#head」など)。

リモート仕様の[ArchiveLimits:]フィールドが設定されている場合に p4 fetch コマンドを実行すると、通常とは異なる動作になります。 このフィールドにより、フェッチ先のサーバに保存するファイルアーカイブのリビジョンの数(存在する場合)が指定されます。 詳細については、『分散バージョニング環境におけるHelix Coreサーバの利用』の「フェッチとプッシュ」の章で、サーバ上でアーカイブリビジョンのストレージを制限する方法に関する説明を参照してください。

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

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

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

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

rpl.checksum.change構成可能変数の値により、p4 fetchコマンド用に実行される認証のレベルが決まります。 詳細については、「構成可能変数」を参照してください。

注意

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

フェッチに対してトリガを起動する

次のプッシュトリガタイプは、p4 fetchコマンドの実行中に起動することができます。

  • push-submitトリガを使用すると、メタデータが転送済みでファイルがまだ転送されていない場合に、p4 fetchコマンドのフェーズにおけるプロセスをカスタマイズすることができます。
  • push-contentトリガを使用すると、ファイルが転送済みでその内容がまだ転送されていない場合に、p4 fetchコマンドのフェーズにおけるプロセスをカスタマイズすることができます。
  • push-commitトリガを使用すると、p4 fetchコマンドによって変更をコミットした後で、クリーンアップ操作やポストプロセスを実行することができます。

詳細については、『Helix Coreサーバ管理者ガイド: 基本』の「プッシュまたはフェッチのトリガ」セクションを参照してください。

オプション

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

-k

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

-m depth

Helixサーバが浅いレベルでフェッチを実行します。depthで指定されたリビジョンの最後の番号のみフェッチされます。

-n

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

-Oc

このオプションを指定してp4 fetchコマンドを実行すると、すべてのチェンジリストに関する情報が表示されます。

このオプションを機能させるには、-vオプションも指定する必要があります。

-Of

このオプションを指定してp4 fetchコマンドを実行すると、すべてのチェンジリスト内のすべてのファイルに関する情報が表示されます。

このオプションを機能させるには、-vオプションも指定する必要があります。

-Oi

このオプションを指定してp4 fetchコマンドを実行すると、すべてのチェンジリスト内のすべてのファイル内のすべての反映に関する情報が表示されます。

このオプションを機能させるには、-vオプションも指定する必要があります。

-r remotespec

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

-s

サブミット済みの1つ以上のチェンジリストをフェッチする代わりに、フェッチする保留状態のチェンジリストを指定します。詳細については、『分散バージョニング環境におけるHelix Coreサーバの利用』の「フェッチとプッシュ」章の「保留状態のチェンジリストのフェッチとプッシュ」セクションを参照してください。

-t

衝突しているチェンジリストをタンジェントディポに移動します。タンジェントディポが存在しない場合は、自動的に作成されます。 移動された変更は、p4 resubmitコマンドを使用してもう一度サブミットすることができます。 -rオプションを使用してリモートサーバを指定しなかった場合、originがデフォルトのリモートサーバになります。

注意

p4 fetch -t を実行するにはadmin権限が必要です。

-S stream

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

-v

デバッグの診断情報を提供する冗長モードを有効にします。

冗長モードを有効にすると、冗長レベルを正確に制御することができます。 具体的には、以下の情報を表示するかどうかを制御することができます。

  • フェッチされたすべてのチェンジリストに関する情報(-Ocオプションを使用)
  • フェッチされたすべてのチェンジリスト内のすべてのファイルに関する情報(-Ofオプションを使用)
  • フェッチされたすべてのチェンジリスト内のすべてのファイル内のすべての反映に関する情報(-Oiオプションを使用)

上記のオプションは、自由に組み合わせることができますが、必ず「-O」を指定する必要があります。

デフォルトでは、すべてのチェンジリストに関する情報が表示されます。

filespec

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

使用上の留意点

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

適用外

適用外

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

p4 fetch -m 5 -r dev

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

関連コマンド

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

p4 push