私はPERFORCEを初めて使用しますが、正直言って、私はそれを嫌っています。 c:\ works\perforceディレクトリに約20個のファイルがあり、それらすべてを選択してDeleteキーを押しました。削除する前にすべてチェックインしました。私はそれらを取り戻す方法を見つけようとして髪を引っ張ってきました(Perforceはすっごく直感的ではありません)が、私のようなn00bに目立つものは何もありません。
PERFORCEから最新のリビジョンをディレクトリに戻すにはどうすればよいですか?
強制同期を行う必要があります。
コマンドライン:
$> p4 sync -f
P4V GUIの場合:
PERFORCEサーバーは、前回プルしたファイルを追跡します。これは、次のsync
が、すべてのファイルをもう一度ではなく、最後の同期以降に変更されたファイルのみを取り込むようにするために行われます。
この動作をオーバーライドするには、-f
オプションを使用する必要があります。
-fフラグは、クライアントがすでにファイルを持っている場合でも再同期を強制し、書き込み可能なファイルを上書きします。このフラグは、開いているファイルには影響しません。
コマンドラインクライアントを使用している場合は、同期するディレクトリから次のコマンドを実行できます。
p4 sync -f ...
sync -f
は(ファイルを削除したとしても)それらのファイルに対応する変更をもたらさないため、opened
ファイルのリストを確認することもできます。
このコマンドは、開いているすべてのファイルを一覧表示する必要があります。
p4 opened ...
上記のリストにリストされているファイルのうち、削除したものがある場合は、sync -f
を実行する前にそれらを元に戻す必要があります。
p4 revert <FILE1> <FILE2>
p4 sync -f ...
p4v
を使用している場合は、 dwinkle で説明されている手順に従うことができます。
1. Right click the folder in your workspace
2. Choose `Get Revision` in the context menu.
3. Choose `Get Latest revision`
4. Check `Force Operation (replace file even if you already have the revision specified)
5. Click on `Get Revision` button to fetch the files.
p4v
を使用して開いているファイルのリストを確認するには、保留中の変更リストのリストを確認する必要があります。特定のチェンジリストにファイルを配置していない場合は、default
チェンジリストを確認する必要があります。以前に削除したファイルが表示されている場合は右クリックして、Revert
を選択します。
ファイルをチェックアウトしてから削除した場合。最新のPERFORCE(p4 sync -f)を取得する前に、フォルダーをrevert(p4 revert -a // ...)する必要があります。
古いクライアントを気にしない場合、1つの解決策は新しいクライアントをプルダウンすることです。
p4 newclient
p4 sync
クライアントに同じ名前を付けたい場合は、他の人が述べているように強制同期を実行できます。
p4 sync -f
クライアントに同じ名前を付けたいが、ディレクトリがp4ワークスペースとして認識されなくなった場合は、クライアントを削除してから再作成する必要があります。
p4 -c <client_name> client -d <client_name>
p4 newclient
別の方法:
p4 reconcile
p4 revert //...
私の場合、すべてを試しましたが、すべてのファイルを元に戻すことができなかったため、ファイルを削除しようとしましたが、すべてを元に戻すことができませんでした。私は自分のPCを再起動し、オンラインで見つかった多数の解決策を試しました。最終的に、私の問題は、最新のP4Vアプリケーションへのアップグレード、昇格されたアクセス許可でのアプリケーションの実行、および強制的に最新の取得を行った後の昼食に行くことによって解決されました。
あなたが半日を無駄にした場合。上記を試してみてください。
ディレクトリ内のすべてのファイルを削除しました。どうすればそれらを取り戻すことができますか?
私が偶然見つけたこれに対する1つの問題は、directoryを削除すると、p4 sync -f
を使用して元に戻すことができないことです。ディレクトリの完全なクリーンバージョンが必要だったので、次のことを行いました。
rm -rf directory1
ただし、p4 sync -f directory1
を実行すると、次のように出力されます。
directory1 - no such file(s).
私が見つけたのは、最初にディレクトリ内のfileを回復することです。
p4 sync -f directory1/some-file
不足しているディレクトリ内にある、次のファイルを使用して取得できるファイルの1つの名前を知っている必要があります。
p4 files //depot/some/path/directory1/\*
ファイル名の1つを取得したら、次の手順を実行します。
p4 sync -f directory1/some-file
これにより、directory1
ディレクトリが作成されます。次に、作成したディレクトリ内で完全同期を実行できます。
cd directory1
p4 sync -f ...
これが他の誰かに役立つことを願っています。