RCS 超入門

-- but not for dummies. Be a human first.

[RCS超入門] [RCS初級講座] [RCS中級講座] [RCSエラー対処] [RCS-SCCS対応表] [リンク集]

当文書の著作権は東芝グループ、富士通グループ構成各社の いずれにも帰属しません。

$Id: rcs.html,v 3.9 2016-07-02 11:12:44+09 kabe Exp $


RCS管理下ファイルの更新サイクル

(このサイクルから外れると小技裏技で修正する必要が出てくる)

		↓
	   登録する
		↓
	 →→→+ <<< 普段はここ。ファイルは書込不可
	↑   ↓
	↑ ロックをかける (編集可能になる)
	↑   ↓
	↑ お好みのエディタで編集する
	↑   ↓
	↑ 登録してロックを解除する (編集不可になる)
	↑   ↓
	 ←←← 

まず使ってみる

  1. まず "RCS" というディレクトリを作ります。
    % mkdir RCS
  2. 次にファイルのどこかに $Id$ という部分を作ります。
    	# $Id$
    	/* $Id$ */
    	// $Id$
    	static char *rcsid = "$Id$";
    	
  3. そして ci -u filenameとすれば RCS 管理下に入ります。

    初めてのファイルでは、そのファイル自体に関する簡単な説明を要求されますので 入れておきましょう。 エラーじゃないです。 思いつかなければ空でも良い。 最後は".<CR>"。

    $Id$の部分はRCSによって置換されて

    /* $Id: foo,v 1.1 1996/11/28 13:14:43 kabe Exp$ */
    といった形になり、さらに書き込み権限が落ちます。

  4. 編集したくなったら
    % co -l filename
    で書き込み権限がつくので、お好みのエディタで編集します。

  5. どこを変更したのか知りたくなったら
    % rcsdiff filename

  6. ひと区切りついたら
    % ci -u filename
    で変更を登録します。「コメントを入れろ」と要求されるので、 手短に変更点を説明して".<CR>"と打ちましょう。
ということが rcsintro(1) に書かれています。 附属のマニュアルは割に詳しいのでちゃんと読もう。

自動で生成されるファイル

これだけだと、裏で何が行なわれるのかが前もってわからないので 不安になりますが、 新しく生成されるファイルは RCS/filename,v だけです。 他には何もつくられません。単純。


RCSでの管理をやめる

普通は ./RCS/ ディレクトリを掘りますし、 やめたくなった時はそこのファイル全部やめる、でしょうから、 rm -fr ./RCS だけで十分でしょう。


基本コマンド

普段使用するぶんにはco -l , ci -u だけを 知っていれば使えます。
% co -l filename
(co: Check Out, -l: Lock)
ファイルを自分が編集できるようにします。 つまり自分だけのwrite permissionがついた状態になります。

% ci -u filename
(ci: Check In, -u: Unlock)
ファイルをRCSに登録し、ロックを外します。 ロックが外れると他の人が co -l ができるようになります。 ci -u としたファイルはすべてのWrite permissionが 落ちるので、 あせって chmod しないように 。 編集したいときは co -l します。

ファイルがすでに編集されていれば、Revision番号がつけかわり、 変更点のコメントを要求されます。後々のためにも どこをなぜ変更したか、をこれで記録しておくと良いでしょう。

% co filename

% ci filename

「ファイルがなくなったです〜(;_;)

単に ci filename とすると ファイルがカレントディレクトリから消えてしまいます。 そうなったら あわてずに co だけを実行 しましょう。オプションなしの co は 「閲覧用に取り出す」という意味で、端的には 書き込み権限がつきません。(-r--r--r--)

ci -u filenameci filename; co filenameと同じになります。

くわしくは man rcs で…

一人でしか使わないんだけど

目先の利益:誤って rm * とかしても RCS管理下にしておけば co で復活できるので、 一人だけで使っていてもRCSを使う価値はあります。 (さすがに rm -fr * では全滅する。バックアップはちゃんととりましょう;_;)

長期的利益:新版の登録毎にコメントを要求されるので、 必然的に修正に関する説明をひねりだす必要性が出てきます。 漠然と修正するのではなく、履歴で説明できるような目的意識をもって 修正を行なうようになるという教育的効果もあるかもしれません。 (毎回 .<CR> で済ませている人は、 3ヶ月後には後悔すると思いますよ〜)

実際上は更新履歴を見て悦に入ったり感心したりのほうが多いと思いますが


$Id$があるぞ、気をつけろぉ

$Id$ という文字列があれば、 ダブルクオートの中だろうと置換してしまう ので、"$Id$"といった文字定数を使うのであれば 何とかしてバラしましょう。 例えばこの文章なんかもそこいらに$Id$があるので そのまま RCS管理下に入れると変になります。
ですからこの一連のRCS入門だけはSCCSで管理しようと思ったんですが JISコードに含まれる"%"に反応してしまうんでダメでした(;_;)
もっともRCSでも 「ど笋」「つ癆紊」「と縺粤鮑」 には反応するんで (それぞれ "$Id$" "$Date$" "$Header:") 油断できません。

さいわい、HTMLでは "$" のかわりに "&#36;" と書いて回避することが できます。これに気づいてから (遅いぞ) このRCS入門もめでたく RCS管理下に入れることができました。

それでも上の「ど笋」までは気づかず、 はまりました。 さてどうやって回避してるんでしょう


RCS管理に向いているもの

素の RCS は、基本的に単一のファイルを管理するように作られているので、

を管理するのに向いています。

逆にきわめて不向きなのが、複数のファイルが組になっているような

もちろん変更履歴が残せるといった利点もあるので何も使わないよりは ずっといいのですが、まとめて管理するという目的にはなじみません。 しゃーないので結局 hoge19991231.tar.gz とかいったファイルで残しがちです。 番号ではなく
名前つきタグで管理すれば ある程度複数ファイルも扱えますが、使い勝手は あんましよくありません。

RCSが想定している「一人が編集、みんなで閲覧」も、 素の RCS ではめんどくさいため 現実的ではありません。 素直に CVS などのもっと高級なツールをかぶせましょう。 Emacsなら VC てのも あるらしいですぞ。

RCSは複数ファイルの扱いが苦手なので、RCSばっかり使っていると、 複数ファイルに分けたほうが楽なようなプログラムも、 無意識のうちに管理がめんどくさそうだと一本にまとめたがる ようになります(それ俺)。 なので、自分でこのことに気づいたらさっさとCVSなりに ステップアップしましょう。(<おまえがさきにやれ)

かべ@sra-tohoku.co.jp