■付録B CVSの関連ツール ■付録B CVSの関連ツール ■■B.1 情報の収集と匿名アクセス CVSの周辺ツールについては、Molliさんのページが詳しいでしょう(下記URL参照)。また、そこからもリンクが張られていますが、SourceForgeというオープンソースの開発を積極的に支援しているサイトにもCVSのカテゴリがあり、2001年2月段階で45個ほど登録されています。ただし、SourceForgeに登録されたツールには、企画段階のものから、実装初期などの開発者以外には使えない段階のものまで混ざっているため、注意が必要です。 なお、オープンソース運動に開発者として積極的に参加したいという場合は、SourceForgeは外せないでしょう。SourceForgeはオープンソースソフトウェアの開発者にCVSリポジトリ領域を提供しています。登録ユーザならCVSリポジトリに対して読み書きができますし、登録していないユーザであっても、匿名(anonymous)アクセスでスナップショットを取得することができます。 これまで、CVSの使い方を学んできましたから、CVSリポジトリへアクセスし、スナップショットを取得することは難しくないはずです。SourceForgeの場合のCVSリポジトリへの匿名アクセスについて、手順を確認してみます【図B.1】。 【図B.1】SourceForgeのCVSリポジトリに匿名でアクセスしてみる ▼ % cvs -d :pserver:anonymous@cvs.cvsbiff.sourceforge.net:/cvsroot/cvsbiff login (Logging in to anonymous@cvs.cvsbiff.sourceforge.net) CVS password: % cvs -z 3 -d :pserver:anonymous@cvs.cvsbiff.sourceforge.net:/cvsroot/cvsbiff checkout CvsBiff cvs server: Updating CvsBiff U CvsBiff/README U CvsBiff/cvsbiff.tcl ▲ この例では、cvsbiffというツールを取得してみます。まず、匿名ユーザ「anonymous」でログインします【1行目】。このとき表示されるプロンプトには、単にEnterキーを押してください。パスワードは要りません、というか入れてはいけません【3行目】。ログインが済んだら、次は匿名ユーザの情報でチェックアウトします【4行目】。ちなみに、cvsbiffの場合、モジュール名がCvsBiffとなっており、登録名と違っていました。うっかり、モジュール名に「cvsbiff」と指定してしまうと、「そんなファイルはない」と怒られてしまいます。前もってSourceForgeに設置されているcvsweb(これから紹介するウェブインターフェース)を介して、モジュール名を確認しておくとよいでしょう。 【4行目】のcheckoutコマンドの実行時に渡しているオプション-zは、本文では説明しませんでしたね。これは、「gzipと同じ圧縮法で転送データを圧縮し、転送するように」という指定です。-zオプションの後ろの数字で、圧縮のレベルを指定します。指定できる数値は1から9までで、数字が大きくなるほど圧縮率が高くなります。CVSリポジトリの置かれた計算機の計算能力は高いが、転送速度が遅いという場合は、このオプションを活用すると良いでしょう。圧縮には計算能力が幾分必要です(最近の計算機なら大丈夫とは思いますが)。 どうです? cvsbiffをチェックアウトできましたか? なお、匿名アクセスを許可したリポジトリを提供しているのは、SourceForgeだけではありません。その他のCVS関連ツールについても、自前のCVSリポジトリに匿名アクセスを認めているサイトは多いのです。CVS用のツールですので当たり前かも知れませんが、FreeBSDなどでは、すべてのソースコードがCVSリポジトリで提供されていますので、匿名アクセスの手順に慣れておけば便利でしょう(ただしユーザ名とパスワードは例と異なる場合もありますので、そのサイトの説明をよく見てください)。積極的にチャレンジしてみてください。それでは、MolliさんのサイトやSourceForgeで紹介されていたり、そのほか筆者が便利そうだと思ったものについてざっと紹介してみようと思います(使ったことがある方が少数ですので、どこか間違っているかもしれません。そこはご愛嬌ということで)。 ▼Molliさんのページ URL http://www.loria.fr/cgi-bin/molli/wilma.cgi/rel ▼SourceForge URL http://sourceforge.net/softwaremap/trove_list.php?form_cat=53 ★画像 ■■グラフィカルユーザインターフェース CVSのコマンドの実行やそれに伴うファイルの変化などをグラフィカルに表現してくれるGUI(グラフィカルユーザインターフェース)は沢山あります。すべてを紹介することはできませんが、主要なものを可能な限り多く取り上げたいと思います。 ■■■WinCv Windows OS 第2章でインストールについて紹介したWindows環境用のGUIです。Windows 95/98/NT/2000/MEで動くことは確認しました。 WinCvsは、C++で書かれたCVSのためのフロントエンド(インターフェース)の一群のうちの1つで、開発元のCvsGuiは、いくつかのプラットフォームに対しフロントエンドを提供しています。現在Mac OS用にMacCvsが、Unix用にgCvsが提供されており、これらについては後段で取り上げます。CvsGuiによるプロジェクトは、最近SourceForgeを利用するようになったので、開発中のスナップショットをB.1節で紹介した匿名アクセスの手順で入手することができます。 また、スクリプト言語であるTcl(Tool Command Language)のWindows版をインストールすることにより、メッセージウィンドウで対話的にcvsコマンドを利用することができるようになります。さらに、マクロによる自動化も可能です。日本語化キットが京大マイコンクラブの山田 聡さんによって作成・配布されていおり、WinCvs 1.2の正式リリースで、機能が充実しました。 ▼CvsGuiプロジェクトのホーム(http://www.wincvs.org/ も実体は同じ) URL http://www.cvsgui.org/ ★画像 ▼Tcl開発・実行環境のWindows版を作成・配布しているサイト URL http://dev.scriptics.com/software/tcltk/ ▼WinCvs 1.2のShift-JISごった煮版 URL http://www.kmc.kyoto-u.ac.jp/~slakichi/barn/ ▼WinMerge http://winmerge.sourceforge.net/ ★画像 オープンソースなファイルマージツールです。SourceForgeにて開発者募集しています。 ▼ファイルのマージに便利なツール(商用/WinCvsの外部diffとして利用可)。 http://www.araxis.com/merge/index.html ▼vss2cvs http://www.laine.org/cvs/vss2cvs/ Microsoft Visual Source SafeからCVSへ移行する時に役立つ、Perlスクリプトです。 ■■■MacCvs Mac OS CvsGuiプロジェクトが提供するMac OS用GUIです。WinCvsと同様にTklが使用できます。2001年2月にリリースされたMacCvs 3.1(安定版)は、GUSI 2.1.5、cvs-1.11、Tcl 8.3に対応しています。Mac OS Xの対応は現在作業中の模様で、cvs-machという名前でアルファバージョンが提供されています。 また、MacCvs 3.1のベータ版はMac OS Xにも対応していますので、奇特な方は、ぜひ人身御供に。同サイトでは、Mac用のbison(mwbison)とflex(mwflex)も配布されているようです(開発者向け)。 ▼MacCVS配布元(CvsGui.org) URL http://www.cvsgui.org/ ■■■gCvs UNIX X Window System GTK+ もともと、GIMPという画像編集ソフト用に開発されたGTK+というGUIツールキットを利用した、UNIXのX Window System用GUIです。gCVSを使用するには、GTK1.2以上が必要となります(GNOMEユーザであれば問題ないと思います)。2001年3月時点では、1.0のまだアルファ版しか提供されていません。ソースコードから構築するか、RedHat Linux 7.0ならば、RPMおよびSRPMパッケージが提供されています。 ▼CvsGui.org URL http://www.cvsgui.org/ ▼GTK+(The GIMP Toolkit)フリーのGUIツールキット http://www.gtk.org/ ★画像 ■■■MacCVS MacOS Mac OS用のフリーのCVSクライアント。Netscape社に支援されて開発が進められていましたが、現在はSourceForgeに移動しボランティアベースで開発が進められているようです。本書執筆時点では、配布形式になっていないので、最新版を利用したい場合には、CVS経由となります。古いリリース(2.5b2)は、http://www.maccvs.org/download/から入手することができます。 ▼MacCVS 2.5b2の配布元 URL http://www.maccvs.org/ ▼SourceForge(MacCVS Pro) URL http://sourceforge.net/projects/maccvspro/ ★画像 ■■■MacCVSClient Mac OS これもMac OS用のフリーのCVSクライアントです。2001年3月時点の最新バージョンは1.6で、68K用とPPC用が配布されています。 ▼MacCVSClient URL http://www.heilancoo.net/MacCVSClient/ ■■■jCVS Java実行環境 完全にJavaで書かれたCVSクライアントです。以下のサイトでは、ウェブインターフェースであるjCVSletの開発・配布もおこなっていて、これを介してソースツリーを閲覧することができます(サイト内は今ひとつ分かりにくい構成になっているため、たどり着くのが大変ですけど)。 ▼開発元のICE Engineering社 URL http://www.trustice.com/java/jcvs/ ▼ICE Engineering社のコンテンツへのリンクのみ URL http://www.jcvs.org/ ■■■TkCVS Tcl/Tk 8.1以上 Tclで書かれたGUIツールキットであるTkを利用したGUI版CVSです。TkCVSの実行には、Tcl/Tk 8.1以上が必要となります。またこのツールも、SourceForgeの開発支援を利用していますので、リポジトリからスナップショットを入手することができます。 Tcl/TkはフリーUNIXディストリビューションには大抵含まれているはずですが、SourceForgeにあるTclのページからリンクを探し、最新版を入手してもよいでしょう。Windowsの場合には、現在のWindows版Tcl配布キットには、Tkが含まれているので、これを利用するとよいでしょう。 ▼TkCVSホームページ URL http://www.twobarleycorns.net/tkcvs.html ★画像 ▼SourceForgeにあるTkCVSのページ URL http://tkcvs.sourceforge.net/ ▼SourceForgeにあるTclのページ URL http://tcl.sourceforge.net/ ■■■SmartCVS Windows OS 宣伝文句によれば、Microsoft Visual Source Safeの使いやすさと、CVSのパワーを結合したツールということみたいです。2001年10月には商用版がリリースされる予定で、それまでのベータ版はフリーで使うことができます。 ▼SmartCVSホームページ URL http://www.smartcvs.com/ ■■■LinCVS Qt 2.0以上 C++で書かれたクロスプラットホーム対応GUIツールキット、Qtを利用したGUI版CVSです。クロスプラットホームといえ、ここで実際に配布されているバイナリは、UNIX版のみで、WindowsのQtを利用する場合はコンパイルが必要です(しかも人身御供となるでしょう)。 ▼LinCVSホームページ URL http://www.lincvs.org/ ★画像 ▼Qtのホームページ URL http://www.trolltech.com/ ■■■Pharmacy UNIX X Window System Gtk+ X Window Systemのデスクトップ環境のひとつ、GNOMEに準拠したGUI版CVSです。名前の由来は、CVS/Pharmacyという名前の薬屋さんがあるためらしいです(余談ですが、薬屋さんのホームページはhttp://www.cvs.com/ということです…)。2000年の3月にN. Adam WalkerさんからMatthias Kranzさんに管理者が交代し、プロジェクトホームページがSource Forgeに移りました。しかし、現在は、更新はあまり活発ではありません。 ▼SourceForgeのPharmacyページ URL http://pharmacy.sourceforge.net/ ▼GNOMEのホームページ URL http://www.gnome.org/ ■■■TortoiseCVS Windows OS(Explorer) これまで紹介したツールとは、ちょっと毛色が異なります。TortoiseCVSは、WindowsのExplorerを拡張してCVSの機能を利用するためのプラグインです。バージョン管理下にあるファイルは、状態により色分けされます。また、リポジトリ内のアイテムを右クリックすると表示されるショートカットメニューで、diffをとったり、コミットしたりといった操作ができるようになります。 ★画像 ▼TortoiseCVSのホームページ URL http://www.cvsgui.org/TortoiseCVS/index.html ■■B.3 Webインターフェース WebインターフェースはCGIなどを経由して、CVSのコマンドを実行し、その結果をWebページ上で眺められるようにしたものです。Webインターフェースに分類されるツールとしては、リポジトリのさまざまな状態を見ることができるcvswebが有名です。このcvswebを一部に取り込みつつ、より高度な操作ができるようにしようと、さまざまなツールが開発されているようです。 ■■■cvsweb HTTPD Perl Webインターフェースとして最も有名なものでしょう。 SourceForgeでも、各プロジェクトのCVSリポジトリを閲覧するためのインターフェースとしてcvswebを利用しています。各ファイルのログ、履歴、各リビジョンとの比較、注釈(cvs-1.10以降)などを非常に見やすい形で閲覧することができます。特にリビジョンの比較をおこなった場合、2列に並べられ、変化の様子が色分けされる点は秀逸です。ファイルの表示順も「名前順」や「更新時間順」などで、並べ替えることができます。 cvswebは、まずFreeBSDの開発用にBill Fennerが開発したものを、Henner Zellerさん、Henrik Nordstro:mさん、Ken Coarさんらが拡張してきました。そのためライセンス形態はBSDライセンスとなっています。このツールもご他聞にもれず、CVSリポジトリへの匿名アクセスを用意しています。 ▼cvswebホームページ URL http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi/ ★画像 ▼GNUプロジェクト URL http://www.gnu.org/ ▼CVSweb(類似品) http://www.spaghetti-code.de/software/linux/cvsweb/ なお、同サイトでは、cvswebeditというファイル追加のインターフェースを提供するCGIスクリプトを公開していますが、cvswebeditの開発そのものは現在休止しているようです。 cvswebの設置には、CVSだけでなく、RCSも必要であし(RCSはGNUのサイトから入手してください)。Windows NT版については、cvsnt serverの項を参照してください。また、cvswebには日本語ログの文字コードがJISであった場合に、表示が化けるという問題が報告されており、それを回避するためのパッチ(cvsweb.diff.txt)を別途用意する必要があるでしょう。 ▼cvsweb.diff.txtの配布元 http://www-vox.dj.kit.ac.jp/nishi/cvsbook/ ■■■ViewCVS HTTPD Python cvswebに着想を得て作られたというWebインターフェースです。オブジェクト指向スクリプト言語Pythonで実装されています。cvswebとほとんど同じ機能を提供しています。 加えて、Bonsaiへの問い合わせ機能の一部を利用できますが、問い合わせ機能を利用するには、フリーのデータベース「MySQL」とPhytonからMySQLを利用するためのモジュール「MySQLdb」が必要となります。ライセンス形態はBSDライセンスです。 ▼ViewCVSホームページ URL http://www.lyra.org/viewcvs/ ★画像 ▼Phytonホームページ URL http://www.python.org/ ▼MySQLホームページ http://www.mysql.org/ ▼MySQLdbホームページ http://dustman.net/andy/python/MySQLdb ■■■jCVSlet HTTPD Servlet Java言語で実装されたWebインターフェースで、他のツールとは違い、CGIではなくServletとして動作します。開発・配布元はjCVSと同じです。cvswebと似ていますが、historyやannotation機能は組み込まれていないようです。その代わり、Java言語向けの機能として、JavaDoc文書へのリンクが張られるようになっています。設定は、Java Servletの組み込みをしなければならないので、ちょっとややこしいと思います。Java Servletの実装まわりについては、「Jakartaの成果を日本語化しよう」という有志による「Ja-Jakarta」にあるTomcatについての説明などを参考にすると良いだろう。 なお、Jakartaはオープンソースで高品位なJavaプラットホームを提供することを目指すプロジェクトです。ApacheのJava Servler拡張については、ApacheJservのホームページを参考にしてください。 ▼jCVSlet配布元 URL http://www.trustice.com/java/jcvs/ ▼Ja-Jakarta URL http://www.ingrid.org/jajakarta/ ▼ApacheJservのホームページ http://java.apache.org/jserv/ ■■■Bonsai HTTPD Perl CVSリポジトリに対して、さまざまな問い合わせをおこなうためのWebインターフェースです。例えば、「どのブランチの、何日以内に変更されたファイルはどれか?」などという問い合わせができるように設計されています。下記のホームページで、Netscape(Mozilla)のソースツリーに対して動いている様子を見れるので、一度覗いてみると良いでしょう。このシステムを利用して、ソースツリーに何が起きてるかを把握することができる「Tinderbox」というシステムも公開されています。 入手方法は、MozillaのCVSリポジトリに匿名アクセスして、チェックアウトするしかないようです。 匿名アクセスする手順と、モジュール名(mozilla/webtools/bonsai)はホームページに書かれているので、使ってみたい場合には頑張ることです。ただし、問い合わせの処理の実体であるデータベース、MySQLが必要であるなど、設定はかなり難しいようです(筆者は実際に設置したことはありません)。 ▼bonsaiホームページ URL http://www.mozilla.org/bonsai.html ★画像 ▼Tinderboxのページ http://www.mozilla.org/tinderbox.html ■■■cvsQuery HTTPD Perl Bonsaiの類似品で、Bonsaiのインストールがあまりに煩雑であったため作成されたというもの。このパッケージはSourceForgeのCVSリポジトリから入手できます。 MySQLと、MySQLにアクセスするためのPerlモジュール「DBI.pm」、CGIの処理モジュール「CGI.pm」が必要です。DBI.pmは、データベースの標準インターフェース(DBI)を提供するためのPerlモジュールです。これらのモジュールは、Perlのモジュール配布サイト(もしくはこの配布形式とシステムの一般名称)であるCPAN(Comprehensive Perl Archive Network)から入手することができます。次項で取りあげるFreepositoryのホームページにCPAN経由での入手方法、および設定方法が詳しく記述されているので、参考にするとよいでしょう。 ▼SourceForgeのcvsQueryページ URL http://cvsquery.sourceforge.net/ ▼CPAN(一例) URL http://www.cpan.org/ ■■■Freepository CVSのWebインターフェースというよりは、CVSをバックエンドに持つ貯蔵庫といった感じのツールです。Webページからファイルの追加・削除・公開などの操作をおこなうことができます。パスワードで認証するため、SSLに対応したApacheWebサーバであった方がよいでしょう(RedHat Linux 7.0のものは対応済みです)。さらにFreepositoryをインストールするためには、オープンソースのデータベース管理システム「PostgreSQL」と、データベースにアクセスするためのPerlモジュール「DBI.pm」、それからDBI経由でPostgreSQLを使えるようにする「DBD-Pg」が必要です。 ▼Freepositoryのホームページ URL http://www.freepository.com/ ★画像 ▼PostgreSQLのホームページ http://www.postgresql.org/ ▼PostgreSQLの日本語メーリングリストのページ http://www.sra.co.jp/people/t-ishii/PostgreSQL/index.html ■■B.4 統合開発環境(IDE)との連携 WindowsやMac OSで使用されている各種統合開発環境(IDE)からCVSが使用できれば、うれしい人は大勢いるでしょう。有志により開発された、統合環境を拡張するためのプラグイン(アドインともいう)があるのでここで紹介しましょう。 ■■■abCVS Windows OS CodeWarrior 5 MetroWerks社のCodeWarriorでバージョン管理を実現するためのWindows用プラグインです。 コマンドライン版のcvs.exe(WinCvsの配布セットに含まれています)を必要とします。WinCvsは推奨となっていますが、必ずしも必要ではありません。執筆時点ではalphaバージョンとなっており、2001年3月にエクスパイアするとのことです。皆さんが本書を読む頃には、新しいバージョンがリリースされていることと思われます。より詳しい情報については、以下のホームページをご覧ください。ソース、バイナリのダウンロード、および各種文書(インストール方法、FAQなど)が用意されています。 ▼abCVSホームページ URL http://www.iaanus.com/abCVS/ ★画像 ■■■CWCVS Mac OS CodeWarrior 1.7.4(CodeWarrior Gold 11以降) abCVSと同様に、MetroWerks社のCodeWarriorでCVSを利用したバージョン管理を実現するためのMac OS用プラグインです。これにより、CodeWarrior IDEを捨てなくても、MacCvsを使用することができるというのがうたい文句です。 コピーの取得、ファイルの管理(追加、移動、削除)、チェックイン・チェックアウト(IDEでの用語で、editとcommitに対応するようです)、レポート生成、リリース管理などの機能を提供してくれます。 なお、リポジトリからのチェックアウト(CVSでのcheckout)は、CWCVSからおこなうことはできないようです。pserverを利用した接続は可能です。CWCVSは、$20のシェアウェアです。使い続けるには、料金を払ってください。 ▼CWCVSホームページ URL http://www.electricfish.com/products/CWCVS/ ★画像 ■■■CvsIn Windows OS VisualC++ 5.0もしくは6.0 VisualC++からCVSリポジトリにアクセスするためのプラグインです。使用にあたってはWinCvsが必要となります。 ▼CvsInホームページ URL http://www.geocities.com/kaczoroj/CvsIn/ ■■■CVSSCC Windows OS MicrosoftのソースコードコントロールAPIである「SCC」に対応したCVSのIDE実装を提供しようとするプロジェクトです。まだ完成していないので、使い辛いようです。 ▼cvssccホームページ URL http://members.home.net/preston/cvsscc.html ★画像 ■■■Jalindi-Igloo Windows OS CVSSCC同様、SCCAPI互換IDEからCVSを利用するためのモジュールです。こちらは、WinCvsのDLL、「cvs2ntslib」を利用しています。ホームページには、互換IDEと動作確認の状況が一覧になっているので、利用にあたっては、まず目を通しておくべきでしょう。 ▼Jalindi-Iglooホームページ http://www.jalindi.com/igloo/ ★画像 ■■B.5 テキストエディタとCVS 世の中にはほとんど統合開発環境といってもよいようなテキストエディタが存在します。特に、UNIX起源のEmacsとその仲間(Xemacs、Muleなど)は、システム自体がEmacs lispというプログラミング言語の実行環境となっていて、Emacs lispで書かれたプログラムを追加していくことにより、自身の動作をどんどん拡張していくことができます。 EmacsはWindows OSへの移植も進んでいるため、利用者も増えているのではないでしょうか。まだ、CVS自体の知名度が低いためか、日本で使われているWindows用テキストエディタでCVSに対応したものは少ないようです。 商用ソフトウェアですが、「Peggy Pro」はその点珍しい存在といえるでしょう。ちなみに、Windows OSの定番テキストエディタ、「秀丸」にはRCSを使うためのマクロがあるようです。作者の秀まるおさんのホームページからたどれる、ライブラリのページに置かれています。興味があれば覗いてみてください。 ▼秀まるおのホームページ URL http://hidemaru.xaxon.co.jp/index.html ■■■VC+Ediff Emacs VCとEdiffはEmacsには標準で含まれています。VCは汎用のバージョン管理システムへのインターフェースで、RCS、SCCS、CVSなどに対応しています。そのため、CVSユーザにとっては直感的な理解が難しく、あまり使いやすいとはいえません。とはいえ、かなりのことができるので、次に紹介するpcl-cvsのインストールが難しければ、VCを使ってみるのもよいでしょう。 Ediffは、それ自体非常に強力なファイル比較・マージ支援ツールですので、使い方を覚えておいて損はないと思います。 ■■■Pcl-cvs Emacs VCやEdiffと異なりCVSに特化しているため、根強い人気があります(筆者もこちらを利用しています)。チェックアウト機能はないため、コマンドラインでチェックアウトしておく必要があります。使用にあたっては、elibというデータ型や、文字列操作などの汎用操作を提供するEmacs lispのライブラリが必要なので、あらかじめインストールしておく必要があるでしょう。 このライブラリはpcl-cvsの最新版と共に、以下のFTPサイトで配布されています。以前pcl-cvsの保守管理者がGreg WoodsさんからStefan Monnierさんに変わったため、その挙動も大分変わってしまったことがあります。挙動が不安定な時期もありましたが、現在はかなり安定しています。バージョン1.x系列が前の管理者の、2.x系列が新管理者の作業となります。 なお、2001年2月時点での、最新版(RedHat Linux 7.0用のSRPM、RPM(emacs用))については筆者が作成したものを用意してあります。サポートページに置いておきますので、人身御供になっていただける方は、ご自由にぞうぞ。 ▼pcl-cvs URL ftp://rum.cs.yale.edu/pub/monnier/pcl-cvs/ ■■■PeggyPro Windows OS Peggy Proはアンカーシステムズという会社が開発している商用のテキストエディタです。Peggy、Peggy Pro、Peggy Pro for Oracleという3種類のPeggyが存在しますが、CVSに対応しているのはPeggy Pro(for Oracle)で、ただのPeggyの方は対応していません(ただし、RCSには対応しています)。30日間、試用ができるので試してみるのもよいでしょう。 ▼アンカーシステムズ URL http://www2.noritz.co.jp/anchor/ ★画像 ■■B.6 CVSサーバ機能に関するもの 本節では、CVSのネットワークを介したアクセスに関して、まだまだな点をなんとか解決しようという試みを紹介します。安全なアクセスについての考察は、http://cvs.m17n.org/cvs/links.ja.htmlにまとめられています。 ■■■CVS-nserver CVS ネットワーク機能を強化するために、コードの整理がおこなわれ、いくつかの拡張が加えられたCVSです。 CVS-nserverは、nserverという新しい接続方式を提供します。この接続方式を利用すると、より安全な認証(PAMなど)と実行(root権限を使わない、リポジトリ外のファイルにはアクセスできない)がおこなえるようになります。しかし、パスワードの暗号化にはまだ未対応です。 ▼CVS-nserverホームページ URL http://alexm.here.ru/cvs-nserver/ ★画像 ■■■CVS server for NT (プラットホーム:Windows NT/2000) Windows NT/2000用のCVSサーバです。NTサービスとして動き、2401ポートで待ち受け、接続毎にcvs.exeを呼び出します。オプションとして、NTドメインを介したユーザ認証をおこないます。 また、パイプを経由した認証をおこなう「:ntserver:」というものに対応したWinCVSのDLLを提供しますが、これはNT以外では機能しません。つまりWindows 95ではpserverしか使えない、ということになります。 以下のページではWindows NT版cvswebの配布もおこなっています。運用方法については、http://www.devguy.com/fp/cfgmgmt/cvs/cvs_admin_nt.htmが参考になるでしょう。 ▼CVS server for NTホームページ URL http://www.cvsnt.org ★画像 ■■■cvsauth CVS pserverでの接続をより安全におこなえるようにするためのパッケージです。複数のリポジトリがある場合にも、cvsauthにより、pserverをroot権限で実行せずに済みます。また、CVSユーザが勝手にユーザを追加することをできなくしています。さらに独自のSSLに基づく認証を提供することで、パスワードが平文で流れることを防いでくれます。通信の中身は平文で流れます。CVSにあてるパッチが2つ提供されていますが、それぞれあてる対象が異なるので注意が必要です。1つは、cvsauthをサーバとして動かすために必須のパッチで、サーバのみにあてればよく、クライアントにあてる必要はありません。もう1つは、SSLの機能を提供するためのパッチで、SSLにより経路を暗号化して認証をおこなう、sserverという接続方式を新規に提供します。こちらのパッチは、この接続方式を使うクライアントにあてなければなりませんが、サーバにはあてる必要はありません。sserverという接続方式を追加しないで、pserverで通信する場合には、あてる必要はありません(その場合、従来通りパスワードは平文で流れてしまいます)。 ▼SourceForgeのcvsauthホームページ URL http://cvsauth.sourceforge.net/ ★画像 ▼SCVS(類似品) URL http://cuba.xs4all.nl/~tim/scvs/ SSHで通信路を暗号化する方法とその実装を含んだツールです。これはプログラマでなければ設定が難しいでしょう。 ■■■cvsd UNIX chrootとsuidを使用して、pserverの実行をより安全にするためのラッパー(Cプログラム)です。chrootは、プログラムが限られたディレクトリ以下しかアクセスできないように制御するための機能で、suidは実行ユーザを変更するための機能です。 ▼cvsdホームページ URL http://guv.ethz.ch/~flip/cvsd/ ★画像 ■■B.7 出力(ログなど)の変換ツール 本節では、CVSコマンドの出力などを各種形式に変換するツールのうち、コマンドラインやcron、loginfoなどから呼び出して使えるものを紹介します。分かりやすく説明すると、気が向いたときや定時に自動起動したり、コミットした時に自動的に起動するようにしておく、といった使い方ができるツールです。各自自分の都合にあわせて使ってください。 ■■■cvs2cl.pl CVSのログの出力をまとめて、GNUのChangeLogスタイルに変換するPerlスクリプトです。最近のバージョンではXML形式でも出力できます。コミット時か、タグを付けた時に自動生成すると良いでしょう。類似品として、cvs-1.10.8のcontribに含まれるrcs2logというシェルスクリプトがありますが、こちらは、RCSファイルのセットからChangeLogスタイルのファイルを生成します。rcs2logの提供者はPaul Eggertさんです。ちなみに、同じcontribに含まれるツールに、コンフリクトを起こしたChangeLogファイルをマージするPerlスクリプト「clmerge」というものもあります(提供者:Tom Tromeyさん)。 ▼cvs2cl.plホームページ URL http://www.red-bean.com/cvs2cl/ ★画像 ■■■cvs2html, cvsstat cvs2htmlはcvs logコマンドの出力をHTML形式に整形、出力するためのPerlスクリプトです。B.3節で紹介した「Webインターフェース」と異なり、対話的には動作しません。cronで定期的に処理をさせるか、commitコマンド実行時に自動生成させるのがよいでしょう。cvsstatはファイル追加・削除・変更といった状態の変化を、よりわかりやすいフォーマットで出力してくれるPerlスクリプトです。これはコマンドラインで実行するのが普通でしょう。 ▼cvs2htmlホームページ URL http://cvs.sslug.dk/cvs2html/ ★画像 ■■■cvs-exp.pl cvs logコマンドの出力は、ブランチもトランクも、さまざまなタグが混在しているため、非常に分かりにくくなっています。これをいくらか変化がわかるような形で出力するためのPerlスクリプトがcvs-expです。cvs-expでも視認性が改善されないようなら、ツリー表示機能のあるGUIを使った方がよいかもしれません。 ▼cvs-expホームページ URL http://www.cs.rice.edu/~ssiyer/code/cvs-exp/ ★画像 ■■■cvshist cvs historyコマンドの出力を、HTML形式に整形して出力するためのPerlスクリプトです。イベント種類は、オプションでは切り替えられないようです(-cオプションでcheckoutコマンドに限定することはできる)。 ▼cvshistホームページ http://www.ginini.com/software/cvshist/ ★画像 ■■■Alexandria Alexandriaは「CVS/javadoc/ソースコード/文書」管理システムです。 JDK(Java Development Kit)は、昔からソースコード内に特定の書式で書かれたコメントを抽出し、関数やクラスが相互にリンクしあったHTML文書として生成するjavadocという機能を提供してきました。Alexandriaはこれを積極的にCVSリポジトリに格納されたJavaソースコードに適用し、JavaDoc文書を生成します。 また、ソースコード館のクロスリファレンスも生成してくれますし、プロジェクト文書も管理します。JavaDoc、通常の文書の閲覧に加えて、cvswebをインターフェースとして提供します。バグレポートデータベース、ダウンロード機能、プロジェクトホームページ、メーリングリストなども提供してくれます。ソースコードのビルドと、そのビルドのテストもおこないます(通常loginfoから起動するように設定します)。Alexandriaが管理する文書は、XMLの形式で貯えられ、XSLを介してHTML文書として表示されます。 Alexandriaプロジェクトは、遠隔リポジトリもローカルと同じように閲覧することなどを将来の目標としています。Alexandriaプロジェクトは、Jakartaプロジェクトが提供するビルドツール「Ant」、Apache XMLプロジェクトが提供するXML Javaパーサ「Xeros」、それからXMLをHTMLに変換する機構「Xalan」を内部で使用しています。これらはAlexandriaの配布キット中にライブラリとして含まれているので、別途導入する必要はありません。 筆者はまだ試してないので、どの程度使えるものなのか不明ですが、面白そうなので、ぜひ試してみたいと思っています(ちょうどJavaプログラムを書きたいと思っていたところですし…)。Javaプログラマなら是非試してみてください! Alexandriaは、FTP、またはCVSによる匿名アクセスで入手することができます。FTP/CVSサーバのアドレスや、ログインに必要なパスワードなどの情報は、Alexandriaのホームページ内に掲載されています。 ▼Alexandriaホームページ http://jakarta.apache.org/alexandria/ ★画像 ■■■log(log_jp) 本文でも紹介しましたが、loginfoコマンドにcommitコマンド実行時のリポジトリの変化を記録・通知させるために、Kevin Sambornさんが設計したPerlスクリプトです。 log_jpはknjwrp patchを適用した場合にできるフィルタで、メール通知時にnkfを利用し、当該ログをJISコードに変換します。logとの違いは、このフィルタ処理の部分だけです。 logはcvs-1.10.8のcontribに含まれています。contribにはこの他にも同じような機能のPerlスクリプト「mfpipe」が含まれています。mfpipeの提供者はJohn Clyneさんです。 ■■■commit_prep, log_accume この2つのコマンドは組み合わせて使います。コミットが複数のディレクトリにわたった場合に個々のログメッセージを1つのログメッセージにまとめ、結果をメールしてくれます。RCSキーワードもチェックします。これらのツールも、cvs-1.10.8のcontribに含まれています。提供者はDavid Hamptonさんですが、Greg A. Woodsさんにより、かなり書き換えられているようです。 ■■■rcs-to-cvs 既にRCSの管理下にあるファイルを、CVS管理下におくための変換ツールです。cvs-1.10.8のcontribに含まれています。提供者はPer Cederqvistさん(cvs infoの著者ですね)ですが、David MacKenzieさんによりshバージョンに書き直されました。 ■■■sccs2rcs SCCSのファイル(群)を、管理情報(日付、著者、ログなど)を維持しながらRCSのファイル(群)に変換するためのツールです。 cvs-1.10.8のcontribに含まれています。提供者はKen Coxさんです(contribに含める際、Brian Berlinerさんがいろいろと変更を加えています)。 ■■B.8 その他のユーティリティ これまでの分類には当てはまらない(型破りな?)ツールを紹介しましょう。 ■■■cvs_acls.pl commitinfoに設定したプログラムは、コミットの実作業前に実行され、その結果によってはコミット動作を止めさせることもできると第6章で説明しました。このcvs_aclsはcommitinfoに設定することで、アクセス制御をおこなえるPerlスクリプトです。availという管理ファイルを新たに作成し、独自の文法でユーザとアクセス可能なモジュールを細かく制御できます。cvs-1.10.8のcontribに含まれており、提供者はLowell Skoogさんと記されています。 ■■■cln_hist.pl historyファイルが大きくなり過ぎたときに、「お掃除」して新しいhistoryファイルを作成するPerlスクリプトです。最後のチェックアウト情報などを回収し、大きな不整合がでないように調整してくれます。cvs-1.10.8のcontribに含まれており、提供者はDavid G. Grubbsさんと記されています。 ■■■cvspwd pserverのパスワード管理ツールです。また、これとは別にcvspwd2というツールもあります。 ▼cvspwdホームページ URL http://members.nbci.com/dewwy/ ★画像 ▼cvspwd2のホームページ URL http://www.pajamian.dhs.org/ ★画像 ■■■cvsu リポジトリにアクセスすることなく、作業コピーだけで、変更の状態を調べたり、前の状態に復帰したりするためのツールです(ものによっては取り返しがつかなくなるものもあるので、使用には十分注意してください)。 類似機能を提供するものに、cvs2htmlのサイトで配布しているcvschkがあります。cvschkはオフライン状態で、リポジトリにアクセスするのが困難な場合などに、アクセスせずに作業コピーの変化を調べるためのPerlスクリプトです。 ▼cvsutilsホームページ URL http://www.red-bean.com/cvsutils/ ★画像 ■■■CVSup FreeBSD開発支援のために開発された、CVSリポジトリのミラーリングツールです。rsyncなどでリポジトリを丸ごとコピーしただけでは、それに加えた変更と、オリジナルに加えられた変更が食い違ってしまいます。こうした整合性の調整などをおこなってくれるのがCVSupです。転送アルゴリズムにrsyncのアルゴリズムを採用しているため、動作が速く、快適です。また、暗号化にも対応しています。Modula-3という言語で実装されているため、コンパイルするにはこの言語のコンパイラが必要となります。 もともとがFreeBSDで開発されたものだけに、Linuxで使用するには少々面倒ですが、CVSupのRPM自体はPostgreSQLのサイト配布されていますので、バイナリの入手は容易です。しかし、Modula-3のライブラリを用意することが難しいでしょう。筆者はPolytechnique Montreal Modula-3(pm3)というパッケージ(1.1.15)のRPMを探して作成しましたが、動作の確認まではおこなっていません。 ▼CVSupホームページ URL http://www.polstra.com/projects/freeware/CVSup/ ★画像 ▼PostgreSQL提供のRPMの置かれている場所 ftp://ftp.postgresql.org/pub/CVSup/ ▼Polytechnique Montreal Modula-3(pm3)ホームページ URL http://m3.polymtl.ca/m3/ ■■■mod_cvs Apache アクセスされたWebページがCVS管理下にあった(つまり作業コピーであった)場合、該当するファイルが更新されているかWebサーバにチェック(して更新)させるための、Apache Webサーバ用拡張モジュールです。 なお、アクセスできるのは、ローカルなファイルシステム上のリポジトリに限られます。つまり、pserverなどでは動きません。 mod_cvsは、B.3節で紹介した「Webインターフェース」などとは異なります(リポジトリ内部を閲覧するものではありません)。また、チェックアウトはしないため、あらかじめチェックアウトしておく必要があります。 ▼CVS Module for Apache URL http://www.sub.nu/mod_cvs/ 以上、筆者の独断と偏見で選んだツールについて駆け足で説明してみました。これ以上の詳細については、各ツールのホームページなどを参照してください。「こんなツールもあるのか」という参考になれば幸いです。