web-dev-qa-db-ja.com

Perforceがファイルを正しく同期しない

私は、グラフィカルツールのPerforce P4Vを使用して、ここで仕事中のPerforceサーバーとのインターフェイスを取っています。デポに追加したプロジェクトがあり、ローカルコンピューターのワークスペースから誤ってプロジェクトを削除しました。問題は、リビジョンの取得アクション(GUIの同等の同期)を使用するとファイルが更新されない、つまり必要なサーバー上のファイルは表示されますが、ローカルPCと正しく同期されません。ファイルがサーバーからプルされないのは私を苛立たせています。ローカルPCでファイルが変更された場合、サーバーからリビジョンを取得できるはずです。これにより、ローカルPCにデータがプルされ、PC上の変更がローカルで上書きされます。しかし、それは起こっていません。行方不明のものはありますか?

29
kingrichard2005

皆さん、ありがとうございました。「ワークスペースから削除」しようとすると、ファイルがまだ「編集用に開いていて削除できない」というメッセージが表示され続けました。また、「リビジョンの取得」から、「ファイルが更新されなかった」というメッセージが返されました。私がしなければならなかったのは、ファイルを「元に戻す」、それから「リビジョンを取得」アクションを実行することでした、それが問題を解決しました。ご協力ありがとうございます。

2
kingrichard2005

PERFORCEは、ローカルワークステーション上にあると考えているファイルを追跡します。これらのファイルをローカルで削除した場合(およびPERFORCEにそのことを「伝えない」場合)、PERFORCEはそれらのファイルがあると見なします。それらを元に戻したい場合は、ファイルを「強制同期」する必要があります。 p4vでは、「リビジョンの取得...」項目を使用でき、その後のダイアログで「強制操作」チェックボックスをオンにして、Perforceが必要と考えるかどうかに関係なく、Perforceにすべてのファイルを再度提供するように指示できます。

情報を完成させるために、ローカルでファイルを削除したい場合は、「ワークスペースから削除」項目を選択することにより、p4vから削除できます。これにより、ローカルでファイルが削除されるだけでなく、それらのファイルがなくなったことがperforceに通知され、次回の同期時にこれらのファイルがサーバーから取得されます。

57
Mark

PERFORCEによると、ローカルマシンにファイルが残っているため、更新されません。

「Get Revison ...」オプションを使用して、「Force Operation」オプションを有効にする必要があります。

これにより、Perforceに最新バージョンを持っていると思われるファイルもすべて更新するよう指示します。

10
ChrisF

他の人が述べたように、1つの解決策は、基本的にサーバーからローカルにすべてを上書きするデポ全体を「強制同期」することです。これの欠点は、大きなデポで作業している場合、完了するまでに長い時間がかかる可能性があることです。

もう1つの方法は、ローカルワークスペースをサーバーと比較し、ワークスペースにないファイルのみを強制的に同期することです

p4 diff -sd //Depot/path/… | p4 -x – sync -f

-sdオプション:クライアントのワークスペースにはないが、デポには存在する未開封のファイルの名前のみを表示します。

-sdが必要なものでない場合は、さらに多くのオプション(sa/se/etc。)を使用できます。 こちら を参照してください。

コマンドのクレジットは this ブログに送られます。

10
Zahra

「リビジョンの取得」は、「強制操作」が有効になっている場合でも、開かれていない(チェックアウトされていない)ファイルのみを更新します。そのワークスペースでチェックアウト済みとマークされたすべてのファイルを元に戻し、「強制操作」で「リビジョンの取得」を使用する必要があります

8
Arthur H

この質問に参加する人にとって、これはmacコマンドラインで私にとってうまくいきました...

ローカルのPERFORCEワークスペース-作業中のチェックアウト済みファイルのベースディレクトリにcdします。

p4 sync -f

-fは強制的に同期します。

これは、タイムマシンのバックアップからMacを復元するときにも役立ちます。

https://www.perforce.com/perforce/r12.1/manuals/cmdref/sync.html

0
ryan