co − RCS ファイルからリビジョンをチェックアウトする |
co [options] file ... |
co は、各 RCS ファイルからリビジョンを取り出し、対応したワークファイル に格納します。 RCS 拡張子にマッチするファイル名は RCS ファイルであるとみなし、その他の ファ イル名はワークファイルであるとみなします。ファイル名の対応に関して は、 ci(1) を参照してください。 RCS ファイルのリビジョンは、ロックしてもしなくともチェックアウトでき ま す。 リビジョンをロックすることにより、同時に複数の更新が行われることを 防止します。内容を表示したり、読むだけの処理(たとえば、コンパイル)で 用 い たりする場合はロックする必要はありません。編集し後にチェックインする つもりで RCS ファイルから取り出す場合は、通常、ロックしなければなりませ ん。 他のユーザによってロックされているリビジョンをロックしてチェックア ウトしようとするとエラーになります(ロックは rcs(1) によって解除すること ができます)。更に、リビジョンをロックしてチェックアウトするには、チェッ クアウトする人が RCS ファイルのアクセスリストに登録されているか、 そ の ファ イルの所有者もしくはスーパユーザであるか、アクセスリストが空である 必要が有ります。ロックしないで取り出す場合は、アクセスリストや 他 人 の ロックに影響されることはありません。 取 り出されるリビジョンを、リビジョン番号、枝番号、チェックイン日時、作 者、状態によって指定するオプションが存在します。複数のオプションが組 み 合 わされて指定された場合、 co はすべての条件に合致するリビジョンのうち で最新のものを取り出します。リビジョン指定オプションが指定されなかっ た 場合、 co は、デフォルト枝(通常は幹: rcs(1) の −b オプションの項を参照) の最新のリビジョンを取り出します。リビジョン番号あるいは枝番号は、以 下 のオプションを使って指定することができます: −f, −I, −l, −M, −p, −q, −r, −u 。オプション −d (日時)、 −s (状態)、 −w (作者)は、単一の枝から取り出 し ます。この枝は 選択された枝であり、 −f, ..., −u オプションもしくはデ フォルト枝により指定されます。 リビジョンを 1 つも持たない RCS ファイルに対して co コマンドを適用す る と、長さ 0 のワークファイルが作成されます。 co は、つねにキーワード置換 を行います (下記参照)。 |
−r[rev] |
リビジョン番号 rev 以前( rev と同じものも含む)で最新のリビ ジョ ン を 取り出します。 rev がリビジョンではなく枝を指定している場 合、その枝上の最新のリビジョンが取り出されます。 rev が省略され た場合、デフォルト枝 ( rcs(1) の −b オプションの項を参照)の最新 のリビジョンが取り出されます。 rev が $ の場合、 co はリビ ジョ ン 番号をワークファイルのキーワードから取り出します。これら以外 の場合、 rev はリビジョンを示すピリオドで区切られた数字またはシ ン ボルの列です。 rev がピリオドで始まる場合、デフォルトの枝(通 常は幹)が設定されます。 rev がピリオドを後ろに付けた枝番号で あ る な ら ば、その枝の最新のリビジョンが使われます。シンボルは、 ci(1) や rcs(1) によりリビジョン番号と結びつけることが で き ま す。 |
−l[rev] |
−r と同様の動作ですが、取り出したリビジョンを呼び出したユーザに てロックします。 |
−u[rev] |
−r と同様の動作ですが、取り出したリビジョンが呼び出したユーザに よってロックされていたならば、そのロックを解除します。 rev が省 略された場合、 co を起動したユーザがロックしたリビジョンが 1 つ あ れば、そのリビジョンを取り出します; そうでなければ、デフォル ト枝の最新のリビジョンを取り出します。 |
−f[rev] |
ワークファイルの上書きを強制します;後述の −q オプションを使 用 す る場合、いっしょに −f オプションも指定すると便利な場合があり ます。 ファイルモード の項も参照してください。 |
−kkv |
ワークファイルにデフォルト形式のキーワード文字列を埋め 込 み ま す。 た と え ば、 キーワード Revision に対しては、文字列 $Revision: 1.6 $ を生成します。 ci −l や co −l でファイルがロッ ク される時のみ、 Header, Id, Locker キーワードにロック者名を挿 入します。これがデフォルトの動作です。 |
||
−kkvl |
−kkv とほぼ同様ですが、指定されたリビジョンがロックさ れ ていた場合にはいつも、ロック者名を挿入します。 |
||
−kk |
キーワード文字列中のキーワード名のみの文字列を生成し、値は 省略します。後述の キーワード置換 を参照して下さい。たと え ば、 キー ワード Revision に対しては、通常の $Revision: 1.6 $ のかわ りに、 $Revision$ を生成します。これは、異なるリビジョンの内 容 を 比較する場合、キーワード値の違いを無視できるので、便利です。 -kk が指定されても、キーワード $Log$ の後にはログメッセージが挿 入 されます。これはリビジョンを統合する変更に、より便利であるこ とを意図しています。 |
||
−ko |
チェックインされる前のワークファイル中のキーワード文字列を そ の ま ま出力します。たとえば、キーワード $Revision$ に対して は、チェックインされる前に展開されていた文字列 $Revision: 1.1 $ が、 $Revision: 1.6 $ の代わりに展開されます。キーワード文字列 の形式を取るバイト列が置換されてしまっては困るような場合(訳 注: バイナリファイル等)に便利でしょう。 |
||
−kb |
元のキーワード文字列のバイナリイメージを生成します。これ は、 −ko とほぼ同じですが、入出力する全てのワークファイルをバイ ナ リモードで扱う点が違います。これは、Posix と Unix のホスト間 ではたいした違いではありません。が、DOS のようなシステムでは バ イ ナリファイルを扱う場合、 RCS ファイルの初期化には rcs −i −kb を使わねばならないでしょう。また、 全 て の 環 境 に お い て、 rcsmerge(1) は通常、 −kb が働いている場合はファイルの統合を受け 付けません。 |
||
−kv |
キーワード文字列としてキーワード値のみを生成します。たとえ ば、 キーワード Revision に対して、通常の $Revision: 1.6 $ のか わりに 1.6 を生成します。こ れ は、 キー ワー ド 文 字 列 か ら $Revision: $ のようなキーワード区切りを取り除くことが困難なプロ グラミング言語用のファイル等を生成するために使用します。しか し な がら、キーワード名が取り除かれてしまうと、それ以降にキーワー ド置換を行うことができないので、注意が必要です。キーワードを 失 う ことはこのように危険であるため、本オプションを −l オプション と組み合わせて使うことはできません。また、ワークファイルの書 き 込 み 権 はオフになります; 後でワークファイルを編集する場合は、 −kv オプションを指定せずにワークファイルを取り出してから行い ま す。 |
−p[rev] |
ワー クファイルに格納する代わりに、対象となるリビジョンを標準出 力に書き出します。 co をパイプの一部として使用する場合に便利 で す。 |
−q[rev] |
静かなモード; 診断メッセージを表示しません。 |
−I[rev] |
対 話モード; たとえ標準入力が端末でなくても、ユーザに対して問い 合わせを行います。 |
−ddate |
選択された枝上の、 date 以前の登録日付を持つ、最新の リ ビ ジョンを取り出します。日付と時刻は自由形式で指定します。タイ ムゾーンとして LT を指定することにより、ローカルタイムを使用 す る ことができます; 他の一般的なタイムゾーンも使用することができ ます。たとえば、以下に挙げるいくつかの date 指定は、太平洋標 準 時 における 1990 年 1 月 11 日午後 8 時と同時刻を示します (太平 洋標準時は協定世界時 ( UTC ) よりも 8 時間遅れです)。 |
8:00 pm lt |
4:00 AM, Jan. 12, 1990 |
デフォルトは UTC |
|
1990-01-12 04:00:00+00 |
ISO 8601 ( UTC ) |
|
1990-01-11 20:00:00−08 |
ISO 8601 (ローカル時刻) |
|
1990/01/12 04:00:00 |
伝統的 RCS 形式 |
|
Thu Jan 11 20:00:00 1990 LT |
ctime(3) + LT出力 |
|
Thu Jan 11 20:00:00 PST 1990 |
date(1)出力 |
Fri Jan 12 04:00:00 GMT 1990 |
Thu, 11 Jan 1990 20:00:00 −0800 |
インターネット RFC 822 |
12-January-1990, 04:00 WET |
ほとんどの日付の項目にはデフォルト値があります。デフォルトのタイ ム ゾーンは UTC です。これは −z オプションにて優先指定することが 出来ます。他のデフォルト値は、年、月、日、時、分、秒 の順番で 決 定 されます。これらの項目のうち、少なくとも 1 つが指定されなけれ ばいけません。指定のある項目よりも先に決定される項目が省略されて いる場合には、タイムゾーンにおける現在の値を使用します。他の省略 されたフィールドには最小値が採用されます。たとえば、 −z 無 し の 20, 10:30 の 場 合 は、 UTC タイムゾーンの現在の年月の 20 日 10:30:00 UTC が採用されます。日付の指定に空白が含まれる 場 合 に は、 日 付の指定をクォートでくくる必要があることに注意してくださ い。 |
−M[rev] |
作成されるワークファイルの最終更新日付を、取り出されるリビ ジョ ンの日付にします。本オプションを指定すると make(1) が正しく動作 しなくなるので、注意して使用する必要があります。 |
−sstate |
選択された枝上の、状態 state を持つ最新のリビジョンを取り出しま す。 |
−T |
RCS ファイルの変更日付を変更しません。ロックされたりロック 解除されたりして RCS ファイルが変更された場合でもです。このオプ ショ ン は、 コ ピー し た RCS ファイルのワークファイルを使って make(1) をかける際に再コンパイルをさせたくない場合に便利で しょ う。 このオプションは必要であるにもかかわらず再コンパイルを行な わないことになってしまう場合があるので注意が必要です。それ は、 ロッ クの変更が別のワークファイルのキーワード文字列の変更を行う 時です。 |
−w[login] |
選択された枝上の、ユーザ名 login によって登録された最新の リ ビ ジョンを取り出します。 login が省略された場合は、 co を起動した ユーザ名を使います。 |
−jjoinlist |
joinlist で指定されたリビジョンを結合した新しいリビジョンを作成 し ます。本オプションは、旧バージョンとの互換性のために残されて います。通常、リビジョンの結合には rcsmerge(1) を用います。 |
joinlist は rev2:rev3 形式のリビジョンの対をコロンで区切って並べ たリストです。ここで、 rev2 と rev3 は(シンボリックまたは数字の) リビジョン番号です。以下の説明で、 rev1 は以下のリビジョンを示し ま す: (1) joinlist に列挙された対のうち、最初のものは、上記の −f, ..., −w オプションによって選択されたリビジョンです。 (2) そ れ 以 外の対に対しては、直前の対から作成されたリビジョン (すなわ ち、1 つの対によって作成されたリビジョンは次の結合のための入力と なります)。 それぞれの対に対して、 co は rev1 と rev3 を rev2 と比較しながら 結合します。つまり、 rev2 を rev1 と同一にするため の 変 更 を、 rev3 のコピーに対して適用します。 rev2 を同一の祖先とする 2 つの 枝の末端のリビジョン rev1 と rev3 を結合するのによく用いら れ ま す。 も し、3 つのリビジョンが同一の枝上にあり、リビジョン番号が rev1<rev2<rev3 ならば、結合の結果は、 rev3 の内容のう ち、 rev1 か ら rev2 への変更を無効にしたものになります。もし、 rev2 から rev1 への変更が rev2 から rev3 への変更と重複しているな ら、 co は merge(1) に示したような報告を行います。 最初に指定する対では rev2 を省略することができます。この場合は、 rev1 と rev3 の共通の祖先リビジョンを rev2 として使用します。 も し、いずれかの引数がリビジョンではなく枝を示しているなら、その枝 上の最新のリビジョンが用いられます。同時に −l オプションや −u オ プションを指定すると、 rev1 がロックまたはロック解除されます。 |
−V |
RCS ’s のバージョン番号を表示します。 |
||
−Vn |
バージョン n の RCS システムの動作をエミュレートします。 n は 3, 4, 5 のいずれかです。これは、古い RCS を使っているユー ザ と RCS ファイルを交換するときに便利です。使用している RCS がど のバージョンかを調べるには、 rcs −V を実行します; これは最近 の バー ジョ ンの RCS では動作します。これが動作しない場合は適当な RCS ファイルに対して rlog を起動します; 最初の数 行 に 文 字 列 branch: がなければ、それはバージョン 3 です; また、日付に現れる 年が 2 桁の数字ならば、それはバージョン 4 です; どちらでもな け れば、バージョン 5 です。 RCS バージョン 3 をエミュレートして作 成された RCS ファイルからはデフォルト枝の情報が失われます。バー ジョン 4 またはそれ以前のバージョンをエミュレートして作成された リビジョンは、最大 13 時間ずれた日付を持つことになります。 バー ジョン 4 またはそれ以前のバージョンをエミュレートして取り出され たファイルには yy/mm/dd 形式の日付がキーワード中に展開 さ れ ま す。また、 $Log$ キーワードでは空白の入り方が異なります。 |
−xsuffixes |
RCS ファイルの拡張子として suffixes を使用します。詳細は ci(1) を参照して下さい。 |
−zzone |
キーワード置換での日付の出力書式の指定を行 い、 ま た、 −ddate オプションでの date のデフォルトのタイムゾーンの指定を行 います。 zone は、省略する事も、UTC からの数値差で指定 す る 事 も、 特 別 な文字列 LT を使ってローカル時間で指定する事もできま す。デフォルトでは zone は空であり、この場合は 伝 統 的 な RCS フォーマット、すなわちタイムゾーン無しの UTC であり日付をスラッ シュで区切ります; そうでない場合は時刻はタイムゾーン 付 の ISO 8601 フォーマットです。例えば、ローカルタイムが 1990 年 1 月 11 日 太平洋標準時間 ( UTC の 8 時間西)午後 8 時の場合、時間の出 力 は次のようになります: |
オプション時刻の出力 |
−z |
1990/01/12 04:00:00 |
(デフォルト) |
|
−zLT |
1990-01-11 20:00:00−08 |
||
−z+05:30 |
1990-01-12 09:30:00+05:30 |
−z オプションは RCS ファイルに格納されている日付(常に UTC です) には影響しません。 |
テキスト中に存在する $keyword$ または $keyword:...$ 形式の文 字 列 は、 $keyword:value$ 形式の文字列に置換されます。 keyword と value の対につ いては後述します。キーワードはリテラルな文字列として、あるいはリビ ジョ ンを特定するためのコメントとして埋められることがあります。 まず、ユーザは $keyword$ なる形式の文字列を入力します。チェックアウト時 に、 co はこの文字列を $keyword:value$ に置換しま す。 $keyword:value$ 形 式 の 文 字列を含むものがチェックインされた場合、 value の部分は次に チェックアウトされたときに新たな値に置換されます。このように、チェッ ク アウトを行うごとにキーワードの値は更新されていきます。この自動更新は −k オプションにより変更することができます。 キーワードの種類とその値: |
$Author$ |
リビジョンを登録したユーザのログイン名。 |
$Date$ |
リビジョンが登録された日時。 −zzone を指定した場合、 数 値 に よ るタイムゾーンオフセットが追加されます; 指定しない場合 は、日時は UTC です。 |
$Header$ |
標準的なヘッダ。 RCS ファイルのフルパス名、リビジョン 番 号、 日 時、 作 者、 状態、ロック者(ロックされている場合)が含まれます。 −zzone を指定した場合、数値によるタイムゾーンオフセットが追加さ れます; 指定しない場合は、日時は UTC です。 |
$Id$ |
$Header$ とほぼ同様です。 RCS ファイル名はパスをつけずに埋 め込まれます。 |
$Locker$ |
リビジョンをロックしたユーザのログイン名(ロックされていない場合 は空です)。 |
$Log$ |
チェックイン時に与えたログメッセージ。その前に、 RCS ファ イル名、リビジョン番号、作者、日時が埋め込まれます。 −zzone を 指 定 した場合、数値によるタイムゾーンオフセットが追加されます; 指定しない場合は、日時は UTC です。すでに埋め込まれている ロ グ メッ セー ジ は 変 更 さ れません。新たなログメッセージのみが $Log:...$ のあとに追加されます。ソースファイルの完全なログを 記 録するときに便利です。 |
挿 入される行の前には $Log$ の行の前のプレフィックス文字列が付き ます。例えば、 $Log$ の行が “// $Log: tan.cc $” である場合、ログ の各行の前の RCS プレフィックスは “// ” となります。これはコメン トが行末まで及ぶ言語にて便利です。別の言語に対しては、複数行コメ ン ト 内 部にて “ ∗ ” プレフィックスを使用するのが慣例です。例え ば、C プログラムの最初のログのコメントは慣例的に以下の形式です: |
/∗ ∗ $Log$ ∗/ |
古いバージョンの RCS とのバックワードコンパチビリティのため、 ロ グのプレフィックスが /∗ または (∗ でありオプションの空白で囲まれ ている場合、挿入されるログの行は / や ( の代わりに空白が用いられ ます; しかしこの使用方法は古くさく、この動作に依存してはなりませ ん。 |
$Name$ |
存在する場合、リビジョンをチェックアウトするために使 用 し たシンボリック名。例えば co −rJoe は $Name: Joe $ を生成しま す。単に co を指定した場合は、 $Name: $ となります。 |
$RCSfile$ |
パス名を含まない RCS ファイル名。 |
$Revision$ |
リビジョン番号。 |
$Source$ |
RCS ファイルのフルパス名。 |
$State$ |
リビジョンに rcs(1) か ci(1) の −s オプションにより割り付けられ た状態。 |
キー ワード文字列の体裁を整えるために、以下の文字をキーワード中に用いる には、エスケープシーケンスを使用します。 |
文字 エスケープシーケンス |
tab |
\t |
|
newline |
\n |
|
space |
\040 |
|
$ |
\044 |
|
\ |
\\ |
ワークファイルは、 RCS ファイルの読み込みと実行の許可属性を受け 継 ぎ ま す。さらに、ユーザに対する書き込み権が設定されます。 −kv オプションが設 定されている場合と、厳格ロックモード( rcs(1) 参照)にてロックせずに取 り 出した場合は、書き込み権が設定されません。 す でに、ワークファイルと同名の書き込み可能なファイルが存在していると、 co は取り出しを中断し、もし可能ならば削除するかどうかを問い合わせます。 も し、すでに存在するファイルが書き込み禁止であったり、 -f オプションが 指定されていた場合には、問い合わせを行わずに削除します。 |
co は ci とほぼ同じくらいのファイルにアクセスします。ただし、 $ が指 定 されていなければワークファイルを読むことはありません。 |
RCSINIT |
本 変数に空白で区切ったオプションを設定することで、コマンドライ ン引数に先立って処理されます。詳しくは ci(1) を参照してく だ さ い。 |
RCS パス名、ワークファイルパス名、取り出されるリビジョンの番号を診断出 力します。全ての処理が成功した場合のみ、終了ステータス 0 を返します。 |
Author: Walter F. Tichy. |
rcsintro(1), ci(1), ctime(3), date(1), ident(1), make(1),
rcs(1), rcsclean(1), rcsdiff(1), rcsmerge(1), rlog(1),
rcsfile(5) |
RCS ファイル、ワークファイルのリンクは保存されません。 キーワードを $keyword:$ 以外の形式に書換える以外に、一部のキーワード の みを展開させる方法がありません。nroff や troff ではキーワード中にヌル文 字 \& を埋め込むことにより展開を防ぐことができます。 |