CVS(1)

名称
cvs - コンカレントバージョンシステム

注記
このマニュアルページは cvs の機能のまとめですが、最新ではないかもしれません。 より新規で詳細な文書に関しては ( info cvs コマンドか、無い場合にはこのマニュアルページの関連項目の節に記述してあるように) Cederqvist 著のマニュアルを参照して下さい。

書式

cvs [ cvs_options ]
    cvs_command [ command_options ] [ command_args ]

解説
CVS はバージョン制御システムであり、RCS や SCCS のように、 ファイル (通常はソースコード) の古いバージョンの保持と 誰が何時何故変更を施したかなどの記録の保持を可能にします。 同様のシステムとは異なり、 CVS は一時に 1 ファイルや 1 ディレクトリのみを操作対象とするのではなく、 バージョン管理されたファイルを持つディレクトリ集合からなる階層を 操作対象とします。 CVS は、リリース管理を助け、 また複数の作者による並行的なソースファイル編集を助けます。 CVS は、 様々な操作を有効にしたり記録したり制御したりするためにトリガを使用可能であり、 広域ネットワークでうまく動作します。 cvs はマスタソースの単一のコピーを保持します。 このコピーはソースの``リポジトリ''と呼ばれます。 これは、以前の ソフトウェアリリースをいつでもシンボリックなリビジョンタグか、 または過去の日付のいずれかに基づいて取り出せるようにするための 全ての情報を含みます。

不可欠なコマンド
cvs はバラエティに富んだコマンドを提供します (書式説明における cvs_command)。 また分散環境での多様なソース管理要求を満たすために、 これらのコマンドの多くにはいくつものオプションが用意されています。 しかしながら、 cvsで便利に仕事をするためにそれぞれの細部に渡ってマスタする 必要はありません。 実際、ソースリポジトリを使う (そしてそれに貢献する) には 5 つの コマンドで充分です。

cvs checkout modules...
    大部分の cvs での作業のために必要な準備: modules (名前をつけたソースの集合。 ここにはソースリポジトリへの相対パスを 使うこともできます) のソースの私的なコピーを作成します。 他人の作業に邪魔されることなく このコピーで作業することができます。 少なくとも 1 レベルのサブディレクトリが必ず作成されます。

cvs update
    他の開発者がリポジトリのソースに行った変更を あなたのコピーに 取り込みたいと思ったときに、あなたの私的なソースのディレクトリの 中で このコマンドを実行して下さい。

cvs add file...
    あなたの作業ディレクトリの cvs のレコードに新しいファイルを 載せるには、このコマンドを使います。そのファイルは次にあなたが 注意: 新しいソースをソースリポジトリに登録するには コマンドを使って下さい。 はすでにチェックアウトされているモジュールに新しいファイルを 追加するときにのみ使います。

cvs remove file...
    (指定するファイルを消した後に) リポジトリからファイルを 消したいことを宣言する場合に、このコマンドを使います。

cvs commit file...
    あなたの変更をソースリポジトリに取り込むことで、他の開発者へ 変更結果を ``公開'' したいときに、このコマンドを使います。

オプション
cvs のコマンドラインには cvs_optionsを含めることができ、 これは cvs プログラム全体に適用されます。 ひとつの cvs_commandがソースリポジトリへの特定の動作を 指定します。 そして cvs_command の動作を完全に指定するために command_options と command_arguments とを含めることができます。 警告: cvs_commandとオプションの相対的な位置関係に正確さを 期さなければなりません。 なぜなら同じオプションが cvs_options の位置 ( cvs コマンドの左側) と command_options の位置 ( cvs コマンドの右側) のいずれに置かれるかで異なる意味を持つ可能性が あるためです。 cvs_commandを省略できる状況が2つだけあります: または は利用可能なコマンドの一覧を引き出します、そして または は cvs それ自身のバージョン情報を表示します。

CVS OPTIONS
リリース 1.6 現在、 cvs は、短いオプションと共に GNU スタイルの長いオプションもサポートします。 現在はまだ 2, 3 の長いオプションしかサポートされておらず、 それらは同じ意味を持つ短いオプションの後ろにかぎ括弧で囲んで 示されています。 以下のオプションは cvs プログラムの全体的な制御に使います:

-H [ --help ]
    指定された cvs_command の用法を表示します (が、コマンドの実行は行いません)。コマンド名を 指定しないと は利用可能な全コマンドの要約を表示します。

-Q  はコマンドを 真に 寡黙にします。コマンドは深刻な問題についてのみ出力を行います。

-q  はコマンドをいくぶん静かにします。サブディレクトリを再帰的に 移動する際の報告のような通知的なメッセージが抑制されます。

-b bindir
    RCS プログラムが置かれているディレクトリとして bindir を使います (CVS 1.9 およびそれ以前)。 環境変数 RCSBIN の設定より優先されます。 これは絶対パス名で指定しなければなりません。

-d CVS_root_directory
    マスタとなる ソースリポジトリのルートディレクトリへのパス名として CVS_root_directory を使います。 環境変数 CVSROOT の設定より優先されます。 これは絶対パスで指定しなければなりません。

-e editor
    ログ情報の入力においてエディタとして editor を使います。 環境変数 CVSEDITOR , VISUAL , EDITOR の設定より優先されます。

-f  cvs スタートアップファイル (~/.cvsrc) を読み込みません。

-n  いかなるファイルも変更しません。 cvs_commandを実行しようとしますが、 経過報告のみを行います。ファイルへの削除、更新やマージのいずれも 行いませんし、新しいファイルも作成しません。

-t  プログラムの実行をトレースします。 cvs の動作のステップを示すメッセージを表示します。 不慣れなコマンドの影響の可能性を調べるのに -n との組み合わせで特に有用です。

-r  新しい作業ファイルを読み出し専用にします。 環境変数 CVSREAD がセットされている場合と同じ効果を持ちます。

-R  読み出し専用リポジトリモードをオンにします。 これにより、 anoncvs サーバ上などの読み出し専用リポジトリからのチェックアウトや、 CDROM 上のリポジトリからのチェックアウトが可能になります。 環境変数 CVSREADONLYFS がセットされている場合と同じ効果を持ちます。 また、 -R を使用すると NFS を介したチェックアウトが高速になります。

-v [ --version ]
    cvs のバージョンと著作権情報を表示します。

-w  新しい作業ファイルを読み書き可能にします (デフォルトです)。 環境変数 CVSREAD がセットされていても無視します。

-g  強制的に、グループ書き込み権限を作業ファイルに付加します。 典型的には、 単一のチェックアウトされたソースツリーを複数ユーザで共有する場合に このオプションを使用し、 各ユーザがより安全な umask でシェルを使用できるようにします。 この機能を使用するためには、 チェックアウトするソースツリーを格納するディレクトリを作成し、 本ディレクトリのグループをプライベートグループに設定し、 本ディレクトリ下のファイルがディレクトリのグループ ID を継承するようにします。 FreeBSD では自動的に、ファイルはディレクトリのグループ ID を継承します。 SysV では、典型的には SGID ビットをディレクトリに設定する必要があります。 チェックアウトしたツリーを共有するユーザは、 このグループに含まれる必要があります。 単一のチェックアウトされたソースツリーを共有するということは、 共通の CVS リポジトリに複数ユーザのアクセスを許すこととまったく異なることに 注意してください。 共通の CVS リポジトリへのアクセスは、 共有グループ書き込み権限によって既に実現されており、 本オプションを必要としません。 本オプションを透過的に使用するためには、 単に 'cvs -g' という行を ~/.cvsrc ファイルに置くだけで良いです。 プライベートグループもしくはプライベートモード 0700 のディレクトリに 全ソースをチェックアウトしたものをファイアウォールで防御しているのでない限り、 本オプションの使用は勧められません。

-x  クライアントとサーバの間の通信を全て暗号化します。 現在では、Kerberos コネクション使用時のみ使用可能です。

-z compression-level
    ファイルをネットワーク経由でやりとりする際、 圧縮レベル compression-level で gzip を使い、やりとりするデータの圧縮と伸長を行います。リンクの両端で GNU gzip プログラムがその時点でのサーチパス中に存在する必要があります。

使用法
行いたい特定のリリース制御機能を選択するために、 cvs に対して一つの cvs_command を指定しなければなりません。 各 cvs コマンドはそれ自身のオプションと引数の集まりを受け付けます。 しかしながら、多くのオプションが複数のコマンドに渡って利用可能です。 -H オプションをコマンドと共に指定することで、 各コマンドの使用法のまとめを表示することができます。

CVS のスタートアップファイル
通常、CVS は起動時にユーザのホームディレクトリから .cvsrc というファイルを読み込みます。この起動時の手続きは -f フラグで止めることができます。 .cvsrc ファイルには CVS コマンドに引数リストを付けて、1 行に 1 つの コマンドを並べます。例えば .cvsrc に以下のように書くと: diff -c コマンドには常にコマンドラインで指定されたオプションに加えて -c オプションが渡されるという意味になります (この場合 を実行すると 全てにおいて context diff 形式が生成されるという 効果を持ちます)。 大域的なオプションは、cvs キーワードを使用して指定します。 例えば次の cvs -q は、大域的オプション -q が指定されたかのように全 コマンドが動作することを意味します。

CVS COMMAND のまとめ
以下は全 cvs コマンドの解説を要約したものです:

add 新しいファイルまたはディレクトリをリポジトリに追加します。 ファイルについては追加を同ファイルに対する が行われるまで待ちます。 以前に を行うことで作成されたソースの中からのみ実行可能です。 新しいソース階層の全体を cvs の制御下に置くには を使って下さい。 (リポジトリを直接に変更するものではありません。 作業ディレクトリを変更します。)

admin
    ソースリポジトリに対して 制御コマンドを実行します。(リポジトリを直接に変更します。 作業ディレクトリを使用しますが変更は行いません。)

checkout
    編集作業のためのソースファイルの作業ディレクトリを作成します。 (作業ディレクトリを生成または変更します。)

commit
    作業ディレクトリでの変更、追加、削除部分をソースリポジトリに 反映します。(リポジトリを変更します。)

diff
    作業ディレクトリのファイルとソースリポジトリ、または ソースリポジトリ中の 2 つのリビジョン間の差分を表示します。 (リポジトリ、作業ディレクトリのいずれも変更しません。)

export
    サイトからの出荷のための一揃いのソースファイルのコピーを用意します。 と違い cvs 管理のためのディレクトリが作られず (そしてそのため シンボリックタグが指定されなければなりません (リポジトリを変更しません。 作業ディレクトリに似たディレクトリを 作成します)。

history
    ソースリポジトリの特定のファイルまたはディレクトリにあなたや 他の人が実行した cvs コマンドを表示します。(リポジトリも作業ディレクトリも変更しません。) ヒストリログは ファイルが作成されることで有効になった場合にのみ記録されます。 cvs(5) を参照して下さい。

import
    外部で行われた更新内容を ``ベンダブランチ'' としてソースリポジトリに 取り込みます。(リポジトリを変更します。)

init
    CVSROOT サブディレクトリとデフォルトの制御ファイルを追加することで、 リポジトリを初期化します。 リポジトリを使用する前に、 本コマンドを使用するか、他の方法でリポジトリを初期化する必要があります。

log ログ情報を表示します。 (リポジトリも作業ディレクトリも変更しません。)

rdiff
    リポジトリの中の 2 つのリリースの間の差分の集合をパッチファイルとして 用意します。(リポジトリも作業ディレクトリも変更しません。)

release
    全ての変更を捨て去ります。 (作業ディレクトリを削除できます。 リポジトリは変更しません。)

remove
    ソースリポジトリからファイルを削除します、そのファイルに が実行されるまで保留されます。(直接リポジトリには影響しません。 作業ディレクトリを変更します。)

rtag
    ソースリポジトリの特定のリビジョンのファイルに明示的に シンボリックタグを指定します。 (リポジトリを直接変更します。作業ディレクトリは必要なくまた 変更もしません。)

status
    現在のファイルの状態を表示します: 最新バージョン、作業ディレクトリの ファイルのバージョン、作業バージョンが編集されたかどうか、オプションで RCS ファイル中のシンボリックタグ。(リポジトリ、作業ディレクトリとも 変更しません。)

tag リポジトリ中のファイルにシンボリックタグを指定します。 デフォルトでは、作業ディレクトリと最後に同期を取ったリビジョンに タグをつけます。 (直接リポジトリを変更します。作業ディレクトリを使いますが 変更はしません。)

update
    リポジトリから変更を取り出して作業ディレクトリを最新状態にします。 可能であればマージが自動で行われます。 変更点が衝突しているために手動で解決しなければならない場合は、 警告が表示されます。(作業ディレクトリを変更します。 リポジトリは変更しません。)

共通の COMMAND OPTIONS
この節では 複数の cvs コマンドで使用できる command_options について説明します。必ずしも全てのコマンドがこれら全てのオプションを サポートしているわけではありません。 コマンドの各オプションは、それが 意味を成すコマンドでのみサポートされます。しかしながら、 コマンドがそれらのオプションのひとつを持つとき、 他のコマンドでもそのオプションが同じ意味を持つと考えて差し支えありません。 (個々のコマンドと共に列挙してある別のオプションは ある cvs コマンドと別のコマンドで異なる意味を持つかもしれません。) 注意: history コマンドは例外です。 このコマンドは、これら標準のオプションとも衝突するたくさんの オプションをサポートしています。

-D date_spec
    date_spec 以前のものの中で最も最近のリビジョンを使います (単独の 引数で、日時の表記は過去の日時を指定します)。 多種多様な日時のフォーマットが、 特に ISO ("1972-09-24 20:05") または Internet ("24 Sep 1972 20:05") が サポートされます。 特定のタイムゾーンが指定されていなければ、date_spec は ローカルタイムゾーンで解釈されます。 ソースファイルの個人的なコピーを作るときに使うと、指定は ``sticky'' と なります。 つまり、-D を使って作業ファイルを取り出すと、 cvs は指定された日時を記録します。 これは同じディレクトリでのその後の update で同じ日時を使うように するためです (これを明示的に無効にするよう指定していない場合に限ります。 update コマンドの説明を参照して下さい)。 -D は checkout, diff, history, export, rdiff, rtag, update コマンドで有効です。 有効な日時指定には以下のようなものがあります:
    1 month ago
    2 hours ago
    400000 seconds ago
    last year
    last Monday
    yesterday
    a fortnight ago
    3/31/92 10:00:07 PST
    January 23, 1987 10:05pm
    22:00 GMT

-f  cvs コマンドに特定の日時かタグを指定した場合、 通常は指定したタグを含まない (または指定した日時に存在しなかった) ファイルを無視します。一致するタグまたは日時が存在しなくても ファイルを取り出したいときは -f オプションを使います。 (その場合、最も新しいバージョンが使われます。) -f は以下のコマンドで使用できます: checkout, export, rdiff, rtag, update

-k kflag
    デフォルトの キーワード処理を変更します。 -k オプションは add, checkout, diff, export, rdiff, update コマンドで使用できます。 ソースファイルの個人的なコピーを作成するときに使うと kflag の指定は ``sticky'' になります。 つまり、このオプションを checkout か update コマンドで指定すると、 cvs は指定した kflag をファイルに関連付け、 他のものを指定するまで、以降の update コマンドでそれを使い続けます。 より有用な kflag としては -ko と -kb (バイナリファイル用) と -kv があります。-kv は export の際、どこか別のサイトで後に import されてもキーワード情報が残るようにしたい場合に有用です。

-l  ローカル; サブディレクトリを再帰的に処理するのではなく、 現ディレクトリでのみ実行します。 以下のコマンドで使用できます: checkout, commit, diff, export, remove, rdiff, rtag, status, tag, update

-n  checkout/commit/tag/update のいずれのプログラムも 実行しません。 (プログラムはそれぞれの動作中にモジュールデータベースで 実行することを指定される可能性があり、このオプションはこれを バイパスします。) checkout, commit, export, rtag コマンドで利用できます。 警告: これは cvs コマンドの 左側 に指定できる、全体に作用する オプションと同じではありません。

-P  checkout か update によって更新されたことで空になった余分なディレクトリを 取り除きます (すなわち削除します)。 通常は、空のディレクトリ (リビジョン管理されたファイルを 含まないもの) は残されます。 -P を指定すると、チェックアウトしたソースからそういったディレクトリを 黙って削除します。 これはリポジトリからはディレクトリを削除しません。あなたが チェックアウトしたコピーから削除するだけです。 このオプションは -r か -D オプションが checkout と exportで指定された場合に暗黙のうちに 指定されることに注意して下さい。

-T  (ローカル) リポジトリからのコピーにより、CVS/Template を作成/更新します。 本オプションは、ローカルの cvs リポジトリを管理し、 リモートのリポジトリへコミットする開発者にとって有用です。 CVS/Template を維持することにより、 リモートコミットにおいても依然として、 適切なテンプレートをコミットエディタセッションに立ち上げ可能となります。 checkout と updateで利用可能です。

-p  リポジトリから取り出されたファイルを、カレントディレクトリに 書き込むのではなく、標準出力へパイプします。 checkout と update コマンドで使用できます。

-r tag
    デフォルトの ``head'' リビジョンの代わりに引数 tag で指定されたリビジョンを使います。 tag と rtag コマンドで 付けられた任意のタグと共に、常に 2 つの特別なタグが使用できます: はリポジトリ中で最も新しい有効なバージョンを指し、 そして はカレントの作業ディレクトリに最後にチェックアウトした リビジョンを指します。 このオプションを か でファイルのコピーを作成するときに使うと、 tag の指定は ``sticky'' です: cvs は tag を記憶して以降の update コマンドでも、他のものを 指定するまで、それを使い続けます。 tag としては シンボリックまたは番号によるものが使用できます。 RCS ファイルが指定されたタグを含んでいないときに警告メッセージを抑止するため 全体に作用する -q オプションをコマンドオプション -r と一緒に指定すると便利な場合が多くあります。 -r は checkout, commit, diff, history, export, rdiff, rtag, update コマンドで使用できます。 警告: これは cvs コマンドの 左側 に指定し、全体に作用する オプションと同じではありません。

CVS COMMANDS
以下が (最終的な) 全 cvs コマンドの詳細とそれぞれが受け付けるオプションです。 各コマンドの最初のサマリ行の説明は 3 種類の事柄をまとめています:

コマンドのオプションと引数
    特別なオプションが以下で説明されます。共通のコマンドオプションは サマリ行にしか現れないかもしれません。

作業ディレクトリかリポジトリか?
    いくつかの cvs コマンドは実行に作業ディレクトリが必要です。 いくつかはリポジトリが必要です。同様に、いくつかのコマンドは リポジトリを 変更し、いくつかは作業ディレクトリを変更し、 いくつかは何の変更も行いません。

同義語 多くのコマンドには同義語があります。 同義語は正式な名前よりも覚えやすい (あるいはタイプしやすい) と 感じることでしょう。

add [-k kflag] [-m 'message'] files...
    以下が必要: リポジトリ、作業ディレクトリ。
    以下を変更: 作業ディレクトリ。
    同義語: new
    add コマンドを使って ソースリポジトリに新しいファイルまたはディレクトリを作成します。 add で指定されるファイルまたはディレクトリは、すでに カレントディレクトリ ( checkout コマンドで作成されたディレクトリでなければなりません) に 存在しなければなりません。 新しいディレクトリ階層の全体をソースリポジトリに追加する (例えば、サードパーティのベンダから受け取ったファイル群のような) には、 代わりに コマンドを使います。 の引数が直下のサブディレクトリを指しているなら、そのディレクトリが ソースリポジトリの現位置に作成され、必要な cvs 管理ファイルが作業ディレクトリに作成されます。 ディレクトリがすでにソースリポジトリに存在した場合でも、 はあなたのバージョンのディレクトリに管理ファイルを作成します。 これによって、あなたがソースを checkout した後に誰か他の人がディレクトリを作っていても でそのディレクトリをあなたの私的なソースに作成することが 可能になります。以下のようにすることができます:
    example% mkdir new_directory
    example% cvs add new_directory
    example% cvs update new_directory
    を使った別のアプローチもあります:
    example% cvs update -d new_directory
    (新しく できた ディレクトリをあなたの作業ディレクトリに 追加するには、おそらく か で変更が恒久的なものとされるまで、追加されたファイルは ソースリポジトリには置かれません。 コマンドで削除されたファイルに対して を行うと、間で コマンドが実行されていなければファイルが復活します。 新しいファイルを で恒久的なものにするときに、いつものように、ログメッセージを指定する 機会があります。もしファイルの 作成 と対応するもう一つのログメッセージを指定したいならば (例えば、ファイルの目的を説明するなど)、 add コマンドの オプションで指定することができます。 オプションで このファイルがチェックアウトされるときの デフォルトを指定できます。 引数 は RCS ファイルに記録されて で変更することができます。 展開された キーワードを持たないであろうバイナリをチェックインする場合には を指定すると便利です。

admin [rcs-options] files...
    以下が必要: リポジトリ、作業ディレクトリ。
    以下を変更: リポジトリ。
    同義語: rcs
    これは rcs(1) に似た管理機構と対応する cvs のインタフェースです。 なんのフィルタや変換も行いません。 しかしながら、このコマンドは再帰的に働きます。よって使用には 特別な注意を払わなければいけません。

checkout [options] modules...
    以下が必要: リポジトリ。
    以下を変更: 作業ディレクトリ。
    同義語: co, get
    modulesで指定されたソースファイルのコピーを持つ 作業ディレクトリを作成します。他の大部分の cvs コマンドは作業ディレクトリに作用するものなので、これらを使う前に を実行しなくてはなりません。 modules はいくつかのソースディレクトリとファイルを 集めたものに対するシンボル名 (それ自体は というモジュールとしてソースリポジトリに定義されています。 cvs(5) 参照) か、あるいはリポジトリ中でのディレクトリまたはファイルへのパス名です。 指定した modules に応じて、 checkout は再帰的にディレクトリを作成して適切なソースファイルで満たします。 その後はいつでも、(他のソフトウェア開発者達がソースの彼らの分のコピーを 編集しているかどうかを気にすることなく) これらのソースファイルを編集したり、 他の人によってソースリポジトリに行われた新しい変更を取り込むために これらを更新 (update) したり、 あなたの作業を恒久的な変更としてリポジトリに 登録 (commit) することができます。 checkout はディレクトリの作成に使われることに注意して下さい。 作成されるディレクトリのトップレベルは常に checkout が起動されたディレクトリに追加され、そして通常、指定された moduleと同じ名前を持ちます。 module がエイリアスの場合は、作成されたサブディレクトリは違う名前を持つかも しれませんが、それがサブディレクトリであること、そして checkout はファイルが私的な作業領域に取り出される際に各ファイルへの 相対パスを表示すること (全体に作用する -Q オプションを指定していなければ) は当てにできます。 すでに以前の checkout で作成されているディレクトリで を実行することも許されています。これは 以下で説明する update コマンドに -d オプションを指定するのと同じ効果を持ちます。 で使える options は以下の標準のコマンドオプションです。 -P, -f, -k kflag , -l, -n, -p, -r tag, -D date これらに加えて、以下の特別のコマンドオプションを checkout で使うことができます: -A オプションで sticky なタグ、日付または -k オプションをリセットできます。(作業ファイルを -r, -D, -k オプションのいずれかを使って取り出すと、 cvs は対応するタグ、日付、kflag を記録して以降の 更新 (update) でそれを使い続けます。 -A オプションを使って cvs に それらの指定を忘れさせ、ファイルの ``head'' バージョンを取り出します)。 -j branch オプションはベースとなったリビジョンと、そこから変更された結果の リビジョンとの差分をマージします (例えば、もしタグがブランチを 指しているときは、 cvs は、そのブランチで行われた全ての変更を作業ファイルにマージします)。 2 つの -j オプションを指定すると、 cvs は 2 つの各々のリビジョン間での変更をマージします。 これは特定の差分を作業ファイルから ``削除'' するために使うことが できます。 加えて、各 -j オプションをブランチで使う場合に必要であれば 日時指定を加えることができ、選択するリビジョンを指定した日時以内に 制限できます。 日時を加える場合はタグにコロン (:) を付けて指定します。 例としては でローカルな変更と衝突する部分のあるソースを import するときに 実行するように指示されるコマンドがあります:
    example% cvs checkout -jTAG:yesterday -jTAG module
    -N オプションと を指定することで作業ディレクトリでモジュールのパスが短縮されるのを 防げます。(通常、明示的に対象ディレクトリを指定すると cvs は なるべくパスが短くなるようにします。) -c オプションで、作業ディレクトリのファイルやディレクトリに作成や変更を 行う代わりに、モジュールファイルをソートしたものを標準出力にコピー します。 -d dir オプションで、モジュール名ではなく、 dir で指定した名前のディレクトリを作業ファイルのために作成します。 -N を一緒に指定しない場合は、dir の下に作成されるパスは 可能な限り短くなります。 -s オプションを使って -s オプションでモジュールファイルに格納されたモジュール単位の ステータス情報を表示します。

commit [-lnR] [-m 'log_message' | -F file] [-r revision] [files...]
    以下が必要: 作業ディレクトリ、リポジトリ。
    以下を変更: リポジトリ。
    同義語: ci
    作業ディレクトリでの変更を共有のソースリポジトリに組み込むにときには を使います。 コミットする対象となる files を指定しない場合、現在の 作業ディレクトリ中の全ファイルが調べられます。 commit はあなたが本当に変更したファイルだけを慎重にリポジトリで変更します。 デフォルトでは (または明示的に -R オプションを指定した場合)、サブディレクトリのファイルも 調べられ、もし変更されていればコミットされます。 -l オプションで現ディレクトリのみ コミット するように制限できます。 変更されていなくても強制的にファイルをコミットしたい場合があるかも しれません。 これは -f フラグで可能で、これは同時に再帰も抑止します (もちろん -R で再帰するようにできます)。 commit は選択されたファイルがソースリポジトリの現リビジョンに対して 最新であることを確認します。 もし選択されたファイルのいずれかが まず で最新にされなければならないなら、そこで通知してコミットせずに終ります。 commit は update コマンドを呼び出しません。update すべきときであるかどうかの判断は ユーザにゆだねられます。 全てがうまくいくと、ログメッセージを入力するためにエディタが 呼び出されます。ログメッセージは一つかそれ以上のログを取る プログラムに書き込まれて ソースリポジトリのファイルに置かれます。 代わりにコマンドラインで -m オプションと共にログメッセージを指定し、 エディタの呼び出しを抑制することができます。また -F オプションで引数の file にログメッセージが含まれていることを 指示することもできます。 -r オプションで特定のシンボリックまたは番号で指定される リビジョンとしてコミットできます。 例えば、全ファイルを リビジョン ``3.0'' に上げる (変更されていないものも含めて) には、以下のようにします:
    example% cvs commit -r3.0
    cvs はメインの幹上のリビジョン (ドットが 1 つのリビジョン) へのコミットのみ 許します。 しかしながら、 -r オプションでブランチ上のリビジョン (偶数個のドットをもつリビジョン) へ コミットすることもできます。 ブランチとなるリビジョンを作成するには、通常 rtag または tag コマンドの -b オプションを使います。 その後、 checkout または update のいずれかでソースのベースを新しく作成したブランチにすることができます。 それ以降、それらの作業ファイルで行われた全ての commit される変更点は自動的にブランチのリビジョンに追加され、 それによって主たる開発ラインが混乱させられることはありません。 例をあげると、製品のバージョン 1.2 へのパッチを作成しなければ ならなくなったとすると、バージョン 2.0 がすでに開発中だったとしても、 以下のようにできます:
    example% cvs rtag -b -rFCS1_2 FCS1_2_Patch product_module
    example% cvs checkout -rFCS1_2_Patch product_module
    example% cd product_module
    [[ hack away ]]
    example% cvs commit
    極めて実験的なソフトウェアを開発しているとして、 前の週にチェックアウトしたなんらかのリビジョンをベースにしていると します。 あなたのグループの別の人がこのソフトウェアであなたと一緒に作業したいが、 主たる開発ラインの邪魔はしたくないと考えたなら、あなたはあなたの 変更点を新しいブランチにコミットすると良いでしょう。 すると別の人はあなたの実験的な変更をチェックアウトして cvs の衝突解決機能を最大限に利用することができます。 シナリオは以下のようになります:
    example% cvs tag -b EXPR1
    example% cvs update -rEXPR1
    [[ hack away ]]
    example% cvs commit
    別の人は単純に とすれば実験的な変更を採り入れてあなたと作業できるようになります。

diff [-kl] [format_options] [[-r rev1 | -D date1 | -j rev1:date1] [-r rev2 | -D date2 | -j rev2:date2]] [files...]
    以下が必要: 作業ディレクトリ、リポジトリ。
    以下を変更: なにも変更しません。
    作業ディレクトリのファイルとソースリポジトリのリビジョンを コマンドで比較できます。もし特定のリビジョンを指定しなければ、 ベースにしたリビジョンと比較されます。 標準の cvs コマンドのオプション -r で比較の対象となるリビジョンを指定することもできます。 最後に、 -r を 2 回 使うと、リポジトリの 2 つのリビジョン間の差分を取ることができます。 (head ブランチの) 過去のリビジョンとの差分を取るために -D オプションを指定することもできます。 また、過去のブランチタグ間の差分を取るために -j オプションを指定することもできます。 -r と -D と -j オプションは常に指定された中で 2 つまでを組み合わせられます。 サポートされている format_options のリストは を参照して下さい。 ファイルを何も指定しないと、 diff は現ディレクトリ (そして、標準オプション -lを指定していなければ そのサブディレクトリ) の全てのファイルについて、 ソースリポジトリの対応するリビジョンと異なっているもの (つまり あなたが 変更したファイル) または指定されたリビジョンと 異なっているものについて、その差分を表示します

export [-flNnQq] -r rev|-D date [-d dir] [-k kflag] module...
    以下が必要: リポジトリ。
    以下を変更: 現ディレクトリ。
    このコマンドは cvs の管理ディレクトリを持たない module のソースのコピーが必要なときに使います。 例えば、サイト外にソースを出す準備をするために を使うことができます。 このコマンドでは日付またはタグを指定することが 必要 です。 (-D または -r によって)。それによって出荷したソースを 確実に再構成できるようになります。 標準でないオプションは (ソースをディレクトリ dir に書き込みます) と (モジュールパスを短縮しません) のみです。 これらは export が使われるときは -kv オプションが有用です。 これによって キーワードが、どこか別のサイトで import が行われたときにリビジョン情報が失われないような形に展開されるように なります。 他の kflag を で使用することもできます。その説明は co(1) にあります。

history [-report] [-flags] [-options args] [files...]
    以下が必要:
    以下を変更: 何も変更しません。
    cvs はヒストリファイルを管理しており、各 checkout, commit, rtag, update, release コマンドの使用を記録します。 を使って、この情報を色々なフォーマットで表示することができます。 警告: は を 共通の COMMAND OPTIONSでの説明とは異なる意味に使用します。 いくつかのオプション (上で -report となっている部分) は どんな種類のレポートを生成するかを制御します:

-c  今までの各 commit (つまりリポジトリの変更) についてレポートします。

-m module
    特定の module についてレポートします。(コマンドラインで複数の -m を指定できます。)

-o  チェックアウトされたモジュールについてレポートします。

-T  全てのタグについてレポートします。

-x type
    特定のレコードタイプ X のセットを cvs ヒストリから 取り出します。タイプは 1文字で表され、組み合わせて指定できます。 以下のコマンドは単一のレコードタイプを持ちます: checkout (タイプ `O')、 release (タイプ `F')、rtag (タイプ `T')。 update は 4 つのレコードタイプのうちの 1 つになります: `W' は 作業用のファイルのコピーが update で (それがリポジトリから無くなって いたために) 削除された場合です; `U' は作業ファイルがリポジトリから コピーされた場合です; `G' は必要なマージが無事に終った場合です; 'C' は マージが必要だが衝突が検出された場合 (手動でのマージが必要な場合) です。 また、commit では 3つのレコードタイプのうちの 1つになります: `M' はファイルが変更された場合; `A' はファイルが最初に追加された場合; `R' はファイルが削除された場合です。

-e  全て (全レコードタイプ); 以下を指定するのと等価です。

-z zone
    ヒストリレコードを出力する際に zone で指定されたタイムゾーンを使います。 LT というゾーン名はローカルタイムの意味になります。 数値によるオフセットは時分での UTC との時差を意味します。 例えば、 +0530 は 5 時間と 30 分だけ UTC より前 (つまり東側) の意味になります。

    -flags と書かれた部分のオプションは、レポートする範囲を絞ります。 引数の指定はありません。

-a  全てのユーザのデータを表示します (デフォルトでは

-l  最後の変更のみ表示します。

-w  が実行されているのと同じ作業ディレクトリから行われた変更に関する レコードのみを表示します。

    -options args と書かれた部分のオプションは引数に 基づいてレポート範囲を絞ります:

-b str
    文字列 str をモジュール名、ファイル名、リポジトリパスの いずれかに含むレコードに戻って表示します。

-D date
    date 以降のデータを表示します。

-p repository
    特定のソースリポジトリのデータを表示します (複数の -p オプションを同じコマンド行で指定できます)。

-r rev
    個々の RCS ファイルに現れるリビジョンが rev で指定されたリビジョンまたはタグ以降であるレコードを表示します。 各 RCS ファイルについてリビジョンまたはタグが検索されます。

-t tag
    tag で指定されるタグがヒストリファイルに最後に 追加されてからのレコードを表示します。 このオプションは、 RCS ファイルではなくヒストリファイルのみ参照する点で 上記の -r フラグと異なり、 より高速です。

-u name
    name で指定されるユーザのレコードを表示します。

import [-options] repository vendortag releasetag...
    以下が必要: リポジトリ、ソース配布物のディレクトリ。
    以下を変更: リポジトリ。
    を使うことで外部の供給元 (例えばソースベンダ) からのソース配布物 全体をあなたのソースリポジトリのディレクトリへ取り込めます。 最初のリポジトリの作成と、外部の供給元からのモジュールへの 大規模な更新の両方にこのコマンドを使うことができます。 引数 repository で CVS ルートディレクトリ下のリポジトリ用 ディレクトリ名 (またはディレクトリへのパス) を与えます。 もしディレクトリが存在しないなら、import が作成します。 あなたのソースリポジトリで (前回の import から) 変更された ソースへの更新に import を使った場合、開発の 2 本のブランチで 衝突しているファイルについて警告します。 import が指示するように、 を使って差分を調整できます。 デフォルトでは、ある種のファイル名が CVS 管理、または他の一般的なソース管理システムに関連する名前; パッチファイル、オブジェクトファイル、アーカイブファイル、 エディタのバックアップファイルのための一般的な名前; そして雑多なユーティリティの加工品であることを示すその他の名前。 無視されるファイルのリストの最新については、 (このマニュアルページの関連項目の節に記述してあるように) Cederqvist 著のマニュアルを参照して下さい。 外部からのソースは第一レベルの ブランチ、デフォルトでは 以降の更新は このブランチのリーフになります。 例えば、最初に import したソース集合からのファイルはリビジョン 次の import による更新でファイルはリビジョン 最低で 3 つの引数が必要です。ソースの集合を識別するために repository が必要です。vendortag はブランチ全体を示す タグになります (例えば 識別するために少なくとも一つの releasetag も指定しなければ なりません。 cvs の標準のコマンドオプションのうちの 1 つ -m が利用可能です: ログメッセージを -m で指定しないと、(commit でのように) メッセージを 入力できるようにエディタが起動されます。 さらに 3 つの特別なオプションがあります。 を使って、各ファイルの最終更新日時がチェックインの日付と時刻として 使われるよう指示できます。 を使って第一レベルのブランチを を使って import 中に無視されるべきファイル名を指定できます。 このオプションは繰り返して指定できます。 いかなるファイルも無視されない (デフォルトで無視されるものでも) ようにするには、

log [-l] rlog-options [files...]
    以下が必要: リポジトリ、作業ディレクトリ。
    以下を変更: 何も変更しません。
    同義語: rlog
    files のログ情報を表示します。 rlog のオプションの中でも有用なものとしては、次のものがあります: ヘッダ (タグの定義を含むが、ログの大部分は省略される) のみ表示する -h ; 特定のリビジョンまたはリビジョンの範囲でログを選択する -r; そして特定の日時または時刻の範囲を選択する -d が あります。完全な説明は rlog(1) を参照して下さい。 このコマンドは -l オプションが指定されていなければ、デフォルトで再帰的に働きます。

rdiff [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules...
    以下が必要: リポジトリ。
    以下を変更: 何も変更しません。
    同義語: patch
    2 つのリリース間の patch(1) ファイルを Larry Wall 氏のフォーマットで作成します。それは直接 patch プログラムに入力できるもので、古いリリースを新しいリリースに更新する ために使えます。 (これは直接リポジトリを参照するため、これに先立って checkout する必要のない、数少ない cvs コマンドのうちの 1 つです。) 差分出力は標準出力デバイスに送られます。 (標準の -r と -D オプションを 使って) 1 つまたは 2 つのリビジョンまたは日時の任意の組み合わせを指定できます。 もしリビジョンまたは日時が 1 つしか指定されないと、 そのリビジョンまたは日時とその時点での RCS ファイルの ``head'' リビジョンの差分がパッチファイルに反映されます。 もしソフトウェアリリースへの影響が複数ディレクトリにわたるなら、 古いソースにパッチを当てる際、 patch が他のディレクトリに置かれたファイルを見つけられるように、 -p オプションを patch コマンドに指定する必要があるかもしれません。 標準オプションの flags -f、-l が このコマンドで利用可能です。他にもいくつかの 特別なオプションフラグがあります: -s オプションを指定すると、パッチ出力が作られません。 代わりに、2 つのリリース間で変更または追加されたファイルの要約が 標準出力デバイスに送られます。 これは、例えば、2 つの日付またはリビジョンの間で、どのファイルが 変更されたかを調べるのに便利です。 -t オプションを指定すると、新しい方から 2 つのリビジョンの差分が 標準出力デバイスに送られます。これはファイルへの最後の変更が 何であったかを知るのに最適です。 -u オプションを指定すると、パッチ出力として新しい ``unidiff'' フォーマットを使って文脈差分とします。 希望するなら、 -c を使って明示的に 形式の文脈差分を指定できます (こちらがデフォルトです)。

release [-dQq] modules...
    以下が必要: 作業ディレクトリ。
    以下を変更: 作業ディレクトリ、ヒストリログ。
    このコマンドは の効果を安全にキャンセルすることになっています。 cvs はファイルをロックしないので、厳密にはこのコマンドを使用する必要は ありません。 単に作業ディレクトリを削除しても構いません。 しかし忘れているかも知れない変更を失う危険があり、そして cvs ヒストリファイルには捨ててしまったチェックアウトの記録は残りません。 を使うとこれらの問題を回避できます。 このコマンドは以下の点をチェックします: コミットされていない変更が存在しないこと、 cvs の作業ディレクトリの直上または内部から実行していること、 ファイルが記録されたリポジトリがモジュールデータベースに 定義されたリポジトリと同じであること、です。 これらの条件が全て真なら は その実行記録 (意図的にチェックアウトを削除した証拠) を cvs のヒストリログに残します。 -d フラグを使ってソースの作業用コピーを release が 成功したら削除するように指示できます。

remove [-lR] [files...]
    以下が必要: 作業ディレクトリ。
    以下を変更: 作業ディレクトリ。
    同義語: rm, delete
    このコマンドを使って、files をソースリポジトリから削除する つもりであることを宣言できます。大部分の cvs コマンドがそうであるように、 は作業ディレクトリのファイルに作用し、リポジトリには直接には 作用しません。安全機構として、まず指定するファイルを作業ディレクトリ から削除することも必要になっています。 リポジトリに commit で変更を反映するまで、ファイルは実際には削除されません。 commit した時点で、ソースリポジトリの対応する RCS ファイルが ディレクトリ (これもソースリポジトリの中です) に 移動 されます。 このコマンドはデフォルトで再帰的になっており、 物理的に削除された全てのファイルが次の commit での削除されるようにスケジュールします。 -l オプションを使うか、または実際に削除したいファイルのみを 指定することで、この再帰を抑制できます。

rtag [-falnRQq] [-b] [-d] [-r tag | -D date] symbolic_tag modules...
    以下が必要: リポジトリ。
    以下を変更: リポジトリ。
    同義語: rfreeze
    このコマンドを使って、リポジトリ中の特定の、明示的に 指定されたソースバージョンにシンボリックタグを割り当てられます。 はリポジトリの内容に直接に作用します (これに先立って checkout する必要はありません)。 作業ディレクトリの内容に基づいて タグを付けるバージョンを選択するには、代わりに を使います。 一般に、タグ (しばしばソフトウェア配布物のシンボリックな 名前でもある) は削除されるべきではありません。 しかし完全に廃れてしまったシンボリックな名前を削除する場合 (例えば、 アルファリリースの場合など) の手段として、 -d オプションが用意されています。 はすでに存在するタグを移動しません。 しかしながら、-F オプションが指定されると はそのファイルに既に存在する symbolic_tag のインスタンスを 新しいリポジトリのバージョンへ移動します。 -F オプションが無い場合、 を使ってすでにそのファイルに存在するタグを付けようとすると、 エラーメッセージが出力されます。 -b オプションはタグを ``ブランチ'' タグにし、並行の、 独立した開発を可能にします。 これは以前にリリースしたソフトウェア配布物へのパッチを作成するのに 最も有用です。 標準の -r と -D オプションを使って、すでに特定の タグを含んでいるファイルのみにタグを付けることができます。 この方法はタグの名前を変えるのに使えるでしょう: 古いタグで指定されるファイルにのみタグを付け、 それから古いタグを削除すれば、確実に同じファイルで古いタグを 新しいタグで置き換えることができます。 rtag はデフォルトで再帰的に実行し、引数で指定した modules の全てのサブディレクトリにタグをつけます。 この動作を トップレベルのディレクトリに制限するには標準の -l オプションを 指定します。 また明示的に再帰を指定するには -R を指定します。 モジュールデータベースではタグが指定されたときに必ず実行される プログラムを指定できます。よくある使い方は、興味を持っている グループに電子メールを送るというものです。もしそのプログラムを バイパスしたい場合は、標準の -n オプションを使います。 -a オプションを使うと の中の指定されたタグを含む削除されたファイルを rtag の対象にできます。 タグはそれらのファイルから削除され、開発の進展につれての シンボリックタグの再利用に便利になります (そしてファイルは以降の 配布物から削除されます)。

status [-lRqQ] [-v] [files...]
    以下が必要: 作業ディレクトリ、リポジトリ。
    以下を変更: 何も変更しません。
    files の現在の状態について、``sticky'' なタグ、 日付、-k オプションを含む、ソースリポジトリに関する 簡潔なレポートを表示します。(``sticky'' オプションはリセットするまで がどう働くかを規定します。 このコマンドを用いて、作業用ソースディレクトリでの による潜在的な影響を予測することもできます。 もし files を明示的に指定しないと、cvs が 作業ディレクトリに置いた全てのファイルについてレポートが 表示されます。 この検索の範囲を (そのサブディレクトリではなく) カレントディレクトリ だけに制限するには、標準の -l オプションフラグを使います。 -R オプションによって、明示的に再帰的なステータスレポートを 指定することもできます。 -v オプションを指定すると RCS ファイルのシンボリックタグも表示されるようになります。

tag [-lQqR] [-F] [-b] [-d] [-r tag | -D date] [-f] symbolic_tag [files...]
    以下が必要: 作業ディレクトリ、リポジトリ。
    以下を変更: リポジトリ。
    同義語: freeze
    このコマンドは、作業ディレクトリに最も近いリポジトリのバージョンに シンボリックタグをつけるために使います。rtag を 使ったときのように、タグはリポジトリに直接つけられます。 cvs tag がリポジトリを直接操作するという事実に関し、 潜在的に驚いてしまうことがあります。 それは、チェックインバージョンに対してタグ付けするということであり、 これは作業ディレクトリにおいてローカルに修正したファイルとは 違ってもかまわないということです。 誤ってこのようなことをしたくない場合、 -c オプションを cvs tag へ指定してください。 ローカルに修正されたファイルがある場合、ファイルにタグ付けする前に、 CVS はエラーで中断します。 タグの使い方の一つは、プロジェクトのソフトウェア凍結日が やってきたときに開発中のソースの ``snapshot'' を記録するというものです。 凍結した日の後でバグが修正されたら、それらの変更されたリリースの 一部となるソースのみに再度タグをつける必要があります。 シンボリックタグはどのファイルのどのリビジョンがソフトウェア配布物を 作成する際に使われたかを恒久的に記録する意味があります。 checkout, export および update コマンドは、タグをつけたリリースと全く同じものを、リリースのタグが つけられて以降にファイルが変更、追加、削除されたかどうかを気にする ことなく、将来のいつでも取り出すことを可能にします。 標準の -r と -D オプションを使って、すでに特定の タグを含んでいるファイルのみにタグを付けることができます。 この方法はタグの名前を変えるのに使えます。 すなわち、 古いタグで指定されるファイルにのみタグを付け、 それから古いタグを削除すれば、確実に同じファイルで古いタグを 新しいタグで置き換えることができます。 -r または -D フラグに加えて -f フラグを 指定すると、コマンドラインで指定したファイルで古いタグを 持っていないか指定された日時に存在しなかったものにもタグを 付けます。 デフォルト (-r または -D フラグが無い場合) では、 バージョンは明示的に指定されるのではなく、暗黙のうちに作業ファイルの ヒストリの cvs レコードから取られます。 とすると、指定したシンボリックタグが追加されるのではなく 削除 されます。警告: タグを削除する前にその根拠をしっかり確認して下さい。 これは効率的に一部の履歴情報を捨てますが、後になってその情報が重要だったと 判明するかも知れないからです。 はすでに存在するタグを移動しません。 しかしながら、-F オプションが指定されると はそのファイルに既に存在する symbolic_tag のインスタンスを 新しいリポジトリのバージョンへ移動します。 -F オプションが無い場合、 を使って すでにそのファイルに存在するタグを付けようとすると エラーメッセージが出力されます。 -b オプションはタグを ``ブランチ'' タグにし、並行して、 独立した開発を可能にします。 これは以前にリリースしたソフトウェア配布物へのパッチを作成するために 最も有効です。 通常、 tag はサブディレクトリに渡って再帰的に実行します。これは 標準の -l オプションを使って抑制できます。 明示的に再帰を指定するには -R を使います。

update [-ACdflPpQqR] [-d] [-r tag|-D date] files...
    以下が必要: リポジトリ、作業ディレクトリ。
    以下を変更: 作業ディレクトリ。
    あなたが共有のリポジトリから私的なソースのコピーを作成するために checkout を実行した後も、別の開発者は共有のソースへの変更を続けるでしょう。 時々、開発過程で都合のいいときに、作業ディレクトリ内から update コマンドを使うことで、 最後に checkout または update してからソースリポジトリに登録された変更を、あなたの変更と 融合させることができます。 update は進行状況をファイルごとに 1 行表示することで知らせ続けます。 各行の先頭には以下の のいずれか 1 文字があり、ファイルの状態を示しています:

U file
    file はリポジトリに関して 最新に なりました。 これはリポジトリには存在するがあなたのソースには無いもの、 およびあなたは変更していないけれどもリポジトリの 最新リビジョンでは無いものに関して行われます。

P file
    U と似ていますが、CVS サーバは全ファイルの代りにパッチを送りました。 U と同じことを、低バンド幅で実行しました。

A file
    file はソースのあなたの私的なコピーに 追加 されたもので、 file に対して を実行したときに ソースリポジトリに追加されます。 これは当該ファイルを commit する必要があるという助言です。

R file
    これはソースのあなたの私的なコピーから file が 削除 されており、 file に対して を実行すると ソースリポジトリから削除されることを示します。 これは当該ファイルを commit する必要があるという助言です。

M file
    あなたの作業ディレクトリの file は 変更 されています。 は作業中のファイルについて 2 つの状態のうちの 1 つを示します: リポジトリ中の対応するファイルは変更されておらず、あなたのファイルは 最後に見たときのままになっている。 または、あなたのコピー同様 リポジトリのものも変更されているが、それらの変更は 衝突することなく無事にあなたの作業ディレクトリに 融合 (merge) されました。

C file
    file へのあなたの変更とソースリポジトリからの変更との 融合を試みる間に 衝突 (conflict) が検出されました。 現在 file (あなたの作業ディレクトリのコピー) は 2 つのバージョンをマージした結果になっています。 変更されていない あなたのファイルのコピーも作業ディレクトリに、 `.#file.version' という名前で置かれます。 ここで version は あなたの変更したファイルの出発点となった リビジョンです。 (ある種のシステムでは、 で始まるファイルは何日かアクセスされないと自動的に削除されるので 注意して下さい。もし元のファイルのコピーを取っておくつもりなら、 名前を変えておくのが良いでしょう。)

? file
    file が あなたの作業ディレクトリにありますが、 ソースリポジトリのどれとも対応しておらず、 cvs が無視するファイルのリストにもありません (-I オプションの説明を参照して下さい)。

    -A オプションを用いて sticky なタグ、日付、 -k オプションをリセットできます。(-r, -D, -k オプションの いずれかを使って作業ファイルのコピーを得ると、 cvs は対応するタグ、日付、kflag を記憶し、 以降の update で それを使い続けます。-A オプションを使って cvs にそれらの指定を忘れさせることで、ファイルの ``head'' バージョンを取り出します)。 -jbranch オプションは、変更結果のリビジョンと ベースにしたリビジョンの間での変更をマージします (例えば、もしタグがブランチを指しているなら、 cvs は、そのブランチで行われた全ての変更をあなたの作業ファイルにマージします)。 2 つの -j オプションを指定すると、 cvs は 2 つの それぞれのリビジョン間での変更をマージします。 これは特定の変更を作業ファイルから ``削除'' するのに使えます。 例えば、ファイル foo.c がリビジョン 1.6 をベースにしていて、 1.3 と 1.5 の間で行われた変更を削除したいなら、次のようにします:
    example% cvs update -j1.5 -j1.3 foo.c	# 順番に注意...
    加えて、各 -j オプションにはオプションで、ブランチと使う場合に、 日付指定を含めることが可能で、選択するリビジョンを指定した 日付の範囲内に制限できます。 オプションの日付はコロン (:) をタグに付けることで指定します。
    -jSymbolic_Tag:Date_Specifier
    -d オプションを使うと、もし作業ディレクトリに無いディレクトリが リポジトリにあれば作成します。(通常、update は作業ディレクトリに すでに登録されているディレクトリとファイルのみに働きます。) これは最初の checkout 以降に作成されたディレクトリを 更新するのに有用です。しかし不幸にも副作用があります。 もし作業ディレクトリを作る際に慎重にリポジトリ中の特定の ディレクトリを除いた (モジュール名を使ったか明示的に必要な ファイルとディレクトリをコマンドラインで指定したかのいずれかで) とすると、 -d で更新するとそれらの不要かも知れないディレクトリができてしまいます。 -I name を使うと、update の際、名前が name に符合する (作業ディレクトリの) ファイルを無視します。 コマンドラインで -I を 2 回以上指定することで、 複数の無視するファイルを指定できます。 デフォルトで、update はあるパターンに名前がマッチするファイルを 無視します; 無視されるファイル名の最新リストについては、 (このマニュアルページの関連項目の節に記述してあるように) Cederqvist 著のマニュアルを参照して下さい。 いずれのファイルも無視しないようにするには を使います。 ローカルで修正したファイルを、 リポジトリ上のクリーンなファイルで上書きするには、 を使います (修正されたファイルは `.#file.revision' に保存されます)。 標準の cvs コマンドオプション -f, -k, -l, -P, -p, -r も update で使用可能です。

関連ファイル
より詳細な cvs サポートファイルの情報については cvs(5) を参照して下さい。

ホームディレクトリのファイル:

.cvsrc
    cvs の初期化ファイル。このファイルの行は各 cvs コマンドのデフォルトのオプションの指定に使えます。例えば と言う行は に対して、コマンドラインで渡されたオプションに、常に -c オプションが加えられて渡されることを指定します。

.cvswrappers
    リポジトリのファイル CVSROOT/cvswrappers で指定されている ものに加えて使用されるラッパを指定します。

作業ディレクトリのファイル:

CVS cvs 管理ファイルのディレクトリ。 削除してはいけません。

CVS/Entries
    作業ディレクトリのファイルのリストと状態。

CVS/Entries.Backup

CVS/Entries.Static
    フラグ: でそれ以上エントリを追加しません。

CVS/Root
    チェックアウトしたときのリポジトリ ( CVSROOT ) 位置へのパス名。 CVSROOT 環境変数が設定されていない場合、このファイルが代わりに使用されます。 このファイルの内容と CVSROOT 環境変数が異なっていると警告メッセージが出されます。 CVS_IGNORE_REMOTE_ROOT 環境変数が設定されていると、このファイルは上書きされることがあります。

CVS/Repository
    ソースリポジトリ中の対応するディレクトリへのパス名。

CVS/Tag
    ディレクトリ毎の ``sticky'' なタグまたは日付情報を保持しています。 このファイルは -r か -D を checkout または update コマンドに指定して、ファイルが指定されなかったときに作成/更新されます。

CVS/Checkin.prog

CVS/Update.prog

ソースリポジトリ中のファイル:

$CVSROOT/CVSROOT
    リポジトリ全体の管理ファイルのディレクトリ。

CVSROOT/commitinfo,v
    のリクエストを選別するプログラムを登録します。

CVSROOT/cvswrappers,v
    ファイルをリポジトリにチェックインそしてリポジトリから チェックアウトするときに使用される cvs ラッパコマンドを登録します。 ラッパはファイルまたはディレクトリが CVS で入出力される際に 処理を行うことを可能にします。使い道はいろいろありますが、 その一つとして、C のファイルをチェックインする前に再フォーマットして、 リポジトリ中のコードの見た目を揃えるというものがあります。

CVSROOT/editinfo,v
    のログエントリの編集/確認用プログラムを登録します。

CVSROOT/history
    cvs 処理のログファイル。

CVSROOT/loginfo,v
    のログエントリをパイプで渡すプログラムを登録します。

CVSROOT/modules,v
    このリポジトリ中のモジュールを定義します。

CVSROOT/rcsinfo,v
    操作中に使用するテンプレートへのパス名を登録します。

CVSROOT/taginfo,v
    と での確認/ログ採集のためのプログラムを登録します。

MODULE/Attic
    削除されたソースファイルのためのディレクトリ。

#cvs.lock
    ソースリポジトリに微妙な変更を行っているときに cvs が作成するロックディレクトリ。

#cvs.tfl.pid
    リポジトリの一時的なロックファイル。

#cvs.rfl.pid
    読み出しロック。

#cvs.wfl.pid
    書き込みロック。

環境変数

CVSROOT
    cvs ソースリポジトリのルートへのフルパス名 ( RCS ファイルが保存されている場所) を指定します。 この情報は大部分のコマンドの実行で cvs から参照できなければなりません。 もし CVSROOT が設定されていないか、それを上書き指定したい場合は、 コマンドライン上で与えることができます: もし cvs バイナリのコンパイル時に正しいパスが指定されているなら CVSROOT を設定しなくて構いません。

CVSREAD
    これがセットされていると、 checkout と update は作業ディレクトリのファイルを読み出し専用にするべく努力します。 これがセットされていないときは、デフォルトでは作業ファイルの 変更が許可されます。

CVSREADONLYFS
    これがセットされていると、 -R オプションが仮定され、 cvs の動作が読み出し専用リポジトリモードになります。

RCSBIN
    co(1) や ci(1) といった RCS のプログラムが置かれている場所へのフルパス名を指定します (CVS 1.9 またはそれ以前)。

CVSEDITOR
    commit 中にログメッセージの記録に使われるプログラムを指定します。 設定されていないと、 VISUAL と EDITOR の環境変数が (この順序で) 試されます。 どちら も設定されていないなら、システム依存のデフォルトエディタ (例えば vi) が使用されます。

CVS_CLIENT_PORT
    この変数がセットされていると cvs はデフォルトポート (cvspserver 2401) の代りにこのポートを pserver モード で使用します。

CVS_IGNORE_REMOTE_ROOT
    この変数がセットされていると cvs は CVS/Root ファイル中のリモートのリポジトリへの参照を全て 無視します。

CVS_OPTIONS
    cvs のデフォルトオプションを指定します。 これらのオプションは、 スタートアップファイル (~/.cvsrc) の読み込み前に解釈されます。 また、コマンドラインパラメータにより明示的に上書き可能です。

CVS_RSH
    cvs サーバを開始するときに使用するリモートシェルコマンドの 名前を決定します。 この変数が設定されていない場合は が使用されます。

CVS_SERVER
    cvs サーバコマンドの名前を指定します。 この変数が設定されていない場合は が使用されます。

CVSWRAPPERS
    スクリプトは、 リポジトリの CVSROOT/cvswrappers とユーザのホームディレクトリの ~/.cvswrappers に 含まれるデフォルトのラッパに加え、 変数 CVSWRAPPERS を参照して、ラッパファイルの名前を決定します。

作者

Dick Grune
    comp.sources.unix にポストされ、1986 年 12 月のリリース volume6 に収められたオリジナルの cvs シェルスクリプト版の作者。 cvs の衝突を解決するアルゴリズムの大部分を作成しました。

Brian Berliner
    cvs プログラム自身のコーディングとデザインを 1989 年 4 月に、Dick によるオリジナルをベースにして行いました。

Jeff Polk
    Brian を助けて cvs のモジュールとベンダブランチのサポートをデザインしました。 そして checkin(1) シェルスクリプト ( の作者でもあります。

ここに書くには多くの人が他にもいます。

関連項目
CVS の最も包括的なマニュアルは Per Cederqvist らによる Version Management with CVS です。 システムによっては、 info cvs コマンドで閲覧できたり、 cvs.ps (postscript), cvs.texinfo (texinfo のソース), cvs.html が 利用可能かもしれません。 CVS の更新、ドキュメントに関するさらなる情報、 CVS 関連のソフトウェア、CVS の開発等については、下記をご覧ください:
http://cvshome.org http://www.loria.fr/~molli/cvs-index.html
ci(1), co(1), cvs(5), cvsbug(8), diff(1), grep(1), patch(1), rcs(1), rcsdiff(1), rcsmerge(1), rlog(1).

日本語訳
野首 寛高(h-nokubi@nmit.mt.nec.co.jp): FreeBSD 用に翻訳
酒井 淳嗣(sakai@jp.freebsd.org): FreeBSD 版の校正