p4 sync
ディポの内容を反映するようにクライアントワークスペースを更新します。
構文
p4 [g-opts] sync [-f -k -L -n -N -q -r] [-m max] [[FileSpec][revSpec]]
p4 [g-opts] sync [-L -n -N -q -s] [-m max] [[FileSpec][revSpec]]
p4 [g-opts] sync [-L -n -N -p -q] [-m max] --parallel=threads=n[,batch=n][,batchsize=n][,min=n][,minsize=n [[FileSpec][revSpec]]
説明
p4 sync は、ファイルパターン引数に適合するファイルを、ディポからクライアントワークスペースにコピーすることにより、クライアントワークスペースをディポと同期させます。
コマンドラインにファイルパターンを指定しない場合、p4 sync
は次の基準をすべてを満たしている特定のディポファイルのみをコピーします。
- クライアントビューで表示されるファイル
p4 edit
、p4 delete
、p4 add
、またはp4 integrate
- クライアントワークスペース内に最後のリビジョン(最新リビジョン)としてまだ存在していないファイル
新しい空のワークスペースでは、すべてのディポファイルが後の2つの基準に適合するため、ワークスペースビューを通して見ることのできるすべてのファイルが、ユーザのワークスペースにコピーされます。
コマンドラインでファイルパターンを指定すると、そのファイルパターンに適合し、かつ上記の基準に適合するファイルのみがコピーされます。
ファイルパターンにリビジョン指定子が含まれている場合、指定したリビジョンがクライアントワークスペースにコピーされます。
ファイル引数にリビジョン範囲が含まれている場合、そのリビジョン範囲に含まれるファイルのみが更新され、範囲中で最も大きい番号のリビジョンが使用されます。 ファイル引数にリビジョン範囲が含まれている場合、ワークスペースビュー内に既に存在しないファイルには影響しません。 ファイル指定の「リビジョン範囲の使用」、p4 archiveの「使用上の留意点」、および「p4 help
revisions
」を参照してください。
p4 sync
コマンドはディポから最新バージョンを取得し、ローカルワークスペースファイルを更新します。ただし、ローカルワークスペースを使用しているユーザの作業が誤って失われないようにするため、p4
sync
を実行するときは、ローカルワークスペースで作業状態になっているすべてのファイルの衝突解決をp4 resolveコマンドを使用して手動で行ってからサブミットする必要があります。
ファイルを書き込み可能にするには、Helix Coreサーバコマンドを使用します。 オペレーティングシステムコマンドは使用しないようにしてください。
分散バージョニング環境においてHelix Coreサーバを利用している場合は、ファイルパスを指定する際、実際のチェンジリスト番号の代わりに、サブミット済みチェンジリスト仕様のグローバルチェンジリストIDを使用できます。 以下に例を示します。
p4 sync //depot/...@30E7C829-08C504-4109-89AA-904D0C2194B8
グローバルチェンジリストIDの詳細については、「分散バージョニング環境におけるHelix Coreサーバの利用」で「サーバ間でチェンジリストのIDを追跡する」を参照してください。
オプション
|
同期を強制実行します。 既にクライアントワークスペースに特定のリビジョンのファイルがあったとしても、Helixサーバは同期を実行します。 ファイルが書き込み可能であっても、そのファイルは上書きされます。 このオプションは作業状態のファイルに影響しませんが、 |
|
既存のワークスペースファイルを保存します。クライアントワークスペースを更新せずにhaveリストを更新します。 haveリストを更新してクライアントワークスペースの実状に一致させる必要がある場合にのみ p4 sync -kは 管理者が構成可能変数 |
|
スクリプト作成時に使用され、完全なディポシンタックスで有効なリビジョン番号とともに指定された有効なファイル引数リストに対して同期を実行します。 このフラグが使用される場合、ラベルに類似した内部テーブルを構築することで、引数が同時に処理されます。 このファイルリスト処理は、内部クエリエンジンを個々のファイル引数に呼び出すより非常に高速になります。 ただし、ファイル引数の構文は厳密であるため、エラーが発生した場合はコマンドは実行されません。 |
|
指定された |
|
プレビューモード: 実際に同期を実行せずに、同期の結果を表示します。 |
|
プレビューモード: 同期に関係する想定ネットワークトラフィックの概要を、同期を実行せずに表示します。 プレビューモードを使用すると、追加または更新されるファイルの数を確認できます。これは、多数の大きいファイルを処理する際、帯域幅またはディスク容量に制限がある場合にも便利です。 このオプションは、同期を実行する前に同期操作のネットワークへの影響を予測するのに便利です。 クライアントワークスペースビューを最近更新した場合、新しく構成されたワークスペースに同期する前に、何ギガバイトもの資産を含むフォルダツリーを誤って含めていないかを確かめるとき効果的です。 |
|
クライアントワークスペースにデータを書き込みますが、haveリストを更新しません。 既に同期または作業状態にされたファイルは警告メッセージを出力し、処理しません。 このオプションは通常、初回の同期後にワークスペースの状態を追跡する必要のない(ビルド環境や公開用環境などの)プロセスで使用されるワークスペースに使用されます。 注意
マスターが使用できない状態で、syncコマンドを使用してレプリカのディポを自分のレプリカワークスペースに同期すると、コマンドが失敗します。 これは、レプリカを使用して、マスター上のdb.haveテーブルを更新する必要があるためです。 ただし、その場合はp4 sync -pコマンドを使用することができます。 |
|
並列ファイル転送のオプションを指定します。
詳細については、並列処理を参照してください。 |
|
サイレントモード: 通常の出力メッセージを抑止します。 エラーまたは例外的状態に関するメッセージは表示されます。 |
|
新しい場所でディポ内の新しい位置にマッピングされたファイルを再び作業状態にします。 デフォルトでは、作業状態のワークスペースファイルは、元から作業状態だったディポファイルと関連付けられたままになります。 例えば、 |
|
安全な同期: クライアントワークスペースの内容を、最後に同期された内容と比較します。 Helixサーバの管理外でファイルが変更されていた場合、エラーメッセージが表示され、ファイルは上書きされません。 クライアントワークスペース仕様に |
|
詳細については、「グローバルオプション」を参照してください。 |
使用上の留意点
ファイル引数にリビジョン指定子を使えるか? | ファイル引数にリビジョン範囲を使えるか? | 最低限必要なアクセスレベル |
---|---|---|
使用可 |
使用可 |
|
-
クライアントワークスペースビューが最後の同期から変更されている場合は、次の同期のときに、ワークスペースビューを通して見えなくなっている(リビジョン範囲が使用されていない場合)ファイルがクライアントワークスペースから削除され、以前は見えなかったディポファイルがクライアントワークスペースにコピーされます。
デフォルトでは、ワークスペース内の空のディレクトリからからすべてのファイルが削除されてもディレクトリ自体は削除されません。 同期するときに空のディレクトリを削除するには、
p4 client
フォーム内のrmdir
オプションを有効にします。 -
ユーザが、Helixサーバの管理外で、OSのコマンドによりいずれかのファイルを書き込み可能にすると、通常
p4 sync
はこれらのファイルを上書きしません。 ただし、p4 client
フォームでclobber
オプションがオンになっている場合は、ファイルが上書きされます。(パフォーマンスの負荷を最小にして)この動作を避けるには、
-s
「安全な同期」オプションを使用します。clobber
オプションが設定されている場合でも、p4 sync -s
はHelixサーバの管理外で変更されたファイルを上書きしません。 p4 -I sync -q
として実行すると、p4 sync
コマンドに進捗インジケータが提供されます。- 同じファイルを参照する引数が複数指定されている状態で
p4 sync
コマンドを実行しないでください。 例えば、「p4 sync depot/project/...@1000 //depot/project/file.txt@1010
」のように指定すると、リビジョンで予期しない不整合が発生します。
スクリプト
-m max
オプションを-n
オプションと組み合わせると、効果的にスクリプトを作成するのに役立ちます。 例えば、p4 sync -n -m 1
のようなコマンドはファイルの同期を行いませんが、同期するべきファイルがある場合には出力に1行のみ表示され、そうでなければワークスペースが最新であることを示すメッセージが表示されます。 -m 1
オプションを指定しなかった場合、出力が数千行になる可能性があります。その場合、すべての行が破棄されます。
-L
オプションは、スクリプトまたは自動レポート処理で使用することが意図されています。 ファイル引数は完全なディポシンタックスで記述し、有効なリビジョン番号を伴っていなければなりません。 これらの必要条件を満たさないファイル指定は、暗黙的に無視されます。 このオプションを使用すると、リストの処理が速くなります。
並列処理
転送するファイルの数に応じて、p4
sync
コマンドは実行に時間がかかる場合があります。 このコマンドで複数のスレッドを使用してファイルを転送することにより、処理を速くすることができます。 並列処理が効果的なのは、次のような場合です。
- ネットワークの距離が長く待機時間が長い場合
- 単一のTCPフローを使用した、帯域幅を十分に活用できないネットワーク構成の場合
- クライアントでファイルの解凍にかなりの作業を必要とする大規模な圧縮バイナリファイルを使用している場合
次のいずれかを実行します。
net.parallel.threads
とnet.parallel.max
の両方を設定し、自動並列同期 を有効にします。- 例えば、
net.parallel.max=40
とnet.parallel.threads=3
を構成すると、p4 sync
コマンドは自動的に3つのスレッドを使用します。
- 例えば、
net.parallel.threads
を設定解除し、net.parallel.max
を1
より大きい値に設定し、--parallel
オプションをp4 sync
コマンドに使用することにより、並列同期を手動で実行できます。- 例えば、
net.parallel.threads
を設定解除し、net.parallel.max=40
を設定する場合、並列スレッドの数は2
~40
の範囲内になります。 12個のスレッドを並列で実行するには、コマンドラインでp4 sync --parallel=threads=12
と入力します。.
注意net.parallel.max
構成変数の値は0
~100
の範囲で設定できます。 値0
または1
を設定すると、並列処理は無効になります。1
より大きい値を指定すると、指定したレベルまで並列処理が有効になります。-
net.parallel.max=40
に設定した場合、net.parallel.threads
の値は40
以下にする必要があります。 並列スレッドのリクエスト数がnet.parallel.max
で設定された値を超える場合、スレッドは許可されている最大数まで実行されます。
- 例えば、
-
--parallel
オプションを使用すると、並列処理を実行する方法 を指定できます。min
および/またはminsize
サブオプションを使用すると、同期の際に少なくともmin
個のファイルまたは少なくともminsize
バイトが送信されない限り、並列処理を行わないように指定できます。batch
および/またはbatchsize
サブオプションを使用すると、1回で処理するファイル数またはバイト数を指定できます。 バッチサイズを小さく設定すると、ネットワークは最適に使用できますが、データベースリソースに負荷がかかります。
サブオプションは任意の順序で指定できます。
並列処理の動作は、次を使用して制御できます。
- net.parallel.batch
- net.parallel.batchsize
- net.parallel.min
- net.parallel.minsize
- net.parallel.threads
- client.sendq.dir
ストリームを使用する
以下に示す両方の条件に該当するとします。
- クライアントワークスペース内の
Stream:
フィールドの値が正しいストリームとして設定されている StreamAtChange:
フィールドが、特定のチェンジリスト番号を指している
この場合、p4 syncコマンドを実行すると、該当するチェンジリストが作成された時点で使用可能だったファイルのリビジョンに対して、ワークスペースが同期されます。
コマンドを再試行する
信頼されていないネットワークでは、再試行の回数と、ネットワークがタイムアウトしたものとHelixサーバアプリケーションが想定するまでの時間の長さを指定することができます。 ワークスペースのP4CONFIG
ファイルにより、またはコマンドラインからコマンドを1つずつ実行してnet.maxwait
を設定し、-r n
に再試行の回数を指定します。ただし、は再接続を試みる回数を示します。
次のコマンドは、ユーザのワークスペースの同期が中断された場合に、同期を3回まで再試行します。 3回目に60秒間でタイムアウトすると、コマンドは失敗します。
$ p4 -r3 -vnet.maxwait=60 sync
タイムアウトして再試行されるコマンド(ネットワーク接続が出力行の途中で失われた場合など)の出力形式は保証されないため、標準入力から読み込みを行うコマンドに-r
を使用するのは避けてください。
例
|
クライアントビューを通してマッピングされたとおりに、すべてのファイルの最新リビジョンを、ディポからクライアントワークスペースにコピーします。 そのファイルが既にクライアントワークスペースで作業状態になっている場合や、そのファイルの最新リビジョンがクライアントワークスペースにある場合は、コピーされません。 |
|
|
|
クライアントビューを通してマッピングされたとおりに、 最新リビジョンはコピーしないで、チェンジリスト21がサブミットされた後にディポ内にあるファイルのリビジョンを使用してください。 |
|
ただし、 また、 |
|
(リビジョン範囲 |
|
2018年6月24日0:00現在のディポの内容を、ワークスペースに同期します。 (6月23日に実施されたすべての変更を含みます。) |
|
文字の16進値のASCII表現を使用して、Helixサーバのワイルドカードを含むファイル名を同期します。 この例では、クライアントワークスペース内のファイルは 詳細については、「ファイル名およびエンティティに関する文字の制限」を参照してください。 |
または
|
|
または
|
すべてのファイルの存在しないリビジョンに同期して、ワークスペース内のすべてのファイル(Helixサーバが制御しているファイル)を削除します。 |
関連コマンド
クライアントワークスペースにあるファイルを作業状態にし、それをチェンジリストにリストする |
|
クライアントワークスペースにあるファイルに対する変更を、ディポにコピーする |
|
クライアントワークスペースに同期したファイルとリビジョンの一覧を参照する |