CVS 1.3 で知られているバグや変な仕様
last updated: 1996/Jun/19th
ここでは、CVS 1.3 について、既に知られているバグや、
直観的でない仕様などについて触れます。
これは、マニュアルや info で触れられているものもあれば、
FAQ から持ってきたものや、cvs(1) の記述、または噂に
由来するものも含まれています。
調査を行なったのが、CVS 1.3 の頃であり、
その後のバージョンのものにはあてはまらない
可能性があります。
1.3 以降で変更されたと確認できたものには、
[CVS 1.3以前] のような印をつけておきます。
現状と食い違っている記述を発見した方はぜひ御一報下さい。
(reward: 晩ご飯1回)
仕様とのくいちがいや動かないコマンド
-
[cvs 1.8.3 以前] cvs(1) には、cvs diff の引数は rcsdiff の引数を
継承している旨の記述があり、
一方 rcsdiff(1) には、diff の引数がそのまま使える旨が書いてある。
しかし、2文字以上のオプション(例えば diff --context 等)は
cvs diff では使うことができない。
- cvs commit は、
remove されたファイルは commitinfo による commit 前検査にかけない。
- [cvs 1.3以前]
cvs import や update のときに "-I !" オプションが
正しく扱われず、"-I ! "としなければならない。
- cvs rtag で HEAD リビジョンにタグづけする(すなわち、
-r オプションや -D オプションを使っていない)場合、
並列的に起動された cvs commit コマンドによって HEAD リビジョンが
変化してしまい、どのリビジョンにタグが付されるのか決定できないことがある。
よって、あらかじめ commit を禁止しておく必要がある。
-
ブランチ内では cvs update -D date が正しく動作しない。
-
modules ファイル内の定義で、
-a の右側に自分自身を含むような alias 定義
があった場合、cvs checkout は無限に続いてしまって終わらない。
-
ファイル名にスペースを含むファイルは扱うことができない。
-
タグ文字列(ベンダータグ、ブランチ等を含む)には、$,.:;@ という文字や漢
字は使用できない。
誤解しやすい仕様や、おかしな仕様
ここには、あまり合理的とは思えない仕様の他に、
全く正当な仕様ではあるけれども、
ユーザーの勘違いやはやとちりで誤解されやすい仕様も含んでいます。