cvs(5)

名称
cvs - コンカレントバージョンシステムのサポートファイル

注
このドキュメントは長い間アップデートされていません。 cvs(1) に示されてるような (CVS Manual) を調べてください。

書式

$CVSROOT/CVSROOT/commitinfo,v

$CVSROOT/CVSROOT/cvsignore,v

$CVSROOT/CVSROOT/cvswrappers,v

$CVSROOT/CVSROOT/editinfo,v

$CVSROOT/CVSROOT/history

$CVSROOT/CVSROOT/loginfo,v

$CVSROOT/CVSROOT/modules,v

$CVSROOT/CVSROOT/rcsinfo,v

$CVSROOT/CVSROOT/taginfo,v

解説
cvs は、ソースディレクトリの階層的な集合を 管理するシステムです。 cvs を使う際のコマンドと手続きは cvs(1) に記述されています。 cvs は、リビジョン管理されたファイルのマスタコピーを含むディレクトリである ソースリポジトリ を管理し、 ここから開発者の個人的な 作業ディレクトリ へ特定のリビジョンの ファイルをコピーしたり、作業ディレクトリから修正を採り入れたりします。 ファイルの構成という点から見ると、各ソースリポジトリは $CVSROOT の直下のサブディレクトリになります。 ここで示すファイルは補助的なファイルであり、 cvs を利用するにあたって必須ではありませんが、 cvs をより柔軟に操作できるようになります。 cvs により管理されているソースの集合に分かり易い 名前をつけるために、`modules' を利用できます。 `modules' が存在しなければ、開発者は cvs コマンドで ファイルを操作する際に完全なパス名 (絶対パスもしくは $CVSROOT からの相対パス) を指定しなければなりません。 `cvs commit' が実行される際に常に実行されるプログラムを 定義するために、`commitinfo' ファイルを利用できます。 これらのプログラムは、修正、追加、削除されたファイルが本当に コミットされる準備ができているかどうかをチェックする「コミット前の」 チェックとして用いられます。 このチェックを、ソースリポジトリの一部 (もしくは全体) から 特定の人やグループを除外するために利用している人もいます。 また、変更されたファイルがそのサイトのコーディング規約に 沿っているかどうかを確かめるためにも利用されるでしょう。 ファイルがリポジトリにチェックインされる時や、リポジトリから チェックアウトされる時に使われるラッパコマンドを cvs に登録するために、 `cvswrappers' ファイルを利用できます。 ラッパは CVS に入ってくる、もしくは CVS から出ていくファイルや ディレクトリを加工することができます。 使い方はいろいろありますが、一例としては、 ファイルがチェックインされる前に C ファイルを整形し、 リポジトリ内の全てのコードの見栄えを揃えるという用法があります。 commit 後に常に実行される、 リポジトリ内の変更に関するログエントリを書き込むプログラムを定義するために、 `loginfo' ファイルを利用できます。 これらのプログラムは、ファイルにログメッセージを追加したり、 電子メールを通じて開発者のグループにログメッセージを送ったり、 特定のニュースグループにログメッセージを投稿したりするために使われます。 tag 操作や rtag 操作の後で実行されるプログラムを定義するために、 `taginfo' ファイルを利用できます。 これらのプログラムは、 新しいタグ名とそのタグを作成したプログラマ名の一覧ファイルに メッセージを追加したり、 開発者のグループにメールを送ったり、 特定のニュースグループにメッセージを投稿したりするために使われます。 ログメッセージの書式を定義するために、 `rcsinfo' ファイルを利用できます。 `cvs commit' のログエントリを編集・確認する際に実行する プログラムを定義するために、 `editinfo' ファイルを利用できます。 これは `rcsinfo' の書式指定と共に用いると非常に便利であり、 変更をコミットするユーザが、書式の適切な欄を埋めていることを チェックすることができます。 update の時に無視するデフォルトのファイル一覧を指定するために、 `cvsignore' ファイルを利用できます。 リポジトリに影響を及ぼす cvs コマンドを記録するために、 `history' ファイルを利用できます。 このファイルを作成するとヒストリが記録されるようになります。

関連ファイル

modules
    `modules' ファイルは、あなたがソースコードの集合に付けた名前を記録します。 cvs を使って、正しい書式でファイルを `$CVSROOT/CVSROOT/modules,v' にチェックインすると、 cvs はこれらの定義を利用するようになります。 `modules' ファイルは、モジュール定義以外にも、空行やコメント (`#' から始まる行) を含むことができます。 長い行は、行の最後の文字にバックスラッシュ (``\'') を置くことで 次の行に続けることができます。 モジュール定義 は `modules' ファイルの単一行で、 2 つの書式があります。どちらにおいても mname はモジュール名を 表し、行の残りはその定義になります。 mname -a aliases...
    これはモジュール mname を定義する最も簡単な方法です。 `-a' はこの定義が単なる別名 (alias) であることを示します。 cvs は (コマンドの引数として) mname が使われると、 代わりに aliases の名前のリストが指定されたものとして扱います。 aliases には、他のモジュール名もしくはパスを指定します。 aliases にパスを指定すると、 cvs の引数に明示的にパスが指定した場合と同様、 `cvs checkout' は 作業ディレクトリへの全ての中間ディレクトリを作成します。
    mname [ options ] dir [ files... ] [ &module... ]
    もっとも単純な場合、この形式のモジュール定義は `mname dir' となります。 これはディレクトリ dir 内のすべてのファイルをモジュール mname として定義します。 dir は ($CVSROOT から、ソースリポジトリ内にある) ソースファイルのディレクトリへの相対パスです。 この場合、checkout 時には作業ディレクトリとして mname という単一のディレクトリのみが作成され、 dir が複数ディレクトリ階層を含むパスであろうと、 中間のディレクトリはデフォルトでは作成されません。 モジュール定義の dir の後で files を明示的に指定することで、 dir 内の特定のファイルを選択することができます。 modules にあるサンプル定義は、あるディレクトリの 単一のファイルから定義されるモジュールの例となっています。 ここでは別の例を示します:
    m4test  unsupported/gnu/m4 foreach.m4 forloop.m4
    この定義では、`cvs checkout m4test' を実行すると、 単一階層の作業ディレクトリ `m4test' が作成され、 cvs ソースリポジトリ内の深い階層のディレクトリにある、 指定された 2 つのファイルが置かれます。 モジュール定義中に `&module' と書くことによって、 他のモジュールを参照することができます。 checkout 時には、作業ディレクトリ内に各 module 毎の ディレクトリが作成されます。
    cvs 1.3 の新機能; モジュール定義ファイルを古いバージョンの cvs と共有する場合は、 この機能は使わないでください。 そして、モジュール定義に以下の options を加えることができます: `-d name', モジュール名ではなく、他の名前を 作業ディレクトリの名前として用います。
    cvs 1.3 の新機能; モジュール定義ファイルを古いバージョンの cvs と共有する場合は、 この機能は使わないでください。 `-i prog' を用いると、モジュール内のファイルが コミットされたときに実行されるプログラム prog を指定できます。 prog は、ソースリポジトリ内の影響を受けるディレクトリへの フルパスを単一引数として受け取ります。 コミット 時にプログラムを実行するためには、 `commitinfo', `loginfo', `editinfo' ファイルを使う方法もあります。 `-o prog' を用いると、モジュール内のファイルが チェックアウトされたときに実行されるプログラム prog を指定できます。 prog は、モジュール名を単一引数として受け取ります。 `-e prog' を用いると、モジュール内のファイルが エクスポート (export) されたときに実行される プログラム prog を指定できます。 prog は、モジュール名を単一引数として受け取ります。 `-t prog' を用いると、モジュール内のファイルに タグが付けられたときに実行されるプログラム prog を指定できます。 prog は、 モジュール名と rtag で指定されたシンボリックタグの 2 つを 引数として受け取ります。 `-u prog' を用いると、チェックアウトされたモジュールの トップディレクトリにて `cvs update' が用いられたときに 実行されるプログラム prog を指定できます。 prog は、このモジュールのソースリポジトリへのフルパスを 単一引数として受け取ります。

commitinfo, loginfo, rcsinfo, editinfo
    これらのファイルは全て、`cvs commit' 処理の間の 様々な場面で呼び出されるプログラムを指定します。 これらのファイルは共通の構造を持ちます。 各行は、次の 2 つのフィールドを持ちます: すなわち、 正規表現と、 空白の後にファイル名かコマンド行のテンプレートです。 正規表現の 1 つがリポジトリ内のディレクトリ名にマッチすると、 行の残りが使われます。 行が文字 # で始まっている場合、コメントとして無視されます。 フィールド間の空白も無視されます。 `loginfo' では、行の残りは実行されるコマンド行の テンプレートとなります。 テンプレートはプログラム名だけでなく、 好きなだけ引数を付けることもできます。 引数リストのどこかに `%s' を指定すると、 cvs はその場所に コミット により影響を受ける ファイルリストを列挙します。 リストの最初のエントリは、 ソースリポジトリ内の変更が行われる位置への相対パスです。 リストの残りは、この コミット により修正・追加・削除される ファイルとなります。 `taginfo' では、行の残りは実行されるコマンド行の テンプレートとなります。 コマンドに渡される引数は、順番に タグ名 、 操作 (すなわち、 add は `tag' を、 mov は `tag -F' を、 del は `tag -d` をそれぞれ意味します)、 リポジトリ となり、残りは全て ファイル名 と リビジョン の組となります。 フィルタプログラムが 0 以外を返して終了すると、タグ処理は中断されます。 `commitinfo' では、行の残りは実行されるコマンド行の テンプレートとなります。 テンプレートはプログラム名だけでなく、 好きなだけ引数を付けることもできます。 テンプレートには現在のソースリポジトリへのフルパスが付け加えられ、 コミットにより (追加・削除・修正など) 影響をおよぼされる ファイルのファイル名が続きます。 `rcsinfo' では、行の残りはログメッセージ用のテンプレートへ 読み込まれるファイルへのフルパスです。 `editinfo' では、行の残りは実行されるコマンド行の テンプレートとなります。 テンプレートはプログラム名だけでなく、 好きなだけ引数を付けることもできます。 現在のログメッセージ用テンプレートファイルへのフルパスが 最後に追加されます。 正規表現の代わりに、以下の 2 つのうちどちらかの特殊文字列 を使うことができます: `ALL' では常に実行されるコマンド行テンプレート を指定し、 `DEFAULT' ではどの正規表現にもマッチしなかったときに 用いられるコマンド行テンプレートを指定します。 `commitinfo' ファイルには、 他の コミット 操作が行われる 前に 実行されるコマンドを指定し、 コミット が行われる前に満たすべき状況をチェックするために 利用できます。 コミット 操作の残りは、このファイルで指定されたコマンド全てが 終了ステータス 0 で終了したときにのみ続行されます。 `rcsinfo' ファイルにより、コミット のログ作成の際の ログ用テンプレート を指定できます。 このテンプレートの書式を埋めていくだけで、コミット ログを 作成できるようになります。 このファイルでは、正規表現より後のフィールドはコマンドテンプレートではなく、 ログ用テンプレート書式ファイル (複数可) のファイル名となります。 `editinfo' ファイルにより、コミットが開始する前 で ログ情報が記録された後の段階で実行されるスクリプトを指定できます。 これらの「編集」スクリプトは、 ログファイルに記録された情報を確認することができます。 編集スクリプトが 0 以外の終了ステータスを返した場合、コミットは中断されます。 `loginfo' ファイルにより、コミットの 最終段階 で実行される コマンドを指定できます。 コミットログメッセージとして指定されたテキストはコマンドにパイプされます: よくある用法としては、メールを送る、ニュースグループの記事とする、 中央ファイルに追加書き込みするというものがあります。

cvsignore, .cvsignore
    `cvs update' 中に無視されるデフォルトのファイル (もしくは sh(1) のファイル名パターン) のリストです。 まず最初に、cvs はコンパイル時に組み込まれたデフォルトの ファイル名パターンのリストを読み込みます ( cvs(1) を参照)。 その後、$CVSROOT/CVSROOT/cvsignore ファイルが存在すれば、 その中のリポジトリ毎のリストを読み込みます。 そして、`$HOME/.cvsignore' にあるユーザ毎のリストを読み込みます。 最後に、cvs はディレクトリを辿る時に ディレクトリ中に `.cvsignore' ファイルがあれば、それを読み込みます。 これらのディレクトリ毎のファイルは、それを含むディレクトリにのみ 有効で、サブディレクトリには作用しません。

history
    ヒストリを記録するには $CVSROOT/CVSROOT にこのファイルを作成します (詳細は `cvs history' の記述を参照)。

関連項目
cvs(1),

COPYING
Copyright © 1992 Cygnus Support, Brian Berliner, and Jeff Polk

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English.