最初, 戻る, 進む, 最後, 目次 に行く。


B.2 管理用ファイル cvswrappers

包装機能を用いれば、ファイルを CVS に取り込む/取り出す際に、 適切な方法で変換するように設定することができます。 ただし CVS のクライアント/サーバでは ほぼ全ての包装機能が利用できません。

管理用ファイル `cvswrappers' には、 ファイル名に合致する正規表現と、 そのファイルに対して実行されるスクリプトが記述されます。 個々のファイルやディレクトリに対して、二つのスクリプトが記述できます。 各々リポジトリに格納する前 (`-t' フラグが付けられます) と、 リポジトリから取り出すとき (`-f' フラグが付けられます) に 実行するものです。

また `cvswrappers' には、ファイルを更新するときの マージ方針について記述するオプション `-m' があります。 MERGE は CVS が通常用いる方法を意味し、 ファイルをマージしようとします (これはバイナリ・ファイルには不適切です)。 COPY は、cvs update を実行したとき、 単にファイルを上書きすることを意味し、 必要な変更を取り入れるために CVS 以外の機構が要求されます。 包装オプション `-m' は更新時のマージ方針にのみ影響し、 ファイルの格納方法には影響しません。 バイナリ・ファイルの詳細は 「17 バイナリ・ファイルの扱い」 参照。

管理用ファイル `cvswrappers' の基本的な書式:

正規表現     [オプション 値][オプション 値]...

利用できるオプションを以下に挙げます。
-f           格納時のフィルタ        値: フィルタのパス
-t           取得時のフィルタ        値: フィルタのパス
-m           マージ方針              値: MERGE か COPY
-k           キーワード展開          値: 置換モード

値は以下のように単引用符で囲みます。
*.nib    -f 'unwrap %s' -t 'wrap %s %s' -m 'COPY'
*.c      -t 'indent %s %s'

`cvswrappers' の上側の例では、 `.nib' で終わる全てのファイル/ディレクトリを、 リポジトリに格納する前に `wrap' プログラムで 整形することが記述されています。 リポジトリから取り出す際には `unwrap' プログラムが用いられます。 またファイルを更新する際には (マージせずに) COPY する方針を採ることが記述されています。

下側の例では、`.c' で終わるファイル全てを、 リポジトリに格納する前に `indent' で整形することが記述されています。 前の例とは異なり、リポジトリから取り出す際には整形されません。

`-t' に記述されるフィルタには二つの引数が与えられます。 最初は整形されるファイル/ディレクトリで、 次には整形された結果が出力されるファイルのパス名です。

`-f' に記述されるフィルタには、 整形されるファイル名が引数として与えられます。 整形された結果は、作業ディレクトリにファイルとして置かれます。

次の例では、`.exe' で終わるファイルをバイナリとして扱いながら、 ディレクトリを取り入れます:

cvs import -I ! -W "*.exe -k 'b'" first-dir vendortag reltag


最初, 戻る, 進む, 最後, 目次 に行く。