cvsweb + CvsGraph

cvsweb とは、 Web ブラウザによって CVS リポジトリの内容を閲覧するためのツールだ (画面イメージ)。 そして CvsGraph は、 cvsweb と連携しつつ、各ファイルの変更履歴をツリー状に図示してくれるツールである (画面イメージ)。

CVS のオリジナルパッケージにはリポジトリの内容を一覧するためのツールが含まれていない。 リポジトリの置かれているファイルシステムに直接アクセスできるならば、 ls などでリポジトリディレクトリの中味を表示させてやることもできるが、 リモートクライアントから CVS サーバにアクセスしている場合はそうもいかない。 というわけで、cvsweb のようなツールが必要とされるわけである。


cvsweb のインストール

cvsweb は perl で書かれた CGI スクリプトである。 cvsweb が動作するためには以下の条件を満たす必要がある。

パッケージは、ここからダウンロードできる: cvsweb.tar.gz (Rev. 1.112) (36k)
(アクセスできなかった場合は、 cvsweb からダウンロードすること)

適当なディレクトリで上記 tarball を展開する。 cvsweb には気の利いたインストーラなどは添付されていないので、 各自、自分の環境に合わせて手動でインストールする必要がある。 まず、以下の項目を決定しておく。

決定した項目の内容に従って、cvsweb.cgi と cvsweb.conf を修正する。 ここでは /home/httpd に apache を介してアクセスできるデータがあるとして、 /home/httpd/cgi-bin/cvsweb というディレクトリを作成し、 そこに cvsweb.conf および cvsweb.cgi をコピーすることにする。 上記項目の設定は以下のようになる。

CGI ファイルのパス /home/httpd/cgi-bin/cvsweb/cvsweb.cgi
構成ファイルのパス /home/httpd/cgi-bin/cvsweb/cvsweb.conf
アイコンファイルのパス /home/httpd/icons/back.gif など
CVS リポジトリのパスおよび名前 /proj/cvsroot および "Project"

修正内容は次のとおりである。 (ここに以下の全パッチと簡単なコマンド操作履歴を書いたテキストファイルを置いておく)

上記の修正が終わったら、後は次のようにしてファイルをコピーすればよい。

$ su
# mkdir /home/httpd/cgi-bin/cvsweb
# cp cvsweb.cgi /home/httpd/cgi-bin/cvsweb/
# cp cvsweb.conf /home/httpd/cgi-bin/cvsweb/ 

CvsGraph のインストール

CvsGraph は php3 と Cで書かれたプログラムから構成されている。 したがって、apache などで php3 モジュールが動作可能になっている必要がある。

CvsGraph パッケージは、ここからダウンロードできる: cvsgraph-1.3.0.tar.gz
(アクセスできなかった場合は、 CvsGraph からダウンロードすること)

適当なディレクトリで上記 tarball を展開したら、configure & make を行う。

$ tar xzf cvsgraph-1.3.0.tar.gz
$ cd cvsgraph-1.3.0
$ ./configure
$ make  

configure & make あるいはプログラムの実行時に、 「GD ライブラリが無い」というようなエラーが出るかもしれない。 その場合は、http://www.boutell.com から GD ライブラリをダウンロードしてきてビルドすること。 私の環境ではすでに GD ライブラリがインストールされていた (doxygen 絡みで graphvis をインストールした時に勝手に入ったのかも?)。 詳しくは、添付の README を読むこと。

CvsGraph を cvsweb と連携させるために、cvsweb.cgi に次のようなパッチを当てる必要がある。

@@ -378,8 +378,9 @@ if (!-d $cvsroot) {
 #
 # See if the module is in our forbidden list.
 #
-$where =~ m:([^/]*):;
+$where =~ m:([^/]*)/(.*):;
 $module = $1;
+my $pathinrepository = $2;
 if ($module && &forbidden_module($module)) {
     &fatal("403 Forbidden", "Access to $where forbidden.");
 }
@@ -641,7 +642,7 @@ elsif (-d $fullname) {
 		next if (!defined($fileinfo{$_}));
 		($rev,$date,$log,$author) = @{$fileinfo{$_}};
 		$filesfound++;
-		print "<tr bgcolor=\"" . @tabcolors[$dirrow%2] . "\"><td>" if ($dirtable);
+		print "<tr bgcolor=\"" . @tabcolors[$dirrow%2] . "\"><td nowrap>" if ($dirtable);
 		print "<A NAME=\"$_\"></A>";
 		if ($nofilelinks) {
 		    print $fileicon;
@@ -650,6 +651,14 @@ elsif (-d $fullname) {
 		    print &link($fileicon,$url);
 		}
 		print " ", &link($_, $url), $attic;
+#*** BS Entered graphing option
+		print "<a href=\"/cvsgraph/cvsgraphwrapper.php3" .
+			(length($query) != 0 ? "$query\&" : "?") .
+			"r=" . urlencode($cvsroot) .
+			"\&m=" . urlencode($module) .
+			"\&f=" . urlencode($pathinrepository . ($attic ? "Attic/" : "") . $_) .
+			"\"><img src=\"/icons/image3.gif\" border=\"0\" width=\"20\" height=\"22\"></a>";
+#***
 		print "</td><td> " if ($dirtable);
 		download_link($fileurl,
 			$rev, $rev,  

実は上のパッチはオリジナル とはちょっと変えてある。オリジナルではファイル名の隣に "Graph" という表示が出るのだが、 上のパッチではアイコン が出るようになっている (画面イメージ)。 また、表示が2行にならないように (非推奨とは知りつつも) td タグに nowrap を追加している。

次は、CvsGraph 一式を /home/httpd/html/cvsgraph ディレクトリに格納することを前提に、 以下のようなパッチを当てる。格納場所を変えるなら、それに合わせて以下のパッチも修正すること。

上記の修正が終わったら、後は次のようにしてファイルをコピーすればよい。

$ su
# mkdir /home/http/html/cvsgraph
# cp cvsgraph cvsgraph.conf cvsgraphwrapper.php3 mkimage.php3 /home/http/html/cvsgraph/

初出: 2002年10月30日


トップページへ / Last modified: 2002-10-30 17:12:16 JST
Created by OKA Toshiyuki < oka-t@fides.dti.ne.jp >