ノード: How Watches Work, 次: , 上: Watches (CVS As Telephone)



How Watches Work

CVS はデフォルトでは各作業コピーを独立したサンドボックスとして扱いま す。あなたが変更をコミットするまでは、あなたが作業コピーで何をしてい るのか、誰にもわかりません。そしてあなたも、他の人が自分の作業コピー で何をしているのかなんてわかりません、通常のコミュニケーション方法を とる以外ないのです。たとえば廊下で「ねえ、いま parse.c いじろうと思 うんだけどさ、コンフリクトすんのヤだから編集するときは教えてね!」な どと叫んだりするしか。

このような非公式なやりかたは、誰が何を担当しているか全般について皆が 知っているようなプロジェクトならうまくいきます。が、このやりかたでは 大人数の開発者がコードベースの全てをいじっていて、かつコンフリクトを 避けたいような場合にはうまくいかないでしょう。このような場合、メンバー が地理的に分散しているので、お互いの分担責任領域に頻繁に踏み込む必要 があっても廊下で叫び合うわけにはいきません。

CVS には監視(watch)と呼ばれる機能があって、ある時刻に誰がどのファ イルをいじっているかをお互いに通知し合うことができます。ある開発者が、 あるファイルを監視設定すると、他のだれかがそのファイルをいじり 始めるとその開発者に CVS から通知が来ます。その通知は普通メールで送 信されますが、他の方法に設定することもできます。

監視を使うには、リポジトリの管理エリア内のファイルを1つか2つ変更 しなければなりません。また、開発者はチェックアウト/アップデート/コミッ トのサイクルに余分な手順を加えなければなりません。リポジトリ側の変更 はごく簡単なものです: CVSROOT/notify ファイルを編集して、CVS がどのように通知すればいいかを設定します。CVSROOT/users ファ イルに電子メールアドレスの行を追加します。

作業コピー側では、開発者は CVS に対し、どのファイルを監視したい かを CVS に指示し、他の誰かがそれらのファイルを編集し始めたら CVSが 通知を送れるようにします。また、ファイルを編集し始めた時やし終わった 時には CVS にそれを知らせなければなりません。CVS はそれを受けて、そ のファイルを監視している他の人に通知します。これらの手順 を実現するコマンドを次に示します:

watchコマンドは通常の CVS コマンドのパターンとは違い、もう一 段階サブコマンドを必要とします。cvs watch add..., cvs watch remove...,などなど。

以下の例で、リポジトリ側で監視を有効にするやりかたと、開発者側で の監視の使いかたを見ていきます。2人のユーザ、jrandom と qsmith を例にとります。同じプロジェクトの作業コピーをそれぞれが持っていて、 それらは別のマシン上にあるかもしれません。全ての例において、 $CVSROOT 環境変数が設定してあると仮定しますので、cvs コマンドに -d <REPOS> をつける必要はありません。