SubversionクライアントTortoiseSVNによるバージョン管理
2006/01/13
サイオンコミュニケーションズ株式会社
津嘉山 朝也
1. はじめに
ソフトウェア開発などにおいて後々になって修正したプログラムを元に戻したいと思ったときに、どのファイルのどこを修正したのかって、よく忘れちゃってますよね。修正のたびに毎回バックアップしてもよいのですが、それはそれで面倒です。
そんなときに使っていただきたいのが今回紹介するバージョン管理ツールです。今回はTortoiseSVNというソフトを使って、Windows環境ですぐに始められるバージョン管理を紹介したいと思います。
2. バージョン管理とは
バージョン管理って実際何をやっているの?と思われる方、実はやっていることはとても単純です。ファイルを変更したとき、その変更した部分(差分)をデータベース(もしくは別のファイル)に変更した日時や何回目の変更等の情報と一緒に保存しているだけです。
後から、そのデータベースを見ることで、いつ、どのファイルのどこを修正したのかわかるようになっているのです。また、この変更はやらないほうが良かったと思ったら、変更を行う以前のファイルに戻すことも容易に行えます。
3. TortoiseSVNとは
今回、バージョン管理を行うにあたって使用するソフトは「TortoiseSVN」というソフトです。このソフトはSubversion というフリーのバージョン管理ツールのWindows側で動作するクライアントの1つです。本格的なバージョン管理にはSubversionが必要なのですが、LAN内など閉じた環境で1~数名が作業される場合、クライアントツールである、TortoiseSVNのみで十分バージョン管理が行えます。
このソフトは、インストールするとマウスの右クリックで表示されるメニューにTortoiseSVNの項目が追加されるシェル拡張タイプのソフトです。なので、WordやExcelのようにアイコン等をクリックして起動するアプリケーションとはちょっと異なる感じです。

図3-1. TortoiseSVN
インストールについては、以下サイトよりDownloadしてきたTortoiseSVNをクライアントマシンにおいて、インストーラーをダブルクリックするだけなので、省略させていただきます。
TortoiseSVNのWebサイト:
http://tortoisesvn.tigris.org/
4. 作業環境
大規模な開発チーム等で使用する場合になると、同一のファイルでもまったく別の場所のPCから複数の人が修正や追記をしていくため、Apache+Subversionといった構成できちんとバージョン管理用の環境サーバを構築する必要がありますが、今回は、開発者は私1人、バージョン管理の環境もLAN内のサーバ1台、クライアント1台という想定で説明していきますので、「TortoiseSVN」のインストールだけで準備完了です。
サーバとクライアントの仕様は下記のとおりです。
サーバ:
- CPU Celeron 1GHz
- Memory 256MB
- WindowsXP HomeEdition
- ネットワークファイル共有は設定済み
クライアント:
- CPU Pentium4 2.8GHz
- Memory 1GB
- OS WindowsXP HomeEdition
- TortoiseSVN 1.2.6
5. 準備
ここでバージョン管理を始めるにあたっての準備をします。
サーバ側:
まず、サーバとなるマシンの共有フォルダの中にバージョン管理のための情報を保存するフォルダを作ります。(共有フォルダはネットワーク上での共有設定済みという前提です。)今回はdevelopというフォルダを作りました。
作成したフォルダ(develop)をクリックして、マウス右ボタン/TortoiseSVN/ここにリポジトリを作成… を選択し、developフォルダをバージョン管理のための情報を保存するフォルダ(リポジトリ)に設定します。

図5-1. リポジトリ作成
次に、リポジトリの種類を決定します。
今回は「Native Filesystem(FSFS)」を選択します。

図5-2. リポジトリの種類
これでリポジトリの完成です。

図5-3. リポジトリ完成
リポジトリとなったフォルダ(develop)の中は以下のようになります。

図5-4. リポジトリ
クライアント側:
実際に作業を行うクライアントマシンにおいて「SVNチェックアウト」でバージョン管理を行う環境をサーバからコピーします。
今回は作業フォルダの下にフォルダ(work)を作成し、そこで「SVNチェックアウト」を行います。

図5-5. SVNチェックアウト
リポジトリの選択と作業フォルダの指定します。
「リポジトリのURL:」は先ほどサーバ側で設定したリポジトリの場所を指定します。
「チェックアウトディレクトリ(D):」はチェックアウトを行おうとしているフォルダのパスと同じか確認してください。

図5-6. チェックアウトするリポジトリとチェックアウト先
「SVNチェックアウト」が完了するとフォルダに緑のチェックマークが付きます。

図5-7. チェックアウト完了
フォルダ(work)の中は下図のようにバージョン管理用の隠しフォルダ(.SVN)が作成されます。
これでバージョン管理を行う準備が完了しました。
6. 使い方
6.1. 概要
以下に概要を記述します。
1. まず作業フォルダでファイルの追加、変更、削除などを行います。
2. サーバに変更したデータをコミットします。
3. コミットしたデータをリポジトリに保存します。

図6-1. 概要図
6.2. ファイルの追加
はじめにバージョン管理を行うファイルを「追加」します。
下図ではtest.txtをバージョン管理対象に追加する手順です。
まず、workフォルダ内にtest.txtを作成します。作成したtest.txtを右クリックし、「追加」を選択します。

図6-2. ファイル追加
バージョン管理に追加されるファイルのリストが表示されます。チェックを入れて、OKをクリックします。

図6-3. 追加するファイルのリスト
ファイル追加中。

図6-4. ファイル追加中
これでバージョン管理にtest.txtが追加されました。
しかし、まだこの状態は、クライアントマシンの作業フォルダ内に追加しただけで、サーバ側のリポジトリには追加されていません。

図6-5. ファイル追加完了
次に「SVNコミット…」で作業フォルダに追加したファイルのデータをサーバに送ります。

図6-6. SVNコミット
追加や変更のあったファイルが表示されます。問題が無ければOKをクリックします。

図6-7. SVNコミットするファイル
リビジョン:1というのは1回目の更新であることを表しています。
今後SVNコミットを繰り返し行っていくとリビジョンが2、3、4となっていきます。

図6-8. SVNコミット中
SVNコミットが完了すると、緑のチェックマークになります。

図6-9. SVNコミット完了
6.3. ファイルの変更
次にファイルの内容を変更してみます。変更内容はtest.txtにtestと書き込んで上書き保存しました。
変更を行ったファイルには赤いビックリマークが付きます。
この赤いビックリマークは「SVNコミット…」でサーバに変更を反映するまでこのままです。
上記の手順でSVNコミットしてください。

図6-10. ファイル変更
6.4. ログの表示
test.txtについて「ログを表示」して、これまでの変更を確認してみます。

図6-11. ログの表示
ログを表示した状態。

図6-12. ログの状態
以前のファイルとどこが違うのか差分を見てみます。
下図では、リビジョン1のtest.txtと現在作業フォルダにあるtest.txtの相違点を表示します。
リビジョン1の行で右クリックした後、「作業コピーと比較(W)」を選択します。

図6-13. 作業コピーとの比較
差分の表示。
「作業コピーと比較(W)」を選択すると、下図のように違う箇所が行ごとに色違いで表示されます。
左側がリビジョン1のtest.txtで、右側が作業フォルダのtest.txtになります。

図6-14. 差分の表示
以前のファイルに戻す場合。
リビジョン1に戻す場合は、リビジョン1の行で右クリックをして、「項目を特定リビジョンへ更新(U)」を選択します。

図6-15. 項目を特定リビジョンへ更新
戻したいリビジョンがわかっているならば、「特定のリビジョンへ更新…」でも更新することができます。

図6-16. 特定リビジョンへ更新
リビジョンを入力して、OKボタンを押すとそのリビジョンに更新されます。

図6-17. リビジョンの指定
6.5. ファイル名変更
ファイル名を変更するときは、普通のファイル名変更とはやや異なります。
ファイルを右クリックして、名前を変更…を選択。

図6-18. 名前を変更
以下より名前の変更を行います。

図6-19. 名前を入力
名前を変更完了。

図6-20. 名前変更完了
名前の変更をSVNコミットします。

図6-21. 名前変更完了をSVNコミット
6.6. ファイル出力
納品するプログラムとして出力「エクスポート」を行います。

図6-22. エクスポート
出力先の指定。

図6-23. 出力先設定
出力完了。

図6-24. 出力完了
エクスポートされたフォルダ(work)の中。エクスポートされたフォルダには、バージョン管理用の隠しフォルダ(.SVN)がなくなっています。

図6-25. 出力結果
7. 最後に
今回は小規模かつクライアントマシンがWindowsの場合を想定して説明してきましたが、バージョン管理ツールがどのようなものか理解いただけたでしょうか。またTortoiseSVNの使い方については基本的なことしか説明していませんが、説明できなかった部分の中には便利な機能がたくさんあります。興味をもたれた方はぜひ使ってみてください。























