スポンサーリンク

CO

名称
書式
解説
オプション
キーワード置換
ファイルモード
関連ファイル
環境変数
診断
作者
関連項目
制限事項

名称

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 −lco −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) を用います。

joinlistrev2:rev3 形式のリビジョンの対をコロンで区切って並べ たリストです。ここで、 rev2rev3 は(シンボリックまたは数字の) リビジョン番号です。以下の説明で、 rev1 は以下のリビジョンを示し ま す: (1) joinlist に列挙された対のうち、最初のものは、上記の −f, ..., −w オプションによって選択されたリビジョンです。 (2) そ れ 以 外の対に対しては、直前の対から作成されたリビジョン (すなわ ち、1 つの対によって作成されたリビジョンは次の結合のための入力と なります)。

それぞれの対に対して、 corev1rev3rev2 と比較しながら 結合します。つまり、 rev2rev1 と同一にするため の 変 更 を、 rev3 のコピーに対して適用します。 rev2 を同一の祖先とする 2 つの 枝の末端のリビジョン rev1rev3 を結合するのによく用いら れ ま す。 も し、3 つのリビジョンが同一の枝上にあり、リビジョン番号が rev1<rev2<rev3 ならば、結合の結果は、 rev3 の内容のう ち、 rev1 か ら rev2 への変更を無効にしたものになります。もし、 rev2 から rev1 への変更が rev2 から rev3 への変更と重複しているな ら、 comerge(1) に示したような報告を行います。

最初に指定する対では rev2 を省略することができます。この場合は、 rev1rev3 の共通の祖先リビジョンを rev2 として使用します。 も し、いずれかの引数がリビジョンではなく枝を示しているなら、その枝 上の最新のリビジョンが用いられます。同時に −l オプションや −u オ プションを指定すると、 rev1 がロックまたはロック解除されます。

−V

RCS ’s のバージョン番号を表示します。

−Vn

バージョン nRCS システムの動作をエミュレートします。 n3, 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$ 形式の文字列に置換されます。 keywordvalue の対につ いては後述します。キーワードはリテラルな文字列として、あるいはリビ ジョ ンを特定するためのコメントとして埋められることがあります。

まず、ユーザは $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 オプションが 指定されていた場合には、問い合わせを行わずに削除します。

関連ファイル

coci とほぼ同じくらいのファイルにアクセスします。ただし、 $ が指 定 されていなければワークファイルを読むことはありません。

環境変数

RCSINIT

本 変数に空白で区切ったオプションを設定することで、コマンドライ ン引数に先立って処理されます。詳しくは ci(1) を参照してく だ さ い。

診断

RCS パス名、ワークファイルパス名、取り出されるリビジョンの番号を診断出 力します。全ての処理が成功した場合のみ、終了ステータス 0 を返します。

作者

Author: Walter F. Tichy.
Manual Page Revision: 1.6; Release Date: 1999/08/27.
Copyright © 1982, 1988, 1989 Walter F. Tichy.
Copyright © 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.

関連項目

rcsintro(1), ci(1), ctime(3), date(1), ident(1), make(1), rcs(1), rcsclean(1), rcsdiff(1), rcsmerge(1), rlog(1), rcsfile(5)
Walter F. Tichy, RCS --A System for Version Control, Software--Practice & Experience 15, 7 (July 1985), 637-654.

制限事項

RCS ファイル、ワークファイルのリンクは保存されません。

キーワードを $keyword:$ 以外の形式に書換える以外に、一部のキーワード の みを展開させる方法がありません。nroff や troff ではキーワード中にヌル文 字 \& を埋め込むことにより展開を防ぐことができます。

スポンサーリンク