2回に渡ってSubversionの使い方,Subversionとバグ管理システムとの連携について説明してきました。今回から,分散したSubversionのリポジトリを一元管理するSVKについて説明します。SVKはリポジトリの一元管理だけでなく,単体でも個人のバージョン管理の機能を提供しています。
SVKって何?
Subversionからいくつかの派生プロジェクトが生まれました。派生プロジェクトの1つに,2003年から開発が始まったSVKがあります。SVKは複数のバージョン管理システムのリポジトリを統一的に扱うためのツールです。リモートリポジトリとして,SubversionだけでなくCVSやPerforceなど,複数の種類のバージョン管理システムをサポートしているため,これらの違いを意識せずに操作できます。
SVKの一般的な作業フローは図1のようになります。まず,複数のサーバ上にあるリポジトリをローカルのSVKのリポジトリ(注: SVKではローカルのリポジトリのことを正式にはdepotと呼びますが,本稿ではリポジトリと呼びます)にミラーリングします(図1-①と図1-②)。ローカルの作業コピー上で行なった変更は,ローカルのSVKのリポジトリにコミットされ,バージョン管理されます(図1-③と図1-④)。作業がすべて終了した段階でローカルのリポジトリとリモートのサーバのリポジトリを同期して,変更分をサーバのリポジトリに反映します(図1-⑤と図1-⑥)。Subversionなどがチームのバージョン管理で使われるのに対して,SVKは個人のバージョン管理ツールです。
例えば,今携わっているプロジェクトのSubversionのリポジトリhttp://example.com/svn/MyProject/があるとします。このプロジェクトで少し規模の大きな変更を行うことになりました。すべての修正を行ってテストを終えるまでに一週間かかります。バージョン管理は毎日おこなって,昨日と今日の修正分を確認し,場合によっては昨日の修正に戻す必要があります。変更を始めるとすべての修正が終わるまではプログラムは動作しないかもしれません。チームの他の人たちは別の作業を行っていて,プログラムが動かないと作業が中断することになります。
このような状況でSVKは威力を発揮します。SVKのリポジトリにSubversionのリポジトリのミラーを作成します。次にミラーからSVKのリポジトリ内にローカルブランチを作成し,このブランチで作業します。作業中は,ローカルで行った変更も差分や履歴を確認し,必要に応じて古いリビジョンに巻き戻しできます。すべての作業を終了し動作確認したら,Subversionのリポジトリに変更分をコミットしてチームの全員が最新のコードにアクセスできるようになります。
SubversionがCVSの基本的なバージョン管理の機能を改良したものであるのに対し,SVKは複数のソースコード管理を統一的に扱う手法を提供しています。下記は,SVKが提供している主な機能です。
- オフライン操作:いくつかのバージョン管理システムはオフラインで操作できません。SVKではオフラインでも,リモートのリポジトリに対する読み込み専用の操作が可能です。
- 分散操作:オフラインでもSVKへのリポジトリへの操作はすべて可能です(オンラインになったときに変更を同期できます)。
- マージのトラッキング:ブランチ間のマージは自動的にトラッキングします。そのため,マージするときに手動でリビジョン番号を指定するなどの煩わしさはありません。
- パフォーマンスとスケーラビリティ:他のバージョン管理システムと比較してパフォーマンスやスケーラビリティに優れていると言われています。
- 複数のバージョン管理システムのサポート:リモートのリポジトリとして,SubversionだけでなくCVSやPerforceなどとミラーリング,同期できます。
- データの取り扱い:Subversionと同じ仕組みでテキストデータやバイナリデータを扱います。バイナリデータも効率的に差分をとることができます。
SVKのインストール
SVKのインストール方法を説明します。SVKの最新バージョンは,バージョン2.0.2です。Ubuntu LinuxではSVKのパッケージが提供されているので,次の方法でインストールしてください。
$ sudo aptitude install svk
MacOS Xでは,http://www.guiffy.com/download/download.htmlからユニバーサルバイナリのインストーラがダウンロードできます。SVKをインストールする前にあらかじめSubversionをインストールしておいてください。
Windows環境には,SVKのインストーラが提供されています。http://svk.elixus.org/view/SVKWin32からSVK 2.0.2のインストーラをダウンロードしてインストールします。インストールはグラフィカルにできますが,SVKの操作はすべてコマンドラインです。Windowsの「スタート」メニューにはSVKは登録されないので注意してください。
次のツールをインストールしておくと,マージの時に自動的に使用されます。TortoiseMergeはTortoiseSVN(Subversionクライアントのwindowsシェル拡張)をインストールするときに同時にインストールされます。
インストールが終ったらWindowsを再起動してコマンドプロンプトを立ち上げ,次のコマンドを入力してください。
> svk -v
次のメッセージが出力されれば成功です。
This is svk, version v2.0.2 (using Subversion bindings 1.4.4)
Subversionと違いSVKはまだGUIクライアントがないなど,一般の開発者には敷居が高いかもしれません。コマンドラインの操作も慣れればGUIクライアント以上の操作性を発揮することもあります。これを機会にコマンドラインの操作に親しんでみてください。

