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


17 バイナリ・ファイルの扱い

CVS でバイナリ・ファイルを保管する際の問題点が二つあります。 一つ目は、CVS がファイルを取り出す際に、 リポジトリで標準的に使用する行末形式 (ラインフィードのみ) を、 クライアント側のオペレーティングシステムに適した形式に変換する事です (例えば Windows NT だと、ラインフィードにキャリッジリターンが付加されます)。

二つ目の問題点は、キーワードと同じデータが 偶然バイナリ・ファイルに含まれる可能性がある事です (「16 キーワード置換」参照)。 そのためキーワード展開を無効にする必要があります。

幾つかの CVS コマンドで `-kb' オプションを用いれば、 確実に行末変換とキーワード展開を止めることができます。 古いバージョンの RCS だとこのオプションは使えませんが、 UNIX のようにラインフィードのみを行末に用いる オペレーティングシステムを使用しているならば、 代りに `-ko' が使えます。 他のオペレーティングシステムならば、 RCS を新しいバージョンに入れ替えて下さい。 5.7 以降であれば `-kb' が使えます。

`-kb' フラグを用いて新しいファイルを登録する方法を、 以下に例示します:

$ echo '$Id$' > kotest
$ cvs add -kb -m"A test file" kotest
$ cvs ci -m"First checkin; contains a keyword" kotest

ふと油断して `-kb' 無しでファイルを加えてしまった場合、 cvs admin コマンドを使用して正常な状態に戻す必要があります。 以下に例示します:

$ echo '$Id$' > kotest
$ cvs add -m"A test file" kotest
$ cvs ci -m"First checkin; contains a keyword" kotest
$ cvs admin -kb kotest
$ cvs update -A kotest
$ cvs commit -m "make it binary" kotest  # UNIX 以外のシステムの場合

ファイル `kotest' を格納した時にキーワードが展開されます (上記例の全てのコマンドの後で `cat kotest' を実行してみて下さい)。 `cvs admin -kb' コマンドでファイルの置換モードを設定しますが、 既にある作業コピーは変更してくれません。 キーワードを展開してないバージョンの `kotest' を取り出すには、 `cvs update -A' を使うのが最も簡単です。 行末を適切に処理する必要がある場合 (CVS のクライアントとして UNIX 以外のシステムを使用している場合) は、 上記の例に示した cvs commit コマンドのように、 新たにファイルのコピーを格納する必要があります。

ここで、`cvs admin -k' を用いて置換モードを変更しても、 この置換モードはバージョン管理されないことを認識しておいて下さい。 これは例えば古いリリースにテキスト・ファイルがあり、 新しいリリースに同じ名前のバイナリ・ファイルがあった場合、 バージョンによってテキストとバイナリを区別して取り出す方法を、 CVS が備えていないことを意味しています。 この問題を解決する方法は今のところありません。

cvs addcvs import を実行する際、 バイナリとして扱うかどうかを、 ファイルの名前によって判断するように設定できます。 例えば、ファイル名が `.exe' で終わるファイルを バイナリと判断するように設定できます。「B.2 管理用ファイル cvswrappers」参照。


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