テクニカルノート008  


削除したファイルを復元する方法


ディポ内から削除されたファイルを復元するには、そのファイルの削除する前のリビジョンを同期し、 それを追加し、サブミットします。例えば、もし foo.c がリビジョン26で削除されたとき、その foo.c を復元するには次のように実行します。:
p4 sync foo.c#25
p4 add foo.c
p4 submit


また、チェンジリスト300をサブミットした際に、誤って //depot/main/src 配下のすべてのファイルを削除してしまった場合には、次のように実行して復元します。:
p4 sync //depot/main/src...@299
p4 add //depot/main/src/...
p4 submit



98.2以前のリリースにおいて

もし、お使いのPERFORCEが98.2以前のリリースである場合、削除されたファイルを復元するにはさらに数ステップの手順が必要となります。まず、 削除されていないリビジョンを同期し、それからそのファイルを消さないように最新リビジョンを同期します。削除されたファイルを消さないように同期するに は、事前にそのファイルを別名で保存しておくか、後述のように p4 flush を実行します。その後に p4 add を使って、ファイルを再追加することができます。

例えば、チェンジリスト300をサブミットした際に、誤って //depot/main/src配下のすべてのファイルを削除してしまったとします。もちろん、ディポ内にはまだ削除される前のリビジョンが存在していますが、最新リビジョンには削除マークが付けられてしまいました。これらのファイルを削除から復元するには、次のように実行します。:
  1. 削除されていないリビジョンを同期します。このケースでは、チェンジリスト300より以前であればファイルは削除されていませんので、@299に同期すればよいことになります。
    p4 sync //depot/main/src/...@299

  2. クライアント・ワークスペース内で削除されたファイルを消さないようにするため、 p4 flush を使って最新リビジョンを同期します。
    p4 flush //depot/main/src/...

  3. 復元するためのファイルを追加目的で作業状態にするため、該当するすべてのファイルに対して p4 add を実行します。
    • UNIXでは、そのファイルが存在するところのトップ・ディレクトリに cd し、 find コマンドですべてのファイルをリストします。:

    find . -type f -print | p4 -x - add

    • Windows上で同等の操作を実行するには、そのトップ・ディレクトリをエクスプローラで選択し、 P4Win の作業中チェンジリスト・パネルにドラッグします。もしくは、次のMS-DOS コマンドを実行します。:

    dir/s/b | p4 -x - add

    • Machintoshhでは、MPWシェルから files コマンドを実行します:

    files -f -q -r -s | p4 -x - add


    これによって、実際に復元されるファイルが追加目的の作業状態になります。 クライアント・ワークスペース内のファイルで、ディポから削除されなかったファイルについては、 p4 add によって拒否されます(無視してもよいエラーとなります)。
  4. ここで、当該チェンジリストをサブミットします。
    p4 submit


    チェンジリストのフォームにおいて、間違ってリストされているファイル (すなわち、クライアント・ワークスペース内に存在するジャンク・ファイル)がないかをチェックし、もしあればサブミットのリストから除外します。

    p4 submit コマンドが正常終了すると、先ほど削除されたファイルがディポ内に復元されます。


 
戻る