ソースコードの全リビジョンを簡単に確認できるViewVC

 大規模な開発プロジェクトに携わるプログラマにとって、バージョン管理システムによるソースコード管理は必須だ。しかし、大規模プロジェクトのファイル操作をバージョン管理プログラムのコマンドライン・インタフェースで行うのは煩雑だ。それに、コマンドラインでは、ファイルやリビジョン間の差分の強調表示や色分け表示はできない。そんなときに役立つのが、Webブラウザベースの便利なコード・ビューアである ViewVC だ。CVSまたはSubversionで管理するソースコード・ツリーを参照して、変更内容を確認したり、ファイル・レベルや行レベルでリビジョンを比較したりできる。他にもさまざまな機能があり、ファイルのチェックアウトやコミット以外であればほとんどの操作を行える。

 ViewVCは、Ubuntu、Gentoo、Fedoraなどのディストリビューションでは、リポジトリからインストールできる。パッケージが用意されていないディストリビューションの場合は、ソースコードのダウンロードも可能だ。ViewVCを使用するためには、Apache2SubversionまたはCVS、lib-apache2-mod-python、GNU diffMySQLのインストールも必要になる。さらに、CVSを使用する場合は、CvsGraphも必要だ。

 Ubuntuの場合、ViewVCのインストール先は/usr/lib/viewvc/で、メインの実行ファイルは/usr/lib/cgi-bin/にある。ApacheにViewVCを認識させるために、/etc/apache2/httpd.confに次の行を追加する必要がある。

ScriptAlias /viewvc/ /usr/lib/cgi-bin/

 また、/etc/viewvc/viewvc.confに編集を加え、下記の太字の部分の情報を追加する必要がある。

svn_roots = svnroot: /path/to/svn/repository #for Subversion
cvs_roots = cvs: /home/cvsroot #for CVS

address = < a href="mailto:youremail@yourservice.com" > youremail at yourservice dot com < /a >

 上記の行中の「svnroot:」と「cvs:」は、ViewVC内でのリポジトリ名を表す。任意の名前で問題ない。また、SubversionとCVSのどちらか一方のみを使うのであれば、不要な方の行を「#」でコメントアウトしておくこと。

 最後に、「sudo /etc/init.d/apache2 restart」を実行してApacheを再起動する。これでソースコードを参照する準備が整った。なお、以下の記事中では、用語の違いを考慮して、表記を簡潔にするために、CVSのタグ/ブランチをリビジョンと表現している。

リポジトリの参照

viewvnc1_thumb.jpg
ViewVCのスクリーンショット

 上で設定したリポジトリを参照するには、Webブラウザを開き、「http://localhost/viewvc/viewvc.cgi」と入力する。まずは、非常に簡潔なページが開き、cvsとsvnrootのいずれかのリンクが示される。目的のサービス名をクリックすると、プロジェクトの概要が表示される。リビジョン情報は、SubversionまたはCVSから取得した内容に基づいており、作成時期、作成者、最後のログ・エントリが表示される。ディレクトリがある各ページには、プロジェクト全体をダウンロードするためのリンクが表示される。また、現在のディレクトリのソースコードをダウンロードするためのリンクもある。ページ下部にはViewVCのヘルプへのリンクがある。ページ上部には、現在参照しているプロジェクト・パスへのリンクと、リポジトリを切り替えるドロップダウン・ボックスがある。CVSで管理するリポジトリとSubversionで管理するリポジトリの切り替えも可能だ。

 プロジェクトのリンクをクリックしてみよう。リポジトリのページを開くと、使用しているバージョン管理システムのディレクトリ構造に従ってリンクが示される。たとえばSubversionの場合、プロジェクトのディレクトリの前に"trunk"というディレクトリがあるのが一般的だ。プロジェクトのルート・ディレクトリに達すると、ファイル、ディレクトリ、リビジョン番号、作成時期、作成者、ログ・エントリについての情報が表示される。内容は、SubversionまたはCVSが管理しているファイルの情報に沿っている。複数のリビジョンがあるファイルをクリックすると、リビジョンのログが表示される。そこから、リビジョンの参照、ダウンロード、注釈表示、比較が可能だ。[view]リンクをクリックすると、指定のリビジョンのファイル全体が表示され、[download]をクリックするとダウンロードできる。[annotate]をクリックすると、ファイル全体が表示され、各リビジョンで行った変更が示される。[select for diffs]をクリックすると、選択したリビジョン番号がページ下部の最初のフィールドに反映され、ページが更新される。差分の表示方法にはいくつかのオプションがある。[Colored Diff]は変更された部分のコードのみをいくつかのスタイルで表示する。[Long Colored Diff]はファイル全体を表示し、変更部分を色分け表示する。[Unidiff]は変更箇所の一覧をPatch互換の形式で表示する。[Context Diff]もPatch互換の形式だが、こちらはコンテキスト情報が示される。[Side by Side]はリビジョンを並べて表示する。

 [Colored Diff]の表示では、リビジョンで加えた変更が番号付きのリンクと共に表示され、変更を行ったユーザ名や、各リビジョンへのリンクも示される。また、上位ディレクトリへ移動する[Parent Directory]、ファイルのリビジョン・ログを表示する[Revision Log]、指定のリビジョンに対応するPatch形式のファイルをダウンロードする[Patch]などのリンクもある。

 ファイルのリビジョン・ログのページには、色付きの差分ページに直接ジャンプするためのリンクがリビジョンごとに用意されている。どのリビジョンとの差分を表示するかはリンクの部分に示されている。1つ前のリビジョンか、[select for diffs]で指定したリビジョンのどちらかだ。また、このページには、いずれかのリビジョン番号を固定するためのフィールドもある。これを指定すると、このページやプロジェクトのインデックス・ページなどで、指定したリビジョンまでしか表示されなくなる。特定のリビジョンをデフォルトで表示する場合などに便利だ。

 多数のリビジョンがあるプロジェクトに関与する場合、SubversionにせよCVSにせよ、コマンドライン・ツールでの操作は煩雑で時間もかかる。ViewVCなら、ソースコードの参照やハイライト表示をスムーズに実現できる。コマンドライン・ツールが不要になるわけではないが、こうしたビューアでソースコード・リポジトリを参照できるのは、開発者、チーム・リーダー、マネージャにとって便利だ。ソースコードの参照やリビジョン間の差分の確認をすばやく簡単に行うことができる。

David Pendellは、過去23年に渡ってプログラミングおよびオーディオ/ビデオ編集などの各種コンピュータ作業に従事しており、Linuxの使用歴については、Red Hat 5.1を皮切りとして各種のディストリビューションの使用経験を有している。

Linux.com 原文(2008年12月2日)