p4 obliterate

概要

ファイルおよびその履歴をディポから消去します。

構文

p4 [g-opts] obliterate [-y -A -b -a -h] file[revRange] …

警告

p4 obliterateは慎重に使ってください。これはPerforceの中で実際にファイルデータを消去する2つのコマンドのうちの1つです。(ファイルのデータを消去するもう1つのコマンドは、p4 archiveのアーカイブ-パージオプションです。)

p4 obliterateはファイルデータのサーバ内のコピーを実際に削除し、リカバリの可能性を完全に排除します。(これに対し、p4 deleteコマンドは最新リビジョンを削除扱いにするだけで、以前のリビジョンはディポにそのまま残します。)

解説

p4 obliterateは、Perforce管理者が使用し、ファイルをディポから完全に消去します。ファイルはラベルによるファイル参照やhaveリストなどを含む、すべての関連メタデータとともにPerforceサービスから消去されます。p4 obliterateが正常終了すると、その影響を受けたファイルは、サービスにとって最初から存在していなかったような状態になります。ユーザワークスペース内のファイルはそのままですが、もはやPerforceによる管理下のファイルとは認識されません。

p4 obliterateは少なくとも1つのファイルパターンを引数として必要とします。実際にファイルの完全消去を実行するには、-yオプションが必要です。これが付いていなければ、p4 obliterateは実際にファイルの完全消去は実行せずに、単にそれを実行したらどうなるかを知らせるだけです。

特定のリビジョンを指定すれば(例えばp4 obliterate file#3)、そのリビジョンのファイルだけが完全消去されます。リビジョン範囲を指定すれば(例えばp4 obliterate file#3,5)、その範囲のリビジョンだけが完全消去されます。

オプション

-y filespec

ファイルの完全消去を実行します。このオプションが付いていなければ、p4 obliterateは単に、実行したらどうなるかを知らせるだけです。

-A

アーカイブ対象としてマーキングされたリビジョンを完全消去します。デフォルトでは、アーカイブされたリビジョンはスキップされます。

-b

引数の範囲にあるファイルを、ブランチされたファイル、および最初のリビジョンかつ最新リビジョンであるファイルに限定します。このオプションは、古いブランチ(1つのリビジョンのみ存在)を削除する一方で、ブランチ操作後に変更されたファイルを保存しておくのに便利です。-aオプションと-bオプションを併用することにより、obliterate -bのパフォーマンスを大幅に改善することができます。

-a

(リソースを消費しがちな)db.archmapの検索をスキップし、ファイルをサーバから消去せず、メタデータのみを消去します。ファイルはディスクから消去されませんが、-a-bを併用することにより、遅延コピーとしてのみ存在していると認識されているブランチ済みファイルの完全消去を高速化することができます。

-h

削除対象の一致レコードを探す際に、db.haveの検索をスキップします。これらのファイルを示すクライアントワークスペースが次回同期されたときに、ワークスペース内にあるそのようなファイルも、ワークスペースから消去されます。(ビルドマシン上のクライアントワークスペースなどにおいては、多くの場合、このような動作が求められます。)

g-opts

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

使用上の留意点

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

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

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

使用可

使用可

admin

  • p4 obliterateは、必要なくなったファイルを消去してディスク容量を再生するため、または間違った場所にファイル階層を生成するといったユーザによるミスを帳消しにするための1つの方法です。OSのコマンド(erasermまたはそれらと同等のコマンド)を使用してPerforceサーバルートから手動でファイルを削除しないでください。

  • より良いディスクスペースの節約方法は、アクセス頻度の低いファイルを低パフォーマンスの(または取り外し可能な)記憶領域に移動させることです。ファイルを完全消去する代わりに、p4 archivep4 restoreをアーカイブディポと共に使用することを検討してください。アーカイブディポにはファイルの履歴が保存され、すべてのユーザが利用できます。また、ファイルの中身をオフラインかニアラインの記憶領域に移動させることができます。

  • ファイルを完全消去すると、ユーザコマンドの動作が変わってくることがあります。完全消去されたファイルに同期しても、ファイルはもうクライアントワークスペースには組み込まれていないため、クライアントワークスペースからは削除されません。完全消去されたファイルリビジョンに同期すると、ファイルが存在しないと報告されるか(すべてのリビジョンが完全消去されていた場合)、またはそのファイルの完全消去されていないリビジョンのうちの最新リビジョンが呼び出されます。

  • ファイルをリビジョン範囲で完全消去すると、完全消去された範囲のリビジョン番号が“スキップ”され、スクリプトの動作が変わってくることがあります。例えば、リビジョン#2および#3を完全消去した後のp4 filelogの出力が次のようになるとします。

    ... #4 change 1276 edit on 2011/04/18 by user@dev1 (binary) 'Fixed'
    ... #1 change 1231 add on 2011/04/12 by user@dev1 (binary) 'First try'
    

    この場合には、出力の1行目にある#4を元に、p4 filelogの出力には4つのチェンジの記述があると推量するようなスクリプトでは問題が発生します。

p4 obliterate dir/...

ファイルの完全消去は行わず、-yオプションを付けたときに完全消去されるファイルをリスト表示します。

この場合には、dir以下のディレクトリのすべてのファイルが-yオプションを付けたときの消去の対象になります。

p4 obliterate -y file

fileをディポから完全消去します。fileのあらゆるリビジョンに関する履歴およびメタデータのすべてが消去されます。

p4 obliterate -y file#3

fileの3番目のリビジョンだけを完全消去します。

#3最新リビジョンであれば、最新リビジョンは#2に変わり、次に生成されるリビジョンは#3になります。

#3が最新リビジョンでなければ、最新のリビジョン番号は変わりません。

p4 obliterate -y file#3,5

fileのリビジョン#3、4、5を完全消去します。

#5が最新リビジョンであれば、最新リビジョンは#2に変わり、次に生成されるリビジョンは#3になります。

#5が最新リビジョンでなければ、最新のリビジョン番号は変わりません。

関連コマンド

最新リビジョンのファイルを削除扱いにするが、そのままディポに残す。これは、通常のファイル削除の方法です。

p4 delete

ファイルを完全消去する代わりに、一部のリビジョンをアーカイブディポにアーカイブすることによりローカルディポの空き容量を節約できる。これらのファイルの変更履歴が保存される。

p4 archive

アーカイブされたリビジョンをアーカイブディポからリストアする。(完全消去されたファイルはリストアできないが、アーカイブされたファイルはリストア可能。)

p4 restore