日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.2-RELEASE-K, 8.0-RELEASE-K は、プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.2-RELEASE-K, 8.0-RELEASE-K は、全翻訳済み)
6.4-STABLE-K, 7.2-STABLE-K, 8.0-STABLE-K は現在、 作成中で日々更新されています。 最新の snapshots を元に作成しています。
CVS(1) 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_com-
mand)。また分散環境での多様なソース管理要求を満たすために、これらのコマ
ンドの多くにはいくつものオプションが用意されています。しかし な が ら、
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_options と command_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) を読み込みません。
-l コマンドヒストリに cvs_command のログを取りません (しかし実行は
します)。コマンドヒストリに関する情報については history コマンド
の説明を参照して下さい。
-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 クライアントとサーバの間の通信を全て暗号化します。現在では、Ker
beros コネクション使用時のみ使用可能です。
-z compression-level
ファ イルをネットワーク経由でやりとりする際、圧縮レベル compres-
sion-level で gzip を使い、やりとりするデータの圧縮と伸長を行 い
ます。リンクの両端で 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 コマン
ド の 説 明 を 参 照して下さい)。 -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
注意: これは cvs コマンドの 左に指定することのできる、全体に作用
する `cvs -l' オプションとは違います!
-n checkout/commit/tag/update のいずれのプログラムも 実行しません。
( プログラムはそれぞれの動作中にモジュールデータベースで実行する
ことを指定される可能性があり、このオプションはこれをバイパスしま
す。) checkout, commit, export, rtag コマンドで利用できます。 警
告: これは cvs コマンドの 左側に指定できる、全体に作用する `cvs
-n' オプションと同じではありません。
-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 つの特別なタグが使用できます: `HEAD' はリポジト
リ中で最も新しい有効なバージョンを指し、そして `BASE' はカレント
の 作 業ディレクトリに最後にチェックアウトしたリビジョンを指しま
す。
このオプションを `cvs checkout' か `cvs update' でファイル の コ
ピー を 作成するときに使うと、 tag の指定は ``sticky'' です: cvs
は tag を記憶して以降の update コマンドでも、他のものを指定す る
ま で、それを使い続けます。 tag としてはシンボリックまたは番号に
よるものが使用できます。 RCS ファイルが指定されたタグを含んで い
ないときに警告メッセージを抑止するため全体に作用する -q オプショ
ンをコマンドオプション -r と一緒に指定すると便利な場合が多くあり
ま す。 -r は checkout, 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 check-
out' を実行することも許されています。これは以下で説明する 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] [-m 'log_message' | -F file] [-r revision] [files...]
以下が必要: 作業ディレクトリ、リポジトリ。
以下を変更: リポジトリ。
同義語: ci
作業ディレクトリでの変更を共有のソースリポジトリに組み込むにとき
には `cvs commit' を使います。
コミットする対象となる files を指定しない場合、現在の作業ディ レ
クトリ中の全ファイルが調べられます。 commit はあなたが本当に変更
したファイルだけを慎重にリポジトリで変更します。デフォルトでは (
ま たは明示的に -R オプションを指定した場合)、サブディレクトリの
ファイルも調べられ、もし変更されていればコミットされます。 -l オ
プ ションで現ディレクトリのみ コミットするように制限できます。変
更されていなくても強制的にファイルをコミットしたい場合があるかも
し れません。 これは -f フラグで可能で、これは同時に再帰も抑止し
ます (もちろん -R で再帰するようにできます)。
commit は選択されたファイルがソースリポジトリの現リビジョンに 対
し て最新であることを確認します。 もし選択されたファイルのいずれ
かがまず `cvs update' で最新にされなければならないなら、そこで通
知してコミットせずに終ります。 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
別の人は単純に `cvs checkout -rEXPR1 whatever_module' とすれば実
験的な変更を採り入れてあなたと作業できるようになります。
diff [-kl] [rcsdiff_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 つまでを組み合わせられます。
他の使用可能なオプションについては rcsdiff(1) を参照して下さい。
ファイルを何も指定しないと、 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 つの引数が必要です。ソースの集合を識別するために repos-
itory が必要です。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.revi-
sion' に保存されます)。
標準の cvs コマンドオプション -f, -k, -l, -P, -p, -r も update で
使用可能です。
関連ファイル
よ り 詳細な 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 か -D を checkout または 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
これがセットされていると、 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 サーバを開始するときに使用するリモートシェルコマンドの名前を
決定します。この変数が設定されていない場合は `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 Manage
ment 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 版の校正
CVS(1)