ノード: The checkoutlist File, 前: The notify File, 上: The CVSROOT/ Administrative Directory



The checkoutlist File

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/ ディレク トリ中のファイルをコミットまたは編集できる人はすなわち、基本的にはシ ステムのどんなコマンドでも実行できるということです。このことは心に留 めておくべきです。