CVSROOT/ の中を見ると、ファイルの作業コピーが RCS リビジョンファイル と並んでいるのが見えると思います:
floss$ ls /usr/local/newrepos/CVSROOT checkoutlist config,v history notify taginfo checkoutlist,v cvswrappers loginfo notify,v taginfo,v commitinfo cvswrappers,v loginfo,v passwd verifymsg commitinfo,v editinfo modules rcsinfo verifymsg,v config editinfo,v modules,v rcsinfo,v floss$
CVS がその動作を決める際にはその作業バージョンだけを見て、RCS ファイ ルは見ません。従って、CVSROOT/ の作業コピーをコミットすると(別のマシン にチェックアウトされていようとも)、CVS は自動的にリポジトリ内のファ イルを更新します。コミットの最後に次のようなメッセージが表示されるの で、何が起きたかわかると思います:
floss$ cvs ci -m "added mp and asub modules" modules Checking in modules; /usr/local/newrepos/CVSROOT/modules,v <-- modules new revision: 1.2; previous revision: 1.1 done cvs commit: Rebuilding administrative file database
CVS は標準の管理ファイルに何があったか知っていて必要に応じて CVSROOT/ を再構築します。CVSROOT/ 中にカスタムファイルを置きたければ (プログラムや rcsinfo テンプレートファイル等)、他のファイルと同様に 扱うよう、CVS に明示的に伝えなければなりません。
これを伝えるために、checkoutlist ファイルがあります。今まで見てきた ファイルとは違うフォーマットになります。
FILENAME ERROR_MESSAGE_IF_FILE_CANNOT_BE_CHECKED_OUT
例えば、
log.pl unable to check out / update log.pl in CVSROOT bugfix.tmpl unable to check out / update bugfix.tmpl in CVSROOT
CVSROOT 中のいくつかのファイルは、伝統的にリビジョン管理下には置かな
いことになっています。1つは history で、これはリポジトリ中の全
ての操作の a running record を保持しており、cvs history
コマンドが使用します(このコマンドは指定されたファイルまたはプロジェ
クトディレクトリについて、チェックアウト、アップデート、タグ付けの状
況の一覧を表示します)。 偶然 history
ファイルを削除してしまっ
たら、CVS はログを取るのをやめます。
注意: history ファイルがパーミッション問題の原因になることがあります が、解決するにはファイルをワールドライタブルにするか、ただ削除するか してください。
リビジョン管理されていない
ファイルには他に passwd ファイルが
あります。それがネットワーク越しにチェックアウトされたとしたら、パス
ワードの信頼性を損うからです(たとえ暗号化されていようとも)。passwd
を checkoutlist に追加するかどうかは、守るべきキュリティの状況を鑑み
て決定してください。デフォルトでは checkoutlist に入っていません。
CVSROOT/ ディレクトリについて最後に2つほど: すごいミスをして、壊れた 管理ファイルをコミットしたあげくどんなコミットも全く実行できなくなっ たとしましょう。ありうる話です。もしそうなったら、管理ファイルを直し てコミットしなおそうとしても、当然できないわけです。これを解決するに は、管理ファイルのリポジトリ内の作業コピーを手で編集して直します。直 せるまで、リポジトリ全体がアクセス不可の状態のままになります。
また、セキュリティを確保するため、CVSROOT/ ディレクトリは信頼できる
ユーザのみが書き込めることを確認してください(信頼できる
という
のは、その人にパスワードの信頼性を損わないだけの能力があってその努力
ができることを信頼できる、という意味です)。*info
ファイルは任
意のプログラムを実行できる権限を与えてしまうので、CVSROOT/ ディレク
トリ中のファイルをコミットまたは編集できる人はすなわち、基本的にはシ
ステムのどんなコマンドでも実行できるということです。このことは心に留
めておくべきです。