p4 flush
クライアントワークスペースのhaveリストを、ファイルを実際にコピーすることなく更新します。
構文規則
p4 [g-opts] flush [-f -L -n -q] [[FileSpec][revSpec] ...]
説明
p4 flush このコマンドを実行すると、他のコマンドで予期しない動作が発生する可能性があるため、必要な場合以外は使用しないようにしてください。2つの例を参照してください。
p4 flush
コマンドは2つの手順で構成されるp4 sync
FileSpec
の処理の手順2のみを実行します。
手順1: FileSpec
にあるファイルリビジョンを、
ディポからクライアントワークスペースにコピーします。
手順2: ワークスペースのhaveリスト(Perforceサービスによって管理されている情報で、 どのファイルリビジョンが同期されているかを追跡するリスト)を、 新しいクライアントワークスペースの内容を反映するように更新します。
通常、この動作は望ましいものではありません。その理由は、
クライアントワークスペースのhaveリストは、常にワークスペースの実際の
内容を反映すべきだからです。ただし、haveリストがワークスペースの内容と
同期されていない場合は、p4 flush
を使用して、haveリストを実際の内容に
同期させることができる場合があります。p4
flush
は実際にファイルを転送するわけではないので、
p4
sync
を実行するよりもずっと速く処理が行われます。
オプション
|
flushを強制的に実行します。 Helixサーバは、クライアントワークスペースに指定リビジョンの ファイルがある場合でも、flushを実行します。 |
|
スクリプト作成目的で、完全なディポシンタックスに有効なリビジョン番号を 伴って示されたファイル引数リストに対し、flushを実行します。 |
|
flushを実行することなくflushの結果がどうなるかを表示します。 これにより、flushを実行する前に、期待どおりの結果が得られるかどうかを 確認することができます。 |
|
サイレントモード: 通常の出力メッセージを抑止します。 エラーや例外条件に関するメッセージは抑止されません。 |
|
「グローバルオプション」を参照してください。 |
使用上の注意点
ファイル引数でリビジョン指定子を使用できるか? | ファイル引数でリビジョン範囲を使用できるか? | 最低限必要なアクセスレベル |
---|---|---|
はい |
はい |
|
-
p4 flush
コマンドを実行すると、ファイルをコピーすることなくhaveリストが更新され、p4 sync
-fコマンドを実行すると、haveリストに一致するようにクライアントワークスペースが更新されます。 そのため、p4 flush files
コマンドを実行してからp4 sync
-f files
コマンドを実行すると、p4 sync
files
コマンドを実行した場合とほぼ同じ結果になります。 そのため、正しくないflush操作を実行した場合であっても、そのflush操作を行ったファイルリビジョンに対してp4 sync
-fコマンドを実行すれば、ほぼ完全に修正できるということになります。ただし、この方法でも、正しくないflush操作を完全に修正することはできません。 これは、
p4 flush
によって所有リストから削除されたファイルリビジョンは、p4 sync
-fコマンドの実行後もクライアントワークスペース内に残るためです。 この場合は、削除されたファイルリビジョンを、手動操作でクライアントワークスペースから 削除する必要があります。 - p4 flush このコマンドは、
p4 sync -k
コマンドのエイリアスです。
例
-
同じサイトで作業をする10人のユーザが、遠隔地にある同一のディポから、低速リンクを介して、 新たに同じクライアントワークスペースをセットアップする必要があるとします。 通常は各ユーザが同じ
p4 sync
コマンドを実行しますが、帯域幅に制限がある場合は 次の方法を使用すると、処理を速く行うことができます。- 1人のユーザがクライアントワークスペース
firstworkspace
からp4 sync
files
を実行します。 - 他のユーザは、ローカルOSのファイルコピーコマンドを使用して、 ユーザAのクライアントワークスペースから各自のクライアントワークスペースへ、 新たに同期されたファイルをコピーします。
-
さらに、各ユーザが
p4 flush files @firstworkspace
を実行すると、 上記のステップで各自のクライアントワークスペースへコピーしたファイルと同期した、 クライアントワークスペースのhaveリストが得られます。p4 flush
では、低速リンク経由でのファイル転送は実行されないため、 この処理は、p4 sync
コマンドを異なるタイミングで10回実行するより はるかに高速になります。
- 1人のユーザがクライアントワークスペース
-
ジョーは、
/usr/joe/project1/subproj
のRoot:
フィールドと、//depot/joe/proj1/subproj/... //joe/...
のView:
フィールドを持つjoe
というクライアントワークスペースを使用しています。 ジョーは、/usr/joe/project1
のすべてのファイルを自分のワークスペースに含める必要があると判断し、p4 client
を使用してRoot:
フィールドを/usr/joe/project1
に、View:
フィールドを//depot/joe/proj1/... //joe/...
に変更しました。その結果、現在のクライアントワークスペースのファイルは同じ場所にとどまり、 ワークスペースの範囲は他のファイルも含むように拡張されました。 ところが、ジョーは次に
p4 sync
を実行したとき、 Helixサーバがクライアントワークスペースの非作業状態のファイルを残らず削除し、 もう一度同じファイルを同じ場所にコピーしていることを知って驚きました。Helixサーバがこのように動作する原因は次のとおりです。
- haveリストは各ファイルのクライアントルートに対する相対的な位置を記述します。
- 各ファイルの物理的位置は Helixサーバコマンドが実行されるたびに特定されます。
このため、次のような結果になります。
- Helixサーバは、各ファイルが再配置されたとみなします。
- p4 sync このコマンドを実行すると、ファイルが以前の場所から削除され、 新しい場所にそのファイルがコピーされます。
このような問題を効率的に解決するには、
p4 flush #have
を使用してクライアントワークスペースのhaveリストを更新します。 これにより、実際にファイルがコピーされることなく、ファイルの新しい場所が反映されます。関連コマンド
p4 flush このコマンドは、
p4 sync
-kコマンドのエイリアスです。p4 sync
-kディポのファイルをクライアントワークスペースにコピーする
正しくない方法で
p4 flush
が実行された場合に、 haveリストをクライアントワークスペースに同期させるp4 sync
-f