バージョン管理システムCVSの小技

目次
1 cvs addコマンドを再帰的に処理 (bash)
2 バイナリファイルの登録
3 激しくメモリエラー

CVSは覚えてみると非常に楽なのですが、遣い勝手が微妙なところが多々あったり。
バイナリファイルの扱いが苦手だったり、ファイル単体での管理の延長にプロジェクトを管理しているので 変更するためには個別の変更を手動で繰り返すあたりなど。
まだ慣れていない+全てを把握しているわけではないので、私が知らないだけかもしれないですが。

1 cvs addコマンドを再帰的に処理 (bash)
addコマンドは*(ワイルドカード)は使えるのですが、再帰的にディレクトリ以下全部を登録・・・という処理ができないです。
ディレクトリ以下全て登録というときにはimportコマンドを使用するようにとはあるのですが、 何故か構文エラーを起こしてくれるので使用できませんでした。
(importコマンドはプロジェクト作成時にカレントディレクトリ以下を登録するコマンド) ・・・で、再帰的にはfor文を使用し「全検索+全登録(登録済みはaddコマンドが弾いてくれると信じて)」

> do
> cvs add $i
> done

・・・登録料が多いと凄いことになりそうな気がします。

ページのINDEXへ

2 バイナリファイルの登録
CVSでバイナリファイルをaddコマンドで登録すると一寸困ったことになります。
登録したときのOSと取得したときのOSが違うと、ほぼ確実にファイルが破壊されてしまい、 例えば画像ファイルなどは閲覧できなくなってしまいます。
(Unix OSでcvs addしてWindows OSでcvs coしたときとかですね。。)

これはシステムにあわせて改行コードを変更しているから起こることで、 FTPでファイルを転送する際のAscii/Binaryモードの関係と同じです。
転送時に、改行文字の変更を無効にするよう指定してやれば問題は起こらなくなります。

無効にするためには、ファイル登録時に


と-kbオプションを指定してやります。

また、登録後の変更については


と、adminコマンドに-kbオプションを使用することで、今後バイナリファイルとして認識させることができます。

※adminコマンドについては「バイナリフラグを立てる」だけですから、
 登録時点で壊れてしまっているファイルを修復するものではありません。
 状態によっては再登録が必要です。

ページのINDEXへ

3 激しくメモリエラー
・・・18Mのファイルをcommitしようとしたらquoteにひっかかりました・・・ごめんなさい
しかしそうすると、CVSは一旦メモリに全て読み込んでからcommitしているのかな・・・
Webページ素材なんかですと大きなものがあったりするので、一寸注意しないといけないですね・・・

ページのINDEXへ
TIPS INDEXへ
Last modified: Tue Jul 20 0:16:30 2006