そもそもSubversionとは何か?
Subversionとは、バージョン管理システムとして広く利用されているCVSの管理スタイルを踏襲しつつその欠点を解決したバージョン管理システムです。Google Trendsによると、日本ではSubversionの検索数がCVSをすでに上回っており(2007年3月現在)、関心が高まってきています。
実際、筆者の周りでもSubversionを利用しているプロジェクトが増えてきています。本稿では、SubversionをEclipseから利用するプラグインSubversiveとプロジェクト管理システム「Trac」との連携を中心とした利用ノウハウを提供します。
Subversionのメリット
チェンジセットによるリビジョン管理
バージョン管理システムにおいて、ローカルで編集した内容をリポジトリへ反映するために行う作業を、コミットといいます。
CVSはファイルごとにリビジョン番号が振られているため、このコミット作業はファイルごとに行っていきます。そのため、変更点が複数のファイルにまたがっている場合、変更点を把握するのが困難でした。
それに対し、Subversion(以下、SVN)はではリポジトリ全体にリビジョン番号を付けてバージョンの管理をしているので、コミット作業は関連ファイル全体を一度に行います。
実際に、この違いがどのように便利なのでしょうか?
ある機能に修正を加える状況を思い浮かべてください。その修正をするに当たって、複数のファイルを変更しなければならない場合、CVSのようにファイルごとに管理されていては、それが1つの修正によっての変更だということが分かりにくく、どのような経緯でそれぞれの変更がなされたかが不明確です。
まず、CVSによるバージョン管理を図1に示します。図1の例では、A、B、Cと3回の仕様変更による修正・コミットが行われています。CVSのようにファイルごとにリビジョン番号を付けて履歴を管理していると、A、B、Cそれぞれの仕様変更でどのファイルが修正されたのか、1つのファイルの履歴を見ただけでは把握できません。
CVSに対し、SVNの場合はリポジトリ全体でリビジョン番号を管理しているため、各仕様変更によってどのファイルがどのように変更されたのか簡単に分かるようになっています。このおかげでバグトラッキングシステムなど、変更管理システムと一緒に利用した場合、故障や機能変更に対するそれぞれの変更の差分を簡単に確認できるようになります。
ファイルのコピー、リネームによるコミットの履歴の引き継ぎ
CVSでは、ファイルをコピーしたり、ファイルの名前を変更したりすると、ファイルの履歴を残せませんでした。
SVNでは、ファイルをコピーする場合や、ファイル名の変更をする場合でも、ファイルの履歴を引き継げます。リファクタリングによりパッケージ名やクラス名の変更を行う場合、CVSでは履歴は引き継げませんでしたが、SVNは引き継げます。SVNはリファクタリングにより強いバージョン管理システムだといえます。
プロトコルにHTTPを利用可能
CVSでは、リモートリポジトリへアクセスする際、独自プロトコルまたはSSH接続を使って接続します。これでは、ファイアウォールによってHTTP接続以外の接続が拒否されてしまっている場合、使用できません。
SVNは、ファイアウォールがある場合でも、WebDAVによってHTTP接続が可能となっているため、そのような状況でもリモートリポジトリにアクセスできます。
柔軟なマージ機能
マージ機能とは、並行開発を行う際にある開発バージョンに反映した変更を別の開発バージョンに反映する機能です。
例えば、バージョン1.0、1.1、1.2、……と、1.x系のバージョンのメンテナンスをしながら、バージョン2.0、2.1と2.x系の開発を行う場合を考えます。1.xと2.xはほぼ同じコードをベースに開発している場合、2.1で発生したバグが1.2でも発生している可能性があります。このような場合、バージョン2.x系への修正をバージョン1.x系へマージすることによって、別の開発ブランチへバグ修正等の変更を反映できます。
CVSでは、マージ機能を利用するには、基本的にはタグを付与した場所からのみサポートしていましたが、SVNでは任意のリビジョン間の差分をマージできるようになっており、より柔軟なマージを行えます。
フック機能でできること
CVSと同様にフックの機能を利用することにより、コミットの前後で特定の処理を実行できます。このフック機能により、次のようなことができます。
- コミットログが記述されていない場合は、コミットさせない
- コミットログに故障管理IDや仕様変更IDが記述されていない場合は、コミットさせない
- コードチェックを行い、問題があった場合、コミットさせない
- コミット後、自動的にビルド/テストを行い、テスト結果やカバレッジのレポートを作成
Subversiveプラグインをインストール
Eclipseでは、デフォルトではSubversionをサポートしていません。そのため、EclipseからSubversionを利用するには、追加でプラグインをインストールする必要があります。
EclipseのSubversionプラグインとして用意されているプラグインは、SubversiveとSubclipseの2つです。ここでは、Eclipse FoundationへのProposalが承認されたSubversiveを紹介します。Subversiveは、すでにEclipse上にプロジェクトが作成されており、近々Eclipse Foundationで開発が行われるようになります。将来的には、Eclipse本体に取り込まれる予定です。
Trac月でSubversionのリポジトリの作成
本稿では、Subversionのリポジトリ作成を簡単に行える、Trac月を使用して、Subversionの使い方を説明します。
コラム Trac月とは
Tracとは、Wikiとバージョン管理システム、課題追跡システムを統合したプロジェクト管理システムで、Ruby on Rails、SpringIDEなどの開発で利用されています。Windows環境にプロジェクト管理ツールであるTracやSubversionをインストールするには、これらのソフトウェアのほかにApacheやPythonが必要であったり、ソフトウェアの設定を行う必要があり初心者には導入が困難です。
Trac月では、TracとSubversionが利用できる環境を構築できるインストーラを提供することにより、簡単に構成管理を行う環境を構築します。さらに、Mavenを利用したサンプルプロジェクトが提供されているため、Mavenによるライブラリ管理も簡単に体験できるようになっています。
また、「チケット」を使ってバグや課題を管理できたり、Subversionと連携させることによって(参照:Tracと連携させて開発を「見える化」する)バージョン管理をさらに効率化させることも可能です。
Trac月のインストール
Trac月のWebページに従いTracをインストールします。インストールすると、「http://localhost/svn/SampleProject」でサンプルのSubversionリポジトリへアクセスできるようになります。
Subversiveのインストール
Subversiveをインストールするには、下記アップデートサイトからプラグインをインストールします。
Subversiveのバージョン1.1.0RC6aから筆者(鈴木)によって日本語化したリソースが取り込まれているので、日本語でメニューなどを表示できます。現時点では、すべてのメッセージが日本語化されている訳ではありませんが、今後改良していく予定です。
Copyright © ITmedia, Inc. All Rights Reserved.