p4 fetch

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

注意

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

構文規則

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

説明

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

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

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

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

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

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

注意

特定のファイルリビジョンをサーバAからローカルのサーバBとサーバCにコピーし、p4 attribute -fを使用して サーバBのリビジョンの属性を変更した場合、サーバBのリビジョンだけが影響を受けます。

変更がプッシュまたはフェッチされると、変更するType:フィールドは「defaultChangeType」のターゲットサーバーの構成可能変数の設定を無視します。

通常、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」など)。

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

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

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

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」も参照してください。

--remote-user このオプションを使用して、ターゲットサーバのユーザ名を指定し、リモート仕様内の RemoteUserフィールドを上書きすることができます。「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