RCS ファイルからリビジョンをチェックアウトする
選択された
枝であり、
-f ,
...,
-u
オプションもしくはデフォルト枝により指定されます。
リビジョンを 1 つも持たない \*r ファイルに対して
co
コマンドを適用すると、長さ 0 のワークファイルが作成されます。
co
は、つねにキーワード置換を行います
(下記参照)。
-r [\f2rev]
rev
以前(
rev
と同じものも含む)で最新のリビジョンを取り出します。
rev
がリビジョンではなく枝を指定している場合、その枝上の最新
のリビジョンが取り出されます。
rev
が省略された場合、デフォルト枝
(
rcs (1)
の
-b
オプションの項を参照)の最新のリビジョンが取り出されます。
rev
が
$
の場合、
co
はリビジョン番号をワークファイルのキーワードから
取り出します。これら以外の場合、
rev
はリビジョンを示すピリオドで区切られた数字またはシンボルの列です。
rev
がピリオドで始まる場合、デフォルトの枝(通常は幹)が設定されます。
rev
がピリオドを後ろに付けた枝番号であるならば、
その枝の最新のリビジョンが使われます。
シンボルは、
ci (1)
や
rcs (1)
によりリビジョン番号と結びつけることができます。
-l [\f2rev]
-u [\f2rev]
rev
が省略された場合、
co
を起動したユーザがロックしたリビジョンが 1 つあれば、
そのリビジョンを取り出します;
そうでなければ、デフォルト枝の最新のリビジョンを取り出します。
-f [\f2rev]
-kkv
-kkvl
-kk
-ko
-kb
-kv
-p [\f2rev]
-q [\f2rev]
-I [\f2rev]
-d date
date
以前の登録日付を持つ、最新のリビジョンを取り出します。
日付と時刻は自由形式で指定します。タイムゾーンとして
LT
を指定することにより、ローカルタイムを使用することができます;
他の一般的なタイムゾーンも使用することができます。
たとえば、以下に挙げるいくつかの
date
指定は、
太平洋標準時における 1990 年 1 月 11 日午後 8 時と同時刻を示します
(太平洋標準時は協定世界時 (\*u) よりも 8 時間遅れです)。
\w'\f3Thu, 11 Jan 1990 20:00:00 -0800 'u 9 \f38:00 pm lt \f34:00 AM, Jan. 12, 1990 デフォルトは \*u \f31990-01-12 04:00:00+00 \*i 8601 (\*u) \f31990-01-11 20:00:00-08 \*i 8601 (ローカル時刻) \f31990/01/12 04:00:00 伝統的 \*r 形式 \f3Thu Jan 11 20:00:00 1990 LT \f3ctime(3) + \f3LT出力 \f3Thu Jan 11 20:00:00 PST 1990 \f3date(1)出力 \f3Fri Jan 12 04:00:00 GMT 1990 \f3Thu, 11 Jan 1990 20:00:00 -0800 インターネット RFC 822 \f312-January-1990, 04:00 WET 4n +4n +4n +4nほとんどの日付の項目にはデフォルト値があります。 デフォルトのタイムゾーンは \*u です。 これは -z オプションにて優先指定することが出来ます。 他のデフォルト値は、年、月、日、時、分、秒 の順番で決定されます。 これらの項目のうち、少なくとも 1 つが指定されなければいけません。 指定のある項目よりも先に決定される項目が省略されている場合には、 タイムゾーンにおける現在の値を使用します。 他の省略されたフィールドには最小値が採用されます。 たとえば、 -z 無しの 20, 10:30 の場合は、\*u タイムゾーンの現在の年月の 20 日 10:30:00 \*u が採用されます。 日付の指定に空白が含まれる場合には、 日付の指定をクオートでくくる必要があることに注意してください。
-M [\f2rev]
-s state
state
を持つ最新のリビジョンを取り出します。
-T
-w [\f2login]
login
によって登録された最新のリビジョンを取り出します。
login
が省略された場合は、
co
を起動したユーザ名を使います。
-j joinlist
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
の共通の祖先
/*?-> 共通の祖先リビジョン以外に言いかたを思いつきません
共通の祖先リビジョンで良いと思います(horikawa@jp.freebsd.org)
rev2
として使用します。もし、いずれかの引数
がリビジョンではなく枝を示しているなら、その枝上の最新のリビジョンが用
いられます。同時に
-l
オプションや
-u
オプションを指定すると、
rev1
がロックまたはロック解除されます。
-V
-V n
n
の \*r システムの動作をエミュレートします。
n
は
3 ,
4 ,
5
のいずれかです。これは、古い \*r を使っているユーザと \*r ファイルを交
換するときに便利です。使用している \*r がどのバージョンかを調べるには、
rcs -V
を実行します; これは最近のバージョンの \*r では動作します。
これが動作しない場合は適当な \*r ファイルに対して
rlog
を起動します; 最初の数行に文字列
branch:
がなければ、それはバージョン 3 です;
また、日付に現れる年が 2 桁の数字ならば、それはバージョン 4 です;
どちらでもなければ、バージョン 5 です。
\*r バージョン 3 をエミュレートして作成された \*r ファイルからはデフォルト
枝の情報が失われます。
バージョン 4 またはそれ以前のバージョンをエミュレートして作成された
リビジョンは、最大 13 時間ずれた日付を持つことになります。
バージョン 4 またはそれ以前のバージョンをエミュレートして取り出された
ファイルには
yy / mm / dd
形式の日付がキーワード中に展開されます。また、
$Log$
キーワードでは空白の入り方が異なります。
-x suffixes
suffixes
を使用します。詳細は
ci (1)
を参照して下さい。
-z zone
date
のデフォルトのタイムゾーンの指定を行います。
zone
は、省略する事も、UTC からの数値差で指定する事も、特別な文字列
LT
を使ってローカル時間で指定する事もできます。
デフォルトでは
zone
は空であり、
この場合は伝統的な \*r フォーマット、
すなわちタイムゾーン無しの \*u であり日付をスラッシュで区切ります;
そうでない場合は時刻はタイムゾーン付の \*i 8601 フォーマットです。
例えば、ローカルタイムが 1990 年 1 月 11 日 太平洋標準時間
(\*u の 8 時間西)午後 8 時の場合、時間の出力は次のようになります:
\w'\f3-z+05:30 'u +\w'\f31990-01-11 09:30:00+05:30 'u 4 \f2オプション\f2時刻の出力 \f3-z \f31990/01/12 04:00:00 \f2(デフォルト) \f3-zLT \f31990-01-11 20:00:00-08 \f3-z+05:30 \f31990-01-12 09:30:00+05:30 4n +4n +4n +4n-z オプションは \*r ファイルに格納されている日付(常に \*u です)には影響しません。
keyword
と
value
の対については後述します。キーワードはリテラルな文字列として、あるいは
リビジョンを特定するためのコメントとして埋められることがあります。
まず、ユーザは
$ keyword $
なる形式の文字列を入力します。
チェックアウト時に、
co
はこの文字列を
$ keyword : value $
に置換します。
$ keyword : value $
形式の文字列を含むものがチェックインされた場合、
value
の部分は次にチェックアウトされたときに新たな値に置換されます。
このように、チェックアウトを行うごとにキーワードの値は
更新されていきます。この自動更新は
-k
オプションにより変更することができます。
キーワードの種類とその値:
$Author$
$Date$
$Header$
$Id$
$Locker$
$Log$
されません。
新たなログメッセージのみが
$Log: ... $
のあとに追加されます。
ソースファイルの完全なログを記録するときに便利です。
挿入される行の前には
$Log$
の行の前のプレフィックス文字列が付きます。例えば、
$Log$
の行が
\*(lq // $Log: tan.cc $ \*(rq
である場合、ログの各行の前の \*r プレフィックスは
\*(lq // \*(rq
となります。
これはコメントが行末まで及ぶ言語にて便利です。
別の言語に対しては、複数行コメント内部にて
\*(lq ** rq
プレフィックスを使用するのが慣例です。
例えば、C プログラムの最初のログのコメントは慣例的に以下の形式です:
3 3 /** +\w'/'u ** $Log$ **/古いバージョンの \*r とのバックワードコンパチビリティのため、 ログのプレフィックスが /** または (** でありオプションの空白で囲まれている場合、挿入されるログの行は / や ( の代わりに空白が用いられます; しかしこの使用方法は古くさく、この動作に依存してはなりません。
$Name$
$RCSfile$
$Revision$
$Source$
$State$
6 \w'newline 'u \f2文字 エスケープシーケンス tab \f3\t newline \f3\n space \f3\040 $ \044 \ \\
\s-1RCSINIT\s0
Software\*-Practice & Experience
15 ,
7 (July 1985), 637-654.