Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all 

名称
rcsintro - RCS 入門
解説
RCS (Revision Control System) は、ファイルのリビジョンを複数管理します。 RCS は格納、取り出し、ログ、識 別、リビジョンの併合を自動化します。RCS は頻繁に更新されるテキスト、たとえば、プログラム、ドキュメント、 グラフィックス、論文、定型手紙等を扱うのに便利です。 基本的なユーザインタフェースはとても単純です。初心者は 2 つのコマンド、 ci(1) と co(1) を覚えるだけで使用 できます。 ci はチェックイン “check in” を省略した名前です。これは、ファイルの内容を 「RCS ファイル」と呼 ばれる記録用のファイルに格納します。 RCS ファイルは、特定ファイルの全リビジョンを含んでいます。 co は チェックアウト“check out” を省略した名前です。 これは、RCS ファイルからリビジョンを取り出します。 RCS の機能 • テキストの複数のリビジョンの保存と取り出しを行います。RCS は すべての古いリビジョンを効率的な方法 で保存します。 ファイルを変更しても 元のリビジョンが失なわれることはなく、いずれも取り出すことが 可能です。リビジョンは、リビジョン番号、シンボル名、日付、作者、 状態を指定して取り出せます。 • 完全な変更の履歴を管理します。RCS は、すべての変更点を自動的に 記録します。各リビジョンの内容とと もに、作者、チェックインした日時、 変更点を要約したログメッセージが記録されます。 ログによって、ど のような変更が行われたのかがひと目でわかります。 ソースリストを見比べたり、一緒に作業している プロ グラマにたずねたりする必要はありません。 • アクセス矛盾を解決します。複数のプログラマがあるファイルの 同じリビジョンに対して変更を加えようと した場合、 RCS は警告を発し、他者が行った変更を台無しにしてしまう のを防ぎます。 • リビジョンの木を管理します。RCS はモジュールごとに独立した 開発ラインを管理できます。 RCS は、リビ ジョンの系図を表現した木を保存します。 • リビジョンを併合し、矛盾を解決します。あるモジュールの 2 つの リビジョンを併合することができます。 併合しようとする 2 つのリビジョンが、あるコードの同じ部分に 対する変更を含んでいた場合、RCS は変更 が重複していると警告します。 • リリースと構成を管理します。リビジョンにはシンボル名を つけることができます。また、「リリース 版(released)」、「安定版(stable)」、 「実験版(experimental)」といった状態をつけることもできます。 これにより、単純かつ直接的にモジュールの構成を表すことができます • リビジョン番号、作成日時、作者等を自動的に識別することができます。 識別情報は、消印のようにテキス トの適当な場所に埋め込むことが できます。これにより、あるソフトウェアの構成に どのモジュールのどの リビジョンが使用されているかを 判断することが容易になります。 • 必要なディスク容量を最小にします。RCS は、リビジョンのために 最小のスペース(差分のみ)しか消費しま せん。もし途中のリビジョンが 削除されたなら、記録されていた差分もそれに従って小さくなります。 RCS 事始め RCS の管理下に置きたい f.c というファイルがあるとします。もし、まだ作成していなければ、 RCS ディレクトリ を以下のコマンドにより作成します。 mkdir RCS 次に ci (チェックイン) コマンドを実行します。 ci f.c これにより、 f.c の内容をリビジョン 1.1 として記録 した RCS ファイルが RCS ディレクトリ内に 作成され、 f.c は削除されます。また、 ci は f.c に 関する説明文の入力を促します。 説明文にはファイルの内容を要約して 書きます。 以降 ci を実行するたびに、ファイルに加えた変更の要約を入力するように促します。 RCS ディレクトリにあるファイルは RCS ファイルと呼ばれ、 それ以外のファイルはワークファイルと 呼ばれま す。先の例で挙げたワークファイル f.c を取り戻す には co (チェックアウト) コマンドを実行します。 co f.c このコマンドは RCS ファイル中の最新のリビジョンを取り出してファイル f.c に書き出します。 もし、 f.c に変 更を加えたければ、次のコマンドを使ってチェックアウトしロック しなければいけません。 co -l f.c これで f.c を編集することができます。 ある程度編集したところで、どのような変更を加えたか 知りたくなるときがあります。 この場合は、以下のコマン ドを実行します。 rcsdiff f.c このコマンドは、最後にチェックインしたリビジョンと ワークファイルの違いを表示します。編集が終わったら、 以下のコマンドにより、もう一度チェックインすることができます。 ci f.c これにより、リビジョン番号が自動的に付け直されます。 もし ci が ci error: no lock set by your name というエラーメッセージを出力したなら、 それは、ロックせずにチェックアウトしたファイルを チェックインしよ うとしたからです。もちろん、 ここでロックしチェックアウトし直すのでは遅すぎます。 ここでチェックアウトす ると、あなたが行った編集は 上書きされて失われてしまうからです。 かわりに、以下のコマンドを実行します。 rcs -l f.c これは、ほかに誰もロックしていなければ、最新のリビジョンを ロックします。もし、すでに誰かがロックしてし まっていたなら、 その人と相談しなければなりません。 ロックすることにより、あなただけがファイルを更新(チェックイン) できるようになり、同時に複数の人が同じファ イルを編集する際の 厄介な問題を回避することができます。たとえリビジョンが ロックされていても、そのファイ ルをチェックアウトして内容を見たり、 コンパイルすることは可能です。ロック機構は、ロックした人 以外が チェックイン できないようにするだけです。 もし扱う RCS ファイルが個人的なもの、すなわち そのファイルに対して新しいリビジョンをチェックインするのが あなただけである場合、厳格なロック機構は必要ないでしょう。 厳格なロック機構はオフにすることもできます。 もし厳格なロックモードがオフになっているなら、 RCS ファイルの所有者はロックしていないファイルをチェックイ ン することができます(それ以外の人はロックが必要です)。 厳格なロックモードのオンとオフは、 それぞれ以下の コマンドにより行います。 rcs -L f.c 及び rcs -U f.c もしワークディレクトリに RCS ファイルをまき散らしたく ないなら、RCS という名前のディレクトリを作成し、RCS ファイルを すべてその下に移動します。RCS コマンドは RCS ファイルを探すとき、 まず、 RCS ディレクトリを検 索します。この場合も、これまでに述べてきたコマンドは 引数をいっさい変更せずに実行できます(実際は RCS に RCS ファイルと ワークファイルの対を指示する方法は 3 通りあります: (a) 両方を指定する、(b) ワークファイル のみを指定する、 (c) RCS ファイルのみを指定する。RCS ファイルとワークファイルは 自由なパスに置くことがで きますが、RCS コマンドはファイルの対を インテリジェントに探します)。 チェックインしたときにワークファイルが削除されないようにする (編集を続けたり、コンパイルしたりする場合)に は以下のコマンドを使います。 ci -l f.c あるいは ci -u f.c これらのコマンドは通常どおり f.c をチェックインします。しかし、自動的にチェックアウトも行います。 最初の 例ではロックを行い、2 番目の例ではロックを行いません。 このようにすればチェックアウト操作を 1 回省けま す。 最初の例は編集を続ける場合に、2 番目の例は単にファイルを 読みたかったりコンパイルしたりする場合に便 利です。どちらの場合も、 ワークファイル中の識別用マーカ(後述)が更新されます。 ci にチェックインするリビジョンの番号を指定することができます。 それまでのリビジョンが 1.1、1.2、1.3... だったときに、以下の コマンドによりリリース2 を開始することができます。 ci -r2 f.c あるいは ci -r2.1 f.c これにより、新しいリビジョンには番号 2.1 がつけられます。以降、 ci はこの ファイルの新しいリビジョンに 2.2、2.3...と番号をつけていきます。 対応した以下の co コマンド co -r2 f.c 及び co -r2.1 f.c は、リビジョン番号が 2.x である最新のリビジョン、リビジョン 2.1 をそれぞれ チェックアウトします。 co にリ ビジョン番号を指定しない場合、幹(trunk)の上の最新のリビジョン (すなわち、x.x の形式で最大のリビジョン番号 を持つリビジョン)が チェックアウトされます。リビジョンの枝(branch)を用いるためには 3 つ 以上の番号が必要 になります。 たとえば、1.3 から枝を作成するには、以下のコマンドを実行します。 ci -r1.3.1 f.c これにより、リビジョン 1.3 上に番号 1 の枝を作成し、 枝上の最新リビジョンとして 1.3.1.1 を割り当てます。 枝の詳細については rcsfile(5) を参照してください。 自動識別 RCS は、リビジョンの識別のために特別な文字列をソースや オブジェクトコードに埋め込むことができます。 リビ ジョンの識別を行うためには、以下の文字列(マーク) $Id$ をコメントなどのテキスト部分に書きます。 RCS は、このマークを次の形式の文字列に置換します。 $Id: ファイル名 リビジョン 日付 時刻 作者 状態 $ このようなマークをモジュールのソースコードの 1 ページ目に 置くことにより、編集しているファイルのリビジョ ンを すぐに判断することができます。RCS はマークの更新を自動的に行います。 マークをオブジェクトコードに組 み込むには、それをリテラルな 文字列中に含めます。C 言語では、以下のようにします。 static char rcsid[] = "$Id$"; ident コマンドは、オブジェクトファイルやダンプ出力からもマークを探し表示することが できます。従って ident コマンドを用いることにより、あるプログラムがどのモジュールの どのリビジョンによって作成されたかを知ること ができます。 マーク $Log$ をテキストやコメント内に含めることも有用かもしれません。 このマークはチェックインのときに要 求されたログを蓄えていきます。 これにより、変更の履歴を直接、ファイルに記録することができます。 RCS には ほかにもいくつかのマークがあります。詳しくは co(1) を参照してください。
作者
Author: Walter F. Tichy. Manual Page Revision: 1.5; Release Date: 1999/08/27. Copyright © 1982, 1988, 1989 Walter F. Tichy. Copyright © 1990, 1991, 1992, 1993 Paul Eggert.
関連項目
ci(1), co(1), ident(1), rcs(1), rcsdiff(1), rcsintro(1), rcsmerge(1), rlog(1) Walter F. Tichy, RCS--A System for Version Control, Software--Practice & Experience 15, 7 (July 1985), 637-654.