1年以上前に
TortoiseSVNで、リポジトリ作ってから、編集、競合解消するまでhttps://blog.goo.ne.jp/xmldtp/e/7ec09d169e7900786221cc6945869c8d
って書いた。だけど、SVN入れる理由って、競合の問題もあるけど、
昔のバージョンに戻したい!っていうことがあるんじゃないかな
(それがないなら、Gitで管理してもいい)
だけど、意外とTortoiseSVNで前のバージョンに戻す方法が書いていない上、実はトラップがあるのに、そこに触れていない!ので、今日はそれについてメモメモしてみたい。
【大事なこと】
・まずは、「ログを表示」を選択、そこから戻すことができる
・戻すことができるのは自分の作業フォルダのみ。その内容に戻したい場合は、コミットしないといけない。
→バージョン番号が戻るのではなく、前のものに自分のファイルを書き換えるだけの作業をしてくれる
・戻す方法に2つある→トラップ
■説明の前の前提条件
・TortoiseSVNがインストールしてある
日本語パックが入れてあり、設定をして日本語表示になっている
(設定?という人や日本語パックを入れたのに英語の人は、以下を参照)
TortoiseSVN1.8で、日本語化パッチを入れたのに、日本語にならないという人へ
https://blog.goo.ne.jp/xmldtp/e/89b76d1ebc6d7169b1077e4c314b9c59
インストールは
https://tortoisesvn.net/downloads.html
(下にランゲージパックもある)
・いま、Repoがリポジトリ、user_aとuser_bで編集している
(例を示すために同じフォルダ内にあるけど、一般的には、違うところというか、違うPC等に各フォルダがある)
![](https://blogimg.goo.ne.jp/user_image/07/f8/e5a8a0a7090e89516bda7d90bc3551d8.png)
・user_aはファイル1のみを編集
1,2,3,4と入力内容を変えていて、現在ファイル1.txtしかない
![](https://blogimg.goo.ne.jp/user_image/5a/5d/de7acdea0ce2c5204335112d3c03c173.png)
・userBはファイル2を編集
チェックアウトしたのち、ファイル2を編集したので、現在ファイル1.txtとファイル2.txtがある。
■前(あるバージョン)に戻すには、ログを出す
前のあるバージョンに戻したい場合は、とにかく、ファイルなり、フォルダなりを右クリックしてログを出す。
今回は、user_aをクリック
![](https://blogimg.goo.ne.jp/user_image/61/2d/c580c43757d5d07ce157d9f49b214f2f.png)
そうすると、ログが出てくる。クリックした元のファイル、フォルダによって出てくるものは違い、クリックしたファイル、フォルダに関する更新のみ出てくる。
■お題
いま、リビジョン5(太字になっている。一番上の行)にいる。
リビジョン4に戻したい。
ちなみに、リビジョン4の内容は、
![](https://blogimg.goo.ne.jp/user_image/63/99/1dc7aaac2b2b9c5e2489e05fcb902276.png)
3段目、ファイル1.txt(が見たいファイルなので)をダブルクリック
(もしくは右クリックして出てきたメニューから変更を表示)
![](https://blogimg.goo.ne.jp/user_image/39/64/e1f7f5e3522e55d2f17f03d1ff3dcf1c.png)
右側のほう、つまり「3」って書いてある。
リビジョン5の現在のファイル内容は・・・おなじようにみてもいいんだけど、
現在のファイルなんだから、そのまま開けば中身はわかる。
![](https://blogimg.goo.ne.jp/user_image/57/a8/d3ea28fe2142e85495195e0395d799e4.png)
4です、4
■トラップ!「このリビジョンに戻す」は、そのリビジョンに資材を戻す意味ではない。
リビジョン4をクリックすると、カーソルがそこにくる(上記の図はクリックしたところ)
その状態で右クリック。以下のように
項目をこのリビジョンへ更新
このリビジョンに戻す
の2つが前に戻りそう・・・だけど、違いが判らない。
というか、普通常識的に考えたら、「このリビジョンに戻す」だよねえ
(結論を知っている人しか「項目をこのリビジョンへ更新」を挙げないか・・)
やってみよう。
まず、このダイアログが出てくる
![](https://blogimg.goo.ne.jp/user_image/72/e0/1e17539e2700181be838a20c849e310a.png)
「変更を取り消す」
をクリック。以下のダイアログがでる
![](https://blogimg.goo.ne.jp/user_image/57/2a/f5306ee01d697f445219eaff9601a23a.png)
フォルダを開いて、ファイル1.txtをみると、3に戻っている
![](https://blogimg.goo.ne.jp/user_image/3f/d6/ce5983fc47fc1a1457365187d2d4a011.png)
めでたしめでたし・・・
「でしたっけ??」
違いますよねえ、この時点では、ファイル2.txtが編集されているから、ファイル2.txtも落ちてきてくれないとまずいですよねえ。
「そのリビジョンに戻す」というのは、そのリビジョンで編集したものに対して、その内容に戻すという意味であって、そのリビジョンの資材全体に戻すという意味ではないのです。
■一般のリビジョンに戻すイメージを実現するのは「項目をこのリビジョンへ更新」
じゃあ、「項目をこのリビジョンへ更新」を実施したらどうなるか・・・
やってみる。以下のダイアログが出てきて)
![](https://blogimg.goo.ne.jp/user_image/0b/29/8de613ea1f97e57342ecb866f8657abc.png)
(マージ済みになっているのは、上で「そのリビジョンに戻す」を前に実行したから。ふつうはここで更新される)
![](https://blogimg.goo.ne.jp/user_image/67/19/983a2e6681abf0d2d8d16c948d4de5b7.png)
このようにファイル2.txt(ほかの場所で作成されたファイル)も更新される。
ちなみに、ほかのところで削除した場合、削除される。
これを修正して、再度コミットすることになる。
■まとめ(大事なことなので2度書きます)
・まずは、「ログを表示」を選択、そこから戻すことができる
・戻すことができるのは自分の作業フォルダのみ。その内容に戻したい場合は、コミットしないといけない。
→バージョン番号が戻るのではなく、前のものに自分のファイルを書き換えるだけの作業をしてくれる
・戻す方法に2つあるが、「項目をこのリビジョンへ更新」を選択して戻す
→「そのリビジョンに戻す」は、それ以前のリビジョンで編集した他ファイルの影響が反映されない
→そうしたいときは、それでいいが、たいていは、意図に反しているのでは?