・入門CVS 大月美佳 秀和システム
いろいろ書いてあって便利なのですが、惜しむらくは文章にまとまりがないため読みにくい点です。入門にはこれ一冊でよいでしょう。
・CVS -バージョン管理システム- Karl Fogel著 でびあんぐ監訳 オーム社
読み応えのある本です。CVSの解説も丁寧で、マージなどCVSの奥深さを学べます。オープンソースの解説もとても面白いです。
WebコンテンツをCVSで管理したくなりますが、CVSが更新された際に、公開されている作業ファイルも自動的に更新されると便利ですね。その仕掛けを作ります。以下、「入門CVS」を参考にしましたので、詳細はそちらをご覧下さい。一つ注意がありますので、末尾に書きました。
まず、WebコンテンツをCVSのリポジトリ(webrep)として登録します。WWWに公開するディレクトリは~/public_htmlだとします。
まず、公開するためのリソース(作業ファイル)を配置(checkout)しましょう。
$ cd ~/public_html
$ cvs checkout webrep
このリポジトリが更新された際に、Webコンテンツを更新するには、
$ cd ~/public_html/webrep
$ cvs update -d -P
すればよいわけです。この更新作業を自動化します。
まず、2つスクリプトを用意します。以下、$CVSROOTと$HOMEは自分の環境に合わせて書き直してください。
========= auto_update.pl ========== #!/usr/bin/perl # cvs path $cvs = '/usr/bin/cvs'; $usage = "usage: auto_update.pl WORKDIR [MODE]"; # process arguments die $usage, "\n" unless $workdir = $ARGV[0]; $chmod = $ARGV[1] ? "; chmod -R $ARGV[1]" : ""; # main update process which must be executed in background. $cmd = "(cd $workdir; $cvs -q update $chmod) &"; system($cmd); # last message. $date = `date`; chomp($date); $mesg = "$workdir automatically updated at $date"; print "$mesg\n"; =============================== ========== update.sh ========== #!/bin/sh $CVSROOT/CVSROOT/auto_update.pl $HOME/public_html/webrep ===============================
_ auto_update.plは、CVSROOT/に保存し、CVS自身が管理できるようにします。CVSROOT/checkoutlistにも設定するとよいでしょう。
update.shは、~/public_html/bin/に置きます。2つのファイルとも、実行権に注意しましょう。
処理の流れは次のようになります:
cvsにcommitする→update.sh→auto_update.pl→cvs update。
cvsにcommitした時にトリガとなるコマンドは、CVSROOT/modulesに書けます。update.shを緩衝させたのは、modulesファイルの中では引数を渡せないからです。
ここに、
webrep -i $HOME/public_html/bin/update.sh webrep
と書きます。トリガされるモジュール名はwebrepで、また、-iオプションでcommitでトリガされることを示します。
注意:update.sh内の引数で、モジュール名まで含めていることに注意してください。そうしないと、CVSが管理しているモジュール全てが展開されてしまいます。