[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A. CVS のコマンド便覧

この付録は CVS コマンドの全体構造の説明をし、いくつかのコマンドは 詳しく説明します (他のものは別のところで説明されています。CVS コ マンドの簡単な便覧は、see section B. CVS コマンドの簡単な便覧)。

A.1 CVS コマンド構造の全て  
A.2 CVS の終了状態  CVS の成功か失敗を示す
A.3 既定オプションと ~/.cvsrc ファイル  
A.4 広域オプション  cvs_command の左側に付けるオプション
A.5 共通のコマンド・オプション  cvs_command の右側に付けるオプション
A.6 admin--管理  管理
A.7 annotate--各行がどのリビジョンが更新されたか?  各行がどのリビジョンで変更されたか?
A.8 checkout--編集の為にソースを取り出す  編集の為にソースを取り出す
A.9 commit--ファイルをリポジトリに格納する  ファイルをリポジトリに格納する
A.10 diff--リビジョン間の差分の表示  リビジョン間の差分を見る
A.11 export--CVS からソースを取り出す, checkout に類似  CVS からソースを取り出す, checkout に類似
A.12 history--ファイルと使用者の状態を表示  ファイルと使用者の状態を表示
A.13 import--CVS にソースを取り込む, ベンダー枝を使用  CVS にソースを取り込む, ベンダー枝を使用
A.14 log--ファイルのログ情報を表示  ファイルのログ情報を表示
A.15 rdiff--リリース間の `patch' 形式の差分  リリース間の `patch' 形式の差分
A.16 release--モジュールの放棄を表明する  ディレクトリの放棄を表明する
A.17 update--作業コピーをリポジトリと一致させる  作業コピーをリポジトリと一致させる


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.1 CVS コマンド構造の全て

CVS のコマンド全体の書式を示します:

 
cvs [ cvs_options ] cvs_command [ command_options ] [ command_args ]

cvs
CVS プログラムの名前です。

cvs_options
CVS のサブコマンド全体に適用されるオプションです。以下で説明され ています。

cvs_command
いくつかの違ったサブコマンドの一つです。 幾つかのコマンドでは別名が使用できます。別名はそのコマンドの便覧マニュ アルのところで書かれています。 次の二つの場合にだけ `cvs_command' を省略できます。 つまり `cvs -H' として利用可能なコマンドのリストを得る場合か、 `cvs -v' として CVS 自身のバージョン情報を得る場合です。

command_options
コマンド固有のオプションです。

command_args
コマンドの引数です。

不幸な事に、 cvs_optionscommand_options の間で幾つか混乱があります。 オプションの中には cvs_option として使われたときにはいくつかのコマンドに のみ影響します。command_option として使されたときは、違う意味に なる可能せいがり、より多くのコマンドで使用できます。 つまり、上の分類をあまり深刻に受けとめないでくだ さい。代わりに文書を見るようにしましょう。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.2 CVS の終了状態

CVS はそれ呼んだ環境に 終了状態 (exit status) を設定するこ とで、成功したか失敗したかを示すことができます。 終了状態を調べる正確な方法はオペレーティング・システムごとに異なります。 例えば、unix のシェルスクリプトでは、最後のコマンドが成功終了状態を返 せば変数 `$?' は0で、終了状態が失敗を示していれば、0より大きくな ります。

CVS が成功した場合は、成功状態を返します。エラーがあれば、エラーメッセー ジを印字して、失敗状態を返します。cvs diff コマンドはこの例外で す。違いが見つからなければ成功状態を返し、違いが見つかるか、エラーが発 生したときに失敗状態を返します。この振舞いはエラーの検知には良くないの で、将来では cvs diff が他の CVS コマンドと同じように振舞 うように変更される可能性があります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.3 既定オプションと ~/.cvsrc ファイル

よく使用する command_option が幾つかあり、 そのオプションを必ず指定するように設定したいことがあります。 例えば (実際に .cvsrc を実装した要因の一つですが) 多くの人には `diff' の既定出力は大変読みにくく、 context 形式か unidiff 形式のほうが遥かに分かりやすいでしょう。

シェル・スクリプトやエイリアスに頼らなくても、 `~/.cvsrc' ファイルを用いて cvs_commands 各々に 既定のオプションを加えることができます。

`~/.cvsrc' の書式は簡単です。 実行された cvs_command と同じ名前で始まる行が検索されます。 一致した行を発見したら、行の残りの部分をオプションに分割し (空白のとこ ろで)、 コマンド行からのオプションを与える前に、 得られたオプションをコマンドの引数として与えます。 コマンドが別名を持つ場合 (例えば、checkoutco)、 コマンド行で使われるものとは限りませんが、公的な名前がファイルとの 合致時に使用されます。 例えば `~/.cvsrc' の内容が次の様であった場合:

 
log -N
diff -uN
rdiff -u
update -Pd
checkout -P
release -d

`cvs co foo' も、コマンド `cvs checkout foo' と同様に `-P' が引数として与えられます。

上記の例では `cvs diff foobar' の出力は unidiff 形式になります。 `cvs diff -c foobar' だと指定通り context 形式になります。 `diff' には "古い" 形式で出力するためのオプションが無いため、 "古い" 形式を使いたい場合には少し面倒ですが `cvs -f diff foobar' とする必要があります。

コマンド名の部分に cvs と記述すれば、 広域オプションを指定することができます (see section A.4 広域オプション)。 例えば `.cvsrc' 中の以下の行は、

 
cvs -z6

CVS が圧縮レベル 6 を用いるように指定しています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.4 広域オプション

`cvs_options' (`cvs_command' の左側に与えられる) として利用できるものを以下に示します:

--allow-root=rootdir
正しい CVSROOT ディレクトリを指定します。2.9.3.1 パスワード認証のためのサーバの設定 参照。

-a
クライアントとサーバの全ての通信を認証します。CVS クライアントで だけ意味をもちます。これを書いている時点では、GSSAPI 接続を行う場合だ けに実装されています (see section 2.9.4 GSSAPI による直接接続)。認証は流れている TCP 接続のハイジャックというような攻撃から身を守ることができます。 認証を使用しても暗号化は使用されません。

-b bindir
CVS 1.9.18 以前では、これは RCS プログラムが bindir ディ レクトリにあることを指定していました。現在のバージョンの CVS は RCS プログラムを実行しません。互換性のためにこのオプションがあり ますが、指定しても何もしません。

-T tempdir
一時ファイルが置かれるディレクトリを tempdir とします。 環境変数 $TMPDIR の設定や、 コンパイル時のディレクトリ設定よりも優先されます。 この値は絶対パス名で指定して下さい。 (クライアント/サーバとして動作しているときは、`-T' はローカルのプロセスのみに 影響します。クライアントに `-T' を指定してもサーバは影響を受けませんし、 同様にサーバに指定してもクライアントは影響を受けません。)

-d cvs_root_directory
リポジトリのルートディレクトリのパス名を cvs_root_directory とし ます。 環境変数 $CVSROOT よりも優先します。See section 2. リポジトリ.

-e editor
リビジョンのログ情報の入力に editor を使用します。 環境変数 $CVSEDITOR$EDITOR よりも優先します。 詳しい情報は 1.3.2 変更の格納 参照。

-f
`~/.cvsrc' を読みません。 このオプションが最も良く使われるのは、 CVS のオプション設定に直交性がない時です。 例えば `cvs log' のオプション `-N' (タグの表示を抑制します) に対応する表示を行なうオプションはありません。 従って、`~/.cvsrc' の `log' エントリに `-N' があったとき、 タグを表示するには `-f' を使用する他ありません。

-H
--help
指定された `cvs_command' の使用法を表示します (コマンドが実際に実行されることはありません)。 コマンド名を指定しない場合には、 `cvs -H' は他のヘルプオプションの一覧などを含む、CVS の全体 のヘルプを表示します。

-n
ファイルを更新しません。 `cvs_command' を実行した場合の表示だけが行なわれます。 既存のファイルを削除, 更新, マージしたり、 新しいファイルを作成することはありません。

CVS は必ずしも `-n' を付けなかったときと全く同じ出力をするわ けではないことに注意してください。ときどき、出力が同じ場合がありますが、 他の場合では、CVS は正確に同じ出力をするために必要な実行を飛ばし ます。

-Q
コマンドの出力が完全に抑止され、 重大な問題が発生した場合にのみ出力が行なわれます。

-q
コマンドの出力を減らします。 再帰的にサブディレクトリを辿る時の報告などの補助情報は抑止されます。

-r
新たな作業ファイルを読み込み専用にします。 環境変数 $CVSREAD を設定するのと同じ効果があります (see section D. CVS に影響する全ての環境変数)。 既定では、そのファイルが監視されてない限り作業ファイルへの書き込みが許 可されます (see section 10.6 ファイル編集者の追跡機構)。

-s variable=value
ユーザ変数を設定します (see section C.11 管理用ファイルにおける変数展開)。

-t
プログラムの実行状態をトレースします。 CVS が実行する各ステップの情報を表示します。 `-n' オプションと共に使用し、 不慣れなコマンドの潜在的な影響を調べるのに便利です。

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

-w
新しい作業ファイルを読み書き可能にします。 環境変数 $CVSREAD の設定を無効にします。 $CVSREAD が設定されておらず、 `-r' オプションも無い場合には、 作成されるファイルは読み書き可能とされます。

-x
クライアントとサーバ間の全ての通信を暗号化します。これは CVS クラ イアントでだけ意味を持ち、また現時点では GSSAPI 接続を用いる場合 (see section 2.9.4 GSSAPI による直接接続) かケルベロス接続 (see section 2.9.5 ケルベロスによる直接接続) を用いる場合にしか実装されていません。暗号化を使用する ということは送信されるメッセージも認証されるということです。既定状態で は暗号化機能は使用できません。特別に `--enable-encryption' を指定 して CVS を構築する必要があります。

-z gzip-level
圧縮レベルを設定します。 CVS クライアントでだけ意味を持ちます。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.5 共通のコマンド・オプション

ここでは、複数の CVS コマンドで共通に使用できる `command_options' について説明します。 これらのオプションは、 必ず `cvs_command' の右側に付けられます。 以下に示すオプションは、全てのコマンドで使えるわけではありません。 各オプションは、それが意味をなすコマンドにおいてのみ使用可能です。 しかし以下のオプションを持つコマンドがあるならば、 そのオプションは他のコマンドのものと同じ動作であると考えて良いでしょう。 (各コマンドの固有オプションのほとんどは、 他の CVS コマンドのものとは異なる意味を持っています。)

注意: `history' コマンドは例外です。このコマンドには、 ここに示す標準オプションと重複する固有オプションが多くあります。

-D date_spec
date_spec 以前のリビジョンのうち、最新のものを使用します。 date_spec には、過去の日付を示すものを一つだけ指定します。

このオプションを用いて作業ファイルを取り出すと、 指定した日付が貼り付けられます。 つまり `-D' オプションの引数が記録され、 これ以後の update の際に同じ日付が用いられます (貼り付いたタグ/日付についての詳細は see section 4.9 貼り付いたタグ)。 `-D' は以下のコマンドで利用できます: annotate, checkout, diff, export, history, rdiff, rtag, update. (history コマンドはこのオプションを少し違った方法で使用します。 see section A.12.1 history のオプション).

CVS では、様々な形式で日付を指定できます。 最も標準的なものは (International Standards Organization による) ISO8601 と (RFC 822 で規定され、RFC1123 で修正された) Internet e-mail の標準です。

ISO8601 はいろんな異種があります。すこし例を挙げます:

 
1972-09-24
1972-09-24 20:05

ISO8601 の日付様式にはいろいろなものがあり、CVS はそれらの多くを受け付 けますが、おそらくながーい話し全部を聞きたいとは思わないでしょ う :-)。

Internet e-mail で使用が認められている日付に加えて、 CVS では、いくつかのフィールドが省略されたものも使えます。 例えば、以下のようなものです:

 
24 Sep 1972 20:05
24 Sep

特定の標準時が指定されていない場合は、日付はローカルの標準時として解釈 されます。

この2つの書式の使用が好まれます。しかし、CVS は今は他の日付の書式 を幅広く受け付けます。それらはここでは故意に詳しくは説明されておらず、 CVS の将来のバージョンはそれら全ては受け付けないかもしれません。

そのような書式の中に //. というものがあります。 これは月と日が逆の順番になっているものに慣れている人を混乱させます。 `1/4/96' は1月4日であり、4月1日ではありません。

シェルは空白を引数の区切りにするので、 `-D' の引数を引用符で囲むのを忘れてはいけません。 `-D' オプションを付けたコマンド行は、次の様になるでしょう:

 
$ cvs diff -D "1 hour ago" cvs.texinfo

-f
日付やタグ名を指定して CVS コマンドを用いた場合、 そのタグ名を持たない (その時には存在しなかった) ファイルは、 普通は無視されます。 タグでも日付でも引っ掛からなかったファイルを復元したい場合に、 `-f' オプションを使用します (そのファイルの最新のリビジョンが取り出されます)。

`-f' のときでさえ、指定したタグは存在していなければならないことに 注意してください (すなわち、必ずしも全てのファイルというわけではなく、 いくつかのファイルにおいて)。 これは CVS が、名前の入力を間違えた ときにエラーを出すことを続けられるようにするためです。

`-f' は以下のコマンドで利用できます: annotate, checkout, export, rdiff, rtag, update.

警告: commitremove コマンドにも `-f' オプションがありますが、異なる動作をします。See section A.9.1 commit のオプション, 7.2 ファイルを削除する 参照。

-k kflag
既定のキーワード置換モードを変更します。 kflag の詳細は 12.4 置換モード 参照。

このオプションを用いて作業ファイルを取り出すと、 kflag貼り付けられます。 つまり、このオプションを checkoutupdate コマンドに 用いた場合、CVS は指定した kflag をそのファイルに結合します。 これ以後、同ファイルに対する update コマンドには kflag が使用され続けます。 この効果は別の指定を行なうまで止みません。

`-k' オプションは以下のコマンドで利用できます: add, checkout, diff, import, update.

-l
Local の頭文字です。再帰的にサブディレクトリを辿らず、 カレントディレクトリでのみコマンドを実行します。

以下のコマンドで利用できます: annotate, checkout, commit, diff, edit, editors, export, log, rdiff, remove, rtag, status, tag, unedit, update, watch, and watchers.

-m message
-m message
エディタを起動せず、ログ情報を message に記述します。

以下のコマンドで利用できます: add, commit, import.

-n
タグプログラムを実行しません。 各コマンド実行時のプログラムは、 管理用ファイル `modules' に記述できます (see section C.1 The modules file)。 つまり、このオプションは `modules' の記述を無効にします。

注意: `cvs_command' の左側に指定する `cvs -n' と混同しないようにして下さい。

以下のコマンドで利用できます: checkout, commit, export, rtag.

-P
空のディレクトリを削除 (prune) します。7.3 ディレクトリを削除する 参照。

-p
リポジトリから取得したファイルを、カレントディレクトリに置かず、 標準出力に送り (pipe) ます。

以下のコマンドで利用できます: checkout, update.

-R
再帰的にディレクトリを辿って実行します。これは指定しなくても実行されま す。

以下のコマンドで使用可能です: annotate, checkout, commit, diff, edit, editors, export, rdiff, remove, rtag, status, tag, unedit, update, watch, watchers.

-r tag
既定の先頭 (head) リビジョンの代りに、 引数 tag で指定されたリビジョンを使用します。 tagrtag コマンドで任意に定義されたタグの他に、 二つの特別なタグ `HEAD' と `BASE' が常に利用できます。 `HEAD' は、リポジトリにある最新のリビジョンを参照します。 `BASE' は、作業コピーの由来となるリビジョンを参照します。

タグを指定して checkoutupdate コマンドを実行し、 自分の作業ファイルを作った場合、そのタグは貼り付けられます。 つまりこのタグが記録され、以後他のものを指定するまで update に同じタグが使われ続けます (貼り付いたタグ/日付についての詳細は see section 4.9 貼り付いたタグ)。

tag には、4.4 タグ--文字によるリビジョン で説明されているような文字列や、 5. 枝とマージ で説明されているような枝の名前のどちらであ ることもできます。

コマンド・オプション `-r' と一緒に 広域オプション `-q' を指定すると、 RCS ファイルが指定したタグを含まない場合に、 警告出力が抑止されるので便利です。

注意: `cvs_command' の左側に指定する `cvs -r' と混同しないようにして下さい!

`-r' は以下のコマンドで利用できます :checkout, commit, diff, history, export, rdiff, rtag, update.

-W
フィルタを適用したいファイルを指定します。 フィルタを適用したいファイルが複数あるときは、 このオプションを何個並べても構いません。 ファイル `.cvswrappers' での指定方法と同じ形式で指定します。

以下のコマンドで利用できます: import, update.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.6 admin--管理

これは雑多な管理機構への CVS のインターフェースです。CVS で は役に立つか疑わしいようなものもありますが、歴史的な互換性の目的のため に存在しています。このコマンドは必ず再帰的に動作するため、使用 の際には細心の注意を払って下さい。

Unix ではグループ名 cvsadmin が存在する場合、 そのグループの一員だけが cvs admin を利用できます (誰にで実行できる cvs admin -k コマンドを除きます)。 このグループはサーバ側か、非クライアント/サーバの CVS を実行してい る全てのシステムで存在している必要があります。 その名前で無人のグループを作成すれば、 cvs admin の使用を全面的に禁止できます。 NT では、cvsadmin 機能は存在せず、全ての使用者が cvs admin を実行できます。

A.6.1 admin のオプション  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.6.1 admin のオプション

これらのオプションの中には CVS での有用性に疑問符が付くものもあり ますが、歴史的な互換性のために存在しています。中には、効果を解除するま で、CVS を使えなくなるものもあります!

-Aoldfile
CVS では使用されません。oldfile の利用者一覧を、 指定した RCS ファイルの利用者一覧に追加します。

-alogins
CVS では使用されません。RCS ファイルの利用者一覧に、 logins で指定された利用者を追加します。 logins はカンマで区切った利用者の一覧です。

-b[rev]
既定の枝を rev に設定します。CVS では、普通は既定の枝は操作 しません。貼り付いたタグ (see section 4.9 貼り付いたタグ) を使うのがどの枝で作業 をするかを決める良い方法です。cvs admin -b を実行する理由は一つ だけあります: ベンダー枝を使用しているときに、ベンダーのバージョンに戻 すため、です (see section 13.3 最新のベンダーリリースに戻す)。`-b' と引数の間に 空白があってはいけません。

-cstring
註釈符を string にします。註釈符は現在のバージョンの CVS で も、RCS 5.7 でも使用されていません。ですから、心配する必要は全く ありません。See section 12. キーワード置換.

-e[logins]
CVS では使用されません。logins に含まれる利用者を、 RCS ファイルの利用者一覧から削除します。 logins が省略された場合は、利用者一覧を全て削除します。 `-e' と引数の間に空白があってはいけません。

-I
標準入力が端末でない場合でも対話的に動作します。 このオプションはクライアント/サーバの CVS では動作せず、将来の CVS のリリースからは消えるでしょう。

-i
CVS では無意味です。これはリビジョンを作成することなく、新しい RCS ファイルを作成して、初期化します。CVS では、cvs add コマンドでファイルを加えてください (see section 7.1 ディレクトリにファイルを加える)。

-ksubst
既定のキーワード置換モードを subst にします。See section 12.4 置換モード. ここで既定とした方法よりも、 cvs update, cvs export, cvs checkout での `-k' オプションが優先されます。

-l[rev]
リビジョン rev をロックします。 枝番号が与えられた場合、その枝の最新リビジョンをロックします。 rev が省略された場合は、 既定の枝の最新リビジョンをロックします。 引数 と `-l' の間にスペースがあってはいけません。

CVS のソース配布物の中の `contrib' ディレクトリの中に、 `rcslock.pl' という名前のスクリプトがあります。 これを用いて上記のロック状態を、 CVS における独占取得 (一時に一人だけがファイル編集可能な状態) に置き換えることができます。 詳細はスクリプトの註釈を参照して下さい (寄贈物の支援と権利の放棄声明文が書かれたファイル `README' も一読して下さい)。 その註釈によれば、厳格ロックモード (既定) に設定しておく必要があります。

-L
厳格にロックを求める設定 (厳格ロックモード) にします。 厳格ロックモードだと、RCS ファイルの所有者であっても、 ロックしていないファイルは格納できません。 CVS で使用する場合は、厳格ロックモードにする必要があります。 上記 `-l' オプションの説明も参照して下さい。

-mrev:msg
リビジョン rev のログ・メッセージを msg に替えます。

-Nname[:[rev]]
これ以前の name の設定を無効にすることを除けば、 `-n' と同じように働きます。 魔法の枝での使用法は 5.5 魔法の枝番号 を参照してください。

-nname[:[rev]]
枝またはリビジョン rev にタグ名 name を付けます。 通常は `cvs tag' か `cvs rtag' を代わりに用いると良いでしょう。 `:' と rev の両方を省略すると、タグ名が削除されます。 また name が既に使用されていた場合は、 エラー・メッセージが出力されます。 rev がタグ名のときは、相当する番号に置換されます。 枝番号の後に `.' を付けて rev に指定した場合、 その枝の現時点での最新リビジョンになります。 `:' だけで rev を指定しなかった場合、 既定の枝 (通常は幹) の現時点での最新リビジョンになります。 例えば `cvs admin -nname: RCS/*' は、 指定された全ての RCS ファイルの、 現時点での最新リビジョンに name というタグ名を付けます。 一方 `cvs admin -nname:$ RCS/*' では、 各作業ファイルのキーワード文字列に含まれる リビジョンに name というタグ名を付けます。

-orange

range の範囲のリビジョンを消去 (過去のものにする) します。

このコマンドは何をしているかを 正確に 知っていないと非常に危険 であることに注意してください (例えば、以下の rev1:rev2 と いう構文がいかに間違いやすいかという警告を読んでください)。

ディスクの容量が少ないなら、このオプションは役に立つかもしれません。し かし、使う前によく考えてください--このコマンドを取り消すためには最後 のバックアップで復元するしかありません! 不注意や、(天が禁止している) CVS のバグによって、計画していたものと違うリビジョンを消してしまったら、 リビジョンが消去される前のエラーを修正する機会はありません。おそらく、 まずリポジトリのコピーで試すというのは良い考えでしょう。

以下のどれかで range を指定します:

rev1::rev2
CVS が rev1 から rev2 に関連付けられた差分だけを保存し、間の段階を保存 しないように、rev1 と rev2 間の全てのリビジョンを壊します。例えば、 `-o 1.3::1.5' の後では、リビジョン 1.3, リビジョン 1.5, 1.3 から 1.5 の差分を取得することができますが、リビジョン 1.4 や 1.3 と 1.4 の 差分を取得することはできません。他の例です: `-o 1.3::1.4' と `-o 1.3::1.3' は間に消去するリビジョンが無いので、何の効果もあり ません。

::rev
rev のある枝と rev 自身の間のリビジョンを壊します。枝の始 点と rev はそのまま残ります。例えば、`-o ::1.3.2.6' はリビ ジョン 1.3.2.1, リビジョン 1.3.2.5, とその間の全てのものを消去しますが、 1.3 と 1.3.2.6 はそのまま残します。

rev::
revrev のある枝の最後との間のリビジョンを壊します。リ ビジョン rev はそのまま残りますが、先頭のリビジョンは消去されま す。

rev
リビジョン rev を消去します。例えば、`-o 1.3' は `-o 1.2::1.4' と等価です。

rev1:rev2
同じ枝の rev1 から rev2 のリビジョンを、それを含めて消去し ます。rev1rev2 やその間の全てのリビジョンを取得するこ とはできなくなります。例えば、コマンド `cvs admin -oR_1_01:R_1_02 .' はほとんど役に立ちません。それは、タグ R_1_02 までのリビジョンを、 それを含めて消去するということです。でも注意してください! R_1_02 と R_1_03 で変更されていないファイルがあれば、そのファイルはタグ R_1_02 と R_1_03 で同じ数値リビジョン番号になっています。ですから、 R_1_02 を取得できなるだけではありません。R_1_03 もテープから復元しなけ ればならなくなります! たいていの場合、代わりに rev::rev2 と指定しようと思うでしょう。

:rev
rev のある枝の最初から、rev までのリビジョンを、それを含め て消去します。

rev:
rev のある枝の最後から、rev までのリビジョンを、それを含め て消去します。

消去されるべきリビジョンは全て枝やロックを持っていてはいけません。

消去されるべきリビジョンにタグ名があり、`::' 構文のどれかを指定 すると、CVS はエラーを出して、どのリビジョンも消去されません。タ グ名とリビジョンの両方を消去したいなら、まず cvs tag -d でタグ 名を消去し、それから cvs admin -o を実行します。`::' でな い構文をいてい すると、CVS はリビジョンを消去しますが、タグ名を存 在しないリビジョン指すタグ名として残します。この振舞いは CVS の以 前のバージョンとの互換性のために残されています。しかし、これは便利では ありませんので、将来は `::' の場合と同様の振舞いに変更されるかも しれません。

CVS が枝を扱う方法のために、rev は、もし枝であれば名前で指 定することはできません。説明は、See section 5.5 魔法の枝番号.

だれも壊したリビジョンのコピーを取り出していないことを確認してください。 誰かがそれを編集して、格納し直そうとすると、変なことが起こります。この ため、このオプションは無駄な格納を戻すためには良い方法ではありません。 代わりにその変更を元に戻すための新しいリビジョンを格納してください (see section 5.8 二つのリビジョン間の差分をマージする)。

-q
簡素な (quiet) 表示、つまり実行時に診断情報を表示しません。

-sstate[:rev]
CVS でも使用します。 リビジョン rev の状態を識別する文字列を state にします。 rev が枝番号の場合、その枝の最新リビジョンの状態を変更します。 rev を省略すると、既定の枝の最新リビジョンを変更します。 state には、どのような文字列を用いても構いません。 通常使用されるのは、`Exp' (実験段階), `Stab' (安定動作), `Rel' (出荷済) といった組み合わせです。 既定では、新しく作成されたリビジョンの状態は `Exp' にされます。 各リビジョンの状態は、`cvs log' (see section A.14 log--ファイルのログ情報を表示) の出力や、 キーワード `$'Log$, `$'State$ (see section 12. キーワード置換) の内容で確認できます。 ここで、CVS が dead という状態を 独自の目的で用いることに注意して下さい。 dead 状態を扱う際には、cvs removecvs add といったコマンドを使用し、 `cvs admin -s' を使用してはいけません。

-t[file]
CVS でも使用します。 RCS ファイルの説明文を file の内容に書き換えます。 file のパス名は `-' で始まってはいけません。 各ファイルの説明文は `cvs log' (see section A.14 log--ファイルのログ情報を表示) の出力で確認できます。 `-t' と引数の間に空白があってはいけません。

file が省略された場合、標準入力が用いられ、 ファイル終端 (EOF) もしくは `.' のみの行で終了します。 対話的動作が可能なら入力促進も可能です。`-I' を参照してださい。 クライアント/サーバの CVS では標準入力からの読み込みは動作せず、 将来の CVS のリリースでは変更されるかもしれません。

-t-string
`-tfile' と同様です。 RCS ファイルの説明文を string に書き換えます。 `-t' と引数の間に空白があってはいけません。

-U
厳格にはロックしない設定 (非厳格ロックモード) にします。 非厳格ロックモードだと、RCS ファイルの所有者ならば、 ロックしていないファイルも格納できます。 CVS で使用する場合は、厳格ロックモードにする必要があります。 上記 `-l' オプションの説明も参照して下さい。

-u[rev]
このオプションを CVS で使用する際の説明は、 上記 `-l' オプションを参照して下さい。 リビジョン rev のロックを解除します。 枝を指定した場合、その枝の最新リビジョンのロックを解除します。 rev を省略すると、その人物が行なった最後のロックを解除します。 通常は、ロックを掛けた人物だけがロックを解除できます。 誰か他の人物がロックを解除した場合には、ロックを破壊します。 この場合、元々ロックを掛けていた人に commit 通知メール が送られます (see section 10.6.2 誰に通知するか CVS に教える)。 `-u' とその引数の間に空白があってはいけません。

-Vn
前のバージョンの CVS ではこのオプションはバージョン n の RCS ファイルが認識できる RCS ファイルを書くことを意味してい ましたが、今は旧式となり、それを指定するとエラーを起こします。

-xsuffixes
前のバージョンの CVS では、これは RCS ファイルの名前を指定す るための方法として説明されていました。しかし、CVS は常に CVS で使用される RCS ファイルは `,v' で終わることを要求してきま したので、このオプションは今まで役に立ったことはありません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.7 annotate--各行がどのリビジョンが更新されたか?

files のファイルに対して、各行に幹のヘッドリビジョンと 最後の修正に関する情報を不可して表示します。

A.7.1 annotate オプション  
A.7.2 annotate 例  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.7.1 annotate オプション

annotate では、以下の標準オプションが利用できます (完全な記述は see section A.5 共通のコマンド・オプション):

-l
Local、つまり現在の作業ディレクトリでのみコマンドが 実行されます。

-R
ディレクトリを再帰的に格納します。

-f
指定したタグや日付が見付からなかった場合、 最も新しいリビションを取り出します。

-F
バイナリファイルにも annotate による注釈を付けます。

-r revision
指定されたリビジョンかタグのファイルを annotate します。

-D date
指定された日時のファイルを annotate します。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.7.2 annotate 例

例えば:

 
$ cvs annotate ssfile
Annotations for ssfile
***************
1.1          (mary     27-Mar-96): ssfile line 1
1.2          (joe      28-Mar-96): ssfile line 2

ファイル `ssfile' は今、二行あります。 ssfile line 1 は5月27日に mary により 格納されました。そして、5月28日に、joessfile line 1 行を変更せずに ssfile line 2 を追加しました。 この報告は削除されたり置き換えたりされた行については何も 報せません。そのためには cvs diff を使う必要があります (see section A.10 diff--リビジョン間の差分の表示)。

cvs annotate のオプションの一覧は B. CVS コマンドの簡単な便覧 にあり、 それらを使って annotate するファイルやリビジョンを選択することができます。 オプションは A.5 共通のコマンド・オプション でより詳しく説明されています。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.8 checkout--編集の為にソースを取り出す

modules で指定されたモジュールの作業ディレクトリを作成、 もしくは更新し、 その中にソース・ファイルをコピーします。 CVS のほとんどのコマンドは作業ディレクトリを扱うものなので、 まず checkout を実行しておく必要があります。

modules は、 リポジトリ中のディレクトリやファイルへの相対パスだけでなく、 ディレクトリやファイルの集合に対する別名でも構いません。 別名は管理用ファイル `modules' で定義します See section C.1 The modules file.

指定したモジュールにもよりますが、 checkout は再帰的にディレクトリを作成し、 そこに適切なソース・ファイルを入れていきます。 そして (他の開発者が各自のコピーを編集しているかどうかに関わらず)、 好きなときに自分のソース・ファイルを編集し、 他人の変更を取り入れるために更新したり、 自分の変更をリポジトリに反映するために格納したりします。

checkout で作成されるディレクトリに注意して下さい。 最上位のディレクトリは、 必ず checkout を実行したディレクトリに追加され、 通常は指定したモジュールと同じ名前になります。 モジュールに別名が定義されている場合、 サブディレクトリは違う名前になりますが心配は要りません。 checkout の処理中、各ファイルを作業領域に展開したと同時に その相対パスが表示されますから、 この表示でサブディレクトリを確認して下さい (広域オプション `-Q' を付けた場合は表示がありません)。

CVS にオプション `-r' が付けられた場合 (see section A.4 広域オプション)、 環境変数 CVSREAD が設定されていた場合 (see section D. CVS に影響する全ての環境変数)、 ファイルが監視されていた場合 (see section 10.6 ファイル編集者の追跡機構) を除いて、 checkout が作成するファイルは読み書き可能な状態になります。

checkout で作成したディレクトリの上で、 再度 checkout を実行しても構わないということに注意してください。 これはリポジトリに作成された新しいディレクトリが作業領域に現れるという 点で、update コマンドに `-d' オプションを付けるのと同様の 効果があります。しかし、update は引数にディレクトリ名を取ります が、checkout は引数にモジュール名を取ります。checkout を この様に使うためには、最上位のディレクトリから実行しなければなりません ので (普段 checkout を実行する場所です)、存在するディレクトリを 更新するために checkout を実行する前に、ディレクトリを最上位の ディレクトリに変更することを忘れないでください。

checkout コマンドの出力は A.17.2 update の出力 を参照して下さい。

A.8.1 checkout のオプション  
A.8.2 checkout の使用例  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.8.1 checkout のオプション

checkout では、以下の標準オプションが利用できます (完全な記述は see section A.5 共通のコマンド・オプション):

-D date
date 以前の最も新しいリビジョンを取り出します。 このオプションは貼り付けられ、 勝手に `-P' オプションも実行されます。 貼り付いたタグ/日付についての詳細は See section 4.9 貼り付いたタグ.

-f
`-D date' や `-r tag' と一緒に指定します。 指定したリビジョンが見付からなかった場合、 (そのファイルを無視せずに) 最も新しいリビションを取り出します。

-k kflag
キーワード置換モードを kflag に指定します。 詳細は 12.4 置換モード を参照。 このオプションは貼り付けられます。つまりこれ以後、 この作業ディレクトリでファイルが更新されるときには、 同じ kflag が使用され続けます。 status コマンドを用いて 貼り付いたオプションを見ることができます。 status コマンドの情報は B. CVS コマンドの簡単な便覧 を参照してください。

-l
Local、つまり現在の作業ディレクトリでのみコマンドが 実行されます。

-n
ファイルを取り出したとき、普段は実行されるプログラムを実行しません。 このプログラムは管理用ファイル `modules' の オプション `-o' で指定されます (see section C.1 The modules file)。

-P
空になったディレクトリを削除 (prune) します。7.5 ディレクトリの改名と移動 を参照してください。

-p
ファイルを標準出力に送り (pipe) ます。

-n
モジュールプログラムを実行しません。

-R
ディレクトリを再帰的に取り出します。このオプションは指定しなくても実行 されます。

-r tag
tag で指定されたリビジョンを取り出します。 このオプションは貼り付けられ、 `-P' オプションも勝手に実行されます。 貼り付いたタグ/日付についての詳細は See section 4.9 貼り付いたタグ.

さらに checkout では次の固有オプションも使用可能です:

-A
全ての貼り付いたタグや日付、 また `-k' オプションの指定を剥がします。 貼り付いたタグ/日付についての詳細は 4.9 貼り付いたタグ を参照してくだ さい。

-c
管理用ファイル `modules' の内容を、 アルファベット順に並べて標準出力に出します。 作業ディレクトリは全く変更されません。

-d dir
モジュール名を使用する代りに dir というディレクトリを作成します。 一般的に、このフラグは `mkdir dir; cd dir' の後に `-d' フラグ無しで checkout コマンドを実行することと同じです。

しかし、重要な例外があります。単独の項目を取り出しているときには、出力 に間に空のディレクトリが無いディレクトリが現れた方がとても便利です。こ の場合のみ、CVS は空のディレクトリを避けるためにパス名を "短く" します。

例えば、ファイル `bar.c' がある `foo' というモジュールがある とすると、コマンド `cvs co -d dir foo' はディレクトリ `dir' を作成し、中に `bar.c' を置きます。同様に、サブディレクトリ `baz' があり、その中に `quux.c' のあるモジュール `bar' があるとすると、コマンド `cvs co -d dir bar/baz' はディレクトリ `dir' 作成し、その中に `quux.c' を置きます。

`-N' フラグを使うと、この振舞いは抑制されます。上と同じモジュール の定義で、`cvs co -N -d dir foo' はディレクトリ `dir/foo' を 作成してその中に `bar.c' を置き、`cvs co -N -d dir bar/baz' はディクトリ `dir/bar/baz' を作成してその中に `quux.c' を置 きます。

-j tag
`-j' オプションを二つ指定した場合、 最初に指定したリビションから次に指定したリビジョンへの変更を、 作業ディレクトリにマージします。

`-j' オプションが一つの場合、 その分岐リビジョンから指定したリビジョンへの変更を、 作業ディレクトリにマージします。 分岐リビジョンとは、作業ディレクトリの元になったリビジョンと、 `-j' で指定したリビジョンとの共通の祖先です。

`-j' オプションに枝を指定する場合、 日付の指定を付加することができます。 このとき選択されるリビジョンは、指定日以前のものに制限されます。 日付の指定は、タグ名の後のコロン (:) に続けて記述します: `-jSymbolic_Tag:Date_Specifier'。

See section 5. 枝とマージ.

-N
`-d dir' と併用した場合にのみ有効です。 このオプションを指定した場合、 単独モジュールを取り出したときに、 作業ディレクトリのモジュールパスを "短く" しません。例と説明は `-d' フラグを参照してください。

-s
`-c' と同様ですが、全てのモジュールの状態を アルファベット順に並べて標準出力に出します。 モジュールの状態を設定するために管理用ファイル `modules' の中で使 われるオプション `-s' の情報は、See section C.1 The modules file.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.8.2 checkout の使用例

モジュール `tc' のコピーを取り出します:

 
$ cvs checkout tc

モジュール `tc' を昨日の状態で取り出します:

 
$ cvs checkout -D yesterday tc


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.9 commit--ファイルをリポジトリに格納する

commit は、作業ファイルに対する変更を リポジトリに組み入れる際に使用します。

格納するファイルを特に指定しなければ、 現在の作業ディレクトリの全ファイルが調査され、 変更が加えられたファイルだけがリポジトリに格納されます。 既定 (もしくは明示的にオプション `-R' が指定された場合) では、 サブディレクトリのファイルも調査され、変更されていれば格納されます。 オプション `-l' を指定して、 commit の動作を現在のディレクトリだけに留めることも可能です。

commit は、選択されたファイルが リポジトリの最新リビジョンであるかどうか確認します。 指定されたファイルの中に update (see section A.17 update--作業コピーをリポジトリと一致させる) が必要なものが一つでもあれば、その旨が表示され、 格納せずに終了します。 commit はあえて update コマンドを呼び出さず、 開発者自身に適切な時期を判断してもらいます。

全てが正常ならば、ログ・メッセージを記すためにエディタが起動されます。 ログ・メッセージは幾つかの処理プログラムに送られると同時に (C.1 The modules fileC.5.2 管理用ファイル Loginfo を参照)、 リポジトリ中の RCS ファイルにも記録されます。 このログ・メッセージを参照するには log コマンドを 用いて下さい。A.14 log--ファイルのログ情報を表示 参照。 オプション `-m message' で コマンド行にログ・メッセージを記述したり、 オプション `-F file' で ログ・メッセージを記述したファイルを指定すれば、 エディタを起動しなくて済みます。

A.9.1 commit のオプション  
A.9.2 commit の使用例  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.9.1 commit のオプション

commit では、以下の標準オプションが利用できます (完全な記述は see section A.5 共通のコマンド・オプション):

-l
Local、つまり現在の作業ディレクトリでのみコマンドが 実行されます。

-n
モジュールのプログラムを実行しません。

-R
ディレクトリを再帰的に格納します。 このオプションは指定しなくても実行されます。

-r revision
revision に格納します。 revision には、枝もしくは、 既存の全てのリビジョン番号よりも大きい番号を持つ 幹上のリビジョンを指定しなくてはいけません (see section 4.3 リビジョンの割当て)。 枝上のリビジョンを指定して格納することはできません。

さらに commit では以下のオプションも使用可能です:

-F file
エディタを起動せず file からログ・メッセージを読み込みます。

-f
これは A.5 共通のコマンド・オプション のオプション `-f' に記述される 標準的な動作とは異なることに注意して下さい。

作業ファイルに何も変更を加えていない場合でも、 無理矢理新しいリビジョンとして格納します。 現在の file のリビジョンを 1.7 と仮定したとき、 次の二つのコマンドの実行結果は同じになります:

 
$ cvs commit -f file
$ cvs commit -r 1.8 file

`-f' オプションは再帰を使いません (すなわち、`-l' を含んでい ます)。全てのサブディレクトリの全てのファイルの新しいリビジョンの格納 を CVS 強制するには、`-f -R' を使用する必要があります。

-m message
エディタを起動せず、message をログ・メッセージとします。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.9.2 commit の使用例


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.9.2.1 枝に対して格納する

オプション `-r' を用いて、枝リビジョン (リビジョン番号が 偶数個のドットを含むもの) に格納することができます。 枝リビジョンは rtagtag コマンドに オプション `-b' を指定して作成します (see section 5. 枝とマージ)。 そして checkoutupdate で、 新しく作成した枝からソースを取り出します。 その結果、この作業ソースに対する変更を commit すると、 全て自動的に枝リビジョンの方に追加され、 幹の開発系統は全く影響を受けません。 例えば、バージョン 1.2 の製品に対するパッチを作成する必要があるけれど、 既にバージョン 2.0 の開発が始まっているような場合、 以下のようにします:

 
$ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
$ cvs checkout -r FCS1_2_Patch product_module
$ cd product_module
[[ hack away ]]
$ cvs commit

オプション `-r' は作業ディレクトリに貼り付けられるため、 これを指定する必要はありません。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.9.2.2 編集後に枝を作成する

例えば、先週取り出したリビジョンを元にして、 極めて実験的な変更をソフトウェアに加えてきたとします。 ここで実験に他の開発者を加えたいけれど、 幹の開発系統を妨げたくない場合は、 その変更点を新しい枝に格納すれば良いでしょう。 すると他の開発者も実験中のコードを取り出して、 CVS の衝突解決の恩恵を全て受けることができます。 このシナリオは次のようになるでしょう:

 
[[ hacked sources are present ]]
$ cvs tag -b EXPR1
$ cvs update -r EXPR1
$ cvs commit

update コマンドで、全てのファイルに オプション `-r EXPR1' が貼り付けられます。 このとき、update コマンドでは ファイルに対する変更が削除されないことに注意して下さい。 `-r' が貼り付けられているため、 commit すれば自動的に正しい枝に変更が格納されます。 これは次の手順もあります:

 
[[ hacked sources are present ]]
$ cvs tag -b EXPR1
$ cvs commit -r EXPR1

しかしこの場合、 変更されていたファイルだけに `-r EXPR1' が貼り付けられます。 従って別のファイルを変更して、フラグ `-r EXPR1' を付けずに 格納した場合、誤って幹に格納されてしまいます。

他の開発者が実験に参加する際には、 単純に以下のようにして下さい:

 
$ cvs checkout -r EXPR1 whatever_module


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.10 diff--リビジョン間の差分の表示

diff コマンドは、 別々のリビジョン間の差異を比較するのに使用します。 特にオプションを指定しない場合、 作業ファイルをその由来となったリビジョンと比較し、 検出された全ての差異を報告します。

ファイル名を指定した場合、そのファイルについてのみ比較します。 ディレクトリを指定した場合、その下の全てのファイルを比較します。

diff の終了状態は他の CVS コマンドと違います。詳細は A.2 CVS の終了状態 を参照してください。

A.10.1 diff のオプション  
A.10.2 diff の使用例  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.10.1 diff のオプション

diff では、以下の標準オプションが利用できます (完全な記述は see section A.5 共通のコマンド・オプション):

-D date
date 以前の最も新しいリビジョンを利用します。 このオプションを比較に用いた時の効果は `-r' を参照して下さい。

-k kflag
kfalg に従ってキーワード置換を行います。12. キーワード置換, 参照。

-l
Local、つまり現在の作業ディレクトリでのみコマンドが 実行されます。

-R
ディレクトリを再帰的に調べます。 このオプションは指定しなくても実行されます。

-r tag
リビジョン tag と比較します。 オプション `-r' は最大二つまで使用できます。 オプション `-r' を指定しない場合、 作業ファイルをその由来となったリビジョンと比較します。 オプション `-r' を一つ指定した場合、 指定したリビジョンと作業ファイルとを比較します。 オプション `-r' を二つ指定した場合、 指定した二つのリビジョンを比較します (作業ファイルが結果に影響を与えることはありません)。

一つもしくは両方のオプション `-r' を、前述の オプション `-D date' と交換することができます。

以下のオプションは出力の書式を指定します。 意味は GNU diff と同じです。 ほとんどのオプションは `-' の後に続く一文字と、 `--' の 後に続く長い名前の二つの同じ意味の名前あります。

`-lines'
(整数) lines 行の文脈を表示します。このオプション自身は 出力フォーマットを指定しません。`-c' や `-u' とともに使われないと 効果はありません。このオプションは旧式です。patch 適切な動作のために 少なくとも2行文脈を必要とします。

`-a'
テキストでなさそうなファイルだったとしても、 すべてのファイルをテキストとして扱い、行単位で比較します。

`-b'
行の最後の空白を無視し、他の複数の空白の連続を一つのものとみなします。

`-B'
空行を挿入もしくは削除するだけの変更を無視します。

`--binary'
データをバイナリモードで読み書きします。

`--brief'
違いの詳細を報告せず、ファイルが異なるかどうかだけを報告します。

`-c'
コンテキスト出力フォーマットを使います。

`-C lines'
`--context[=lines]'
コンテキスト出力フォーマットを使い、(整数) lines 行の文脈もしくは lines が指定されていないときは3行の文脈を使います。 patch 適切な動作のために 少なくとも2行文脈を必要とします。

`--changed-group-format=format'
両方のファイルで違う行のグループの if-then-else 形式での出力に format を使います。See section A.10.1.1 行グループフォーマット.

`-d'
あるかもしれないより少ない変更を見つけるためにアルゴリズムを変更します。 これは diff を遅く (ときには非常に遅く) します。

`-e'
`--ed'
出力を正しい ed スクリプトにします。

`--expand-tabs'
入力ファイルのタブ揃えを維持するために出力中のタブを空白に変換します。

`-f'
出力を ed スクリプトのようなものにしますが、変更の順番を ファイルでの順番にします。

`-F regexp'
コンテキストとユニファイフォーマットのときに、各々の違いの塊に対して、 regexp にマッチする直前のいくつかの行を表示します。

`--forward-ed'
出力を ed スクリプトのようなものにしますが、変更の順番を ファイルでの順番にします。

`-H'
多くの少ない変更がいろいろなところにある多きなファイルをの扱いを 速くするためにヒューリスティクスを使います。

`--horizon-lines=lines'
共通の接頭辞を持つ最後の lines 行と共通の接尾辞を持つ最初の lines 行 を無視しません。

`-i'
大文字小文字の区別を無視します。

`-I regexp'
regexp にマッチする行の挿入もしくは削除だけの変更を無視します。

`--ifdef=name'
マージされた if-then-else 出力が name を使うようにします。

`--ignore-all-space'
行を比較するときに空白を無視します。

`--ignore-blank-lines'
空行を挿入もしくは削除するだけの変更を無視します。

`--ignore-case'
大文字小文字の区別を無視します。

`--ignore-matching-lines=regexp'
regexp にマッチする行の挿入もしくは削除だけの変更を無視します。

`--ignore-space-change'
行の最後の空白を無視し、他の複数の空白の連続を一つのものとみなします。

`--initial-tab'
通常のフォーマットもしくはコンテキストフォーマットのテキストの行の前に 空白の代わりにタブを表示します。これは行のタブ揃えが普通に見えるように します。

`-L label'
コンテキストフォーマットとユニファイフォーマットのヘッダに ファイル名の代わりに label を使います。

`--label=label'
コンテキストフォーマットとユニファイフォーマットのヘッダに ファイル名の代わりに label を使います。

`--left-column'
横に並べたフォーマットのときに共通の行は左のコラムしか出力しないようにします。

`--line-format=format'
すべての入力行の if-then-else 形式での出力に format を使います。See section A.10.1.2 行フォーマット.

`--minimal'
あるかもしれないより少ない変更を見つけるためにアルゴリズムを変更します。 これは diff を遅く (ときには非常に遅く) します。

`-n'
RCS 形式の diff を出力します。各コマンドが影響する行数を指定する以外は `-f' と同じです。

`-N'
`--new-file'
ディレクトリの比較において、ファイルが一つのディレクトリだけで 見つかった場合、他のディレクトリでは空のファイルが存在しているものとして 扱います。

`--new-group-format=format'
if-then-else フォーマットのときに、2番目のファイルからのみの行のグループの 出力に format を使います。See section A.10.1.1 行グループフォーマット.

`--new-line-format=format'
if-then-else フォーマットのときに、2番目のファイルからのみの行の 出力に format を使います。See section A.10.1.2 行フォーマット.

`--old-group-format=format'
if-then-else フォーマットのときに、1番目のファイルからのみの行のグループの 出力に format を使います。See section A.10.1.1 行グループフォーマット.

`--old-line-format=format'
if-then-else フォーマットのときに、1番目のファイルからのみの行の 出力に format を使います。See section A.10.1.2 行フォーマット.

`-p'
各変更がどの C 関数に属するかを表示します。

`--rcs'
RCS 形式の diff を出力します。各コマンドが影響する行数を指定する以外は `-f' と同じです。

`--report-identical-files'
`-s'
二つのファイルが同一であったときに報告します。

`--show-c-function'
各変更がどの C 関数に属するかを表示します。

`--show-function-line=regexp'
コンテキストとユニファイフォーマットのときに、各々の違いの塊に対して、 regexp にマッチする直前のいくつかの行を表示します。

`--side-by-side'
横に並べた出力フォーマットを使います。

`--speed-large-files'
多くの少ない変更がいろいろなところにある多きなファイルをの扱いを 速くするためにヒューリスティクスを使います。

`--suppress-common-lines'
横に並べた出力フォーマットのときに、共通する行を出力しません。

`-t'
入力ファイルのタブ揃えを維持するために出力中のタブを空白に変換します。

`-T'
通常のフォーマットもしくはコンテキストフォーマットのテキストの行の前に 空白の代わりにタブを表示します。これは行のタブ揃えが普通に見えるように します。

`--text'
テキストでなさそうなファイルだったとしても、 すべてのファイルをテキストとして扱い、行単位で比較します。

`-u'
ユニファイ出力形式を使います。

`--unchanged-group-format=format'
if-then-else フォーマットのときに両方のファイルからの共通行のグループを format を使って出力します。See section A.10.1.1 行グループフォーマット.

`--unchanged-line-format=format'
if-then-else フォーマットで両方のファイルで共通の行を format を 使って出力します。See section A.10.1.2 行フォーマット.

`-U lines'
`--unified[=lines]'
ユニファイ出力フォーマットを使い、(整数) lines 行の文脈もしくは lines が指定されていないときは3行の文脈を使います。 patch 適切な動作のために 少なくとも2行文脈を必要とします。

`-w'
行を比較するときに空白を無視します。

`-W columns'
`--width=columns'
横に並べるフォーマットのときに、幅 columns を出力に使います。

`-y'
横に並べた出力フォーマットを使います。

A.10.1.1 行グループフォーマット  
A.10.1.2 行フォーマット  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.10.1.1 行グループフォーマット

行グループフォーマットはプログラム言語やテキストフォーマット言語を 含む、if-then-else 入力を受け付ける多くのアプリケーションに適しています。 行グループフォーマットは同様の行の連続したグループの出力フォーマットを 指定します。

例えば、以下のコマンドは TeX ファイル `myfile' をリポジトリの 同じファイルと比較し、古い範囲を `begin{em}'-`end{em}' 行で 囲み、新しい範囲が `begin{bf}'-`end{bf}' で囲んで マージされたファイルに出力します。

 
cvs diff 
   --old-group-format='begin{em}
%<end{em}
' 
   --new-group-format='begin{bf}
%>end{bf}
' 
   myfile

次のコマンドは上の例と等価ですが、デフォルトの行グループフォーマットも 指定しているため、より冗長になっています。

 
cvs diff 
   --old-group-format='begin{em}
%<end{em}
' 
   --new-group-format='begin{bf}
%>end{bf}
' 
   --unchanged-group-format='%=' 
   --changed-group-format='begin{em}
%<end{em}
begin{bf}
%>end{bf}
' 
   myfile

これはより高度な例で、diff の一覧を行数が「普通の英語」形式に なっているヘッダとともに出力します。

 
cvs diff 
   --unchanged-group-format='' 
   --old-group-format='-------- %dn line%(n=1?:s) deleted at %df:
%<' 
   --new-group-format='-------- %dN line%(N=1?:s) added after %de:
%>' 
   --changed-group-format='-------- %dn line%(n=1?:s) changed at %df:
%<-------- to:
%>' 
   myfile

行グループフォーマットを指定するには、以下のオプションのどれかを使います。 各行グループの種類に対して一つ、最大で四つまでの行グループフォーマットを 指定することができます。format はシェルメタ文字を含むことが多いので 引用符で囲むようにしてください。

`--old-group-format=format'
これらの行グループは最初のファイルからの行のみを含む塊です。 変更されたグループフォーマットが指定されていれば デフォルトの古いグループのフォーマットはそれになります。 指定されていなければ、行グループはそのまま出力されます。

`--new-group-format=format'
これらの行のグループは2番目のファイルからのみの行の塊です。 変更されたグループフォーマットが指定されていれば デフォルトの新しいグループのフォーマットはそれと同じです。 指定されていなければ、行グループはそのまま出力されます。

`--changed-group-format=format'
これらの行グループは両方のファイルからの行の塊です。 デフォルトの変更されたグループフォーマットは古いものと新しいものの フォーマットを繋げたものです。

`--unchanged-group-format=format'
これらの行グループは両方のファイルに共通する行です。 デフォルトの未変更グループフォーマットは行グループをそのまま出力します。

行グループフォーマットでは普通の文字は文字自身を現します。 変換の指定は `%' で始まり、以下のどれかの形式になります。

`%<'
最後の改行を含む、最初のファイルからの行です。 各行は古い行フォーマットに従って整形されます (see section A.10.1.2 行フォーマット)。

`%>'
最後の改行を含む、2番目のファイルからの行です。 各行は新しい行フォーマットに従って整形されます。

`%='
最後の改行を含む、両方のファイルに共通の行です。 各行は未変更行フォーマットに従って整形されます。

`%%'
文字 `%' を現します。

`%c'C''
C が一文字のときは、C を現します。 C はバックスラッシュや引用符であってはなりません。 例えば、`%c':'' はコロンを現します。これは 通常コロンがその部分を終了させる if-then-else フォーマットの then 部分であっても コロンになります。

`%c'O''
O が1、2、3文字の8進数からなる文字列のきは、8進コード O の 文字を現します。例えば、`%c'0'' はヌル文字を現します。

`Fn'
Fprintf 変換指定フォーマットで n が以下の文字であるとき、 n の値を F を使って整形します。

`e'
古いファイルの該当グループの直前の行番号です。

`f'
古いファイルの該当グループの最初の行番号です。 e + 1 と同じ値になります。

`l'
古いファイルの該当グループの最後の行番号です。

`m'
古いファイルの該当グループの最後の直後の行番号です。 l + 1 と同じ値になります。

`n'
古いファイルの該当グループの行数です。l - f + 1 と 同じ値になります。

`E, F, L, M, N'
同様に、新しいファイルでの行です。

printf 変換指定は `%d'、`%o'、`%x'、`%X' を 指定することができ、それぞれ10進、8進、小文字の16進、大文字の16進の出力を 意味します。`%' の後で、以下のオプションを書くこができます: `-' は左揃え、整数はフィールドの最小幅、ピリオドの後に 数字 (省略可能) は最小限の桁数をそれぞれ意味します。 例えば、`%5dN' はグループの改行5文字の幅のフィールドに printf のフォーマット "%5d" を使って表示します。

`(A=B?T:E)'
AB が等しければ T、そうでなければ E です。 AB は10進の定数か、上記のように解釈される一文字です。 このフォーマット指定は A の 値と B の値が等しいときは B を、そうでないときは E を指定したのと等価になります。

例えば、 `%(N=0?no:%dN) line%(N=1?:s)' は N (新しいファイルの グループの改行に数) が 0 であれば `no lines' と等価であり、 N が 1 であれば `1 line' に、そうでない場合は `%dN lines' に なります。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.10.1.2 行フォーマット

行フォーマットは入力ファイルからの各行が if-then-else フォーマットの 行グループの一部として出力されるかを制御します。

例えば、以下のコマンドはテキストの左に一列変更を示す文字を追加して 出力します。出力の最初の列は削除された行は `-' 、追加された行は `|'、未変更の行は空白になります。出力中に改行が望ましい場所では フォーマットは改行を含みます。

 
cvs diff 
   --old-line-format='-%l
' 
   --new-line-format='|%l
' 
   --unchanged-line-format=' %l
' 
   myfile

行フォーマットの指定には以下のオプションのどれかを使います。 format はシェルメタ文字を含むことが多いので 引用符で囲むようにしてください。

`--old-line-format=format'
最初のファイルからの行だけをフォーマットします。

`--new-line-format=format'
2番目のファイルからの行だけをフォーマットします。

`--unchanged-line-format=format'
両方のファイルに共通の行をフォーマットします。 formats lines common to both files.

`--line-format=format'
すべての行をフォーマットします。要するに、上の三つのオプションを同時に 設定します。

行フォーマットでは、普通の文字は文字自身を現します。 変換の指定は `%' で始まり、以下のどれかの形式になります。

`%l'
(もしあったとしても) 最後の改行を除いた、行の内容になります。 このフォーマットは行が終了しているかどうかは無視します。

`%L'
(もしあれば) 最後の改行を含む、行の内容になります。 行が終了していなければ、このフォーマットはその状態を保ちます。

`%%'
`%' を現します。

`%c'C''
C が一文字のときは、C を現します。 C はバックスラッシュや引用符であってはなりません。 例えば、`%c':'' はコロンを現します。

`%c'O''
O が1、2、3文字の8進数からなる文字列のきは、8進コード O の 文字を現します。例えば、`%c'0'' はヌル文字を現します。

`Fn'
`Fn'
Fprintf 変換指定フォーマットで n が以下の文字であるとき、 n の値を F を使って整形します。例えば、`%.5dn' は 行番号を printf のフォーマット `%.5dn' を使って表示します。 printf 変換指定については See section A.10.1.1 行グループフォーマット

デフォルトの行フォーマットは `%l' の後に改行が続いたものです。

入力にタブが含まれていて、出力が揃っていることが重要な場合は、 `%l' や `%L' がタブストップの直後から始まるようにするか (例えば 、 の後にタブと `%l' や `%L' を続ける)、 `-t' か `--expand-tabs' オプションを指定するとよいでしょう。

行フォーマットと行グループフォーマットを一緒にすれば、たくさんの 違ったフォーマットを指定することができます。例えば、以下のコマンドは diff の通常のフォーマットと似たフォーマットを使います。 このコマンドを使って diff の出力を細かく制御することができます。

 
cvs diff 
   --old-line-format='< %l
' 
   --new-line-format='> %l
' 
   --old-group-format='%df%(f=l?:,%dl)d%dE
%<' 
   --new-group-format='%dea%dF%(F=L?:,%dL)
%>' 
   --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
%<---
%>' 
   --unchanged-group-format='' 
   myfile


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.10.2 diff の使用例

次の実行例は、`backend.c' のリビジョン 1.14 と 1.19 間の差分を、 unidiff 形式 (フラグ `-u') で出力します。 またキーワード置換を止めるために `-kk' を指定し、 キーワード置換による差分を無視します。

 
$ cvs diff -kk -u -r 1.14 -r 1.19 backend.c

タグ RELEASE_1_0 が付けられたファイルの集合から、 実験用の枝 EXPR1 が派生していると仮定します。 この枝に加えられた変更を見るには、次のようにします:

 
$ cvs diff -r RELEASE_1_0 -r EXPR1

次の実行例では、二つのリリース間の差分を context 形式で出力します:

 
$ cvs diff -c -r RELEASE_1_0 -r RELEASE_1_1 > diffs

ChangeLogs を運用している場合、 変更を格納する前に次の行のようなコマンドを実行すると、 ChangeLogs の記載事項を入力するのに役立つでしょう。 作業ファイルに加えた変更点のうち、格納していないもの全てを表示します。

 
$ cvs diff -u | less


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.11 export--CVS からソースを取り出す, checkout に類似

このコマンドは checkout の変形で、 module のソースのコピーを、 CVS の管理用ディレクトリを除いた状態で取り出します。 例えば出荷用のソースを準備するときなどに export を使います。 出荷したソースを後で再現できることを確認するため、使用の際には (`-D' か `-r' による) 日付かタグの指定が要求されます。

cvs export に `-kv' を指定すると便利です。 この指定で全てのキーワードが展開されるため、 出荷先で import されても キーワードによるリビジョン情報が失われません。 しかしモジュールがバイナリ・ファイルを含む場合は、 正しく処理されない可能性があるので注意が必要です。 また `-kv' を使用した後では、ident コマンド (RCS を 構成するコマンドの一つです---`ident(1)' を参照) を使用して、 キーワード文字列を抜き出すことができません。 従って ident を使用するつもりなら、 `-kv' を指定してはいけません。

A.11.1 export のオプション  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.11.1 export のオプション

export では、以下の標準オプションが利用できます (完全な記述は see section A.5 共通のコマンド・オプション):

-D date
date 以前の最も新しいリビジョンを取り出します。

-f
指定したリビジョンが見付からなかった場合、 (そのファイルを無視せずに) 最も新しいリビションを取り出します。

-l
Local、つまり現在の作業ディレクトリでのみコマンドが 実行されます。

-n
ファイルを取り出したとき、通常実行されるプログラムを実行しません。

-R
ディレクトリを再帰的に取り出します。 このオプションは指定しなくても実行されます。

-r tag
tag で指定されたリビジョンを取り出します。

さらに (checkoutexport で共通な) 以下のオプションも使用可能です:

-d dir
モジュール名を使用する代りに dir というディレクトリを作成します。 CVS がこのフラグを扱う方法の完全な詳細は See section A.8.1 checkout のオプション.

-k subst
キーワード置換モードを設定します (see section 12.4 置換モード)。

-N
`-d dir' と併用した場合にのみ有効です。 CVS がこのフラグを扱う方法の完全な詳細は See section A.8.1 checkout のオプション.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.12 history--ファイルと使用者の状態を表示

CVS は、checkout, commit, rtag, update, release コマンドの実行履歴を、 ファイル `history' に記録しています。 history を使って、様々な形式で この情報を表示することができます。

ログを記録したい場合は、ファイル `$CVSROOT/CVSROOT/history' を 作成する必要があります。

注意: history は、`-f', `-l', `-n', `-p' を通常の CVS コマンドで用いられるものとは 異なる意味で使用しています (see section A.5 共通のコマンド・オプション)。

A.12.1 history のオプション  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.12.1 history のオプション

次のオプション (コマンド書式で `-report' の部分) によって、 生成する報告の種類を決定します:

-c
現在までに使用された commit (つまりリポジトリの変更) について報告します。

-e
全て (全記録種別) を報告します。全ての記録種別に `-x' を指定する ことと等価です。もちろん、`-e' は将来のバージョンの CVS に加 えられた記録種別も含みます。特定の記録種別だけを扱うことのできるスクリ プトを書いているなら、`-x' を指定する方が良いでしょう。

-m module
特定のモジュールについて報告します (必要ならば複数の `-m' をコマンド行に並べても構いません)。

-o
取り出されたモジュールについて報告します。

-T
全てのタグについて報告します。

-x type
報告を受けたい記録種別の組を type に指定して、 CVS の実行履歴から取り出します。 種別は各々一文字で表され、これを組み合わせて指定します。

以下のコマンドには、各々一つの記録種別を割り当てています:

F
release
O
checkout
E
export
T
rtag

更新の結果は、以下の五つの記録種別のうちのどれかになります:

C
マージを実行した結果、衝突が検出された場合 (手動でのマージが必要)。
G
マージを実行して成功した場合。
U
作業ファイルがリポジトリからコピーされた場合。
P
作業ファイルに対してリポジトリと同じにするためにパッチが適用された場合。
W
(リポジトリから相当するファイルが削除されたため) 更新の際に作業ファイルが削除された場合。

格納の結果は、以下の三つの記録種別のうちのどれかになります:

A
ファイルが初めて追加された場合。
M
ファイルが修正された場合。
R
ファイルが削除された場合。

次のオプション (コマンド書式で `-flags' の部分) によって、 報告の範囲を限定もしくは拡大します。引数はありません:

-a
全ての使用者の情報を表示します (既定では history を実行した人物の情報のみを表示します)。

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

-w
history を実行したのと同じ作業ディレクトリから行われた 変更に関する記録のみを表示します。

次のオプション (コマンド書式で `-options args' の部分) は、 引数に基づいて報告の範囲を限定します:

-b str
モジュール名, ファイル名, リポジトリのパスのいずれかに、 文字列 str が含まれる記録のみを表示します。

-D date
date 以降のデータを表示します。 普通の `-D date' は date 以前の 最新リビジョンを選択しますから、少し意味が違います。

-f file
特定のファイルのデータを表示します (`-f' オプションをコマンド行で 複数指定することができます)。これはコマンド行でファイルを指定するのと 等価です。

-n module
特定のモジュールのデータを表示します (複数の `-n' をコマンド行で 並べることができます)。

-p repository
指定したリポジトリのデータを表示します (必要ならば複数の `-p' をコマンド行に並べても構いません。)

-r rev
リビジョンもしくはタグを rev に指定して、 このリビジョン以降の記録を表示します。 実行時に全ての RCS ファイルについて rev を検索します。

-t tag
履歴ファイルにタグ tag が 追加された後の記録を表示します。 このオプションを指定した場合、RCS ファイルを検索せず、 履歴ファイルのみを参照するため、 オプション `-r' の場合よりもかなり高速です。

-u name
name で指定された使用者の記録を表示します。

-z timezone
選択された登録の時間を UTC の代わりに指定された標準時を用いて表示しま す。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.13 import--CVS にソースを取り込む, ベンダー枝を使用

import を用いて、外部の供給元 (例えばソース・ベンダー) からのソース配布物全体を、自分のリポジトリに取り入れることができます。 リポジトリを最初に作成する場合と、外部の供給元がモジュールを 大幅に更新した場合の両方でこのコマンドを用います。 この件については See section 13. サード・パーティーのソースの追っかけ.

repository には、リポジトリにするディレクトリの名前 (もしくは、ディレクトリへのパス) を、 CVS のルート・ディレクトリからの相対パス名で指定します。 指定したディレクトリが存在しなくても自動的に作成されます。

(前回の import から) ずっと変更を加えてきたリポジトリに対し、 ソースを更新するために import を用いると、 互いの開発系統間で衝突が発生したファイル全てが報告されます。 この時 import から具体的な指示がありますので、 それを参考にしながら `checkout -j' を使って変更点を取り入れて下さい。

CVS は無視するように設定されたファイルは (see section C.8 cvsignore でファイルを無視する)、 取り込まず、無視したことを示すため `I ' に続けてファイル名を表示します (出力に関する完全な説明は see section A.13.2 import の出力)。

`$CVSROOT/CVSROOT/cvswrappers' が存在する場合、 このファイルの記述に合致するファイルやディレクトリは 各々一括して扱われ、リポジトリに取り込まれる前に、 適切なフィルタが適用されます。See section C.2 cvswrappers ファイル.

外部からのソースは第一層の枝、既定だと 1.1.1 に保存されます。 以降の更新は全てこの枝の葉となります。 例えば最初に取り込んだソース集合のファイルは リビジョン 1.1.1.1 になり、次の取り込みで そのファイルが更新された場合には 1.1.1.2 となり、以下同様に続きます。

少なくとも次の三つの引数を指定する必要があります。 まずソース集合を識別するために repository が必要です。 次の vendortag は枝全体 (例えば 1.1.1) を示すタグ名です。 そして import を実行する度に作成される葉のうち、 どの葉のファイルかを識別するため、 最低一つの releasetag を指定しなくてはいけません。

import はそれを起動したディレクトリを変更 しない という ことに注意してください。特に、ディレクトリを CVS の作業ディレクト リとして設定しないことに注意してください。もし作業をしたいなら、まずソー スを取り込んで、それから違うディレクトリに取り出してください (see section 1.3.1 ソースの取得)。

A.13.1 import のオプション  
A.13.2 import の出力  
A.13.3 import の使用例  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.13.1 import のオプション

import では、以下の標準オプションが利用できます (完全な記述は see section A.5 共通のコマンド・オプション):

-m message
エディタを立ち上げる代りに、message をログ情報に指定します。

以下のような追加の特別なオプションがあります。

-b branch
13.6 複数のベンダー枝 参照。

-k subst
希望するキーワード置換モードを指定します。 この設定は、新たに取り入れる全てのファイルに適用されますが、 リポジトリに既に存在するファイルには適用されません。 `-k' に使用できる設定の一覧は 12.4 置換モード 参照。

-I name
取り込む際に無視するファイル名を指定します。 無視したいファイルが複数あるときは、 このオプションを何個並べても構いません。 全てのファイルを無視したくない場合は、 (それらは既定では無視されるとしても) `-I !' と指定して下さい。

name には、ファイル `.cvsignore' と同じ ファイル名形式が使用できます。See section C.8 cvsignore でファイルを無視する.

-W spec
取り込む際に、 フィルタを適用したいファイル名を指定します。 フィルタを適用したいファイルが複数あるときは、 このオプションを何個並べても構いません。

spec には、ファイル `.cvswrappers' と同じ ファイル名形式が使用できます。See section C.2 cvswrappers ファイル.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.13.2 import の出力

import の進行状況を知らせるために、 処理中のファイル名が一行ずつ表示され、 行頭にはファイルの状態を示す文字が付加されます:

U file
このファイルが既にリポジトリに存在し、かつ変更されてないことを示します。 (必要ならば) 新しいリビジョンが作成されます。

N file
このファイルが新規であり、リポジトリに追加されたことを示します。

C file
このファイルが既にリポジトリに存在し、かつ変更されていて、 マージが必要であることを示します。

I file
このファイルが無視されることを示します (see section C.8 cvsignore でファイルを無視する)。

L file
このファイルがシンボリック・リンクであることを示します。 cvs import はシンボリック・リンクを無視します。いろんな人が定期 的にこの振舞いは変更されるべきだと提案しますが、どれに変更されるべきか についての同意があるとすれば、それは明らかでないように思われます。 (管理用ファイル `modules' の各種オプションを checkout や update 等でシンボリック・リンクを再生成するために使うことができます。 see section C.1 The modules file。)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

A.13.3 import の使用例

13. サード・パーティーのソースの追っかけ3.1.1 存在するファイルからディレクトリを生成する を参照して下さい。


[