2009-07-29 16 views
11

PERFORCEでsyncを実行した場合、それはすべき場合でも何もしないことがよくあります。強制同期(sync -f)を実行すると、サーバからのすべてのファイルを確実に同期させることができます。大きなプロジェクトがある場合は、これは容認できません。PERFORCEで高速で安全な同期を行う方法は?

質問はどうすれば高速同期を行うことができますか?

答えて

18

ご質問のキーパーツは「必要な場合でも」です。 Perforceの長年の経験では、通常の同期では予想通りの動作をしないため強制的な同期に復帰するユーザーはPerforceを正しく使用していません。

PERFORCEはあなたのハードディスクを管理しなければなりません。サーバはあなたが持っているファイルのバージョンを知っているので、通常の同期は必要なものだけを取得します。それが失敗した場合は、ほとんど例外なく、ユーザーがPERFORCE以外のファイルを変更、削除、追加、名前変更することを示しています(Explorerなど)。

場合によっては、これを引き起こすシステム面白い(つまりPCフォールト)が発生することがあります。そのため、必ずしもユーザーのフォールトではありません。しかし、これらは非常にまれです - したがって私の上記の習慣的な修飾子です。

あなたが普通に何もしていないと思うなら、他のプロセスがこれらのファイルを調整できるかどうかを見てみましょう。例えば。システムを構築して何か奇妙なことを行い、ビルド時にファイルを修正しようとしていますか?おそらく他の誰かが意図せずに突っ込んでいるネットワーク共有を開いていますか?あなたは干渉しているバックアップシステムを持っていますか?

希望に役立ちます。

+2

Perforceは、どのバージョンのファイルをそれぞれのクライアント仕様に関連付けるかを指定します。この情報はサーバ上に保持され、各クライアントの仕様とともに、「リストあり」と呼ばれます。共有クライアントは、一般的なユーザープラクティスではありません。 PERFORCEは特定の使用シナリオを可能にするためにこれらを許可しています。しかし、あなたが別のマシンで作業している場合、それはマシンごとにクライアント仕様を持つことによって処理されます。それはまさに彼らのために設計されたものです。 –

+0

ビルドファームがあるとします。ファーム内の各コンピュータにワークスペース(clientspec)を作成しますか? – sorin

+0

はい、ほとんどの場合、マシンごとのクライアント仕様が推奨されます。しかし、作成を自動化することができるので、思うほど苦痛ではありません。 –

4

PERFORCEが作業領域で何が起こっているのかを見失う不一致を作成する場合は、P4Vの「オフライン作業の調整...」機能を使用する必要があります。

これはフォルダの差分を実行し、矛盾を解決するために必要なオプションを教えます。

一般に、ファイルを明示的にチェックするには、PERFORCE(編集用に開く)を使用する必要があります。これは、他のシステムに慣れていると奇妙に感じます。

+3

申し訳ありませんが、私はこれにビジュアルクライアントを使用するつもりはありません。同じプロジェクトでは、6つの異なるPERFORCEサーバからのファイルを同期するので、バッチ・ソリューションだけが受け入れられます。手動でプロセスを繰り返す必要はありません。 – sorin

+0

@ソリン:容認できる解決策を見つけたことはありますか?私はビルドを自動化しようとしているときに似たようなものに走っています。それは〜2時間かかるので、毎回強制的に同期させる必要はありません。 – Jordan

+0

申し訳ありませんが、私はもうperforceを話します。彼らとの私の最後の経験は、ほぼ5年前でした。彼らにはブラックベリーに似た未来が1つしかありません。 – sorin

6

他の回答で述べたように、デポから同期されたディレクトリツリーのすべての「インスタンス」に対して別個のクライアント(ワークスペース)を作成する必要があります。

あなたがデポから変更されたファイルのみ同期を強制する場合:

p4 diff -se ... | p4 -x - sync -f 
p4 diff -sd ... | p4 -x - sync -f 

警告:(現在のディレクトリとサブディレクトリ内の)任意のローカルに変更されたファイルを上書きします。

あなたはいくつかのファイルを編集し、最初の編集のためにそれらを開くのを忘れて、あなたはこれを行うことができます代わりにした場合:編集用のデポと異なるのです任意のファイルを開きます

p4 diff -se ... | p4 -x - edit 

そして、この:

p4 diff -sd ... | p4 -x - delete 

ローカルで削除されたすべてのファイルを削除するために開きます。

0

あなたが探しているコマンドはp4 cleanだと思います。

http://www.perforce.com/perforce/r14.2/manuals/cmdref/p4_clean.html

「ワークスペースに存在するファイルが、デポから欠落は、デポ内の ファイル現在のワークスペースから削除されますが、ワークスペースから欠落しているされているファイルのバージョン。 チェックインされていないワークスペースで修正されたファイルは、デポから同期された最後のバージョンに復元されます。

+0

P4 Cleanは確かに仕事をしますが、非常に大きなプロジェクトでは非常に遅いです(サーバーの好意で見つかったケースの自動処理を調整することになります)。 OPのベストケースは、PERFORCE(削除、移動、編集など)を使用してファイル操作を実行することです。しかし、亀裂を滑り落ちたものがないかどうかを確認するために、時々チェックを行う必要があります。 – Newtopian

関連する問題