p4 pull

概要

メタデータまたはバージョン化ファイルをPerforceマスターサーバから取得しレプリカへ複製、または保留中の転送についてのステータス情報を表示します。

構文


p4 [g-opts] pull [-J prefix] [-i interval] [-b interval] [-T excluded_tables] [-P serverid]
p4 [g-opts] pull -u [-i interval]
p4 [g-opts] pull -l [-s | -j [-J prefix]]
p4 [g-opts] pull -d -f file -r revision
p4 [g-opts] pull -L [-i interval]

解説

p4 pullコマンドには5つの構文バリアントがあります。

  • 1番目のバリアントは、P4TARGETで指定したターゲットサーバからジャーナルレコードを取得します。

  • 2番目のバリアントは、P4TARGETで指定したターゲットサーバからファイルの内容を取得します。

  • 3番目のバリアントは、スケジュールされたファイル転送についての情報を表示します。

  • 4番目のバリアントは、スケジュールされたファイル転送をキャンセルします。

  • 5番目のバリアントは、ジャーナルレコードを、ターゲットサーバのジャーナルファイルからではなく、ローカルのジャーナルファイルから(p4 journalcopyコマンドで作成)取得するように指定します。その後、これらのレコードはレプリカサーバのデータベースに書き込まれます。フェイルオーバー用にスタンバイレプリカを使用している場合、このバリアントが必要です。

テスト目的以外でp4 pullがコマンドラインから実行されることはほとんどありません。代わりにstartup.n構成可能変数を設定し、レプリカサーバが起動するたびにp4 pullプロセスが起動するようにしてください。

ジャーナルおよびファイル内容の取得

p4 pullコマンドは、P4TARGETにより指定されたターゲットサーバからジャーナルレコードまたはファイル内容のどちらかを取得するよう、現在のレプリカサーバに指示します。レプリカサーバの中には、ジャーナルレコードとファイル内容の両方は必要ないものもあります。例えば、オフラインのチェックポイント設定に使用するレプリカサーバでは、ファイルの内容を転送する必要はありません。

メタデータとファイル内容の両方を複製するには、2つのp4 pullコマンドを同時に実行する必要があります。この場合、p4 pullを(-uオプションを付けずに)1回実行してマスターサーバのメタデータを複製し、さらにp4 pullを(-uオプションを付けて)1回以上実行してサーバのバージョンファイルを複製します。

  • -iオプションは次の更新までのポーリング間隔(単位は秒)を指定します。-iが指定されない場合、p4 pullはポーリング間隔を1として実行した後に終了します。

  • -bオプションは、pull実行の失敗後に待機する時間を指定します。-bが指定されていない場合、p4 pullは60秒ごとに再試行されます。

-Tオプションは、複製しないテーブルを除外します。例えば、ビルドファームサーバは、db.havedb.workingdb.resolveテーブルを複製する必要はありません。

待ち状態のファイル転送処理を削除するには、p4 pull -d -f file -r revを使用します。このコマンドは、マスターに回復不可能なエラーがあるために待ち状態のファイル転送が繰り返し失敗される場合に有効です。

ステータス情報を得る

待ち状態のファイル内容転送のリストを表示するには、-lオプションを使用します。-lとともに-sが指定されると、スケジュールされたファイル転送の概要が表示されます。追加の行で、少なくとも1つの保留中の転送を含む最も古いチェンジリスト番号を指定します。これは、レプリカサーバにアーカイブ内容の転送のラグがどれくらあるかのヒントになります。

1つの演算子で、p4 journalcopy -lp4 pull -l -j、およびp4 pull -l -sコマンドを実行できます。これにより、1つの演算子で複製の状況を確認することが可能になります。

File transfers: n active/m total, bytes: nnn active/mmmmm total.
Oldest change with at least one pending file transfer: n

-lとともに-jが指定されると、現在のレプリカとそのマスターに関する現在のジャーナルの状態、ステートファイルの最終更新時刻、およびサーバのローカル時刻とタイムゾーンが報告されます。例:

Current replica journal state is: Journal jjj, Sequence: sssss.
Current master journal state is: Journal jjj, Sequence: sssss.
The statefile was last modified at: 2012/01/10 14:23:23.
The Server time is currently: 2012/01/10 14:23:23 -0800 PST

jjjの値はジャーナル番号を指定します。sssssは、そのジャーナルのオフセットを指定します。

オプション

-b interval

取得の失敗後に再試行するためのポーリング間隔を秒数で指定します。このオプションが指定されていない場合、pullは60秒後に再試行されます。

-d -f file -r rev

保留中のファイル内容転送を中止します。ただし、filerevはディポファイルおよび特定のリビジョンを示します。

Note

これは、通常のPerforceファイルとリビジョンデータではなく、アーカイブファイルとリビジョンになります。p4 pull -lコマンドを使用して、正しいファイル名とリビジョンを取得します。

-i interval

ファイル内容を取得するポーリング間隔を秒数で指定します。最も短い間隔は1秒です。このオプションを省略すると、コマンドは1回だけ実行されて終了します。

間隔を0に設定すると、マスターサーバは新しいデーが入手可能になるとすぐレプリカに通知をします。このようにして、レプリカサーバは新しいデータを遅延無く取得することができます。

-J prefix

ジャーナルファイルの接頭語を指定します。構成可能変数journalPrefixをオーバーライドします。

マスターサーバがデフォルトではないジャーナルの位置を使用している場合、これによりマスターサーバのジャーナルファイルの位置を特定することができます。

-l

転送がスケジュールされているファイルのリストを表示します。

-l -j

レプリカとマスターにおける現在のジャーナルの状態を表示します。

マスターにおけるジャーナルローテーションの処理中、p4 pull -l -jの出力には3行が書き出される可能性があります。それらは、レプリカジャーナルの現在の状態を表す行、対応するマスター上のジャーナルの状態を表す行、そしてマスター上の新しいジャーナルを表す行(ここからのデータはレプリカにはまだ到達していない)です。

-l -s

待ち状態のファイル内容転送の概要を表示します。このリストが予想外に長いまたは増加している場合は、追加でp4 pull -uコマンドの実行を検討してください。

-L

通常p4 journalcopyコマンドにより作成されるローカルのジャーナルファイルから、ジャーナルレコードを取得します。

-P serverid

指定サーバーのp4 serverフォームのArchiveDataFilter:ClientDataFilter:RevisionDataFilter:フィールドに従い、serveridからデータをフィルタします。

以前のリリースでは、このオプションはフィルタ仕様で設定されたフィルタを確認していました。この確認はもう必要ではありません。このオプションは、以前のリリースのサポート継続のために保持されました。これは、複数のサーバでフィルタ構成を共有する場合にも便利です。この場合、serveridは、フィルタ条件を共有するサーバを参照します。

Note

Perforceの以前のリリースとの互換性のため、p4 exportで使用されている同じシンタックスを使用して、フィルタパターンを直接指定することができますが、サーバを指定してp4 serverフォームのフィールドを使用することを強く推奨します。なぜなら、-P filterpattern引数に整合性がないまたは衝突がある、複数のp4 pullコマンドを使用するレプリカサーバの動作は不確定であるためです。

-T excluded_tables

レプリカサーバのジャーナルレコードから除外するデータベーステーブル(db.havedb.workingなど)のリストを供給します。テーブル名は頭に"db."を付け、サーバルートディレクトリのデータベースファイルに使用される命名規則に従わなければなりません。

複数のテーブルを指定するには、リストを二重引用符で囲み、テーブル名をスペースで区切ります。テーブル名は、カンマで区切ることもできます。たとえば、-T db.have,db.working-T "db.have db.working"のようになります。

-u

ジャーナルレコードの代わりにアーカイブファイルを転送します。このオプションを省略すると、このコマンドはジャーナルレコードを取得します。

g-opts

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

使用上の留意点

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

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

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

適用外

適用外

super

  • ほとんどの場合、サーバの複製にはp4 pullよりもp4 replicateの方が適切です。

  • マスターサーバまたはレプリカサーバのどちらかを停止すると、レプリカサーバはステートファイルという小さいテキストファイルの中に最新のジャーナルの位置を記録します。デフォルトでは、ステートファイルはstateという名前でレプリカサーバのルートディレクトリに格納されます。statefileで構成可能変数p4 configureを設定することにより、別のファイル名を指定できます。

  • 複製環境で動作させるためのPerforceの構成に関する詳細については、『Perforceサーバ管理者ガイド: マルチサイト展開』を参照してください。

関連コマンド

起動時に一連のp4 pullコマンドを実行するようにPerforceサーバを構成する

p4 configure

あるサーバから別のサーバにメタデータを複製する。

p4 replicate

ジャーナルまたはチェックポイントのレコードを未加工のフォームに表示する

p4 export

ジャーナルデータをレプリカサーバのローカルファイルシステムにコピーする

p4 journalcopy