#author("2023-10-05T12:30:39+00:00","","")
#author("2024-01-31T10:23:19+00:00","","")

// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

#contents

Subversionでバージョン管理していると、間違って削除コミットしてしまったファイルなども復活させることができます。とてもベンリです。、、、がEclipse上というかSubversiveでどうやって戻せばよいかを調べてたんですが、どうもやり方がわかりません(´д`;)。。Eclipseのツリー上にはファイルが消えちまってるので、指定して戻すみたいなオペレーションができないんですね。

とりあえずコマンドプロンプトでは以下のように復活できます。復活といっても削除コミットを取り消すのではなく「消す直前のリビジョンを指定して、それをローカルのワーキングコピーにsvn copyし、再度svn add & commitする」という考え方ですね。


**プロジェクト構成 [#zda36296]
プロジェクトが以下の構成とします。

#ref(01.png)


Main3.javaを削除コミットします。

プロジェクトは以下の構成になりました。

#ref(02.png)

ではこのコミットを取り消してみます。



**やってみる [#s7e65c3f]
***プロジェクトをチェックアウト [#kd722c2f]
 [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 をチェックアウトしました。

チェックアウトしました。((svn checkout http://[サーバ名]/svn/sandbox/trunk/SampleProjectとかでいい))
 [hoge@server1 svn]$ cd SampleProject
 [hoge@server1 SampleProject]$ cd source


***ログを見て、削除されたリビジョンを確認 [#re776783]
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します。


***ワーキングコピーにファイルをsvn copy [#t61f29b9]
 [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]$

復活しました。((svn copy --revision 51 http://[サーバ名]/svn/sandbox/trunk/SampleProject/source/Main3.java ./Main3.java.new などとファイル名やパスを指定できる。カレントからの相対指定ですね))


**ちなみにTortoiseSVNなら [#ub437fc0]
TortoiseSVNならチェックアウトしてきてプロジェクトのsvn logを参照し、一番下のビューで削除されたファイルを選択し「このリビジョンをおける変更を元に戻す(R)」でOK!あとはコミットすれば元通り。

#ref(Tortoise.png)


**Eclipse Subversiveなら [#e5fbdaa4]
これがわかんないんですよね。誰か教えてくださいっ。




----
この記事は
#vote(おもしろかった[90],そうでもない[8])
#vote(おもしろかった[91],そうでもない[8])
- 間違って消してしまい、アセアセしていたらこの記事。すごく助かりました!! -- [[Masaki]] &new{2011-06-12 (日) 02:19:15};
- 助かりました!! -- [[s]] &new{2013-05-17 (金) 10:50:03};

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS