リポジトリから削除したファイルを復旧
EclipseのCVSを前提とする。
登録済みのファイルがあって、そのローカルファイルを削除し、リポジトリと同期化すると、「右向きグレーのマイナス記号が書かれた矢印」が表示され、コミットすると、リポジトリから削除される。このとき、リポジトリはどうなっているかというと、
- 削除したファイルのディレクトリ下に"Attic"というサブディレクトリができる。
- 削除したファイルのバージョン管理ファイル*1がAtticに移動される。
- バージョン管理ファイルに「削除」の旨が記録される。
となり、このときのバージョン管理ファイルの記録は以下のようになる。この例は、リビジョンが1.3のときに削除したもの(バージョン部分のみ抜粋)。
1.3 date 2005.09.07.16.24.28; author USER; state dead; branches; next 1.2; 1.2 date 2005.09.07.16.21.12; author USER; state Exp; branches; next 1.1; 1.1 date 2005.09.07.16.20.24; author USER; state Exp; branches; next ;
もし、削除を取り消したい場合には、同じファイルを再度登録すれば、Atticに移動したバージョン管理ファイルが復活する。履歴もちゃんと残っているので、削除直前のバージョンが手元に無くても、空のクラスを登録して、「改訂」から取り出せばOK。
もし、削除を取り消したい場合には、削除時の動作の逆をやれば良い*2。つまり、
バージョン管理ファイルに「削除」の旨(dead)が記録されているので、このりビジョンを消してしまう。1.3の行から1.2の前の行までを消し、ファイル先頭のheadリビジョンを1.2に書き換える。ファイルは書き込み禁止なのでアクセス権を変更すること。Atticにあるバージョン管理ファイルを親ディレクトリに移動する。Atticディレクトリは消しても消さなくても良い。
とする。一度チェックアウトを解除してからやったほうがきれいにできる。
失敗してもやり直しが利くように、バックアップを取っておくこと。