Subversionでバージョン管理していると、間違って削除コミットしてしまったファイルなども復活させることができます。とてもベンリです。、、、がEclipse上というかSubversiveでどうやって戻せばよいかを調べてたんですが、どうもやり方がわかりません(´д`;)。。Eclipseのツリー上にはファイルが消えちまってるので、指定して戻すみたいなオペレーションができないんですね。
とりあえずコマンドプロンプトでは以下のように復活できます。復活といっても削除コミットを取り消すのではなく「消す直前のリビジョンを指定して、それをローカルのワーキングコピーにsvn copyし、再度svn add & commitする」という考え方ですね。
プロジェクトが以下の構成とします。
Main3.javaを削除コミットします。
プロジェクトは以下の構成になりました。
ではこのコミットを取り消してみます。
[hoge@server1 svn]$ pwd /home/hoge/kino/svn [hoge@server1 svn]$ svn checkout "http://[サーバ名]/svn/sandbox/trunk/SampleProject@HEAD" \ -r HEAD --username "hoge" A SampleProject/.classpath A SampleProject/source A SampleProject/source/Main1.java A SampleProject/source/Main2.java A SampleProject/.project リビジョン 52 をチェックアウトしました。
チェックアウトしました。*1
[hoge@server1 svn]$ cd SampleProject [hoge@server1 SampleProject]$ cd source
svnのログを見ます。--verboseで詳細も表示します。
[hoge@server1 source]$ svn log --verbose ------------------------------------------------------------------------ r52 | hoge | 2008-01-25 20:00:40 +0900 (金, 25 1月 2008) | 1 line 変更のあったパス: D /trunk/SampleProject/source/Main3.java Main3.javaを削除コミット <-間違っていたとして、後で復活させる。 ------------------------------------------------------------------------ r51 | hoge | 2008-01-25 19:55:47 +0900 (金, 25 1月 2008) | 1 line 変更のあったパス: A /trunk/SampleProject/.classpath A /trunk/SampleProject/.project A /trunk/SampleProject/source A /trunk/SampleProject/source/Main1.java A /trunk/SampleProject/source/Main2.java A /trunk/SampleProject/source/Main3.java 新規作成。 ------------------------------------------------------------------------ [hoge@server1 source]$
revision 52で削除されたことがわかりました。よってrevision 51を指定してワーキングコピーにファイルをsvn copyします。
[hoge@server1 source]$ svn copy --revision 51 \ http://[サーバ名]/svn/sandbox/trunk/SampleProject/source/Main3.java ./ (ここまで一行で入力) A Main3.java [hoge@server1 source]$ ls -lrt 合計 12 -rw-rw-r-- 1 hoge hoge 349 2008-01-25 19:55 Main2.java -rw-rw-r-- 1 hoge hoge 349 2008-01-25 19:55 Main1.java -rw-rw-r-- 1 hoge hoge 349 2008-01-25 20:16 Main3.java <-戻った [hoge@server1 source]$ [hoge@server1 source]$ svn status A + Main3.java [hoge@server1 source]$ svn commit -m "復活。" 追加しています source/Main3.java リビジョン 53 をコミットしました。 [hoge@server1 source]$
復活しました。*2
TortoiseSVNならチェックアウトしてきてプロジェクトのsvn logを参照し、一番下のビューで削除されたファイルを選択し「このリビジョンをおける変更を元に戻す(R)」でOK!あとはコミットすれば元通り。
これがわかんないんですよね。誰か教えてくださいっ。
この記事は
現在のアクセス:91997