p4 obliterate

このコマンドは、ファイルとその履歴をディポから完全に消去します。

構文規則

p4 [g-opts] obliterate [-y -A -b -a -h -T] [-r alg] [-p | --purged-only] [-q] FileSpec[revSpec]

説明

p4 obliterateコマンドは、Helixサーバ管理者が使用することができます。 このコマンドを実行すると、ファイルがディポから完全に消去されます。

ヒント

obliterateコマンドではファイルが完全に消去されるため、最初にリモートディポでこのコマンドを使用することをお勧めします(その際、-yオプションは指定しないでください)。

警告

p4 obliterate -yコマンドを実行すると、サーバ上でコピーされたファイルのデータが削除され、 復元できなくなります。 ファイルは、Perforceサービスから削除されます。 その際、関連するメタデータ(ラベル内のファイル参照や haveリストなど)もすべて削除されます。

p4 obliterateコマンドが完了すると、消去されたファイル内のレコードがサービスから削除されます。

ただし、以下のレコードは削除されずに残ります。

  • p4 integrateコマンドでブランチを作成したときの遅延コピー(これらのコピーがまだ使用されている場合)

  • 上記の遅延コピーが含まれているファイルに対応するアーカイブ内のファイル

  • ユーザワークスペース内で消去されたコピーのうち、 Helixサーバで認識されないコピー

ヒント

p4 obliterateコマンドの代わりにp4 deleteコマンドを使用することをお勧めします。 p4 deleteコマンドの場合、最新リビジョンが削除済みとしてマークされますが、以前のリビジョンはディポ内に残ったままになります。

ヒント

ファイルの内容を消去する場合は、-pオプションを使用することをお勧めします。例えば、2015年から2018年にかけてサブミットされたファイルの内容を完全に消去する場合は、次のコマンドを使用します。
p4 obliterate -p -y file@2015/01/01,2019/01/01

ディレクトリの場合は、以下のコマンドを実行します。

p4 obliterate -p -y //depot/some/path/...@2015/01/01,2019/01/01

p4 obliterateは、少なくとも1つのファイルパターンを引数として必要とします。 実際にファイルデータの完全消去を実行する場合は、 -yオプションを指定する必要があります。-yオプションを指定せずにp4 obliterateコマンドを実行した場合、 処理の内容が通知されるのみで、実際の消去処理は実行されません。

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

保留動作

p4 obliterate myfileは、ファイルの保留(アーカイブまたはメタデータ)を完全消去しません。 完全消去されたファイルを保留解除しようとすると、エラーが発生します。 ファイルの内容を復元するには、ファイルを出力します。 保留を解消するには、シェルフを削除します。

p4 obliterateは、ファイル仕様を伴う場合、ファイルの保留を完全消去しません。

オプション

-y filespec

ファイルの完全消去を実行します。

ヒント

obliterateコマンドではファイルが完全に消去されるため、最初にリモートディポでこのコマンドを使用することをお勧めします(その際、-yオプションは指定しないでください)。

-A

アーカイブ対象としてマーキングされたリビジョンを完全消去します。 この場合、デフォルトの動作が変更され、アーカイブされたリビジョンがスキップされます。

注意

アーカイブディポ内のメタデータと内容を削除するには、p4 archive -pコマンドを使用します。-Aオプションを指定すると、アーカイブを復元したり、archive -pを使用したりする必要がなくなります。

-b

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

-a

アーカイブの検索フェーズと削除フェーズをスキップします。ファイルの内容は削除されません。このオプションを-bオプションと組み合わせて使用しても、安全性に関する問題はありません。

-h

削除対象の一致メタデータの検索時にdb.haveの検索をスキップします。 これにより、処理時間が短くなる場合があります。

これらのファイルを示すクライアントワークスペースが次回同期されたときに、 ワークスペース内の対象ファイルも消去されます。 (ビルドマシン上のクライアントワークスペースなどにおいては、多くの場合、 このような動作が求められます)

再利用の目的でブランチやネームスペースを消去する場合は、このオプションを使用しないでください。 このオプションを使用すると、クライアント上の古いコンテンツが、新しく追加されたリポジトリ ファイルと一致しなくなります。

-T タスクストリームパスの表示と消去を行う場合は、このオプションを 使用する必要があります。
-r alg

反映レコードを消去するためのアルゴリズムを選択する場合は、 このオプションを使用します。

  • 元のアルゴリズムでは反映テーブルがスキャンされ、リビジョンテーブルと一致する テーブルが検索されます。

  • 新しいアルゴリズムではリビジョンテーブルがスキャンされ、反映テーブルと一致する テーブルが検索されます。チェンジリスト番号を使用する検索処理は、リビジョンテーブルでのみ機能します。 そのため、ファイル引数でチェンジリスト番号やリビジョンを指定する場合は、 新しいアルゴリズムを使用した方が効率的です。

デフォルト設定の場合、最も効率的なアルゴリズムがHelixサーバによって自動的に判断されます。

元のアルゴリズムを使用する場合は、algの値を「0」に設定し、新しいアルゴリズムを使用する場合は、algの値を「1」に設定します。

-p リビジョンがパージ済みとしてマークされ、反映履歴がそのままの状態で残ります (反映履歴のレコードが削除されることはありません)。
--purged-only

p4 obliterate -p -yコマンドで以前に消去されたレコードだけを削除します。

-bオプションと-hオプションが無視され、-aオプションが適用されます。

関連するすべてのメターデータ(反映レコード、クライアントレコード、作業レコード)が削除されます。

-q 消去または削除されたリビジョンレコードや削除されたアーカイブに関する 出力メッセージを非表示にします。

g-opts

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

使用上の注意点

ファイル引数でリビジョン指定子を使用できるか? ファイル引数でリビジョン範囲を使用できるか? 最低限必要なアクセスレベル

はい

はい

admin

  • p4 obliterateは、必要なくなったファイルを消去してディスク容量を再生するため、 または間違った場所にファイル階層を生成するといったユーザによるミスを 帳消しにするための1つの方法です。 オペレーティングシステムのコマンド(eraserm、またはこれに類似のコマンド)を 使用して手動でHelixサーバルートからファイルを削除しないでください。
  • より良いディスクスペースの節約方法は、アクセス頻度の低いファイルを 低パフォーマンスの(または取り外し可能な)記憶領域に移動させることです。ファイルを完全に削除するのではなく、 p4 archiveコマンドとp4 restoreコマンドをアーカイブディポと 組み合わせて使用することをお勧めします(詳しくは、「アーカイブディポ」を参照)。 アーカイブディポにはファイルの履歴が保存され、すべてのユーザが利用できます。 また、ファイルの中身をオフラインかニアラインの記憶領域に移動させることができます。
  • ファイルを完全消去すると、ユーザコマンドの動作が変わってくることがあります。 完全に消去されたファイルを同期しても、そのファイルはクライアントワークスペースには存在しないため、 クライアントワークスペースから削除されることはありません。完全に消去されたファイルリビジョンを同期すると、 そのファイルが存在しないと表示されるか(すべてのリビジョンが完全に消去されている場合)、 そのファイルの消去されていないリビジョンのうち、最新リビジョンが表示されます。
  • リビジョンの範囲内でファイルを完全消去すると、ファイルログの出力に依存する スクリプトの動作が変わる可能性があります。これは、ファイルのリビジョン番号がスキップされるためです (または、完全消去されたリビジョンが除外されるためです)。例えば、リビジョン#2とリビジョン#3を完全に消去してから、p4 filelogコマンドを実行した場合、 コマンド出力に#4#1しか表示されない可能性があります。

    ... #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'

    ここで、p4 filelogの出力内に4つの変更記述が存在することを前提として、この出力の先頭行の「#4」が スクリプト内で使用されている場合、変更記述が2つしか存在しないことが原因で、 このスクリプトの実行結果が変わってしまう可能性があります。

  • リビジョン#1とリビジョン#2をパージしてから(または、これらのリビジョンが含まれている範囲をパージしてから)p4 filelogコマンドを実行すると、以下のコマンド出力がその次のコマンド出力に変わる可能性があります。

    ... #3 change 2123 edit on 2019/12/04 by user1@dev1 (binary) 'Third version'
    ... #2 change 2115 edit on 2019/12/03 by user1@dev1 (binary) 'Second version'
    ... #1 change 2101 add on 2019/12/01 by user1@dev1 (binary) 'First version'

    上記の出力が以下の出力に変わる理由は、editaddなどの操作が、パージされたリビジョンについてはpurgeに変わってしまうためです。

    ... #3 change 2123 edit on 2019/12/04 by user1@dev1 (binary) 'Third version'
    ... #2 change 2115 purge on 2019/12/03 by user1@dev1 (binary) 'Second version'
    ... #1 change 2101 purge on 2019/12/01 by user1@dev1 (binary) 'First version'

p4 obliterate dir/...

どのファイルも消去されません。 -yオプションを指定した場合に消去されるファイルが一覧表示されます。

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

Would delete 3 client 3 revision ignoring 1 archived-revision record(s).
This was report mode. Use -y to remove files. Add -A to include archived revisions.

p4 obliterate -A dir/...

どのファイルも消去されません。-yオプションを指定した場合に消去されるファイルが一覧表示されます。 -Aオプションが指定されているため、アーカイブ済みのリビジョンが処理対象になります。

出力は次のようになります。
Would delete 3 client 3 revision 1 archived-revision record(s).
This was report mode. Use -y to remove files.

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