スポンサーリンク

cvs

名称

書式
解説
関連ファイル
関連項目
COPYING

名称

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.

スポンサーリンク