CVS のすべてのグローバルオプションを以下に記します。
--allow-root=REPOSITORY
アルファベット順で最初に来るこのオプションは、実際にはコマンドラインで
使用されることはありません。-allow-root オプションは pserver
コマンドと共に使用して、アクセスを許可するリポジトリを指定します。指定
は /usr/local/newrepos
のようにリポジトリレベルで行います。
/usr/local/newrepos/myproj
のようなプロジェクトサブディレクトリ
の指定はできません。
このグローバルオプションがコマンドラインで使用されることはありません。
通常は /etc/inetd.conf ファイルの中でのみ用いられるものです
(Repository Administration 参照)。pserver
コマンドが使用
されるのもそこだけです。
cvs pserver
経由でアクセスするリポジトリについては、対応す
る -allow-root オプションをそのホストの /etc/inetd.conf
中に
指定しておく必要があります。これはセキュリティのための仕組みで、プライ
ベートなリポジトリに pserver 経由のアクセスをさせないようにするもので
す。
(The Password-Authenticating Server と、Cederqvist マニュアルの Password Authentication Server ノードを参照してください。)
-a
サーバとの通信すべてを認めます。このオプションは GSSAPI サーバ (gserver) 経由で接続している場合以外には意味はありません。GSSAPI はま だあまり使われていないと思われますので、この本で説明していません(その うち使われるようになるとは思うのですが)。(詳細は Cederqvist マニュアル の Global Options と GSSAPI Authenticated を参照のこと。)
-b
(Obsolete)以前はこのオプションで、RCS のバイナリファイルのあるディレクトリを指定 していました。現時点で CVS は RCS の機能を内部的に実装していますので、 このオプションに意味はありません(互換性のために残してあるだけです)。
-d
REPOSITORYリポジトリを指定します。絶対パスであったり、あるいは接続方法・ユーザ名・ ホスト名・パスを含んだ複雑なものである場合もあります。接続方法を指定す る場合、構文は次のとおりです:
:METHOD:USER@HOSTNAME:PATH_TO_REPOSITORY
各接続方法について例を示します:
:ext:jrandom@floss.red-bean.com:/usr/local/newrepos
-
rsh
, ssh
などの外部接続プログラムを使用して接続します。
$CVS_RSH
環境変数が設定されていない場合には、デフォルトで
rsh
が使用されます。設定されていれば、その設定値を使用します。
:server:jrandom@floss.red-bean.com:/usr/local/newrepos
-
:ext:
に似ていますが CVS の内部に実装してある rsh を使用します
(プラットフォームによっては使えない場合もあります)
:pserver:jrandom@floss.red-bean.com:/usr/local/newrepos
-
パスワード認証サーバを使用して接続します(Repository Administration 中の The Password-Authenticating Server 、 login コマンドを参照のこと。)
:kserver:jrandom@floss.red-bean.com:/usr/local/newrepos
-
ケルベロス認証を使用して接続します。
:gserver:jrandom@floss.red-bean.com:/usr/local/newrepos
-
GSSAPI 認証を使用して接続します。
:fork:jrandom@floss.red-bean.com:/usr/local/newrepos
-
ローカルのリポジトリに接続しますが、リポジトリのファイルに直接アクセス
するのではなく、クライアント/サーバ ネットワークプロトコルを使用します。
リモートの CVS の動作をローカルマシンからテスト・デバッグする際に便利
です。
:local:jrandom@floss.red-bean.com:/usr/local/newrepos
-
ローカルリポジトリに直接アクセスします。リポジトリのパスを絶対パスのみ
で指定した場合と同様です。
-e
EDITORコミットメッセージが -m オプションで指定されない場合、コミットメッセー
ジを書くためのエディタとして EDITOR を起動します。普通は -m でのメッセ
ージ指定を行わなかった場合、CVS は $CVSEDITOR
、$VISUAL
、
$EDITOR
環境変数をこの順でチェックし、その結果に基づいてエディ
タを起動します。これでうまくいかなかったときには Unix 上のポピュラーな
エディタ、vi
を起動します。
Invokes EDITOR for your commit message, if the commit message was not
specified on the command line with the -m option. Normally, if you
don't give a message with -m, CVS invokes the editor based on the
$CVSEDITOR
, $VISUAL
, or $EDITOR
environment
variables, which it checks in that order. Failing that, it invokes the
popular Unix editor vi
.
コミット時に -e グローバルオプションと -m オプション両方を渡した場合に
は、 コマンドラインで指定したコミットメッセージを優先し、-e は無視され
ます(ですので .cvsrc
ファイルで -e を指定しておいも安全です)。
-f
このグローバルオプションを指定すると .cvsrc
ファイルを読みませ
ん。
--help
[COMMAND] or -H
[COMMAND]これら2つのオプションは同義のものです。 COMMAND が指定されない場合、基 本的な使用法が標準出力に出力されます。COMMAND が指定された場合はそのコ マンドの使用法が出力されます。
--help-options
CVS の全グローバルオプション一覧を短い説明つきで出力します。
--help-synonyms
CVS コマンドの一覧を省略形つきで出力します(update は up だとか、そうい うやつです)。
-l
このコマンドをリポジトリ内の CVSROOT/history
ファイルに記録しま
せん。コマンドは通常どおり実行されますが、history ファイルに記録が残り
ません。
-n
作業コピー内、リポジトリ内のファイルを一切変更しません。つまりそのコマ ンドは「ドライラン」(dry run) で実行するということです。CVS はそのコマ ンドのほとんどの手順を踏みますが、実際に実行する手前で中止します。
そのコマンドが何をするのか、実際には実行しないで知りたい場合に便利です。
自分の作業ディレクトリ中でどのファイルを変更したんだったか知りたいけど、
アップデートしたいわけじゃない(リポジトリから変更分を持ってきちゃうか
ら)、というような話はよくあることです。cvs -n update
を実行
すれば、作業コピー中でファイルを変えることなく、ローカルで何をしたか
概要がわかります。
-q
あまり重要でないメッセージの出力を止めて、適当に静かに動作するよう CVS に指示します。何が「重要」かはコマンドによって違います。たとえば、アッ プデート中の作業コピーの各サブディレクトリへの移動(通常は出力される)に ついては出力されませんが、変更されたファイル、アップデートされたファイ ルについての情報は出力されます。
-Q
コマンドを実行完了するために絶対必要なもの以外は出力せず、非常に静かに
動作するよう CVS に指示します。出力を生成することが唯一の目的であるよ
うなコマンド(diff
や annotate
など)は出力をやめたりしま
せんが、出力するメッセージとコマンドの効果が関係ないようなコマンド
(update
や commit
など)は何のメッセージも出力しません。
-r
新しく作る作業ファイルを読み込み専用にします($CVSREAD
環境変数
を設定するのと同様の効果)。
このオプションを指定した場合、チェックアウト・アップデートすると作業コ ピー中のファイルが読み込み専用になります(OSが許せば)。率直に言って筆者 はこのオプションを使いたいような理由を思いつきません。
-s
VARIABLE=
VALUE変数名 VARIABLE の CVS の内部変数の値を VALUE に設定します。
リポジトリ側の CVSROOT/*info
トリガファイルはこのような変数を
-s オプションで代入された値に展開することができます。たとえば、
CVSROOT/loginfo
に次のような行があったとします:
myproj /usr/local/bin/foo.pl ${=FISH}
ここで誰かが myproj の作業コピーから、次のようにコミットしたとすると
floss$ cvs -s FISH=carp commit -m "fixed the bait bug"
foo.pl
スクリプトは carp
を引数として起動されます。ただ
し書式には注意してください、ドルマーク、イコール、中括弧すべて必要です。
一つでも欠けると展開されません(少なくとも思ったようにはなりません)。変
数名には英数字とアンダスコアが使用できます。すべてを大文字にする必要は
ないのですが、そのようにする人が大多数です。
ひとつのコマンド中に -s フラグを何回使ってもかまいません。しかし、トリ ガスクリプト中で参照されている変数を CVS の起動時に指定しなかった場合、 コマンド自体は成功したとしても変数展開は行われず、警告メッセージが出力 されます。たとえば loginfo にこのようなエントリがあって、
myproj /usr/local/bin/foo.pl ${=FISH} ${=BIRD}
前述と同様のコマンドが実行された場合には
floss$ cvs -s FISH=carp commit -m "fixed the bait bug"
このコマンドを実行したユーザに対して次のような警告が出力され(最後のほ うに出力されます)、
loginfo:31: no such user variable ${=BIRD}
この後 foo.pl
スクリプトが引数無しで起動されます。ですが、以下
のようにコマンドを実行した場合には
floss$ cvs -s FISH=carp -s BIRD=vulture commit -m "fixed the bait bug"
loginfo 中の ${=FISH}
と ${=BIRD}
は両方正しく展開さ
れ、警告も出力されません。どちらの場合でもコミットそのものは成功するは
ずです。
これらの例ではすべて commit
を使用しましたが、変数展開は
CVSROOT/
のトリガファイルで書ける CVS コマンドならどれでも変数
展開できます。ですから -s オプションはグローバルオプションなのです。
(このあとこの章に出てくる Repository Administrative Files の節で、 トリガファイル内での変数展開について詳しく述べます)
-T
DIRテンポラリファイルを、普通 CVS が置く場所ではなく DIR に置きます。(と
りわけ $TMPDIR
環境変数の値より優先されることに注意してください)
DIR は絶対パス指定でなければなりません。
このオプションは、通常のテンポラリディレクトリへの書込み権限をあなたが (and, therefore, CVS doesn't either)持っていない場合に便利です。
-t
CVS コマンドの実行をトレースします。そのコマンドを完遂するまでに通過す る各ステップについてのメッセージを出力します。-n オプションと合わせて 使うと、まだ良くわかっていないコマンドの動作を実際に動作させる前に確認 できて便利です。また、あるコマンドが失敗する時、その原因を調べたい場合 にも使えます。
-v
or --version
バージョンと著作権情報を表示し、エラーなしで終了します。
-w
$CVSREAD
環境変数
作業ファイルを読み書きできるファイルとして生成します($CVSREAD
環境変数より優先されます)。デフォルトで読み書きできるファイルが生成さ
れますので、このオプションはめったに使用されません。
-r と -w 両方を指定した場合には -w のほうが優先されます。
-x
サーバとの通信内容をすべて暗号化します。このオプションは GSSAPI サーバ (gserver) 経由で接続している場合以外は意味がありません。 GSSAPI 接続は まだめったに使われていませんので、この本では説明していません。 (詳しくは Cederqvist マニュアルの Global Options と GSSAPI Authenticated を参照のこと)
-z
GZIPLEVELサーバとの通信で使用する圧縮のレベルを指定します。GZIPLEVEL 引数は 1 から 9 の数字です。レベル1は最小限の圧縮(とても速いですがあまり圧縮さ れません)、レベル9は最大限の圧縮です(CPU時間を食いますがデータは確実に 圧縮されます)。レベル9はネットワーク接続が非常に遅い場合にしか役に立た ないでしょう。通常は3から5あたりが妥当だと思われます。
-z と引数の間の空白はあってもなくてもかまいません。