rcs(1) RCS ファイルの属性を変更する

書式

rcs options file ...

解説

rcs は、RCS ファイルの新規作成および RCS ファイルの属性変更を行います。 RCS ファイルは、複数のリビジョン、アクセスリスト、変更履歴、 内容記述、制御属性からなります。 rcs コマンドが実行できるのは、 実行したユーザが RCS ファイルのアクセスリストに登録されているか、 アクセスリストが空であるか、ユーザが RCS ファイルの所有者であるか、 スーパユーザであるか、あるいは -i オプションが指定されている場合に限られます。

RCS 拡張子にマッチするファイル名は RCS ファイルであるとみなし、その他 のファイル名はワークファイルであるとみなします。詳しくは、 ci(1) を参照してください。リビジョン番号は ci(1) に記述されている形式を用います。

オプション

-i
新たな RCS ファイルを作成し、初期化します。ただし、リビジョンは作成しません。 指定されたファイル名にディレクトリ名が含まれていない場合、 rcs はまずカレントディレクトリにある ./RCS ディレクトリにファイルを作成しよう と試みます。これに失敗したら、カレントディレクトリに作成しようと試みます。 もしすでに RCS ファイルが存在した場合はエラーとなります。
-alogins
RCS ファイルのアクセスリストに logins で指定したユーザ名を追加します。 logins は、コンマで区切ったユーザ名のリストです。
-Aoldfile
oldfile で指定した RCS ファイルのアクセスリストに登録されているユーザ名を、 対象の RCS ファイルのアクセスリストに追加します。
-e[logins]
logins で指定したユーザ名を、RCS ファイルのアクセスリストから消去します。 logins が省略された場合は、アクセスリスト全体を消去します。
-b[rev]
rev をデフォルトの枝とします。 rev が省略された場合、デフォルト枝は 幹上で最も大きな番号を持つ枝になります。
-cstring
コメント開始文字列を string に設定します。 最初に ci を起動した時、あるいは rcs -i-c オプションを指定しなかった時は、コメント開始文字列は ワークファイルの拡張子から自動的に推測されます。

通常、RCS はチェックアウト ( co(1) 参照) 時の記録行を挿入する際に、 $Log$ 行の行頭部を使用するので、このオプションは現在廃止の方向にあります。 しかしながら、RCS の古いバージョンでは、 $Log$ 行の行頭部ではなくコメント開始文字列を使用しているので、 RCS の新旧両方のバージョンのファイルを使用する場合は、 そのコメント開始文字列が $Log$ 行の行頭部と一致するようにしなければなりません。

-ksubst
デフォルトのキーワード展開方式を subst に設定します。キーワード展開の効果については co(1) に記述してあります。 co, rcsdiff, rcsmerge-k オプションを指定することで、デフォルトの展開方式を無効にすることができます。 rcs -kv を用いるときは注意してください。なぜなら、 -kv をデフォルトにすると co -l あいいれなくなるからです。 rcs -kkv によって、通常のデフォルト値に戻すことができます。
-l[rev]
リビジョン rev をロックします。 rev が枝を示す場合、枝上の最新のリビジョンがロックされます。 rev が省略された場合、デフォルト枝上の最新のリビジョンがロックされます。 ロックすることにより、そのリビジョンのファイルに対して複数の人が 変更することを防止できます。別の人が既にロックしている場合、 rcs -u により、ロックを解除することができます(下記参照)。
-u[rev]
リビジョン rev をロック解除します。 rev が枝を示す場合、枝上の最新のリビジョンがロック解除されます。 rev が省略された場合、コマンドを実行したユーザがロックした 最新のリビジョンがロック解除されます。 通常、ロックしたユーザのみがロックを解除することができます。 他のユーザがロックを解除しようとすると、 ロックしたユーザへメールが送信されます。 メールにはロックを解除する理由等を書いた コメントを付加します。コメントはロックを解除しようとしたユーザが入力し、 ファイル終端あるいは . のみを含む行を入力することで終了します。
-L
ロックを厳格に行なうモード (以下、厳格モード) に設定します。 厳格ロックを指定すると、RCS ファイルの 所有者であっても、ロックしているファイルをチェックインすることが できなくなります。 複数のユーザで共有するようなファイルは本モードで利用すべきです。
-U
ロックを厳格には行なわないモード (以下、非厳格モード) に設定します。 非厳格ロックを指定すると、RCS ファイルの所有者はロックすることなく、 新しいリビジョンをチェックインすることができます。複数の ユーザで共有するファイルは本モードで使用すべきではありません。 デフォルトのロックモードを厳格にするか非厳格にするかは、RCS システムを インストールしたシステム管理者が決めますが、通常は厳格モードです。
-mrev:msg
リビジョン rev のログメッセージを msg に置換します。
-M
ロックしたユーザ以外のユーザがロックを解除した際に、メールを送りません。 これは使用を簡便にする目的のオプションではありません。他の方法により ユーザに警告を行うようなプログラムを使用し、 rcs -u を単に低いレベルのロック解除の目的で使用するような場合のために 用意されています。
-nname[:[rev]]
枝またはリビジョン rev にシンボリック名 name を関連付けます。 :rev も省略した場合、シンボリック名 name は削除されます。 name がすでに別の リビジョンに関連付けられていた場合はエラーとなります。 rev がシンボリック名の場合も name との関連付けは番号によって行われます。枝番号に . を付加したものは、その枝での最新のリビジョンを示します。 : だけで rev を省略した場合、デフォルト枝(通常は幹)の最新のリビジョンが関連付けられます。 たとえば、 rcs -nname: RCS/* はすべての RCS ファイルの最新のリビジョンに対してシンボリック名 name を関連付けます。一方、 rcs -nname:$ RCS/* は各 RCS ファイルに対応したワークファイル中のキーワードに含まれる リビジョン番号と name を関連付けます。
-Nname[:[rev]]
-n と同様に動作します。ただし、同じ name が別のリビジョンに関連付けられていてもエラーとはせず、 関連付けをしなおします。
-orange
range で指定したリビジョンを削除します。 range がただ 1 つのリビジョン番号ならば、そのリビジョンを削除します。 range に枝番号が含まれれば、その枝の最新のリビジョンを削除します。 rev1:rev2 形式の範囲指定では、同じ枝上の rev1 から rev2 までのすべてのリビジョンが削除されます。 :rev は枝の開始から rev までのリビジョンを、 rev: は同じ枝上の rev 以降のリビジョンのすべてを削除します。 削除されるリビジョンにロックや枝があってはいけません。
-q
診断メッセージは表示されません。
-I
対話モードで動作します。たとえ標準入力が端末でなくても、ユーザに対して 問い合わせを行います。
-sstate[:rev]
リビジョン rev の状態を state にします。 rev が枝番号なら、その枝の最新のリビジョンの状態を変更します。 rev が省略されたなら、デフォルト枝の最新リビジョンを変更します。 state としては自由な識別子を指定できます。一般に用いられる識別子としては、 Exp (experimental: 実験的)、 Stab (stable: 安定した)、 Rel (released: リリースした)があります。デフォルトでは、 ci(1) は状態を Exp にします。
-t[file]
RCS ファイルの内容記述テキストをファイル file の内容で置換します。すでに存在していた内容記述は削除されます。ファイル名は - で始まってはいけません。 file が省略された場合、 テキストは標準入力から読み込まれ、ファイル終端または . のみを含む行で終了します。可能ならば、テキストの入力を 促すプロンプトが表示されます( -I オプションの項を参照)。 -i オプションを指定すると、 -t オプションが指定されていなくても内容記述テキストの入力を求めます。
-t-string
RCS ファイルの内容記述テキストを文字列 string で置換します。すでに存在していた内容記述は削除されます。
-T
リビジョンが削除されない限り、RCS ファイルの変更時刻を保存します。 このオプションを使うことにより、RCS ファイルの中のワークファイルの コピーによって生ずる make(1) の依存関係に伴う必要以上の再コンパイルを防ぐことができます。 このオプションを使用する際には注意が必要です。本当に再コンパイルが必要な 場合にも再コンパイルされない場合が生じます。つまり、RCS ファイルへの変更が ワークファイル中のキーワードの変更を意味する場合があるからです。
-V
RCS システムのバージョン番号を表示します。
-Vn
RCS システムのバージョン n のエミュレーションを行います。詳細は co(1) を参照してください。
-xsuffixes
RCS ファイル拡張子を suffixes に指定します。詳しくは ci(1) を参照してください。
-zzone
デフォルトのタイムゾーンとして zone を使用します。 このオプションは何の効果もありません。他の RCS コマンドとの互換性を保つ ために存在します。

rcs コマンドの将来予定されている拡張との互換性を維持するには、 少なくともひとつのオプションを明示的に指定する必要があります。

互換性

-brev オプションを指定すると、 RCS バージョン 3 以前では処理できない RCS ファイルが生成されます。

-ksubst オプション( -kkv を除く)を指定すると、 RCS バージョン 4 以前では 処理できない RCS ファイルが生成されます。

バージョン nRCS で処理できる RCS ファイルを生成するために rcs -Vn を利用することができます。これにより、バージョン n で処理できない情報を削除することができます。

バージョン 5.5 以前の RCS-x オプションをサポートしません。RCS ファイルの拡張子としては ,v が用いられます。

関連ファイル

rcsci(1) とほぼ同様のファイル群にアクセスします。ただし、アクセスは すべて実効ユーザ ID によって行われます。 また、ワークファイルやそのディレクトリには書き込みを 行いません。リビジョン番号として $ を指定した場合を除き、ワークファイルを読むこともありません。

環境変数

RCSINIT
コマンドライン引数に先立って与えられるオプションを指定します。 各オプションは空白で区切って指定します。詳しくは ci(1) を参照してください。

診断

RCS ファイル名およびひとつ古い(outdated)リビジョン番号が診断出力として 表示されます。 すべての処理が成功した場合に限り終了ステータス 0 を返します。

作者

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

バグ

システムクラッシュ等の大惨事があると、RCS はセマフォファイルを 残してしまうため、後に RCS を実行しようとすると、RCS ファイルが使用中であると 警告します。 これを直すにはセマフォファイルを消去する必要があります。 通常、セマフォファイル名前は , で始まるか、 _ で終了します。

以前の版の rcs では -o オプションにおけるリビジョンの区切りは : ではなく - でした。 しかし、これはシンボリック名が - を含んでいるときに混乱を生じます。 従来の版との互換性のため rcs -o- を用いた記法もサポートしますが、 この記法を用いた場合は警告メッセージを表示します。

シンボリック名が指しているリビジョンが存在するとは限りません。例えば、 -o オプションによってリビジョンが削除されてもそれを指すシンボリック名は削 除されずに残っています。シンボリック名を削除するには -n オプションを用いる必要があります。