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> をつける必要はありません。