スポンサーリンク

CVS

名称
書式

解説
不可欠なコマンド
オプション
CVS OPTIONS
使用法
CVS のスタートアップファイル
CVS COMMAND のまとめ
共通の COMMAND OPTIONS
CVS COMMANDS
関連ファイル
環境変数
作者
関連項目
日本語訳

名称

cvs − コンカレントバージョンシステム

書式

cvs [ cvs_options ]

cvs_command [ command_options ] [ command_args ]

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

解説

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 commit’を実行した時にリポジトリに追加されます。注意: 新しいソー スをソースリポジトリに登録するには ‘cvs import’ コマンドを 使っ て下さい。 ‘cvs add’ はすでにチェックアウトされているモジュール に新しいファイルを追加するときにのみ使います。

cvs remove file...

(指定するファイルを消した後に) リポジトリからファイルを消したい ことを宣言する場合に、このコマンドを使います。 ‘cvs commit’を実 行するまで削除は他へは影響しません。

cvs commit file...

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

オプション

cvs のコマンドラインには cvs_optionsを含めることができ、これは cvs プロ グラム全体に適用されます。 ひとつの cvs_commandがソースリポジトリへの特 定 の動作を指定します。 そして cvs_command の動作を完全に指定するために command_optionscommand_arguments とを含めることができます。

警告: cvs_commandとオプションの相対的な位置関係に正確さを期さなければな り ません。なぜなら同じオプションが cvs_options の位置 ( cvs コマンドの 左側) と command_options の位置 ( cvs コマンドの右側) のいずれに置か れ るかで異なる意味を持つ可能性があるためです。

cvs_command を 省 略 で きる状況が2つだけあります: ‘cvs −H’ または ‘cvs --help’ は利用可能なコマンドの一覧を引き出します、そして ‘cvs −v’ ま た は ‘cvs --version’ は cvs それ自身のバージョン情報を表示します。

CVS OPTIONS

リリース 1.6 現在、 cvs は、短いオプションと共に GNU スタイルの長いオプ ションもサポートします。現在はまだ 2, 3 の長いオプションしかサポート さ れ ておらず、それらは同じ意味を持つ短いオプションの後ろにかぎ括弧で囲ん で示されています。

以下のオプションは cvs プログラムの全体的な制御に使います:

−H [ --help ]

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

−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−levelgzip を使い、やりとりするデータの圧縮と伸 長を行います。リンクの両端で GNU gzip プログラムがその時点で の サーチパス中に存在する必要があります。

使用法

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

CVS のスタートアップファイル

通常、CVS は起動時にユーザのホームディレクトリから .cvsrc というファ イ ル を 読 み込みます。この起動時の手続きは −f フラグで止めることができま す。

.cvsrc ファイルには CVS コマンドに引数リストを付けて、1 行に 1 つのコマ ンドを並べます。例えば .cvsrc に以下のように書くと:

diff −c

cvs diff’ コマンドには常にコマンドラインで指定されたオプションに加えて −c オプションが渡されるという意味になります (この場合 ‘cvs diff’ を実行 す る と 全てにおいて context diff 形式が生成されるという効果を持ちま す)。

大域的なオプションは、cvs キーワードを使用して指定します。例えば次の

cvs −q

は、大域的オプション −q が指定されたかのように全 ‘cvs’ コマンドが動作す ることを意味します。

CVS COMMAND のまとめ

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

add

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

admin

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

checkout

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

commit

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

diff

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

export

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

history

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

import

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

init

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

log

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

rdiff

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

release

cvs checkout’をキャンセルし、全ての変更を捨て去ります。 (作業 ディレクトリを削除できます。 リポジトリは変更しません。)

remove

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

rtag

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

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 コ マ ン ド の 説 明 を 参照して下さい)。 −Dcheckout, 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’’ になります。 つまり、このオプションを checkoutupdate コマンドで指定すると、 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 コマンドの 左側に指定できる、全体に作 用する ‘cvs −n’ オプションと同じではありません。

−P

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

−T

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

−p

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

−r tag

デフォルトの ‘‘head’’ リビジョンの代わりに引数 tag で指 定されたリビジョンを使います。 tagrtag コマンドで付けられた 任意のタグと共に、常に 2 つの特別なタグが使用できま す: ‘HEAD’ はリポジトリ中で最も新しい有効なバージョンを指し、そして ‘BASE’ はカレントの作業ディレクトリに最後にチェックアウトしたリビ ジョ ンを指します。

こ のオプションを ‘cvs checkout’ か ‘cvs update’ でファイルのコ ピーを作成するときに使うと、 tag の指定は ‘‘sticky’’ です: cvstag を記憶して以降の update コマンドでも、他のものを指定する まで、それを使い続けます。 tag としてはシンボリックまたは番号に よるものが使用できます。 RCS ファイルが指定されたタグを含んでい ないときに警告メッセージを抑止するため全体に作用する −q オ プ ショ ンをコマンドオプション −r と一緒に指定すると便利な場合が多 くあります。 −rcheckout, commit, diff, history, export, rdiff, rtag, update コマンドで使用できます。 警告: これは cvs コマンドの 左側に指定し、全体に作用する ‘cvs −r’ オプションと同 じではありません。

CVS COMMANDS

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

コマンドのオプションと引数

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

作業ディレクトリかリポジトリか?

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

同義語

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

add [−k kflag] [−m ’message] files...

以下が必要: リポジトリ、作業ディレクトリ。
以下を変更: 作業ディレクトリ。
同義語: new
add
コマンドを使ってソースリポジトリに新しいファイルまたはディ レクトリを作成します。 add で指定されるファイルまたはディレクト リ は、すでにカレントディレクトリ ( checkout コマンドで作成され たディレクトリでなければなりません) に存在しなければな り ま せ ん。 新しいディレクトリ階層の全体をソースリポジトリに追加する ( 例えば、サードパーティのベンダから受け取ったファイル群のような) には、代わりに ‘cvs import’ コマンドを使います。

cvs add’ の引数が直下のサブディレクトリを指しているなら、その ディレクトリがソースリポジトリの現位置に作成され、必要な cvs 管 理 ファイルが作業ディレクトリに作成されます。ディレクトリがすで にソースリポジトリに存在した場合でも、 ‘cvs add’ はあなたのバー ジョ ンのディレクトリに管理ファイルを作成します。これによって、 あなたがソースを checkout した後に誰か他の人がディレク ト リ を 作っていても ‘cvs add’ でそのディレクトリをあなたの私的なソース に作成することが可能になります。以下のようにすることができます:

example% mkdir new_directory
example% cvs add new_directory
example% cvs update new_directory

cvs update’ を使った別のアプローチもあります:

example% cvs update -d new_directory

(新しく できた ディレクトリをあなたの作業ディレクトリに追加する には、おそらく ‘cvs checkout’ か ‘cvs update -d’を使用する方 が 簡単でしょう。)

cvs commit’ で変更が恒久的なものとされるまで、追加されたファイ ルはソースリポジトリには置かれません。 ‘cvs remove’ コマンド で 削 除 さ れ た ファ イ ルに対して ‘cvs add’ を行うと、間で ‘cvs commit’ コマンドが実行されていなければファイルが復活します。

新しいファイルを ‘cvs commit’ で恒久的なものにするときに、い つ も のように、ログメッセージを指定する機会があります。もしファイ ルの 作成と対応するもう一つのログメッセージを指定したいならば ( 例 え ば、 ファ イ ルの目的を説明するなど)、 add コマンドの ‘−m message’ オプションで指定することができます。

-k kflag’ オプションで このファイルがチェックアウトされると き の デフォルトを指定できます。引数 ‘kflag’ は RCS ファイルに記録 されて ‘cvs admin’ で変更することができます。展開されたキーワー ドを持たないであろうバイナリをチェックインする場合には ‘-ko’ を 指定すると便利です。

admin [rcs-options] files...

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

checkout [options] modules...

以下が必要: リポジトリ。
以下を変更: 作業ディレクトリ。
同義語: co, get
modules
で指定されたソースファイルのコピーを持つ作業ディレクトリ を作成します。他の大部分の cvs コマンドは作業ディレクトリに作用 す るものなので、これらを使う前に ‘cvs checkout’ を実行しなくて はなりません。

modules はいくつかのソースディレクトリとファイルを集めたもの に 対 す るシンボル名 (それ自体は ‘modules’ というモジュールとして ソースリポジトリに定義されています。 cvs(5) 参照) か、あるい は リポジトリ中でのディレクトリまたはファイルへのパス名です。

指定した modules に応じて、 checkout は再帰的にディレクトリを作 成して適切なソースファイルで満たします。その後はいつでも、(他の ソ フトウェア開発者達がソースの彼らの分のコピーを編集しているか どうかを気にすることなく) これらのソースファイルを編集した り、 他 の人によってソースリポジトリに行われた新しい変更を取り込むた めにこれらを更新 (update) したり、あなたの作業を恒久的な変更 と してリポジトリに登録 (commit) することができます。

checkout はディレクトリの作成に使われることに注意して下さい。作 成されるディレクトリのトップレベルは常に checkout が起動され た ディレクトリに追加され、そして通常、指定された moduleと同じ名前 を持ちます。 module がエイリアスの場合は、作成されたサブディ レ ク トリは違う名前を持つかもしれませんが、それがサブディレクトリ であること、そして checkout はファイルが私的な作業領域に取り 出 さ れる際に各ファイルへの相対パスを表示すること (全体に作用する −Q オプションを指定していなければ) は当てにできます。

すでに以前の checkout で作成されているディ レ ク ト リ で ‘cvs checkout’ を実行することも許されています。これは以下で説明する update コマンドに −d オプションを指定するのと同じ効果を持 ち ま す。

cvs checkout’ で使える 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 オプションをブランチで使う場合に必要であれば日時 指定を加えることができ、選択するリビジョンを指定した日時以内 に 制限できます。日時を加える場合はタグにコロン (:) を付けて指定し ます。例としては ‘cvs import’ でローカルな変更と衝突する部分 の あ るソースを import するときに実行するように指示されるコマンド があります:

example% cvs checkout -jTAG:yesterday -jTAG module

−N オプションと ‘−d dir’ を指定することで作業ディレクトリ で モ ジュールのパスが短縮されるのを防げます。(通常、明示的に対象ディ レクトリを指定すると cvs はなるべくパスが短くなるよ う に し ま す。)

−c オプションで、作業ディレクトリのファイルやディレクトリに作成 や変更を行う代わりに、モジュールファイルをソートしたものを標 準 出力にコピーします。

−d dir オプションで、モジュール名ではなく、 dir で指定した名前 のディレクトリを作業ファイルのために作成します。 −N を一緒に 指 定 しない場合は、dir の下に作成されるパスは可能な限り短くなりま す。

−s オプションを使って −s オプションでモジュールファイルに格納さ れたモジュール単位のステータス情報を表示します。

commit [−lnR] [−mlog_message’ | −F file] [−r revision] [files...]

以下が必要: 作業ディレクトリ、リポジトリ。
以下を変更: リポジトリ。
同義語: ci
作 業ディレクトリでの変更を共有のソースリポジトリに組み込むにと きには ‘cvs commit’ を使います。

コミットする対象となる files を指定しない場合、現在の作業ディレ ク トリ中の全ファイルが調べられます。 commit はあなたが本当に変 更したファイルだけを慎重にリポジトリで変更します。デフォルト で は (または明示的に −R オプションを指定した場合)、サブディレクト リのファイルも調べられ、もし変更されていればコミットされま す。 −l オプションで現ディレクトリのみ コミットするように制限できま す。変更されていなくても強制的にファイルをコミットしたい場合 が あるかもしれません。 これは −f フラグで可能で、これは同時に再帰 も抑止します (もちろん −R で再帰するようにできます)。

commit は選択されたファイルがソースリポジトリの現リビジョンに対 して最新であることを確認します。 もし選択されたファイルのいずれ かがまず ‘cvs update’ で最新にされなければならないなら、そこ で 通 知してコミットせずに終ります。 commitupdate コマンドを呼 び出しません。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

別の人は単純に ‘cvs checkout -rEXPR1 whatever_module’ とすれ ば 実験的な変更を採り入れてあなたと作業できるようになります。

diff [−kl] [format_options] [[−r rev1 | −D date1 | −j rev1:date1] [−r rev2 | −D date2 | −j rev2:date2]] [files...]

以下が必要: 作業ディレクトリ、リポジトリ。
以下を変更: なにも変更しません。
作業ディレクトリのファイルとソースリポジトリのリビジョンを ‘cvs diff’ コマンドで比較できます。もし特定のリビジョンを指定しな け れば、ベースにしたリビジョンと比較されます。標準の cvs コマンド のオプション −r で比較の対象となるリビジョンを指定することも で きます。最後に、 −r を 2 回 使うと、リポジトリの 2 つのリビジョ ン間の差分を取ることができます。 (head ブランチの) 過去の リ ビ ジョ ンとの差分を取るために −D オプションを指定することもできま す。また、過去のブランチタグ間の差分を取るために −j オプショ ン を 指定することもできます。 −r−D−j オプションは常に指定 された中で 2 つまでを組み合わせられます。

サポートされている format_options のリストは ‘cvs --help diff’ を参照して下さい。

ファ イルを何も指定しないと、 diff は現ディレクトリ (そして、標 準オプション −lを指定していなければそのサブディレクトリ) の全て の ファ イ ルについて、ソースリポジトリの対応するリビジョンと異 なっているもの (つまり あなたが変更したファイル) または指定され たリビジョンと異なっているものについて、その差分を表示します

export [−flNnQq] −r rev|−D date [−d dir] [−k kflag] module...

以下が必要: リポジトリ。
以下を変更: 現ディレクトリ。
こ のコマンドは ‘cvs checkout’の一種です。 cvs の管理ディレクト リを持たない module のソースのコピーが必要なときに使います。 例 え ば、サイト外にソースを出す準備をするために ‘cvs export’ を使 うことができます。このコマンドでは日付またはタグを指定するこ と が 必 要 です。 (−D または −r によって)。それによって出荷した ソースを確実に再構成できるようになります。

標準でないオプションは ‘−d dir’ (ソースをディレクトリ dir に 書 き込みます) と ‘−N’ (モジュールパスを短縮しません) のみです。こ れらは ‘cvs checkout’の同名のオプションと同じ意味を持ちます。

export が使われるときは −kv オプションが有用です。これによっ て キー ワー ド が、どこか別のサイトで import が行われたときにリビ ジョン情報が失われないような形に展開されるようになります。他 の kflag を ‘cvs export’ で使用することもできます。その説明は co(1) にあります。

history [report] [flags] [options args] [files...]

以下が必要:$CVSROOT/CVSROOT/history’ファイル。
以下を変更: 何も変更しません。
cvs
はヒストリファイルを管理して お り、 各 checkout, commit, rtag, update, release コ マ ン ド の使用を記録します。 ‘cvs history’ を使って、この情報を色々なフォーマットで表示することが できます。

警 告:cvs history’ は ‘−f’, ‘−l’, ‘−n’, ‘−p’ を 共通の 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

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

−z zone

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

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

−a

全てのユーザのデータを表示します (デフォルト で は ‘cvs history’を実行しているユーザのみのデータを表示します)。

−l

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

−w

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

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...

以下が必要: リポジトリ、ソース配布物のディレクトリ。
以下を変更: リポジトリ。
cvs import’ を使うことで外部の供給元 (例えばソースベンダ) から のソース配布物全体をあなたのソースリポジトリのディレクトリへ 取 り 込 め ま す。 最初のリポジトリの作成と、外部の供給元からのモ ジュールへの大規模な更新の両方にこのコマンドを使うことができ ま す。

引数 repository で CVS ルートディレクトリ下のリポジトリ用ディレ クトリ名 (またはディレクトリへのパス) を与えます。もしディレ ク トリが存在しないなら、import が作成します。

あ なたのソースリポジトリで (前回の import から) 変更されたソー スへの更新に import を使った場合、開発の 2 本のブランチで衝突し て い る ファイルについて警告します。 import が指示するように、 ‘cvs checkout -j’ を使って差分を調整できます。

デフォルトでは、ある種のファイル名が ‘cvs import’で無視さ れ ま す: CVS 管理、または他の一般的なソース管理システムに関連する名 前; パッチファイル、オブジェクトファイル、アーカイブファイ ル、 エ ディタのバックアップファイルのための一般的な名前; そして雑多 なユーティリティの加工品であることを示すその他の名前。無視さ れ る ファイルのリストの最新については、 (このマニュアルページの関 連項目の節に記述してあるように) Cederqvist 著のマニュアルを参照 して下さい。

外 部からのソースは第一レベルのブランチ、デフォルトでは ‘1.1.1’ に保存されます。以降の更新は このブランチのリーフになります。例 え ば、 最 初に import したソース集合からのファイルはリビジョン ‘1.1.1.1’になり、次の import による更新でファイルはリビ ジョ ン ‘1.1.1.2’になり、以下同様に続きます。

最 低 で 3 つ の引数が必要です。ソースの集合を識別するために repository が必要です。vendortag はブランチ全体を示すタグになり ま す (例えば ‘1.1.1’と対応します)。 ‘cvs import’を実行する度に リーフとしてできるファイルを識別するために少なく と も 一 つ の releasetag も指定しなければなりません。

cvs の標準のコマンドオプションのうちの 1 つ −m が利用可能です: ログメッセージを −m で指定しないと、(commit でのよう に) メッ セージを入力できるようにエディタが起動されます。

さらに 3 つの特別なオプションがあります。

−d’ を使って、各ファイルの最終更新日時がチェックインの日付と時 刻として使われるよう指示できます。

−b branch’ を使って第一レベルのブランチを ‘1.1.1’以外に指定 で きます。

−I name’ を使って import 中に無視されるべきファイル名を指定で きます。このオプションは繰り返して指定できます。いかなるファ イ ル も無視されない (デフォルトで無視されるものでも) ようにするに は、 ‘−I !’と指定します。

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 を使って明示的に ‘diff −c’ 形式の文脈差分を指 定できます (こちらがデフォルトです)。

release [−dQq] modules...

以下が必要: 作業ディレクトリ。
以下を変更: 作業ディレクトリ、ヒストリログ。
このコマンドは ‘cvs checkout’ の効果を安全にキャンセルするこ と になっています。 cvs はファイルをロックしないので、厳密にはこの コマンドを使用する必要はありません。単に作業ディレクトリを削 除 し ても構いません。しかし忘れているかも知れない変更を失う危険が あり、そして cvs ヒストリファイルには捨ててしまったチェックアウ トの記録は残りません。

cvs release’ を使うとこれらの問題を回避できます。このコマンド は以下の点をチェックします: コミットされていない変更が存在し な いこと、 cvs の作業ディレクトリの直上または内部から実行している こと、ファイルが記録されたリポジトリがモジュールデータベース に 定義されたリポジトリと同じであること、です。

こ れらの条件が全て真なら ‘cvs release’ は その実行記録 (意図的 にチェックアウトを削除した証拠) を cvs のヒストリログに残 し ま す。

−d フラグを使ってソースの作業用コピーを release が成功したら削 除するように指示できます。

remove [−lR] [files...]

以下が必要: 作業ディレクトリ。
以下を変更: 作業ディレクトリ。
同義語: rm, delete
このコマンドを使って、files をソースリポジトリから削除するつ も りであることを宣言できます。大部分の cvs コマンドがそうであるよ うに、 ‘cvs remove’ は作業ディレクトリのファイルに作用し、リ ポ ジ ト リ には直接には作用しません。安全機構として、まず指定する ファイルを作業ディレクトリから削除することも必要になっ て い ま す。

リ ポジトリに commit で変更を反映するまで、ファイルは実際には削 除されません。 commit した時点で、ソースリポジトリの対 応 す る RCS ファイルが ‘Attic’ ディレクトリ (これもソースリポジトリの中 です) に 移動されます。

このコマンドはデフォルトで再帰的になっており、物理的に削除さ れ た 全てのファイルが次の commit での削除されるようにスケジュール します。 −l オプションを使うか、または実際に削除したいファイ ル のみを指定することで、この再帰を抑制できます。

rtag [−falnRQq] [−b] [−d] [−r tag | −D date] symbolic_tag modules...

以下が必要: リポジトリ。
以下を変更: リポジトリ。
同義語: rfreeze
こ のコマンドを使って、リポジトリ中の特定の、明示的に指定された ソースバージョンにシンボリックタグを割り当てら れ ま す。 ‘cvs rtag’ は リ ポ ジトリの内容に直接に作用します (これに先立って checkout する必要はありません)。作業ディレクトリの内容に基づ い てタグを付けるバージョンを選択するには、代わりに ‘cvs tag’ を使 います。

一般に、タグ (しばしばソフトウェア配布物のシンボリックな名前 で も あ る) は削除されるべきではありません。しかし完全に廃れてし まったシンボリックな名前を削除する場合 (例えば、アルファリ リー スの場合など) の手段として、 −d オプションが用意されています。

cvs rtag’ はすでに存在するタグを移動しません。しかしながら、−F オプションが指定されると ‘cvs rtag’ はそのファイルに既に存在 す る symbolic_tag のインスタンスを新しいリポジトリのバージョンへ 移動します。 −F オプションが無い場合、 ‘cvs rtag’ を使ってす で に そのファイルに存在するタグを付けようとすると、エラーメッセー ジが出力されます。

-b オプションはタグを ‘‘ブランチ’’ タグにし、並行の、独立した開 発 を可能にします。これは以前にリリースしたソフトウェア配布物へ のパッチを作成するのに最も有用です。

標準の −r−D オプションを使って、すでに特定のタグを含んで い る ファイルのみにタグを付けることができます。この方法はタグの名 前を変えるのに使えるでしょう: 古いタグで指定されるファイルに の み タグを付け、それから古いタグを削除すれば、確実に同じファイル で古いタグを新しいタグで置き換えることができます。

rtag はデフォルトで再帰的に実行し、引数で指定した modules の 全 てのサブディレクトリにタグをつけます。 この動作をトップレベルの ディレクトリに制限するには標準の −l オプションを指定します。 ま た明示的に再帰を指定するには −R を指定します。

モ ジュールデータベースではタグが指定されたときに必ず実行される プログラムを指定できます。よくある使い方は、興味を持っている グ ルー プに電子メールを送るというものです。もしそのプログラムをバ イパスしたい場合は、標準の −n オプションを使います。

−a オプションを使うと ‘Attic’ の中の指定されたタグを含む削除 さ れ たファイルを rtag の対象にできます。タグはそれらのファイルか ら削除され、開発の進展につれてのシンボリックタグの再利用に便 利 になります (そしてファイルは以降の配布物から削除されます)。

status [−lRqQ] [−v] [files...]

以下が必要: 作業ディレクトリ、リポジトリ。
以下を変更: 何も変更しません。
files
の 現在の状態について、‘‘sticky’’ なタグ、日付、−k オプ ションを含む、ソースリポジトリに関する簡潔なレポートを表示し ま す。(‘‘sticky’’ オプションはリセットするまで ‘cvs update’ がど う働くかを規定します。 ‘cvs update −A...’の説明を参照して 下 さ い。)

このコマンドを用いて、作業用ソースディレクトリでの ‘cvs update’ による潜在的な影響を予測することもできます。もし 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 レコードから取られます。

cvs tag −d symbolic_tag...’ とすると、指定したシンボリックタグ が追加されるのではなく 削除されます。警告: タグを削除する前にそ の根拠をしっかり確認して下さい。これは効率的に一部の履歴情報 を 捨 てますが、後になってその情報が重要だったと判明するかも知れな いからです。

cvs tag’ はすでに存在するタグを移動しません。しかしなが ら、−F オプションが指定されると ‘cvs tag’ はそのファイルに既に存在する symbolic_tag のインスタンスを新しいリポジトリのバージョンへ移動 し ます。 −F オプションが無い場合、 ‘cvs tag’ を使って すでにそ のファイルに存在するタグを付けようとするとエラーメッセージが 出 力されます。

-b オプションはタグを ‘‘ブランチ’’ タグにし、並行して、独立した 開発を可能にします。これは以前にリリースしたソフトウェア配布 物 へのパッチを作成するために最も有効です。

通常、 tag はサブディレクトリに渡って再帰的に実行します。これは 標準の −l オプションを使って抑制できます。明示的に再帰を指定 す るには −R を使います。

update [−ACdflPpQqR] [−d] [−r tag|−D date] files...

以下が必要: リポジトリ、作業ディレクトリ。
以下を変更: 作業ディレクトリ。
あ なたが共有のリポジトリから私的なソースのコピーを作成するため に checkout を実行した後も、別の開発者は共有のソースへの変更 を 続 けるでしょう。時々、開発過程で都合のいいときに、作業ディレク トリ内から update コマンドを使うことで、最後に checkout また は update してからソースリポジトリに登録された変更を、あなたの変更 と融合させることができます。

update は進行状況をファイルごとに 1 行表示することで知らせ続 け ま す。各行の先頭には以下の ‘U P A R M C ?’ のいずれか 1 文字が あり、ファイルの状態を示しています:

U file

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

P file

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

A file

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

R file

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

M file

あなたの作業ディレクトリの file は 変更 されて い ま す。 ‘M’ は作業中のファイルについて 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 著のマニュアルを 参 照して下さい。

いずれのファイルも無視しないようにするには ‘−I !’ を使います。

ローカルで修正したファイルを、リポジトリ上のクリーンなファイルで上 書きするには、 ‘−C’ を 使 い ま す ( 修 正 さ れ た ファ イ ル は ‘.#file.revision’ に保存されます)。

標 準の cvs コマンドオプション −f, −k, −l, −P, −p, −rupdate で 使用可能です。

関連ファイル

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

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

.cvsrc

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

.cvswrappers

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

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

CVS

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

CVS/Entries

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

CVS/Entries.Backup

CVS/Entries’のバックアップ。

CVS/Entries.Static

フラグ: ‘cvs update’ でそれ以上エントリを追加しません。

CVS/Root

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

CVS/Repository

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

CVS/Tag

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

CVS/Checkin.prog

cvs commit’時に実行するプログラム名。

CVS/Update.prog

cvs update’時に実行するプログラム名。

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

$CVSROOT/CVSROOT

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

CVSROOT/commitinfo,v

cvs commit’ のリクエストを選別するプログラムを登録します。

CVSROOT/cvswrappers,v

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

CVSROOT/editinfo,v

cvs commit’ のログエントリの編集/確認用プログラムを登 録 し ま す。

CVSROOT/history

cvs 処理のログファイル。

CVSROOT/loginfo,v

cvs commit’ のログエントリをパイプで渡すプログラムを登録しま す。

CVSROOT/modules,v

このリポジトリ中のモジュールを定義します。

CVSROOT/rcsinfo,v

cvs commit’ 操作中に使用するテンプレートへのパス名を登録 し ま す。

CVSROOT/taginfo,v

cvs tag’ と ‘cvs rtag’ での確認/ログ採集のためのプログラムを登 録します。

MODULE/Attic

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

#cvs.lock

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

#cvs.tfl.pid

リポジトリの一時的なロックファイル。

#cvs.rfl.pid

読み出しロック。

#cvs.wfl.pid

書き込みロック。

環境変数

CVSROOT

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

CVSREAD

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

CVSREADONLYFS

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

RCSBIN

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

CVSEDITOR

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

CVS_CLIENT_PORT

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

CVS_IGNORE_REMOTE_ROOT

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

CVS_OPTIONS

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

CVS_RSH

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

CVS_SERVER

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

CVSWRAPPERS

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 import’ の祖先) の作者でもあります。

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

関連項目

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 版の校正

スポンサーリンク