RCS (Revision Control System)

古代のバージョン管理システムである RCS (Revision Control System) が滅法に強力だと思う. とても簡単に使えるというのはもちろんだが,パーミッションを保存してくれるというのも強い. 大規模な開発にはまず使えないが,サーバやルータの設定ファイル管理にはRCSが一番向いているのではなかろうか?

んなわけで,使い方メモ.パクリ元にしたのは ココ です.


仕組み

RCSはバージョンデータを originalfilename.v という名前で保存する. 通常はカレントディレクトリに作られるが,あらかじめ.RCS/というディレクトリを作っておけば,そこに作成されることになる.

基本的にRCSが使うのはこの情報だけなので,あらかじめリポジトリを作ったりDBがどうのとかいう話もなく,とてもお手軽に使い始めることが出来る. バージョン管理をやめたい場合はこのファイルを消せばよいだけ.

バージョン管理の手法には「ロック-修正-ロック解除モデル」を採用している. つまりファイルを修正したい場合はロックを取得して排他制御を行なう必要がある.

基本的な使い方

check-in する

チェックインし,オリジナルファイルを消す
$ ci somefile.conf
チェックインし,オリジナルファイルを残す
$ ci -u somefile.conf
チェックインし,ファイル編集用のロックを獲得する
$ ci -l somefile.conf
リビジョンを指定して check-in (通常は新リビジョンは末尾の桁に +1)
$ ci -r 2.0 somefile.conf

check-out する

チェックアウトする
$ co somefile.conf
チェックアウトし,ファイル編集用のロックを獲得する
$ co -l somefile.conf
リビジョンを指定して check-out
$ co -r 1.5 somefile.conf
日付を指定して check-out
$ co -d "1990/01/12 04:00:00" somefile.conf

履歴を閲覧する

$ rlog somefile.conf

作業コピーと特定リビジョンの diff

$ rcsdiff -r 1.5 somefile.conf
$ rcsdiff somefile.conf

その他

ロックを取得せずにファイルを変更してしまった

rcsコマンドを使えば,既存のファイルに対するロックを取得できる
$ rcs -l somefile.conf

利用可能なキーワードマクロ (一部)

$Author$: リビジョンをチェックインしたユーザーのログイン名
$Date$: リビジョンをチェックインした日付と時間
$Header$: RCS ファイルのフルパス、リビジョン番号、日付、時間、Author名、状態、ロック者
$Locker$: リビジョンをロックしたユーザーのログイン名
$Log$: チェックインした時のログメッセージ。 
$RCSfile$: パス名のつかない RCS ファイル名。
$Revision$: リビジョンに与えられたリビジョン番号
$Source$: フルパスのつく RCS ファイル名。
$State$: rcs や ci の -s でリビジョンに与えられた状態。

ブランチの作成

新しいメジャーナンバーのリビジョンを付けて擬似ブランチ
$ ci -r 3.0 somefile.conf

以上.