p4 sync

概要

ディポの内容を反映するようにクライアントワークスペースを更新します。

構文


p4 [g-opts] sync [-f -k -L -n -N -q -r] [-m max] [file[revRange] …]
p4 [g-opts] sync [-L -n -N -q -s] [-m max] [file[revRange] …]
p4 [g-opts] sync [-L -n -N -p -q] [-m max] [file[revRange] …]
p4 [g-opts] sync [-L -n -N -p -q] [-m max] [file[revRange] …]
                 --parallel=threads=n[,batch=n][,batchsize=n][,min=n][,minsize=n]

解説

p4 syncは、ファイルパターン引数に適合するファイルを、ディポからクライアントワークスペースにコピーすることにより、クライアントワークスペースをディポと同期させます。コマンドラインにファイルパターンを指定しない場合、p4 syncは次の基準のすべてを満たしている特定のディポファイルのみをコピーします。

  • クライアントビューを通して見えるファイル

  • p4 editp4 deletep4 add、またはp4 integrateにより作業状態になっていないファイル

  • すでにクライアントワークスペース内に最後のリビジョン(最新リビジョン)として存在していないファイル

新しい空のワークスペースでは、すべてのディポファイルが後の2つの基準に適合するため、ワークスペースビューを通して見ることのできるすべてのファイルが、ユーザのワークスペースにコピーされます。

コマンドラインでファイルパターンを指定すると、そのファイルパターンに適合し、かつ上記の基準に適合するファイルのみがコピーされます。

ファイルパターンにリビジョン指定子が含まれている場合、指定したリビジョンがクライアントワークスペースにコピーされます。

ファイル引数にリビジョン範囲が含まれている場合、そのリビジョン範囲に含まれるファイルのみが更新され、範囲中で最も大きい番号のリビジョンが使用されます。ファイル引数にリビジョン範囲が含まれている場合、ワークスペースビュー内にすでに存在しないファイルには影響しません。リビジョンの指定に関するヘルプを表示するには、p4 help revisionsを使用します。

p4 syncコマンドを使用すると、以前に同期したバージョンが、新しいディポバージョンと同じであるファイルが自動的に解決されます。

新しく同期したファイルは、p4 editp4 deleteにより作業状態にしない限り、編集目的に使用できません。新しく同期したファイルは読み取り専用で、p4 editp4 deleteによりファイルが書き込み可能になります。ファイルを書き込み可能にするときは、Perforceの機能を使用し、OSのコマンドを使用しないでください。

オプション

-f

同期を強制実行します。すでにクライアントワークスペースに特定のリビジョンのファイルがあったとしても、Perforceは同期を実行します。ファイルが書き込み可能であっても、そのファイルは上書きされます。

このオプションは作業状態のファイルには作用しませんが、クライアントオプションnoclobberをオーバーライドします

-k

既存のワークスペースファイルを保存します。クライアントワークスペースを更新せずに所有リストを更新します。所有リストを更新してクライアントワークスペースの実状に一致させる必要がある場合にのみp4 sync -kを使用してください。

p4 sync -kp4 flushと同等に機能します。関連する使用例の詳細および説明については、p4 flushのドキュメントを参照してください。

管理者が構成可能変数zerosyncPrefixを設定していると、名前の始めに指定された接頭語がつくすべてのワークスペースで、p4 sync -kが想定されます。

-L

スクリプト作成時に使用され、完全なディポシンタックスで有効なリビジョン番号とともに指定された有効なファイル引数リストに対して同期を実行します。

-m max

指定されたmax個までのファイルのみを同期します。

-n

実際に同期を実行せずに、同期の結果を表示します。

このオプションにより、同期を実行する前に同期の結果を確認できます。

-N

同期に関係する想定ネットワークトラフィックの概要を、同期を実行せずに表示します。

これにより、追加または更新されるファイルの数、多数の大きいファイルの処理にはどちらが有用であるか、および/または帯域幅やディスク容量に制限があるかがわかります。

このオプションは、同期を実行する前に同期操作のネットワークへの影響を予測するのに便利です。クライアントワークスペースビューを最近更新した場合、新しく構成されたワークスペースに同期するに、何ギガバイトもの資産を含むフォルダツリーを不用意に含めていないかを確かめると効果的です。

-p

クライアントワークスペースにデータを書き込みますが、所有リストを更新しません。既に同期または作業状態にされたファイルは警告メッセージを出力し、処理しません。

このオプションは通常、初回の同期後にワークスペースの状態を追跡する必要のない(ビルド環境や公開用環境などの)プロセスで使用されるワークスペースに使用されます。

--parallel

並列ファイル転送のオプションを指定します。--parallelオプションを有効にするには、構成可能変数net.parallel.maxを1より大きい値に設定する必要があります。

  • threads=nは、n個の独立したネットワーク接続使用して、ファイルを同時に送信します。指定したスレッドは作業をバッチで取得します。

  • batch=nは1つのバッチ内のファイル数を指定します。

  • batchsize=nは1つのバッチ内のバイト数を指定します。

  • min=nは並列同期の最小ファイル数を指定します。同期するファイル数が小さすぎる場合、並列ファイル転送は開始されません。

  • minsize=nは並列同期の最小バイト数を指定します。同期するバイト数が小さすぎる場合、並列ファイル転送は開始されません。

詳細については、「並列処理」を参照してください。

-q

クワイエットモード: 通常の出力メッセージを抑止します。エラーまたは例外的状態に関するメッセージは表示されます。

-r

新しい場所でディポ内の新しい位置にマッピングされたファイルを再び作業状態にします。デフォルトでは、作業状態のワークスペースファイルは、元から作業状態だったディポファイルと関連付けられたままになります。

例えば、p4 client -f -sの後にp4 sync -rを指定して実行することにより、作業中の作業を別のストリームに移動できます。

-s

安全な同期: クライアントワークスペースの内容を、最後に同期された内容と比較します。Perforceの管理外でファイルが変更されていた場合、エラーメッセージが表示され、ファイルは上書きされません。

クライアントワークスペース仕様にallwriteおよびnoclobberオプションの両方が設定されている場合、このチェックはデフォルトで実行されます。

g-opts

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

使用上の留意点

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

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

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

使用可

使用可

read

  • クライアントワークスペースビューが最後の同期から変更されている場合は、次の同期のときに、ワークスペースビューを通して見えなくなっている(リビジョン範囲が使用されていない場合)ファイルがクライアントワークスペースから削除され、以前は見えなかったディポファイルがクライアントワークスペースにコピーされます。

    デフォルトでは、ワークスペース内の空のディレクトリからからすべてのファイルが削除されてもディレクトリ自体は削除されません。同期するときに空のディレクトリを削除するには、p4 clientフォーム内のrmdirオプションを有効にします。

  • ユーザが、Perforceの管理外で、OSのコマンドによりいずれかのファイルを書き込み可能にすると、通常p4 syncはこれらのファイルを上書きしません。ただし、p4 clientフォームのclobberオプションが有効になっている場合は、これらのファイルも上書きされます。

    (パフォーマンスの負荷を最小にして)この動作を避けるには、-s (「安全な同期」)オプションを使用します。clobberオプションが設定されている場合でも、p4 sync -sはPerforceの管理外で変更されたファイルを上書きしません。

  • 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コマンドは実行に時間がかかる場合があります。このコマンドで複数のスレッドを使用してファイルを転送することにより、処理を速くすることができます。これは構成変数net.parallel.maxを1より大きい値に設定し、--parallelオプションをp4 syncコマンドに使用することにより行うことができます。並列処理は、距離が長く待機時間が長いネットワークや、単一のTCPフローを使用した帯域幅を使用できないネットワーク構成で使用すると最も効果的です。また、クライアントでファイルの解凍にかなりの作業を必要とする大規模な圧縮バイナリファイルを使用している場合にも役立ちます。

並列処理を構成するには、構成変数net.parallel.maxを1より大きく設定し、p4 syncコマンドに--parallelオプションを使用します。

  • 構成変数net.parallel.maxは、0~100の範囲で設定できます。値0または1を設定すると、並列処理は無効になります。1より大きい値を指定すると、指定したレベルまで並列処理が有効になります。このため、--parallelオプションを12に設定する場合は、変数net.parallel.maxを少なくとも12に設定する必要があります。

  • --parallelオプションを使用すると、並列処理を実行する方法を指定できます。サブオプションは任意の順序で指定できます。

    minおよび/またはminsizeサブオプションを使用すると、同期の際に少なくともmin個のファイルまたは少なくともminsizeバイトが送信されない限り、並列処理を行わないように指定できます。

    batchおよび/またはbatchsizeサブオプションを使用すると、1回で処理するファイル数またはバイト数を指定できます。バッチサイズを小さく設定すると、ネットワークは最適に使用できますが、データベースリソースに負荷がかかります。

ストリームを使用する

クライアントワークスペースのStream:フィールドが有効なストリームに設定されているためにクライアントワークスペースが動的に生成されている場合に、StreamAtChange:フィールドが特定のチェンジリスト番号を指すように設定されていると、p4 syncを引数なしで実行した場合、その時点におけるストリーム仕様に対応するクライアントワークスペースを使用して、ワークスペースはそのチェンジリストの時点で提供されていたファイルのリビジョンに同期されます。

コマンドを再試行する

信頼されていないネットワークでは、再試行の回数と、ネットワークがタイムアウトしたものとPerforceアプリケーションが想定するまでの時間の長さを指定することができます。ワークスペースのP4CONFIGファイルにより、またはコマンドラインからコマンドを1つずつ実行してnet.maxwaitを設定し、-r nに再試行の回数を指定します。ただし、nは再接続を試みる回数を示します。例えば、

p4 -r3 -vnet.maxwait=60 sync

というコマンドは、ユーザのワークスペースの同期が中断された場合に、同期を3回まで再試行します。3回目に60秒間でタイムアウトすると、コマンドは失敗します。

タイムアウトして再試行されるコマンド(ネットワーク接続が出力行の途中で失われた場合など)の出力形式は保証されないため、標準入力から読み込みを行うコマンドに-rを使用するのは避けてください。

p4 sync

クライアントビューを通してマッピングされたとおりに、すべてのファイルの最新リビジョンを、ディポからクライアントワークスペースにコピーします。

そのファイルがすでにクライアントワークスペースで作業状態になっている場合や、そのファイルの最新リビジョンがクライアントワークスペースにある場合は、コピーされません。

p4 sync file.c#4

file.cの4番目のリビジョンをクライアントワークスペースにコピーします。例外は上記と同じです。

p4 sync //depot/proj1/...@21

クライアントビューを通してマッピングされたとおりに、//depot/proj1ディレクトリ内の全ファイルを、ディポからクライアントワークスペースにコピーします。

最新リビジョンはコピーしないで、チェンジリスト21がサブミットされた後、ディポ内にあるファイルのリビジョンを使用してください。

p4 sync @labelname

labelnamep4 labelによって作成されたラベルで、さらにp4 labelsyncによってファイルが割り当てられている場合、labelnameによって指定されたファイルおよびそのリビジョンレベルが、ワークスペースに同期されます。

ただし、labelnameにリストされているファイルであっても、ワークスペースビューに存在しないファイルは、ワークスペースにコピーされません。

また、labelnameにリストされていないファイルは、ワークスペースから削除されます。(@labelnameは、labelnameで指定されたリビジョンを含め、それまでのすべてのリビジョンに適用されます。これには、リストにないファイルの存在しないリビジョンも含まれます。)

p4 sync @labelname,@labelname

p4 sync @labelnameと同様にラベルの内容をワークスペースに同期しますが、ワークスペースでラベルの付けられていないファイルは現状のままになります。

(リビジョン範囲@labelname,@labelnameは、ラベル名そのもので指定されたリビジョンのみに適用されます。リストにないファイルの存在しないリビジョンは除外されます)

p4 sync @2011/06/24

2011年6月24日0:00現在のディポの内容を、ワークスペースに同期します。(6月23日に実施されたすべての変更を含みます。)

p4 sync status%40june1st.txt

文字の16進値のASCII表現を使用して、Perforceワイルドカードが含まれたファイル名を同期させます。この例では、クライアントワークスペース内のファイルはstatus@june1st.txtです。

詳細については、「ファイル名およびエンティティに関する文字の制限」を参照してください。

p4 sync file.c#none

file.cの存在しないリビジョンに同期します。ファイルはワークスペースから削除されます。

p4 sync ...#none

すべてのファイルの存在しないリビジョンに同期します。ワークスペース内のすべてのファイル(Perforceが制御しているファイル)は削除されます。

関連コマンド

クライアントワークスペースにあるファイルを作業状態にし、それをチェンジリストにリストする。

クライアントワークスペースにあるファイルに対する変更を、ディポにコピーする。

p4 submit

クライアントワークスペースに同期したファイルとリビジョンの一覧を参照する。

p4 have