RCS (Revision Control System)

リリース番号とバージョン番号

1.2の1の部分をリリース番号,2の部分をバージョン番号と呼ぶ.

通常のチェックインではバージョン番号だけが増加する. リリース番号を上げたい場合はci -rとする

幹(trunk)と枝(branch)

1.3にブランチを作る場合,1.3.1.1になる(1.3.1ではないことに注意).

差分ファイルの格納場所

ワーキングファイルと同じディレクトリにRCSという名前のディレクトリが存在する場合, 差分ファイル(*,v)は,RCSディレクトリに保存される(ない場合はカレントになる).

厳密なロック(strict lock)と厳密でないロック(non-strict lock)

ファイルの所有者だけは版に厳密なロックをかけずにファイルの書き換えを行うことができる. これをnon-strick lock(厳密でないロック)と呼ぶ.

コマンド 動作
co -r1.3 main.c 閲覧だけの場合.
co -l1.3 main.c ロックする場合.
co -r main.c 最新版をとりだす.
co -r2 main.c リリース番号2の最新版をとりだす.
co -u main.c
co -u1.3 main.c
厳密なロックつきでチェックアウト済みのmain.cのロックを解除

ciコマンドについても,-rで版番号を指定したチェックインができる. 普通に枝を伸ばしたいだけならオプションなしでチェックインすればよいが, 幹ではない版をとりだしてバグ修正などを行い,これを最新版としたい場合などに用いる.

版のシンボル名

rcs -nXYZ:8 main.c

として,幹のリリース番号8にシンボル名XYZを与えることができる. このようにシンボル名を与えておけば,ci/coコマンドで, co -rXYZ main.cのように使うことができる.

コマンド動作
rcs -nname[:[rev]] filename
rcs -nname: filename 最新版にシンボル名nameを与える
rcs -nname シンボル名nameを削除
rcs -Nname シンボル名nameを最新版につけなおす. 既に別のリビジョンにシンボル名nameがついている場合に使用する. シンボル名nameが既に使われている場合, -nnameだとエラーになるけど, -Nnameだとエラーにならず,最新版にnameがつけなおされる.

マーカー

マーカー 置き換わる情報
$Id$,$Header$ RCSファイル名,Revision,Date,Author,State,Locker
$Source$ RCSファイル名(パス名あり)
$RCSfile$ RCSファイル名(パス名なし)
$Revision$ 版番号
$Date$ この版を預け入れた日付と時刻
$Author$ この版を預け入れた人のログイン名
$Locker$ ロックされているときはロックしている人のログイン名. ロックされていないときは空文字列.
$Log$ チェックインの際に入力したログ.

ログ

rlog main.c

RCSファイルの共有方法(複数人での開発)

  1. グループを作成してRCSファイルのグループのパーミッションにライト権を与える.
  2. cicoコマンドを自分のホームディレクトリのどこかにコピーし, cicoコマンドのグループの パーミッションに実行権+setuidフラグをたてておく. これにより,このcicoコマンドのコピーを使った場合だけ, チェックイン・チェックアウトができるようになる.

A. Tips

A.1. ci -u

ci -u チェックインと同時にロックしないでとりだしをおこなう. 何もオプションを指定しないでチェックインを行うとカレントディレクトリにはファイルがなくなってしまうため, 普通は-uオプションを指定したほうがよい

A.2. 用語など

用語 意味
revise ファイルを書き換えること.
revision 版.
GMT Greenwich Mean Time
UTC Coordinated Universal Time. GMTとUTCは まぁ同じものと考えてよい.
lt/LT local timeの略.

Further Info


はたいたかし
トップ > 開発ツール > RCS