Subversionでマイ文書を管理するメリットとコツ
誰とシェアするわけでもないドキュメントであっても、Subversionで管理しています。
週末に部屋の掃除とディスクの掃除をしていて、あらためてSubversionの素晴らしさに心打たれた(?)ので、なんとなく応援エントリ。ご存じの方には今更な話ではありますが…。
メリット1. Microsoft Officeの文書でも管理可能。比較機能も簡単に使える
講義や研修の資料、あるいは報告資料など、定型的な文書って結構多いですよね。特に研修の資料などは「ちょっとだけ違う」バージョンが大量に発生しがちです。Subversionはバイナリで差分を管理しますので、どんなファイルでもバージョン管理が可能。とりわけMicrosoft Office文書は、WordやPowerpointが持っている文書比較機能が使えますので、とても便利。
メリット2. バックアップとして。更にバックアップのバックアップも効率的に
文書リポジトリをPCと別の媒体にしておけば、バックアップ/リストア体制が整ったことになります。バックアップを考えたときに見逃せないのが、リポジトリのシンプルなファイル構造。
例えば、僕が趣味で開発・運営している*ListFreakというサイトは、345ディレクトリに散らばった2374のファイルからなっています。CMSパッケージを使うと、どうしてもファイルが増えがちになりますね。
これをバックアップしようと思うと、全バックアップにせよ差分にせよ、かなり時間がかかります。しかしSubversionリポジトリは下表右列にあるとおりシンプルな構造が維持されています。ちなみにリビジョン(バージョン番号のようなもの)は108。過去に加えた108の変更をすべて覚えていてくれて、このサイズ。リポジトリのフォルダを丸ごとバックアップすればバックアップ完了(もちろん、リポジトリに対して差分バックアップをしていってもいいわけです)。
実ファイル | リポジトリ | |
サイズ | 7,137,801 | 5,103,031 |
ディスク上のサイズ | 14,077,952 | 5,275,648 |
ファイル数 | 2374 | 239 |
フォルダ数 | 345 | 9 |
メリット3. TortoiseSVNだけ
マイ文書管理システムは他人と共有しないので、サーバープロセスは不要。TortoiseSVNだけで全てを賄うことができます。
デメリット1. 過去のバージョンの全文検索ができない
できたらすごいですね(本当にニーズがあるなら、過去バージョンを全てExportしておけばできなくはないのですが)。
あと、Subversionでマイ文書を管理していて感じたちょっとしたコツのようなものをメモしておきます。
コツ1. リポジトリは1つにしない
なぜかというと、失敗して作り直したりしたくなるから(笑)。それ以外にも、フルバックアップが撮りやすいですし、リビジョン番号が上がってくるとログを見るのが遅くなります(多分…)。
僕は、以下のように論理的なまとまり別に複数のリポジトリを作成しています。
c:\data\svn\研修資料
c:\data\svn\サイトA
c:\data\svn\サイトB
小さいリポジトリをたくさん作るデメリットは、僕の使い方では、特に見当たりません。またSVNコマンドを使えばリポジトリの統合・分割も可能なようです(TortoiseSVNで可能かどうかは未確認)。
コツ2. バージョン管理しないファイルもSubversionに入れてしまう
プロジェクトの中にはバージョン管理したいファイルと、そうでないファイルが混じっています。最初は以下のように両者を分けていたのですが、段々面倒になってきます。
c:\data\projectA(バージョン管理しないファイル)
c:\data\svn\projectA(バージョン管理するファイルのリポジトリ)
c:\data\svnwork\projectA(バージョン管理するファイルの作業ディレクトリ)
Subversionをバックアップツールとしても使うと決めてから、下記のように構成し直しました。
c:\data\svn\projectA(バージョン管理するファイルのリポジトリ)の下に、以下のようなディレクトリを作成します。
バージョン管理するファイル\trunk
バージョン管理するファイル\branches
バージョン管理しないファイル
(trunkは最新版を格納するディレクトリ)
その上で、バージョン管理するファイル\trunkを
c:\data\svnwork\projectA\バージョン管理するファイル
に、バージョン管理しないファイルを
c:\data\svnwork\projectA\バージョン管理しないファイル
にチェックアウトします。