CO

Section: User Commands (1)
Updated: 1999/08/27
IndexJM Home Page
 

名称

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 lt4:00 AM, Jan. 12, 1990 デフォルトは UTC1990-01-12 04:00:00+00ISO 8601 (UTC)1990-01-11 20:00:00-08ISO 8601 (ローカル時刻)1990/01/12 04:00:00 伝統的 RCS 形式Thu Jan 11 20:00:00 1990 LTctime(3) + LT出力Thu Jan 11 20:00:00 PST 1990date(1)出力Fri Jan 12 04:00:00 GMT 1990Thu, 11 Jan 1990 20:00:00 -0800 インターネット RFC 82212-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 時の場合、時間の出力は次のようになります:

オプション時刻の出力-z1990/01/12 04:00:00(デフォルト)-zLT1990-01-11 20:00:00-08-z+05:301990-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 プログラムの最初のログのコメントは慣例的に以下の形式です:

古いバージョンの RCS とのバックワードコンパチビリティのため、 ログのプレフィックスが/*または(*でありオプションの空白で囲まれている場合、挿入されるログの行は/(の代わりに空白が用いられます; しかしこの使用方法は古くさく、この動作に依存してはなりません。

$Name$
存在する場合、リビジョンをチェックアウトするために使用したシンボリック名。 例えばco -rJoe$Name: Joe $を生成します。 単にcoを指定した場合は、$Name:  $となります。
$RCSfile$
パス名を含まない RCS ファイル名。
$Revision$
リビジョン番号。
$Source$
RCS ファイルのフルパス名。
$State$
リビジョンにrcs(1) かci(1) の-sオプションにより割り付けられた状態。

キーワード文字列の体裁を整えるために、 以下の文字をキーワード中に用いるには、 エスケープシーケンスを使用します。

文字 エスケープシーケンスtab \tnewline \nspace \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 & Experience15, 7 (July 1985), 637-654. 

制限事項

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

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


関連キーワード

リビジョン,rev,キーワード,ロック,ワーク,バージョン,Revision,ユーザ,Log,モード 

Index

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

This document was created byman2html, using the manual pages.
Time: 15:49:14 GMT, July 11, 2021