WindowsでSVNを利用「TortoiseSVN」
- 2008-04-13
- no comments
- Category: Knowledge | Web Design | Web Service | Windows
前回のエントリ” デザイナーだからこそSVNを使いたい「Assembla」”で、SVNについての簡単な説明と、そのSVNを簡単に利用するためのウェブサービス”Assembla“の利用登録~リポジトリの作成までを説明しましたが、SVNを使用するには、あともうひとつ、SVNクライアントが必要です。
TortoiseSVNのダウンロード
今回はWindows上での利用を想定して、SVNクライアントのひとつである“TortoiseSVN”の説明とTortoiseSVNを利用した管理の仕方を書いておこうかなと思います。
TortoiseSVNは以下のURLでダウンロードできます。
http://tortoisesvn.net/downloads
ダウンロードできる種類が4つ存在しています(2008年4月13日現在)が、32bit環境か64bit環境かで別れていて、それぞれダウンロードの形式が違うというだけですので、普通はMSI形式のファイルをダウンロードすれば大丈夫かと思われます(下図)。

日本語言語ファイルのダウンロード
同ページの下の方にある”Language packs”から”Japanese”をダウンロードします。こちらも32bit環境と64bit環境がありますので、上でダウンロードしたTortoiseSVNと同じ環境のものをダウンロードしてください。

TortoiseSVNと言語ファイルのインストール
ダウンロードしたTortoiseSVNのインストーラをダブルクリックしてインストール開始。指示に従ってインストールします(おそらく再起動を一回挟むことになるかと思われます)。次に言語ファイルのインストーラをダブルクリックしてインストール。
これでインストールは完了なのですが、現状では、英語版のままですので、日本語を適用しましょう。
TortoiseSVNを日本語にする
TortoiseSVNはWindowsのエクスプローラ上で実行されるので、わざわざアプリケーションを起動せずとも利用することができます。では、日本語を適用するために、TortoiseSVNの設定をしましょう。
デスクトップの何もないところ(アイコンとかに触れない状態)で右クリックします。右クリックメニューをたどって、”TortoiseSVN”の”Settings”を選択します(下図)。

“TortoiseSVN Settings”ダイアログが開かれるので、”General”の”Language:”から”日本語”を選択し、[OK]ボタンをクリックします。これで、TortoiseSVNを日本語で利用するための準備が整いました(下図)。

ひとまずお疲れ様です。
SVNの利用
では、実際にAssemblaで、SVNによる管理をしてみましょう。
既存のデザイン用フォルダがあったとします。ここでは便宜上 C:¥Documents and Settings¥ユーザー名¥My Documents¥test¥ とします。このフォルダ内にはアップロード用のファイルを格納する”htdocs”やら、Photoshopなどの作成中のデータを含んだ”_souko”フォルダが存在しています。このtestフォルダを管理しようという前提で、話を進めることにします(下図)。

まず、バックアップ
初回だけは何が何でもバックアップを取っておいたほうがいいでしょう。不慣れでミス連発は自分もやりましたので……、ということで、C:¥Documents and Settings¥ユーザー名¥My Documents¥test¥ をどこかにバックアップしてください。
AssemblaからリポジトリのURLを取得
前回のエントリーの最後で作ったプロジェクトのリポジトリURLを取得するために、Assemblaにログインします。
ログイン直後の画面で、”My spaces”内にあるプロジェクト名をクリック(下図)。

ヘッダの[Trac/SVN]をクリックし、”SVN Url”にあるURLをコピーします(下図)。

SVNチェックアウト
Windowsに戻り、C:¥Documents and Settings¥ユーザー名¥My Documents¥test¥ フォルダを開きます。
フォルダ内で右クリックし、”SVN チェックアウト”を選択します(下図)。

チェックアウトとは、SVNリポジトリ内にあるファイルを最初にクライアント側に落とし、かつ「これからSVNで管理を始める旨をサーバに送信」する作業のことです。
開かれた”チェックアウト”ダイアログの”リポジトリのURL:”に先程コピーしたAssemblaのSVN Urlを貼り付け、[OK]ボタンをクリック(下図)。

“TortoiseSVN”ダイアログが開き、「空ではありません!」という警告が出ると思いますが、これはそのまま[はい]で大丈夫です(下図)。

IDとパスワードを聞いてきますので、AssemblaのログインIDとパスワードを入力します。認証を保存しておけば、逐一聞かれることはないと思います(下図)。

チェックアウトプロセスを表示するダイアログが表示され、しばらくすると、”完了 リビジョン: 0″といった表示が出ます。これは「バージョン:0(ゼロ)がチェックアウトされた」という意味です。要約すると「バージョン:0(初期状態のリポジトリ)があなたのローカル環境にダウンロードされました。同時にSVNリポジトリでの管理が開始されます。」ということになるでしょうか。確認が完了したら、[OK]ボタンをクリック(下図)。

Windowsで”隠しフォルダを表示”に設定しているなら、C:¥Documents and Settings¥ユーザー名¥My Documents¥test¥ フォルダに”.svn”というフォルダが見えているはずですが、これがバージョン管理用のフォルダです。これは消さないように気をつけてください。見えてない人は、チェックアウトの段階でエラーが発生していない限りは単に”隠しフォルダを表示しない”設定になっている方だと思われますので、気にしなくていいです。
ファイル/フォルダの追加
さて、現在の状態は「SVN環境の利用を開始する」宣言をしただけですので、実際にファイルを送らなければ、バージョン管理を行えません。……ということで、現在のtestフォルダ内のファイルを管理開始させましょう。
まずtestフォルダ内のファイル/フォルダをまとめて選択し、右クリックメニューから”TortoiseSVN”→”追加”を選択します(下図)。

“追加”ダイアログが開くので、[OK]ボタンをクリック。
“TortoiseSVN 追加中”ダイアログが開かれ、即完了しますので、[OK]ボタンをクリック。この作業により、「SVNリポジトリにファイル/フォルダを追加する」旨の命令をローカル側に準備できました。追加の命令が完了しているため、testフォルダとその中のファイルやフォルダのアイコンには追加マーク(+)が付いているかと思われます。
命令の送信「コミット」
ファイル/フォルダそのものとそれらの変更点をリポジトリに送信することをバージョン管理ではコミットといいます。それでは実際にコミットをしましょう。
testフォルダ内の何もないところで右クリックし、”SVNコミット”を選択(下図)。

コミットされる内容を確認するダイアログが開きます。コメントを入力しておけば、バージョン番号以外のバージョンの判断材料が増えますので、積極的に入力しておきましょう。変更のあったファイル/フォルダやその変更の内容を確認し、[OK]ボタンをクリックすれば、コミットが開始されます(下図)。

コミットプロセスのダイアログが開き、ファイル/フォルダとその変更状態が送信されているのが確認できます。送信が完了すると、最後に”完了”と表示され、リビジョン(バージョン番号)が上がります。確認が終わったら[OK]ボタンを押せばプロセスの確認は終了です(下図)。

リポジトリの最新状態を落としてくる「更新」
「一人で複数のPCに同じプロジェクトを同じリポジトリで管理している」場合や、「複数の人で同じリポジトリを利用している」場合があったとします。前者では「もう一方のPCで新しい状態をコミットした」、後者では「他の人が新しい状態をコミットした」状況において、自分がこれから作業しようとしているローカル環境とリポジトリを比べた場合、リポジトリの方が最新の状態であることになりますが、この最新の状態をローカルに落としてくることを“更新(アップデート)”といいます。
testフォルダの何もないところを右クリックし、”SVN 更新”を選択します(下図)。

リポジトリ上の更新されたファイルがローカル上に落とされてきます。更新プロセスのダイアログが表示され、リポジトリから更新ファイルを落としてきている様子が見えます。完了したら[OK]ボタンをクリック。
更新はほとんどのケースにおいてローカル環境で作業する前に行っておくべきです。リポジトリ上に更新されたファイルがあるにも関わらず、同じファイルをローカル環境で作業してコミットしてしまうと、変更点の異なるファイルが共存してしまうことになるため(バッティング)、SVNではエラーとして報告されてしまいます。その状況下で更新すれば、大半のファイルはリポジトリ上の新しい状態と、ローカルの古い状態が合成された状態(マージ)になるかと思われます。そのファイルを開けば新しい部分と古い部分が表示されてますので、新しいもしくは古いどちらかの記述を削除したうえ、ファイル名と同じ名前を持つディレクトリ(隠しフォルダ扱いになっているかもしれません)を削除してコミットすれば、その状態をリポジトリに反映することができます。
特定のリビジョンに戻す
さて、やっと前回のエントリの冒頭で述べた「ファイルを特定の時点まで戻す」作業についてですが、SVNではコミット毎のファイルの状態を記憶しています。数度のコミットが行われていくうちに、「3回前の状態に戻したいな」というような状態が出てくると思います。
バージョンを戻したいファイルを右クリックし、”TortoiseSVN”→”特定のリビジョンへ更新”を選択します(下図)。

“更新”ダイアログが開かれるので、[ログを表示]ボタンをクリック(下図)。

“ログメッセージ”ダイアログが開かれます。ここでリビジョンを一覧から選択すると、当該リビジョンをコミットした当時に残したコメントが表示されます。戻すリビジョンが決定したら、そのリビジョン上で右クリックし、”このリビジョンに戻す”を選択(下図)。

“このリビジョンに変更してもよろしいですか?”という旨のダイアログは[はい]ボタンをクリック。
ファイルを確認してみましょう。該当するリビジョンに戻っているはずです。しかし、このままではローカル上のファイルが戻っただけなので、「リビジョンを戻した」旨をコミットしなければなりません。……というわけでコミットしましょう。
ファイルの削除
SVNで管理されているフォルダの中では、ファイルの削除もSVNの作法に従います。削除したいファイルを右クリックし、”TortoiseSVN”→”削除”を選択。アイコンに削除マークがついたらコミットしましょう。リポジトリに削除された旨と、削除の実行が送信されます。
ファイル/フォルダの移動
2つ開かれたフォルダ間を普通にドラッグ&ドロップ操作でファイル/フォルダ移動させるのが従来のWindowsにおける一番オーソドックスなフォルダ間移動の手法ですが、SVNで管理されているフォルダでは以下の方法を取ります。
移動させたいファイル/フォルダをマウスの右ボタンを使ってのドラッグ&ドロップ。ドロップ先で動作の選択を行います(下図)。

まとめてコミット
ファイル単位でコミットする以外に、SVNで管理された中での上位のフォルダ、最上位のフォルダをコミットすると、そのフォルダ以下の階層で行われた全ての変更をコミットすることができます。特にファイルの移動なんかで、移動元と移動先に変更があったときや、まとめて作業を行ったがために、各所で変更が起きたときなどにまとめてコミットしておくと楽かもしれません。
最後に
TortoiseSVNに限らず”OSのGUIを用いたSVNクライアント”において注意しておきたいのは、SVNで管理されているフォルダの中では、SVNの作法に従うべきであるということです。普段どおりの操作でファイル/フォルダのdeleteキーなどでの削除や、普通のドラッグ操作などでのファイル/フォルダ移動を行うと、それらの命令はリポジトリに送られないため、リポジトリから「そんなファイルはない」(意訳)とか「さっきあったアレどこいった」(超意訳)というようなエラーを返されます。このあたりが普段のWindows操作と違いが出るので、めんどくさく思ったりするところなのですが、これに慣れるとかなり厳密なファイルのバージョン管理が行えるようになります。
以上例に漏れずまとまりの悪い長文でした。
2008-11-22追記
ファイルがバッティングした際の簡単な対処方法を追加しました。